InstanzDB: IN(INT), Auswertung der Bits...

AndreK

Level-1
Beiträge
415
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
mal nachgefragt: Ich übergebe einem FB mit Instanz-DB ein INT, in dem Bits vom Bediensystem (HMI) bearbeitet werden.

Aus diesem INT möchte ich natürlich im FB intern die BITS "ziehen".

Ich habe das erstmal wie folgt gelöst:

L HMI_IN #(INT)
T TMP_INT #(INT) in den Lokalbereich (dort habe ich immer ein paar mit TMP markierte Pufferbereiche)

U L8.0 #Lokales Bit laden...
= HMI_BIT0 #und in den STAT Bereich schreiben
... nun noch die anderen...

Kann man das auch mit weniger Zeilen bzw. anders lösen?

Danke für euer Hirnschmalz ;-)
 
viel kürzer nicht aber schöner.
den lokaldatenbereich direkt anzusprechen ist nicht schön, da man den ganzen code versauen kann wenn man die schnittstelle ändert
im bild ist das im temp-bereich. funktioniert aber genauso im stat-bereich (test ist eine struct)
 

Anhänge

  • Zwischenablage02.gif
    Zwischenablage02.gif
    5,9 KB · Aufrufe: 25
Zuviel Werbung?
-> Hier kostenlos registrieren
Erst mal danke für die Antwort.

Hab das mal umgesetzt. Passt auch... wobei:
1. Der TEMP Bereich fängt doch immmer mit 0 an, auch wenn man an der Schnittstelle was ändert...?
2. Blöd das man mit LAR1 P#xxxx nur im TEMP Bereich arbeiten kann, legt man das Struct im STAT an, geht PLCSIM auf CPU-Stop... ich habs halt gern zur beobachtung im STAT.
 
Erst mal danke für die Antwort.

Hab das mal umgesetzt. Passt auch... wobei:
1. Der TEMP Bereich fängt doch immmer mit 0 an, auch wenn man an der Schnittstelle was ändert...?
2. Blöd das man mit LAR1 P#xxxx nur im TEMP Bereich arbeiten kann, legt man das Struct im STAT an, geht PLCSIM auf CPU-Stop... ich habs halt gern zur beobachtung im STAT.

Wenn du Stat nimmst geht das auch aber dann mußt du statt

L LW[...
L DIW[...

schreiben.

Und Achtung bei Multiinstanzen,da muß dann evtl. nach das AR 2 dazu addiert werden.
 
1. Der TEMP Bereich fängt doch immmer mit 0 an, auch wenn man an der Schnittstelle was ändert...?
Ja. Aber die variable in die du transferierst mus ja nicht unbedingt die erste dort sein.
wenn du es über das ar machst ist es völlig egal wo die dort liegt da du ja mit L p##xxx die adresse ins ar lädst.

Ralle schrieb:
Und Achtung bei Multiinstanzen,da muß dann evtl. nach das AR 2 dazu addiert werden.
War das nicht andersrum? wenn er ar2 benutzt muss er was addieren
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gewünschtes Bit ausmaskieren oder in A1 schieben/rotieren.
Gleiche Frage hatten wir gerade Vorgestern hier: Bitzugriff auf Word im FB (Temp oder Stat Bereich)

Wenn Du einzelne Bits eines Parameters auswerten willst, dann kann der Datentyp strenggenommen nicht INT sein, sondern müsste WORD sein.

Harald
 
Zurück
Oben