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

AndreK

Level-1
Beiträge
415
Reaktionspunkte
27
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.
 
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.
 
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.
 
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
 
oder den transfer über das ar
Code:
LAR1 P##stm_bit
L W [AR1,P#0.0]
T #out_stm
 
Für die Nutzung dieser Website sind Cookies erforderlich. Du musst diese akzeptieren, um die Website weiter nutzen zu können. Erfahre mehr…