Dann probier doch mal 4x statt 3x. Vielleicht sind die Daten anders gemappt im Zähler.
In der Logo heißt ja HR "Holding Register". Das entspricht 4x. 3x wäre IR (Input Register) in der Logo.
Der Kinco Modbus funktioniert auf jeden Fall einwandfrei, der von der LOGO sicherlich auch. Also muss das Problem im Programm selbst liegen.
So ist Modbus aufgebaut, das ist der Aufruf ein Holding Register (Halteregister) abzufragen:
https://www.simplymodbus.ca/FC03.htm
Beispiel:
Das wäre ein Modbus Telegramm in HEX-Schreibweise
11 03 006B 0003 7687
11: The Slave Address (11 hex = address17 ) also die Stationsnummer
03: The Function Code 3 (read Analog Output Holding Registers) = welcher Datenbereich abgefragt werden soll
006B: The Data Address of the first register requested. (Die Adresse, hier wird die 4 nicht mitgeschickt)
( 006B hex = 107 , + 40001 offset = input #40108 )
0003: The total number of registers requested. (read 3 registers 40108 to 40110)
7687: The CRC (cyclic redundancy check) for error checking. = Prüfsumme für Fehlerkorrektur
Das wäre eine mögliche Antwort:
Response
11 03 06 AE41 5652 4340 49AD
11: The Slave Address (11 hex = address17 )
03: The Function Code 3 (read Analog Output Holding Registers)
06: The number of data bytes to follow (3 registers x 2 bytes each = 6 bytes)
AE41: The contents of register 40108
5652: The contents of register 40109
4340: The contents of register 40110
49AD: The CRC (cyclic redundancy check).
Das könntest du mit Wireshark sogar in deinem Modbus Netzwerk auslesen und vergleichen, wo da der Unterschied ist.