Deutsch - Software > Kommunikation

EasyE4 -> Modbus -> IOBroker

<< < (3/3)

Peterfido:
Hallo,

Das ist völlig normal. Modbus sendet Word, also 16 Bit am Stück. Daher nutze ich lieber Node Red mit den Easy Nodes von Eaton.

CiesleRa:
Hallo Hannes,
versuche es doch einmal mit einer Maskierung. Damit kann man aus einem Merkerwort ein Bit herausfiltern und sehen, ob
es 0 oder 1 hat.
Die Bilder zeigen einen kleinen Anwenderfunktionsbaustein den man schreibt und den Aufruf im Hauptprogramm.
In dem Beispiel wird abgefragt, ob das Bit 3 in dem Merkerwort 1 ist.

Gruß Ralf

weiss_nix:
Hallo Hannes,
die Maskierung kannst du mit BV (boolsche Verknüpfung) ebenfalls lösen. Das 3. Bit hat die Wertigkeit "4" und wenn der Ausgang ZE 0 ist, dann ist das 3. Bit gesetzt.
Wie im Anhang ersichtlich ist das 3. Bit nicht gesetzt.

Wenn du die Userfunktion verwendest, könntest du den Code wie folgt schreiben um z.B. Laufzeitfehler zu verhindern ...

--- Code: ---// IA01 nach MD01 zuweisen (32 Bit prüfbar)
MD01 := IA01;
// funktioniert auch mit MB und MW ohne Änderung
// es sind dann halt nur 8 bzw. 16 Bit auswertbar


// Prüfen der Bitgrenzen um Laufzeitfehler zu verhindern,
// wenn Bitnummer gültig dem Ausgang den Status zuweisen
if IA02 >= 1 and IA02 <= 32 then
Q01 := M[IA02];
else
Q01 := false;
end_if;

--- Ende Code ---

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln