Modbus Configurator: Přepínač typu protokolu

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ů.

Vlastnosti a funkce

  • Přepínání komunikačních protokolů zařízení mezi protokoly Spinel a Modbus RTU.
  • Změna adresy zařízení.
  • Nastavení komunikačních parametrů.
  • Připojení k zařízení přes sériový port (RS232/RS485/RS422), USB nebo Ethernet.
  • Funkce pro vyhledávání zařízení: Postupně se zkouší všechny parametry sériové linky - rychlost, parita, počet datových bitů, počet stopbitů - podle výběru uživatele.
  • Program neslouží ke konfiguraci ethernetových zařízení (s Modbus TCP)

Základní okno programu po připojení k zařízení

Okno programu po připojení k zařízení

Jak přepnout protokoly Modbus RTU a Spinel pomocí Pythonu?

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!')

Ke stažení:

modbusconfigurator.zipModbus Configurator

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

Stáhnout

Vytvořeno21.01.2011
Na vašem soukromí nám záleží
Tento internetový obchod ukládá soubory cookies, které pomáhají k jeho správnému fungování. Využíváním našich služeb s jejich používáním souhlasíte.
Povolit všePodrobné nastavení