FB Var In Sammelüberwachung

klauserl

Level-2
Beiträge
246
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!
Habe einen FB an welchem etwa 25 Variablen vom Typ In sind. Ich sollte nun davon 10 Variablen auf folgendes überwachen.
Es darf immer nur eine oder keine In Variable "1" sein. Also wenn zwei oder mehr "1" sind dann Störung. Gibt es eine Möglichkeit dies im FB auszuwerten?
Danke
 
Ja die Möglicheit gibts :ROFLMAO:. Frage beantwortet?

Ne, Scherz beiseite, sind das Bool- oder INT-Variablen?
 
Ja die Möglicheit gibts :ROFLMAO:. Frage beantwortet?

Ne, Scherz beiseite, sind das Bool- oder INT-Variablen?

Es sind Bool Variablen.
Der Tipp mit dem FC99 ist ja auch recht gut, aber für meinem Fall etwas ungünstig, weil der FC99 auf DWORD abfragt und ich will den FB deswegen nicht mit einer Menge nicht belegten In Var belegen.
 
Ich hab mal ein Beispile zusammengestellt, das das Ganze etwas verdeutlicht:

Code:
FUNCTION_BLOCK FB 300
TITLE =
VERSION : 0.1


VAR_INPUT
  Word_Var_1 : WORD ;    
  Bool_01 : BOOL ;    
  Bool_02 : BOOL ;    
  Bool_03 : BOOL ;    
  Bool_04 : BOOL ;    
  Bool_05 : BOOL ;    
  Bool_06 : BOOL ;    
  Bool_07 : BOOL ;    
  Bool_08 : BOOL ;    
  Bool_09 : BOOL ;    
  Bool_10 : BOOL ;    
  Bool_11 : BOOL ;    
  Bool_12 : BOOL ;    
  Bool_13 : BOOL ;    
  Bool_14 : BOOL ;    
  Bool_15 : BOOL ;    
  Bool_16 : BOOL ;    
  Bool_17 : BOOL ;    
  Bool_18 : BOOL ;    
  Bool_19 : BOOL ;    
  Bool_20 : BOOL ;    
  Bool_21 : BOOL ;    
  Bool_22 : BOOL ;    
  Bool_23 : BOOL ;    
  Bool_24 : BOOL ;    
  Bool_25 : BOOL ;    
  Word_Var_2 : WORD ;    
END_VAR
VAR
  dw_MyVar : DWORD ;    
  Summe : INT ;    
END_VAR
BEGIN
NETWORK
TITLE =

//Achtung, das 1. Bit muß an einer Wordgrenze beginnen (hier zur Veranschaulichung 2.0, siehe In-Deklaration oben) 
      L     P##Bool_01; 
      LAR1  ; 

      L     D [AR1,P#0.0]; 
      T     MD   100; //nur zum Ansehen in einer VAT
      L     2#11111111111111111111111100000001; 
      UD    ; 
      T     #dw_MyVar; 
      T     MD   104; //nur zum Ansehen in einer VAT

      CALL FC    99 (
           IN                       := #dw_MyVar,
           RET_VAL                  := #Summe);

      L     #Summe; 
      T     MW   108; //nur zum Ansehen in einer VAT
END_FUNCTION_BLOCK

Sieh es dir einfach mal an, so ähnlich kannst du das machen. Den FC99 mußt du natürlich vorher noch aus der Library holen (TI-S7 Converting Blocks)
 
Zurück
Oben