pvbrowser, pvb® - The Process Visualiation Browser.

  • English
  • Deutsch

Beispiel

Modbus Datenerfassung

In pvbaddon/daemons/modbus/client/ finden Sie einen Daemon für Modbus, der mit Hilfe einer INI-Datei parametriert wird. Mit USE_SOCKET=0 wird Modbus RTU über eine serielle Schnittstelle ausgewählt. Mit USE_SOCKET=1 würden Sie, Modbus TCP auswählen. Unter [CYCLES] definieren Sie, was Sie vom Modbus lesen wollen. In diesen Beispielen lesen alle Zyklen von Slave 1 ab Adresse 0. Wir lesen jeweils 10, 8, 2 und 2 Datenelemente.

Schritte

example.ini

# ini file for modbus_client
#
# USE_SOCKET := 1 | 0  # if 0 then USE_TTY
# DEBUG      := 1 | 0
# BAUDRATE   := 300    |
#               600    |
#               1200   |
#               1800   |
#               2400   |
#               4800   |
#               9600   |
#               19200  |
#               38400  |
#               57600  |
#               115200
# STOPBITS   := 1 | 2
# PARITY     := NONE | ODD | EVEN
# PROTOCOL   := RTU | ASCII
# CYCLE   := ,
# name       := coilStatus(slave,adr)       | 
#               inputStatus(slave,adr)      |
#               holdingRegisters(slave,adr) |
#               inputRegisters(slave,adr)
# CYCLETIME in milliseconds
# SHARED_MEMORY_SIZE must be equal to SHARED_MEMORY_SIZE of pvserver
# MAX_NAME_LENGTH is maximum length of variable name in shared memory 
#

[GLOBAL]
USE_SOCKET=0
DEBUG=1
CYCLETIME=1000
N_POLL_SLAVE=5 # number of cycles a slave will not be polled when it fails

[SOCKET]
IP=192.168.1.100
PORT=502

[TTY]
DEVICENAME=/dev/ttyUSB0
BAUDRATE=9600
RTSCTS=1
STOPBITS=1
PARITY=NONE
PROTOCOL=RTU

[RLLIB]
MAX_NAME_LENGTH=30
SHARED_MEMORY=/srv/automation/shm/modbus1.shm
SHARED_MEMORY_SIZE=65536
MAILBOX=/srv/automation/mbx/modbus1.mbx

[CYCLES]
NUM_CYCLES=4
CYCLE1=10,inputStatus(1,0)
CYCLE2=8,coilStatus(1,0)
CYCLE3=2,holdingRegisters(1,0)
CYCLE4=2,inputRegisters(1,0)
    

Modbus register map

Innerhalb rlModbus werden alle Daten-Adressen in den Modbus Datenpaketen auf 0 bezogen. Das erste Datenelement ist unter Adresse 0 verfügbar.

0xxxx Read/Write Discrete Outputs or Coils.
1xxxx Read Discrete Inputs.
3xxxx Read Input Registers.
4xxxx Read/Write Output or Holding Registers.
    
    

Coil/Register Numbers

Data Addresses

Type Table Name

1-9999

0000 to 270E

Read-Write Discrete Output Coils

10001-19999

0000 to 270E

Read-Only Discrete Input Contacts

30001-39999

0000 to 270E Read-Only Analog Input Registers

40001-49999

0000 to 270E Read-Write Analog Output Holding Registers

Siehe: http://www.simplymodbus.ca/FAQ.htm#Stored

Creating multiple "modbusdaemon" from within pvdevelop

(Der Patch von Nestor Levi Palomeque ist inzwischen in den Binärpaketen enthalten)

Das Erzeugen von "modbusdaemon" in pvdevelop verhält sich so wie zuvor, aber nun gibt es 2 zusätzliche Schaltflächen: "Open" und "New", um mehrere Modbus Verbindungen anlegen zu können. Das hat den Vorteil, dass mehrere Modbus TCP Verbindungen mit jeweils einem eigenen "shared memory" und "mailbox" angelegt werden können.

Siehe auch auf youtube:
Testing multiple modbusdaemon (Modbus TCP) in PVBrowser 1/2.
Testing multiple modbusdaemon (Modbus TCP) in PVBrowser 2/2.

Schritte