TIA Grundlegende Frage zur Abfrage der Eingänge/Ausgänge

robinbrother

Level-1
Beiträge
53
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an alle,

habe ein paar bestimmt einfache Fragen für euch.
1. kann ich die Bytes %IB0 und %IB1 mit %IW0 abfragen? (siehe Beispielsensor im Anhang)
Wenn ja funktioniert das generell so? %IB11 und %IB12 wären %IW11?

2. Wenn ich einen Messwert habe, der sich aus 4 Bytes zusammensetzt (z.B. %IB0,%IB1,%IB2,%IB4) . Wie würdet ihr das machen? Wie bekommt ihr daraus z.B. ein DINT?

Vielen Dank vorab!
 

Anhänge

  • Messwert.JPG
    Messwert.JPG
    22,1 KB · Aufrufe: 43
Hallo,

Ich würde das Word mit 7hex verunden, dann bekommst deinen bcd Wert. Danach das Word mit 8hex verunden und größer 0 abfragen dann hast deinen Target Wert und danach das ganze Word um 4 Stellen nach rechts schieben, dann hast deinen kompletten Positionswert.



Gesendet von meinem SM-G975F mit Tapatalk
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Juergena,

vielen Dank für deine Antwort. Habe von 7hex oder 8hex noch nie gehört. Wofür wird das verwendet?

Und generell kann ich mit IW0 die beiden Bytes abfragen? Bist leider nicht genau auf meine Fragen eingegangen :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du gehst im Prinzip her und maskierst dein Word zuerst mal mit 7hex damit die anderen Stellen auf 0 gesetzt werden. 7 hex sind in binär im Word 0000000000000111. Und dann gehst du mit deinem Eingangs-word her und maskiert es mit 8hex, sprich 0000000000001000. Somit erhältst du dein Targetbit als Wordzahl und damit du ein Bit bekommst fragst das Word auf größer 0 ab. Und für deinen Positionswert schiebst das komplette Word um 4 Stellen nach rechts, sprich die 4 Stellen links werden dann mit 0 aufgefüllt. Somit hast dann im Word nur deine Position stehen ohne BCD und Targetbit.

Ich hab jetzt leider nur Tapatalk um Dir einen Code zu schreiben.

Gesendet von meinem SM-G975F mit Tapatalk
 
Zuletzt bearbeitet:
verstehe leider noch nicht ganz den sinn dahinter. Würde es nicht ausreichen das Word um 4 Stellen nach Rechts zu schieben?
 
Und was machst dann mit deinem BCD und Target? Oder brauchst das nicht? Was musst denn ganz genau machen?

Gesendet von meinem SM-G975F mit Tapatalk
 
super vielen Dank!
Wenn ich ein vorzeichenbehafteten 32Bit Wert brauche. Kann ich mit einem DINT 4 aufeinander folgende Bytes abfragen? (z.B. die Bytes 0-3).
 
Zuviel Werbung?
-> Hier kostenlos registrieren
super, danke. Und wofür sollte ich es danach noch 2 mal runden und größer 0 abfragen?
Nein, nicht runden, sondern "verUNDen". Damit ist gemeint, die UND-Verknüpfung anzuwenden, z.B. um bestimmte Bits eines Bytes, Wortes, DoppelWortes ... zu "maskieren".
Das wiederum bedeutet, dass man die nicht interessierenden oder störenden Bits per "Maske" auf Null setzt.
Z.B. mit

wZiel := wQuelle AND 16#0FF0 ; // 0FF0 ist die hexadezimale Darstellung der binären Schreibweise von 00001111 11110000

würde man in wZiel eine Kopie von wQuelle erhalten, in der die Bits 0..3 und 12..15 gelöscht sind und nur die Bits 4..11 unverändert erhalten bleiben.

PS:
In Deinem Beitrag #1 hast Du "... der sich aus 4 Bytes zusammensetzt (z.B. %IB0,%IB1,%IB2,%IB4) ..." geschrieben. Das ist wahrscheinlich nur ein Tippfehler. Wenn Du "%IB0,%IB1,%IB2,%IB3" gemeint hast, geht das.
 
Zurück
Oben