Nachdem ich jetzt schon etliche Stunden an Trial-and-Error hinter mir habe, stelle ich die Frage mal hier rein.
Ich habe ein Gerät, das über Modbus kommuniziert. Mit Python kann ich bereits mit dem Gerät kommunizieren, und zwar durch Öffnen einer seriellen Schnittstelle zu /dev/ttyUSB0. Nachdem ich aber in C arbeiten möchte, würde ich gerne über die Variablennamen arbeiten.
In der Dokumentation für mein Gerät steht:
Code: Select all
Function code 03(FC03) is used for reading the status.
Example of FC03 Read function:
This message asks for register 0x07D0(2000) and register 0x07D1(2001)
Request is: 09 03 07 D0 00 02 C5 CE
Bits Description
09 SlaveID
03 Function Code 03(Read Holding Registers)
07D0 Address of the first requested register
0002 Number of registers requested(2)
C5CE Cyclic Redundancy Check(CRC)
Response is: 09 03 04 E0 00 00 00 44 33
Bits Description
09 SlaveID
03 Function Code 03(ReadHoldingRegisters)
04 Number of data bytes to follow (2registers x 2bytes / register = 4bytes)
E000 Content of register 07D0
0000 Content of register 07D1
4433 Cyclic Redundancy Check(CRC)
Ich möchte aber gerne direkt über das Prozessabbild arbeiten. Ich habe pictory jetzt folgendermaßen konfiguriert:
Im Modbus RTU Master Extended Menü steht:
Slave Address: 9
Function Code: READ_HOLDING_REGISTERS
Register Address: 2000
Quantity of Registers: 2
Interval: 1000ms
Device Value: Input_Word_1
piTest gibt mir aber nicht die Response zurück, die ich mit Python bekomme. Da stehen eine Reihe von Nullen und ein paar Hexwerte, die aber nicht zu dem Request passen.
Woran könnte das liegen? Am CRC Test? Oder an meiner RTU Master Konfiguration im Pictory?
Danke im Voraus!