Step 7 Probleme mit der Erstellung einer Funktion in SCL

DDuesentrieb

Level-1
Beiträge
44
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ihr,

vielleicht könnt ihr mir damit weiterhelfen.
Ich habe folgenden Code

Code:
FUNCTION FC601: VOID

VAR_INPUT
    
    DB_NR: WORD;
    Control_Voltage: BOOL;
    Fault_Reset: BOOL;
    
END_VAR

VAR_OUTPUT
    
    Collecting_Disturbance: BOOL;
END_VAR

VAR_TEMP
    
    Length_DB: WORD;
    Loop_Count: INT;
    RetVal: INT;
    Write_P: BOOL;
    Aux_Int: INT;
    Z: INT;
            
END_VAR

Begin

    Aux_Int:=       TEST_DB(DB_NUMBER :=DB_NR  // IN: WORD
                    ,DB_LENGTH :=Length_DB  // OUT: WORD
                    ,WRITE_PROT := Write_P // OUT: BOOL
                    ); // INT
     
     
     Loop_Count:= WORD_TO_INT(Length_DB);
     
     Z=0
     
     WHILE Z < Loop_Count DO
        
      Z=Z+2 
      
        IF WORD_TO_BLOCK_DB(DB_NR.DW[Z]) <> W#16#0 THEN
            Collecting_Disturbance:=true;
        END_IF;
     END_WHILE;
    
         
 END_FUNCTION

Dabei erhalte ich folgende Fehlermeldungen.

geoEm5d6HQ9XwAAAABJRU5ErkJggg==


00041: Bei der Zuweisung von Collecting Disturbance
Unbekannte Anweisung erhalte ich bei End_IF und End_While

Wisst ihr an was das liegt?
Wenn es zu banal ist entschuldige ich mich schon mal im Voraus aber im Moment stehe ich auf dem Schlauch :/

Falls sich jemand fragt was die Idee dahinter sein soll. Der Baustein soll einen Fehlerdatenbaustein durchlaufen,
welcher aus einer bestimmten Anzahl von Word - Variablen besteht. Sobald ein Bit in einer der Word - Variablen
gesetzt ist soll die allgemeine Fehlermeldung ausgegeben werden.
 
Hallo Ihr,

tut mir Leid war etwas schnell mit der Frage.
Habe nun festgestellt, dass man peinlichst genau auf den Syntax achten muss
Nachfolgend der funktionierende Code

Code:
FUNCTION FC601: VOID

VAR_INPUT
    
    DB_NR: WORD;
    Control_Voltage: BOOL;
    Fault_Reset: BOOL;
    
END_VAR

VAR_OUTPUT
    
    Collecting_Disturbance: BOOL;
END_VAR

VAR_TEMP
    
    Length_DB: WORD;
    Loop_Count: INT;
    RetVal: INT;
    Write_P: BOOL;
    Aux_Int: INT;
    Zaehler1: INT;
    Zaehler2: INT;
        
END_VAR

Begin

    Aux_Int:=       TEST_DB(DB_NUMBER :=DB_NR  // IN: WORD
                    ,DB_LENGTH :=Length_DB  // OUT: WORD
                    ,WRITE_PROT := Write_P // OUT: BOOL
                    ); // INT
     
     
     Loop_Count:= WORD_TO_INT(Length_DB);
     Collecting_Disturbance:= false;
     
    
    FOR Zaehler1:=0 TO Loop_Count-2 BY 2 DO
        
        IF WORD_TO_BLOCK_DB(DB_NR).DW[Zaehler1] <> W#16#0 AND Control_Voltage THEN
            Collecting_Disturbance:=true;
        END_IF;

    END_FOR;

         
    IF Fault_Reset = true THEN
     
        FOR Zaehler2:=0 TO Loop_Count-2 BY 2 DO
        
            WORD_TO_BLOCK_DB(DB_NR).DW[Zaehler2]:= W#16#0; 
        
        END_FOR;
    
    END_IF;
 
     
     
 END_FUNCTION
 
Zurück
Oben