Modbus Configurator je software pro Windows, který umí přepínat typ komunikačního protokolu v našich zařízeních mezi Modbusem RTU a Spinelem. Kromě přepínání protokolů program umí také vyhledávat a nastavovat komunikační parametry zařízení.
Tip: Níže naleznete i samostatný Python skript pro přepínání protokolů.
Okno programu po připojení k zařízení
Skripty uvedené níže nejdříve ze zařízení přečtou jméno a verzi, poté povolí konfiguraci a nakonec přepnou do požadovaného protokolu. Skripty jsou určeny pro Python3 nebo vyšší.
V obou případech je třeba nejdříve upravit cestu k sériovému portu a komunikační rychlost, podle Vašeho zařízení. Naše zařízení se sériovou linkou mají výchozí komunikační rychlost 9600 Bd, zařízení s USB nebo Ethernetem mají výchozí rychlost 115200 Bd. Cestu k sériovému portu můžete snadno najít například pomocí příkazu python3 -m serial.tools.list_ports -v. Příklady jsou určené pro zařízení s výchozí adresou 0x31.
Skript pro přepnutí ze Spinelu do Modbusu:
# If you get error message "ImportError: no module named serial", pySerial module is not installed. # Install the module as follows (for Debian/Ubuntu): # sudo apt install python3-serial import serial # Edit the following lines according to your communication interface com_port = serial.Serial(port='/dev/ttyUSB1', baudrate=115200, timeout=.5) # com_port = serial.Serial(port='/dev/ttyS0', baudrate=9600, timeout=.5) if com_port.isOpen(): # show Spinel device info #com_port.write('*B1?\r'.encode('utf-8')) # in ASCII format 66 com_port.write(b'\x2a\x61\x00\x05\xfe\x02\xf3\x7c\x0d') # in binary format 97 response = com_port.readline() print (response) # enable configuration on device with address \x31 com_port.write(b'\x2a\x61\x00\x05\x31\x02\xe4\x58\x0d') response = com_port.readline() print ('Response to cfg. enable: ' + response.hex()) # switch device with address \x31 to Modbus RTU if response.hex() == '2a6100053102003c0d': print ('Configuration enabled') com_port.write(b'\x2a\x61\x00\x06\x31\x02\xed\x02\x4c\x0d') response = com_port.readline() print ('Response to protocol switch: ' + response.hex()) if response.hex() == '2a6100053102003c0d': print ('Device switched to Modbus RTU') else: print ('Communication protocol could not be changed!') else: print ('Enable configuration failed!') com_port.close() else: print ('Communication port cannot be opened!')
Skript pro přepnutí z Modbusu do Spinelu:
# If you get error message "ImportError: no module named serial", pySerial module is not installed. # Install the module as follows (for Debian/Ubuntu): # sudo apt install python3-serial import serial # Edit the following lines according to your communication interface com_port = serial.Serial(port='/dev/ttyUSB1', baudrate=115200, timeout=.5) # com_port = serial.Serial(port='/dev/ttyS0', baudrate=9600, timeout=.5) if com_port.isOpen(): # show device info com_port.write(b'\x31\x11\xd4\x2c') response = com_port.readline() print (response) # enable configuration on device with address \x31 #com_port.write(b'\x31\x10\x00\x00\x00\x01\x02\x00\xFF\xb2\x11') # multi write com_port.write(b'\x31\x06\x00\x00\x00\xff\xcc\x7a') # single write response = com_port.readline() print ('Response to cfg. enable: ' + response.hex()) # switch device with address \x31 to Modbus RTU and set baudrate to 115 200 Bd if response.hex() == '3106000000ffcc7a': print ('Configuration enabled') com_port.write(b'\x31\x10\x00\x02\x00\x04\x08\x00\x0A\x00\x00\x00\x0a\x00\x01\x34\x6b') response = com_port.readline() print ('Response to protocol switch: ' + response.hex()) if response.hex() == '31100002000465fa': print ('Device switched to Spinel') else: print ('Communication protocol could not be changed!') else: print ('Enable configuration failed!') com_port.close() else: print ('Communication port cannot be opened!')
Software, který je určený k přepínání typu komunikačního protokolu našich zařízení, hlavně mezi Spinelem a MODBUSem RTU. Kromě přepínání protokolů program umí také nastavovat komunikační parametry zařízení.
Velikost souboru: 637,45 kB
Datum: 21.08.2018