Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched.
Close
Ich möchte bestimmte Informationen bzw. Meldungen vom Motormanagement abfragen und auf 3.Bit des 6. Bytes zugreifen und dann in eine Variable schreiben. Der Code soll folgendermaßen aussehen:
Der Vorteil gegenüber den Vorschlägen von Uwe und Tobi ist, dass die Sache auch z.B. auf einer S7 als SCL läuft (die Konstrukte wie "Id_lst[iJ1939_EDC].Data[6].3" nicht unterstützt.
In der OSCAT gibt es sicher auch eine passende Funktion.
Gruss Rolf
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
ich stehe vorm folgenden Problem:
Ich möchte bestimmte Informationen bzw. Meldungen vom Motormanagement abfragen und auf 3.Bit des 6. Bytes zugreifen und dann in eine Variable schreiben. Der Code soll folgendermaßen aussehen:
Was muss im oberen Code verändert werden damit auf Bit 4-3 des 6. Bytes zugegriffen wird, wenn das Motormanagement "water in fuel" signalisiert?
Im Anhang ist ein Ausschnitt der Motorzpezifikationen.
Ich danke für jede Hilfe.
Hallo,
im Byte 6 stehen die Statusinformationen.
Das Byte 6 besteht aus den im unteren Bild aufgeschlüsselten Informationen. Das Bit 3 und 4 sind für das "WATER IN FUEL" vorgesehen.
Ich würde den Befehl nehmen:
IF EXTRACT(Byte6,3)=1 AND EXTRACT(Byte6,4)=0 THEN
water_in_fuel := TRUE;
END_IF
IF EXTRACT(Byte6,3)=0 AND EXTRACT(Byte6,4)=0 THEN
water_in_fuel := FALSE;
END_IF
gruß bonatus
Hallo,
ich meine, es würde auch schon über
gehen - wäre noch einen tick einfacher.
Müssteste mal testen.
Gruß
Noch nen Vorschlag ganz ohne IF
water_in_fuel := Id_lst[iJ1939_EDC].Data[6].3 AND NOT Id_lst[iJ1939_EDC].Data[6].4;
...Uwe hat gewonnen!
Hallo an die schnellen Helfer,
vielen Dank für Euere Vorschläge. Ich werde es nach dem WE umsetzen
und sobald ich es getestet habe, werde ich mich wieder melden.
Schönes WE
Humphrey
Hallo,
noch ein Tipp: Auf http://www.geisler-controls.de
Der Vorteil gegenüber den Vorschlägen von Uwe und Tobi ist, dass die Sache auch z.B. auf einer S7 als SCL läuft (die Konstrukte wie "Id_lst[iJ1939_EDC].Data[6].3" nicht unterstützt.
In der OSCAT gibt es sicher auch eine passende Funktion.
Gruss Rolf
noch kürzer gehts so:
Water_In_Fuel := ((Id_lst[iJ1939_EDC].Data[6] AND 16#04) = 16#04);
Korrektur:
Water_In_Fuel := ((Id_lst[iJ1939_EDC].Data[6] AND 16#06) = 16#04);