Tenkte å dele litt av min foreløpige erfaring med å sving på modbus kommunikasjonen til et VTR300 aggregat.
Etter å ha fått dette installert i mars i år, så har det stort sett tuslet stille og rolig for seg selv gjennom sommeren, før jeg prøvde å koble meg på med en RS485 to RJ45 Ethernet with POE function som også inneholder en Modbus Gateway (Denne anbefales ikke!). Etter å ha satt denne opp og brukt alt for mange timer på å mislykkes, innså jeg at jeg måtte ty til en CH340 USB to RS232 RS485 Serial. Med nytt mot stappet jeg den inn i en Raspberry Pi og krøp opp på loftet med skrujernet klart. Det ble omtrent med samme suksessen som tidligere, så kom frem til at jeg måtte svinge i gang SAVE PC tool på en Windows PC. Siden jeg ikke har fysiske Windows PCer lenger, måtte jeg finne en måte å pipe RS485-to-USB-converteren som var påkoblet Raspberry Pien, gjennom nettverket og få den til å dukke opp som en COM-port så SAVE PC toll klarte å koble seg på. Jeg har merkelig nok vært borte i tilsvarende før, men da var det mellom linux maskiner, noe som er litt lettere. Likevel kom jeg frem til følgende steg:
Koble opp USB-sticken på ventilasjonsanlegget og på Raspberry PIen.
Sjekk at USB-sticken blir oppdaget (prøv kommando: lsusb). Den skal også dukke opp som /dev/ttyUSB0 (eller USB1, 2 eller høyere hvis det er mer som er påkoblet)
Lastet ned og installer socat på Raspberry PIen
På Windows maskinen installerte jeg "SAVE PC tool" og "tcp2com" fra Astrogeeks. "tcp2com" gjør at man får opp ett virtuelt seriell interface på Windows PCen. Man kan også koble seg mot en TCP/IP som tilgjengeliggjør et seriell interface (Raspberry PIen i dette tilfellet)
På Raspberry PIen, begynte jeg med å sette opp fixed baudrate og fortelle at den skulle videreformidle rå meldinger på seriell interfacet. Startet så socat, denne setter opp en tcp port 5555 som den lytter til, for så å videresende eventuelle meldinger til seriell interfacet på /dev/ttyUSB0
sudo stty -F /dev/ttyUSB0 1200 raw
sudo socat -x tcp-l:5555,fork,nodelay,keepalive,reuseaddr /dev/ttyUSB0,raw
På windows maskinen, settes "tcp2com" opp til å koble seg mot IPen til Raspberry PIen og port 5555. (sørg for at det er åpning i brannmuren til windows)
Nå kan "SAVE PC tool" startes, og etter noen forsøk med scanning på port COM2 fikk jeg liv i modbusen.
Det interessante her er dog ikke fremgangsmåten, men det at jeg logget hvilke kommandoer som "SAVE PC tool" sendte til ventilasjonsanlegget. Så da håper jeg at følgende dump kan være nyttig for nestemann som vil prøve å få sving på dette uten å bruke så mye tid og mikkmakk som meg.
pi@raspberrypi:~ $ $ sudotty -F /dev/ttyUSB0 1200 raw
pi@raspberrypi:~ $ sudo socat -x tcp-l:5555,fork,nodelay,keepalive,reuseaddr /dev/ttyUSB0,raw
> 2023/09/16 20:42:16.389965 length=8 from=0 to=7
01 03 17 70 00 06 c1 a7
< 2023/09/16 20:42:16.503683 length=1 from=0 to=0
01
< 2023/09/16 20:42:16.512484 length=1 from=1 to=1
03
< 2023/09/16 20:42:16.521349 length=1 from=2 to=2
0c
< 2023/09/16 20:42:16.531484 length=1 from=3 to=3
07
< 2023/09/16 20:42:16.540349 length=1 from=4 to=4
e7
< 2023/09/16 20:42:16.549223 length=1 from=5 to=5
00
< 2023/09/16 20:42:16.558099 length=1 from=6 to=6
09
< 2023/09/16 20:42:16.568233 length=1 from=7 to=7
00
< 2023/09/16 20:42:16.577108 length=1 from=8 to=8
10
< 2023/09/16 20:42:16.585982 length=1 from=9 to=9
00
< 2023/09/16 20:42:16.594849 length=1 from=10 to=10
14
< 2023/09/16 20:42:16.604973 length=1 from=11 to=11
00
< 2023/09/16 20:42:16.613837 length=1 from=12 to=12
36
< 2023/09/16 20:42:16.622713 length=1 from=13 to=13
00
< 2023/09/16 20:42:16.631588 length=1 from=14 to=14
2a
< 2023/09/16 20:42:16.641724 length=1 from=15 to=15
01
< 2023/09/16 20:42:16.650587 length=1 from=16 to=16
4f
> 2023/09/16 20:42:16.764871 length=13 from=8 to=20
00 10 42 68 00 02 04 00 01 00 0a 09 b9
> 2023/09/16 20:42:19.700720 length=45 from=21 to=65
01 41 0a 17 70 00 41 03 e8 00 3f 04 4c 00 5a 04 b0 00 9f 05 dc 00 51 07 d0 00 51 08 34 00 5d 08 fc 00 12 1b 58 00 09 1b 6c 00 03 ac 4b
> 2023/09/16 20:42:20.199667 length=45 from=66 to=110
01 41 0a 17 70 00 41 03 e8 00 3f 04 4c 00 5a 04 b0 00 9f 05 dc 00 51 07 d0 00 51 08 34 00 5d 08 fc 00 12 1b 58 00 09 1b 6c 00 03 ac 4b