Problem mit Modbus FunctionCodes

Da ich eben versucht habe zwei Modbus Geräte an einem Bus zum laufen zu bekommen. Habe ich mir mal die Tabelle mit den FunctionCodes angesehen.
Irgendwie verwirrt mich das nur. Ich verstehe nicht was ich einstellen muss um Code 0x10 beim schreiben zu nutzen.
Bei mir nutzt er nur 0x06 und Der steht da gar nicht…
Ist also so nicht hilfreich :frowning:
Michael

Hallo Michael,

funktioniert es denn nicht bei dir? Eigentlich sollte IP-Symcon mit 0x10 auch einzelne Register schicken können und dein Gerät das korrekt behandeln. Ein 0x10 mit nur einem Register ist prinzipiell das gleiche wir ein 0x06.

Gruß,
gucky

Sollten wir vielleicht mal abtrennen (aber nicht per TapATalk). Das Gerät ist so blöd es will immer 16 beim schreiben. Aber Lesen geht immer 3 & 4.
Die Frage ist woran macht IPS den Schreibbefehl fest ?
Michael

Hallo Michael,

das klingt doch korrekt, 0x10 ( =16 ) sollte IP-Symcon auch korrekt zum schreiben verwenden. 0x10 wird immer verwendet wenn ein Datentyp außer „Bit“ ohne „Nur Lesen“ geschrieben wird.

Verstehe ich dein Problem vielleicht falsch? Was genau funktioniert, und was funktioniert in welcher Situation nicht?

Wenn es sich um ein Verständnis Problem unserer Doku handelt überarbeiten wir diese gerne, ich bin aber noch nicht sicher ob es nicht eher ein Problem mit deinem Gerät ist.

Gruß,
gucky

Ich habe es eben endlich noch mal in Ruhe ausgetestet.
Das möchte ich ‚schreiben‘:
An Gerät 3 mit FunctionCode 0x10 Adresse 0x1018 ein Register mit 2 Byte den Wert 0x0003 senden.


SEND: 03 10 10 18 00 01 02 00 03 ED 28 
RECV: 03 10 10 18 00 01 84 EC 

Geht zu fuß mit SPRT_SendText perfekt. :smiley:

Das sendet IPS wenn ich ModBus_WriteRegisterSmallInt oder ModBus_WriteRegisterWord nutze:


SEND: 03 06 10 18 00 03 4C EE 
RECV: 03 86 01 22 60 

Also in etwas: An Gerät 3 mit FunctionCode 0x06 Adresse 0x1018 den Wert 0x0003 senden.
Was mache ich denn da nun falsch :confused:
Mein Gerät unterstützt nur den Code 0x16 :frowning: (zum schreiben)

Michael

Guten Morgen Michael,

da hast du eine Inkonsistenz zwischen unserer Dokumentation und der Implementation gefunden. Wir haben die Implementation überarbeitet, sodass jetzt korrekt 0x10 gesendet wird, dann sollte auch dein Gerät funktionieren.

Du kannst das in der IPS Beta direkt testen!

Gruß,
gucky

Moin,
danke für den Fix. Habe ich ja heute Nacht wieder was zu tun :slight_smile:
Solange jetzt nicht andere mit ihren Geräten Probleme haben…

Nächster Step ist jetzt mehrere ModBus-Geräte (also auch Splitter) auf dem gleichen physikalischen Bus zu betreiben. Hat da schon jemand mit Erfahrung? Nicht das sich die Splitter-Instanzen nachher in die Quere kommen, wenn sie alle auf den gleichen I/O hängen und lesen bzw. schreiben wollen.
Michael

Das geht zur Zeit noch nicht, da genau das passiert, was du sagst… Sie kommen sich in die Quere. Ist aber rein technisch auch ein Bug von uns :wink:

paresy

Und rein praktisch ? OK der war gemein :wink:
Da juckts einen in den Finger selbst was zu bauen, loht sich ja aber nicht mehr wirklich wenn ich an 4.0 denke.
Warum überhaupt ein Splitter mit SlaveID? Kann die ID nicht in die Instanz wandern ? Dann wäre das Thema erledigt.
Bug Report oder Feature Request ? :smiley:
Michael