Im FB (Multiinzanz) mehrere Bits als Word/Int ausgeben...

AndreK

Level-1
Beiträge
415
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ist wahrscheinlich simpel, aber ich habe es noch nie verwendet.

Ich möchte in einem Multiinstanz-FB die Störmeldungen als einzelne Bits erzeugen, aber als 16Bit Word/Int für WinCCflex ausgeben.

Geht folgendes(ich umschreibe es mal)?
U DE1
= L0.0
U DE2
= L0.1
U DE3
= L0.2
usw...

L LW0
T AUSGANGSWORD

Habe ich eine andere Möglichkeit die Bits (zusammenhängend) aus dem STAT Bereich als Word/Int auszugeben? Mir ist schon klar das ich auch direkt das Word im STAT Bereich benutzen kann... wird aber problematisch wenn ich den FB ändere... der Bereich könnte sich ja verschieben.

Ich bedanke mich schon mal vorab.
 
Hallo,

das funktioniert so, aber schön ist anders. ich würde nicht absolut-adressiert auf irgendwelche Bits zugreifen. Dann lieber indirekt adressiert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
beziehst du dich auf DE1,2 und 3... das hatte ich nur so geschrieben. Die DE`s werden über den IN des MultiFB gelesen. Nicht direkt von der Hardwarekarte... ;-) Das kommt mir nicht auf die CPU. :cool:
 
Nein, ich beziehe mit auf L0.0 usw.

wenn du das ganze Wort als Stoerwort deklarierst könntest du auf die einzelnen Bits z.B. so zugreifen.

Code:
      LAR1 p##Stoerwort
      U      DE1
      =      [AR1,P#0.0]
      U      DE2
      =      [AR1,P#0.2]
      U      DE3
      =      [AR1,P#0.2]

Wenn dann aus welchen Gründen auch immer sich deine Lokaldaten schieben funktioniert das immer noch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
noch schöner ist eine struct
z.b. so
Code:
FUNCTION_BLOCK FB 1
TITLE =
VERSION : 0.1

VAR
  stm_bit : STRUCT  
   nummer : ARRAY  [0 .. 15 ] OF BOOL ; 
  END_STRUCT ; 
END_VAR
BEGIN
NETWORK
TITLE =
      U     E      0.0; 
      =     #stm_bit.nummer[0]; 

END_FUNCTION_BLOCK
 
Zurück
Oben