Kieler
Level-2
- Beiträge
- 764
- Reaktionspunkte
- 86
-> Hier kostenlos registrieren
Ich habe ein Verständnis Problem.
In CODESYS ist es doch eigentlich so, das Merkerregister 0 enthält die Merkerbyte 0 und 1. Das Register %MW1 dann die Byte 1 und 2. Soweit so gut. Wenn ich jetzt jetzt aber einen Modbus TCP Slave an meiner Steuerung projektiere, welcher 2 Wörter ab der Adresse 0 beinhaltet, dann beginnt das zweite Wort nicht etwa bei "1" sondern bei "2". Das erste Wort beinhaltet dann die Bits 0.1 ... 1.7. Warum? Werden aus dem Register %IW0 dann nur 8 Bits anstelle von 16 genutzt? Was mir bei Bits ja noch relativ egal sein kann, stößt mir aber jetzt bei Doppelwörter auf.
Ich lese aus einem Janitzer Energiemessgerät einen Realwert auf die Adresse %IW100 aus. Jetzt kann ich aber in meinen Programm nicht einfach
STROM AT %ID100 : REAL;
sagen. Da kommt nichts vernünftiges raus. Für mich auch klar, %ID100 ja die Register 100 und 101 enthält. In Wirklichkeit liegt aber ein Teil des Messwertes in %IW102 und %IW103. Wie kann man das lösen??
In CODESYS ist es doch eigentlich so, das Merkerregister 0 enthält die Merkerbyte 0 und 1. Das Register %MW1 dann die Byte 1 und 2. Soweit so gut. Wenn ich jetzt jetzt aber einen Modbus TCP Slave an meiner Steuerung projektiere, welcher 2 Wörter ab der Adresse 0 beinhaltet, dann beginnt das zweite Wort nicht etwa bei "1" sondern bei "2". Das erste Wort beinhaltet dann die Bits 0.1 ... 1.7. Warum? Werden aus dem Register %IW0 dann nur 8 Bits anstelle von 16 genutzt? Was mir bei Bits ja noch relativ egal sein kann, stößt mir aber jetzt bei Doppelwörter auf.
Ich lese aus einem Janitzer Energiemessgerät einen Realwert auf die Adresse %IW100 aus. Jetzt kann ich aber in meinen Programm nicht einfach
STROM AT %ID100 : REAL;
sagen. Da kommt nichts vernünftiges raus. Für mich auch klar, %ID100 ja die Register 100 und 101 enthält. In Wirklichkeit liegt aber ein Teil des Messwertes in %IW102 und %IW103. Wie kann man das lösen??