Ovládání vřetena přes RS485

Mex
Příspěvky: 7989
Registrován: 6. 2. 2014, 10:29

13. 1. 2021, 6:12

zz912 píše: 13. 1. 2021, 5:46 Byl bys ochotný dát foto? Taky mě to čeká. S tou zemí to zapomněl číňan nějak pořešit.
Nemám zrovna žádný po ruce.
Vyletoval jsem tu 2-pinovou svorkovnici, a místo ní tam přiletoval 4-pinovou. Krajní nohy jsou mimo tišťák, na ně jsem drátem přitáhl GND a +5V zevnitř.

Aby to nebylo ošklivé, tak jsem z černého 3mm plastu udělal obdélníček s vybráním pro přesahující spodní strany pinů, a ten jsem zespodu nalepil na ten tišťák. Takže není vidět, že 2 nohy svorkovnice jsou v luftě a ne v tišťáku, navíc se to mechanicky zpevnilo.
Mex
Příspěvky: 7989
Registrován: 6. 2. 2014, 10:29

13. 1. 2021, 6:19

atlan píše: 13. 1. 2021, 5:49 A naco vam to gnd na tej zbernici bude? Kedze je 2 vodicova.
Jako vztažný potenciál, samozřejmě.
Navíc případně i pro zapojení stínění, je-li použit stíněný kabel.

U 3-drátové elektroinstalace se sice zem uzavírá přes kolík, ale i tam je to lepší uzavřít tudyma. Navíc mnoho zařízení ty země nemá propojené vůbec (bateriové napájení, galvanické oddělení, 2-drátové napájení atd.).
Někdy se to GND nezapojuje natvrdo, ale třeba přes nějaký odpor, např. 100R.

Propojení zemí na RS485 je téma, kde často vznikají hádky a rozepře. Takže předem upozorňuju, že se hádat určitě nebudu. Ať si to každý zapojí jak chce.
Už jsem těch RS485 pár realizoval...
Uživatelský avatar
zz912
Příspěvky: 565
Registrován: 25. 5. 2008, 7:16

13. 1. 2021, 6:26

atlan píše: 13. 1. 2021, 5:49 A naco vam to gnd na tej zbernici bude? Kedze je 2 vodicova.
Co jsem studoval, tak RS485 má mít propojené země u všech zařízení v síti a má být ve stíněném kabelu. Někteří to řeší tak, že stínění použijí jako další vodič. Ovšem doporučuje se použít pro spojení samostatnou žílu.

Existující varianty zapojení RS485:
2 vodiče - half duplex A + B
3 vodiče - half duplex A + B + GND
4 vodiče - full duplex A + B + Y + Z
5 vodičů - full duplex A + B + Y + Z + GND

To Mex: předběhl is mě
To Mex: dík za tip na předělání dongle
LinuxCNC - MESA 7i96 - Začátečník
zz912.webnode.cz
Uživatelský avatar
Thomeeque
Příspěvky: 6844
Registrován: 30. 1. 2012, 10:20
Bydliště: Mimo ČR

13. 1. 2021, 6:44

Já mezitím zvítězil na grubem (sice mě to stálo tolik času, energie a nervů, že bych na tom byl mnohem lépe, kdybych ten linux rovnou přeinstaloval, ale tím si to teď nemá cenu kazit :)). Poznámky čistě pro mne:

Kód: Vybrat vše

# LiveCD terminal
sudo fdisk -l # linux partition = /dev/sda5
sudo mount /dev/sda5 /mnt
sudo mount -o bind /dev /mnt/dev
sudo mount -o bind /dev/pts /mnt/dev/pts
sudo mount -o bind /proc /mnt/proc
sudo mount -o bind /run /mnt/run
sudo mount -o bind /sys /mnt/sys
sudo chroot /mnt /bin/bash
sudo grub-install /dev/sda
https://edoceo.com/notabene/grub-probe- ... e-for-root

Co se topicu týče, zkusil jsem nastavení z videa v prvním postu. Dobrá zpráva je, že LinuxCNC naběhne, tj. ten driver pro dongle možná i funguje, ale jinak to s měničem ani nehne, což se ale dalo předpokládat - musím vyzkoumat, jak kustomizovat, co tam LinuxCNC posílá.

T.
mimooborová naplavenina • kolowratský zázrak™ • NPS • GCU • HirthCalc • ncDP.ino
Uživatelský avatar
Thomeeque
Příspěvky: 6844
Registrován: 30. 1. 2012, 10:20
Bydliště: Mimo ČR

13. 1. 2021, 11:07

Ještě se mi podařilo na stejném PC zprovoznit virtuální 32b XP a konfigurační soft od výrobce. Dongle funguje, zvládá to skutečně až 19200 baudů. Softem lze měnič i ovládat (computer control). Při zapínání computer control to vypíše WARNING: Control of the drive using computer control will by-pass any safety override inputs wired to the drive terminals. Do you wish to proceed?, což mne trochu znervóznilo, nicméně INHIBIT signál to nepřepere, ten to i v tomto režimu vypne. Po vypnutí to vrátí kontrolu nastaveným vstupům. Takže přesně to, co bych rád, teď to jen nějak zreplikovat v LinuxCNC.

VirtualXP-SeSoft-ctrl.png
mimooborová naplavenina • kolowratský zázrak™ • NPS • GCU • HirthCalc • ncDP.ino
xener
Příspěvky: 805
Registrován: 2. 3. 2019, 12:48

14. 1. 2021, 11:43

mozem doporucit rs422/485 adapter, funguje windows/linux bez problemov a este sa aj kazdy moze rozhodnut co pouzije zem alebo nie :) sice nestoji pod euro ale je urcite lepsi ako ten cierny dvojpin co tu bol spomenuty, ten mam tiez.
mam este aj tento rs422/485 , s ktorym sa aktualne hram a tiez vyzera byt stabilny a bezproblemovy :

Kód: Vybrat vše

[12564.223066] usb 1-1.3: new full-speed USB device number 3 using xhci_hcd
[12564.359143] usb 1-1.3: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64
[12564.359160] usb 1-1.3: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[12564.359174] usb 1-1.3: Product: USB Serial
[12564.454620] usbcore: registered new interface driver usbserial_generic
[12564.456910] usbserial: USB Serial support registered for generic
[12564.460532] usbcore: registered new interface driver ch341
[12564.460602] usbserial: USB Serial support registered for ch341-uart
[12564.460712] ch341 1-1.3:1.0: ch341-uart converter detected
[12564.464532] usb 1-1.3: ch341-uart converter now attached to ttyUSB0

Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 004: ID 1a86:7523 QinHeng Electronics HL-340 USB-Serial adapter
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Uživatelský avatar
Thomeeque
Příspěvky: 6844
Registrován: 30. 1. 2012, 10:20
Bydliště: Mimo ČR

17. 1. 2021, 10:35

Ahoj,

snažím se rozchodit mb2hal, ale zatím se nedaří. Povedlo se mi rozchodit MODBUS RTU režim i komunikaci (čtení i zápis), ale jen pod Windows (program ModScan32). LinuxCNC 2.7 (RTAI Debian 7 Wheezy) na tom samém PC se s tím měničem nějak není sto spojit. Že by přecijen problém v použitém dongle?

Správně vyčtené parametry 1-10
Správně vyčtené parametry 1-10
Nastavení connection parametrů
Nastavení connection parametrů

Dongle je pod Linuxem vidět:

Kód: Vybrat vše

[   10.960873] usbcore: registered new interface driver usbserial
[   10.960883] usbcore: registered new interface driver usbserial_generic
[   10.960891] USB Serial support registered for generic
[   10.960907] usbserial: USB Serial Driver core
[   10.970365] usbcore: registered new interface driver ch341
[   10.970380] USB Serial support registered for ch341-uart
[   10.970389] ch341 2-1.7:1.0: ch341-uart converter detected
[   10.972189] usb 2-1.7: ch341-uart converter now attached to ttyUSB0
ale jak píšu, LinuxCNC si s měničem při stejných nastaveních nepokecá:

Kód: Vybrat vše

linuxcnc /home/tomas/linuxcnc/configs/neotor/neotor.ini
LINUXCNC - 2.7.15
Machine configuration directory is '/home/tomas/linuxcnc/configs/neotor'
Machine configuration file is 'neotor.ini'
Starting LinuxCNC...
Found file(REL): ./neotor.hal
Found file(REL): ./custom.hal
mb2hal parse_common_section DEBUG: [MB2HAL_INIT] [INIT_DEBUG] [3]
mb2hal parse_common_section DEBUG: [MB2HAL_INIT] [HAL_MODULE_NAME] [mb2hal]
mb2hal parse_common_section DEBUG: [MB2HAL_INIT] [SLOWDOWN] [0.000]
mb2hal parse_common_section DEBUG: [MB2HAL_INIT] [TOTAL_TRANSACTIONS] [1]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [LINK_TYPE] [serial] [0]
mb2hal parse_serial_subsection DEBUG: [TRANSACTION_00] [SERIAL_PORT] [/dev/ttyUSB0]
mb2hal parse_serial_subsection DEBUG: [TRANSACTION_00] [SERIAL_BAUD] [19200]
mb2hal parse_serial_subsection DEBUG: [TRANSACTION_00] [SERIAL_BITS] [8]
mb2hal parse_serial_subsection DEBUG: [TRANSACTION_00] [SERIAL_PARITY] [none]
mb2hal parse_serial_subsection DEBUG: [TRANSACTION_00] [SERIAL_STOP] [2]
mb2hal parse_serial_subsection DEBUG: [TRANSACTION_00] [SERIAL_DELAY_MS] [10]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [MB_SLAVE_ID] [11]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [FIRST_ELEMENT] [2]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [NELEMENTS] [1]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [MAX_UPDATE_RATE] [0.000]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [MB_RESPONSE_TIMEOUT_MS] [2000]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [MB_BYTE_TIMEOUT_MS] [2000]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [DEBUG] [3]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [MB_TX_CODE] [fnct_03_read_holding_registers] [2]
mb2hal parse_transaction_section DEBUG: [TRANSACTION_00] [HAL_TX_NAME] [remoteIOcfg]
mb2hal parse_ini_file OK: parse_transaction_section 0 OK
mb2hal main OK: parse_ini_file done OK
mb2hal init_mb_links DEBUG: LINK 0 (RTU) link_type[0] device[/dev/ttyUSB0] baud[19200] data[8] parity[N] stop[2] fd[-1]
mb2hal main OK: init_gbl.mb_link done OK
mb2hal init_mb_tx DEBUG: MB_TX 0 lk_n[0] tx_n[0] cfg_dbg[3] lk_dbg[1] t_inc[0.000] nxt_t[0.000]
mb2hal main OK: init_gbl.mb_tx done OK
mb2hal create_each_mb_tx_hal_pins DEBUG: mb_tx_num [0] pin_name [mb2hal.remoteIOcfg.num_errors]
mb2hal create_each_mb_tx_hal_pins DEBUG: mb_tx_num [0] pin_name [mb2hal.remoteIOcfg.00]
mb2hal main OK: HAL components created OK
mb2hal main OK: Link thread loop and logic 0 created OK
mb2hal main OK: mb2hal is running
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[-1] going to TEST availability
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[-1] going to TEST connection
mb2hal get_tx_connection DEBUG: mb_tx_num[0] mb_links[0] new connection -> fd[4]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] lk_dbg[1] going to EXECUTE transaction
mb2hal fnct_03_read_holding_registers DEBUG: mb_tx[0] mb_links[0] slave[11] fd[4] 1st_addr[2] nelem[1]
[0B][03][00][02][00][01][25][60]
Waiting for a confirmation...
ERROR Connection timed out: select
mb2hal fnct_03_read_holding_registers ERR: mb_tx[0] mb_links[0] slave[11] = ret[-1] fd[4]
mb2hal link_loop_and_logic ERR: mb_tx_num[0] mb_links[0] thread[0] fd[4] transaction failure, num_errors[1]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] SERIAL_DELAY_MS activated [10]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] going to TEST availability
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] going to TEST connection
mb2hal get_tx_connection DEBUG: mb_tx_num[0] mb_links[0] already connected to fd[4]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] lk_dbg[1] going to EXECUTE transaction
mb2hal fnct_03_read_holding_registers DEBUG: mb_tx[0] mb_links[0] slave[11] fd[4] 1st_addr[2] nelem[1]
[0B][03][00][02][00][01][25][60]
Waiting for a confirmation...
ERROR Connection timed out: select
mb2hal fnct_03_read_holding_registers ERR: mb_tx[0] mb_links[0] slave[11] = ret[-1] fd[4]
mb2hal link_loop_and_logic ERR: mb_tx_num[0] mb_links[0] thread[0] fd[4] transaction failure, num_errors[2]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] SERIAL_DELAY_MS activated [10]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] going to TEST availability
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] going to TEST connection
mb2hal get_tx_connection DEBUG: mb_tx_num[0] mb_links[0] already connected to fd[4]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] lk_dbg[1] going to EXECUTE transaction
mb2hal fnct_03_read_holding_registers DEBUG: mb_tx[0] mb_links[0] slave[11] fd[4] 1st_addr[2] nelem[1]
[0B][03][00][02][00][01][25][60]
Waiting for a confirmation...
ERROR Connection timed out: select
mb2hal fnct_03_read_holding_registers ERR: mb_tx[0] mb_links[0] slave[11] = ret[-1] fd[4]
mb2hal link_loop_and_logic ERR: mb_tx_num[0] mb_links[0] thread[0] fd[4] transaction failure, num_errors[3]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] SERIAL_DELAY_MS activated [10]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] going to TEST availability
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] going to TEST connection
mb2hal get_tx_connection DEBUG: mb_tx_num[0] mb_links[0] already connected to fd[4]
mb2hal link_loop_and_logic DEBUG: mb_tx_num[0] mb_links[0] thread[0] fd[4] lk_dbg[1] going to EXECUTE transaction
mb2hal fnct_03_read_holding_registers DEBUG: mb_tx[0] mb_links[0] slave[11] fd[4] 1st_addr[2] nelem[1]
[0B][03][00][02][00][01][25][60]
Waiting for a confirmation...
^Cmb2hal quit_signal DEBUG: signal [2] received
mb2hal quit_cleanup DEBUG: started
task: 756 cycles, min=0.000005, max=0.020633, avg=0.009815, 0 latency excursions (> 10x expected cycle time of 0.010000s)
mb2hal quit_cleanup DEBUG: unloading HAL module [15] ret[0]
mb2hal quit_cleanup DEBUG: done OK
mb2hal main OK: going to exit!
Traceback (most recent call last):
  File "/usr/bin/axis", line 3540, in <module>
    o.mainloop()
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1035, in mainloop
    self.tk.mainloop(n)
  File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1432, in __call__
    def __call__(self, *args):
KeyboardInterrupt
Shutting down and cleaning up LinuxCNC...
tomas@debian-cnc-home:~$ 
Resp. není mi jasné, jestli má být měnič pro mb2hal nastaven na RTU nebo ASCII, ale nefungovalo ani jedno. Ve Windows fungoval jen ten RTU režim.

Nemáte někdo tento obyč dongle pod stejným Linuxem ověřen?

Příp. jak bych ho ověřil, je na to nějaký (přiměřeně) snadný postup*?

Dík, T.

*EDIT: Možná https://www.modbusdriver.com/modpoll.html? Zkusím zítra..
mimooborová naplavenina • kolowratský zázrak™ • NPS • GCU • HirthCalc • ncDP.ino
atlan
Příspěvky: 2408
Registrován: 7. 2. 2011, 9:12

18. 1. 2021, 5:03

Skontroluj nastavenie stop bitov a nastavenie parity, musi sediet s menicom.
Uživatelský avatar
zz912
Příspěvky: 565
Registrován: 25. 5. 2008, 7:16

18. 1. 2021, 5:17

Z "stty" se uz kamaradis? Pokud ne, vrat se na zacatek a prostuduj si mou cestu jak jsem ozivoval kominikaci s arduinem pres mb2hal.
LinuxCNC - MESA 7i96 - Začátečník
zz912.webnode.cz
Uživatelský avatar
filla
Příspěvky: 2949
Registrován: 1. 12. 2013, 12:55
Bydliště: Brno
Kontaktovat uživatele:

18. 1. 2021, 5:41

jsi na linuxu clenem skupiny serial? zkus to pod root
"do řiti se řítíme, ani o tom nevíme.."
oscar
Příspěvky: 1140
Registrován: 2. 5. 2010, 8:50
Bydliště: Perníkovice

18. 1. 2021, 6:24

Od boku: slave ID dej na 1, ne na 11.
Mex
Příspěvky: 7989
Registrován: 6. 2. 2014, 10:29

18. 1. 2021, 7:59

Thomeeque píše: 17. 1. 2021, 10:35 Nemáte někdo tento obyč dongle pod stejným Linuxem ověřen?

Příp. jak bych ho ověřil, je na to nějaký (přiměřeně) snadný postup*?
Ano, má.
Už jsem to tady psal, že už jsem jich použil spoustu.
Používají klasické ošizené přepínání směrů, takže na hóóódně dlouhých linkách by to mohlo případně dělat problémy. Ale na běžných několikametrových drátech to běhá hladce.
A výhoda tohoto zapojení je, že nemívá problémy s kompatibilitou.
Takže problémy hledej spíš jinde.

K dalšímu dotazu: použij RTU. Režim ASCII se používá minimálně. Rozdíl je ten, že RTU prostě pošle 8-bit hodnotu jako jeden binární byte, kdežto ASCII to převede do HEX a zokóduje v ASCII. Takže sežere 2x větší datový tok.

Máš ten převodník 1 nebo aspoň 2 kusy?
Pokud bys měl dva, tak je strč do PC oba, propoj navzájem a pusť si 2 sériové monitory (např. picocom).
Pak to, co budeš psát na klávesnici jednoho, se musí zobrazovat v okně toho druhého a naopak.
Uživatelský avatar
Thomeeque
Příspěvky: 6844
Registrován: 30. 1. 2012, 10:20
Bydliště: Mimo ČR

18. 1. 2021, 9:21

Jak jsem psal, komunikace měnič - PC z Windows funguje, pro Linux jsem použil stejná nastavení (bity, parita atd., stejně i slave ID), viz obrázky (Windows) a logy (Linux). V mb2hal configu chybí nastavení ASCII/RTU, ale teď jsem si v logu všiml, že je to (asi natvrdo) RTU a i to kdosi zmiňuje tady, takže i to sedí.

Zkusil jsem to pustit s prefixem sudo i změnit Slave ID na 1, žádná změna.

Je jedno, jestli je měnič zaplý nebo ne, log je úplně stejný.

Druhý dongle mám bohužel v Praze.

Mrknu na stty a vlákno od zz912 a vyzkouším https://www.modbusdriver.com/modpoll.html.

Dík všem, T.

Mex píše: 18. 1. 2021, 7:59 Ano, má.
Takže i konktétně pod RTAI Debian 7 Wheezy?
Naposledy upravil(a) Thomeeque dne 18. 1. 2021, 9:35, celkem upraveno 2 x.
mimooborová naplavenina • kolowratský zázrak™ • NPS • GCU • HirthCalc • ncDP.ino
oscar
Příspěvky: 1140
Registrován: 2. 5. 2010, 8:50
Bydliště: Perníkovice

18. 1. 2021, 9:26

Jsi si opravdu jisty ze Device Id v tom win programu je jeho modbus adresa kterou mas nastavenou v linuxu?
Zkusil jsi to v linux zmenit na 1 coz ukazuje win prg jako Address?
Uživatelský avatar
Thomeeque
Příspěvky: 6844
Registrován: 30. 1. 2012, 10:20
Bydliště: Mimo ČR

18. 1. 2021, 9:32

Zrovna jsem to zeditoval (pokus se Slave ID 1, žádná změna).

Jsem si jistý, že měnič má nastavené ID 11 a předpokládám, že je to to Slave ID v Linuxu.

Address ve Win program je adresa prvního elementu, který to má číst (40001, čtyřka se ve Win programu vynechává).
mimooborová naplavenina • kolowratský zázrak™ • NPS • GCU • HirthCalc • ncDP.ino
Odpovědět

Zpět na „LinuxCNC - drive pod nazvem EMC2“