Step 7 SCL Bezeichner abgeschnitten

Kehrer

Level-2
Beiträge
382
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe keinen Fehler aber Warnungen beim übersetzen:
1638268107595.png

Code:
DATA_BLOCK DB60 FB60
//
//Rundschalttisch Taktung
//
BEGIN

END_DATA_BLOCK

FUNCTION_BLOCK FB60

VAR
    bRundtaktInPosition_LetzterZyklus:BOOL;
    bPosFlankeRundtaktInPositionGesehen:BOOL;
    iAblaufSchritt:INT; 
    tonMotorEin:TON;
    tonMotorAus:TON;
    tonTakt:TON;
    bWeiterschaltbedingung:BOOL;
END_VAR

    // Erkennung positiver Flanke

    IF bRundtaktInPosition_LetzterZyklus = false AND oRundschalttisch_eInPos = true THEN                    //NOT bRund...    AND E6.6 (Rundschalttisch in Pos)
        bPosFlankeRundtaktInPositionGesehen := true;
    END_IF;
    
    bRundtaktInPosition_LetzterZyklus := oRundschalttisch_eInPos; // Alten Status speichern
    
    IF sm_mod_scann = true THEN
        IF oRundschalt_aBremseAus = true OR xaa_Sicherheit.b_oRundschalttisch_aEin = true then
            IF oRundTaktSicher() = false THEN
                iAblaufSchritt := 0;
                xaa_Sicherheit.b_oRundschalttisch_aEin := false;
                oRundschalt_aBremseAus := false;
                sf_fehler(Fehlernummer := 1600, Fehlerart := sk_Fehler, Diagnosenummer := 0);          
            END_IF;
        END_IF;  
    END_IF;
    
    IF sm_mod_stop = true THEN
        xaa_Sicherheit.b_oRundschalttisch_aEin := false;
    END_IF;
    
    IF sm_mod_hand = true OR sm_mod_aktiv = true THEN
        
        IF sm_mod_aktiv = true AND sm_run = false THEN
            sf_fehler(Fehlernummer := 1603, Fehlerart := sk_Hinweis, Diagnosenummer := 0);              //interner Fehler sm_mod_aktiv=1 obwohl sm_run=0
        END_IF;
        
        IF oRundTaktSicher() = true THEN
            CASE iAblaufSchritt OF
                0:
                    IF (sm_hand_ein_flanke = true AND sm_mod_hand = true) OR (sm_pstep = true AND sm_mod_aktiv = true) THEN
                        iAblaufSchritt := 1;
                        bWeiterschaltbedingung := false; // Nicht ausserhalb von Flankenabfrage da eventuell zwei Objekte aufgerufen werden.
                    END_IF;
                    
                1: // Bremse raus und warten
                    oRundschalt_aBremseAus := true;                                                     //A6.1 Bremse lösen
                    tonMotorEin(IN := oRundschalt_aBremseAus, PT := T#50ms);
    
                    IF tonMotorEin.Q = true THEN
                        iAblaufSchritt := iAblaufSchritt + 1;
                    END_IF;    
    
                2: // Motorstart
                    bPosFlankeRundtaktInPositionGesehen := false;
                    xaa_Sicherheit.b_oRundschalttisch_aEin := true;
                    IF sm_run = true then
                        xaa_Sicherheit.b_oRundschalttisch_aEin := true;
                    END_IF;
                    iAblaufSchritt := iAblaufSchritt + 1;
    
                3: // Warten auf Flanke, dann Nachlaufzeit
                    
                    tonMotorAus(IN := bPosFlankeRundtaktInPositionGesehen, PT := DINT_TO_TIME(XXD_ALLG_DATEN.iNachlaufzeitRundschalt));
                    
                    //Fehlermeldung falls Takt nicht weiterschaltet
                    tonTakt(IN := xaa_Sicherheit.b_oRundschalttisch_aEin, PT :=T#15s);
                IF tonTakt.Q = true
                THEN
                      sf_fehler(Fehlernummer := 2436, Fehlerart := sk_Fehler, Diagnosenummer := 0);   //Rundschalttisch Takt nicht bewegt 
                        END_IF;
                
                    IF tonMotorAus.Q = true THEN
                        xaa_Sicherheit.b_oRundschalttisch_aEin := false;
                        oRundschalt_aBremseAus := false;
                        iAblaufSchritt := 0;
                        bWeiterschaltbedingung := true;
                    ELSE
                        IF sm_run = true then
                            xaa_Sicherheit.b_oRundschalttisch_aEin := true; // Falls ein Stop (sm_run weg --> sm_mod_stop) dazwischen war.
                        END_IF;                          
                    END_IF;
                    
                ELSE:
                    sf_fehler(Fehlernummer := 1601, Fehlerart := sk_Fehler, Diagnosenummer := 0);   //Rundschalttisch Takt Programmierfehler
            END_CASE;
        ELSE
            iAblaufSchritt := 0;
            xaa_Sicherheit.b_oRundschalttisch_aEin := false;
            oRundschalt_aBremseAus := false;
            sf_fehler(Fehlernummer := 1602, Fehlerart := sk_Fehler, Diagnosenummer := 0);      //Rundschalttisch Takt Verletzung einer Sicherheitsbedingung      
        END_IF;
                  
        IF sm_mod_aktiv = true THEN
            sm_wsb := bWeiterschaltbedingung AND sm_wsb;
        END_IF;         
           
    END_IF;
    
    IF sm_mod_kaltstart THEN
        iAblaufSchritt := 0;
        xaa_Sicherheit.b_oRundschalttisch_aEin := false;
        oRundschalt_aBremseAus := false;                                                    //A6.1 Bremse NICHT gelöst
        bWeiterschaltbedingung := false;
    END_IF;
    
END_FUNCTION_BLOCK

Was soll mir das sagen?
 
PS:
Ein kurzer Klick auf eine Warnung und ein klitzekleiner Druck auf die Taste F1 liefert folgendes:
Hilfe zur Meldung 15:4096
Beschreibung:

Sie haben einen zu langen Namen verwendet.


Behebung:

Bitte wählen Sie einen kürzeren Namen:

· Bausteinattribute (AUTHOR, NAME, FAMILY) dürfen maximal 8 Zeichen lang sein.

· Alle anderen Bezeichner dürfen maximal 24 Zeichen betragen.
 
Wenn du gerade noch in der SCL Lernphase steckst, vielleicht gewöhnst du dir noch einen anderen Schreibstil an:

Alt:
Code:
IF sm_mod_aktiv = true AND sm_run = false THEN
Neu:
Code:
IF sm_mod_aktiv AND NOT sm_run THEN

Alt:
Code:
IF oRundschalt_aBremseAus = true OR xaa_Sicherheit.b_oRundschalttisch_aEin = true then
Neu:
Code:
IF oRundschalt_aBremseAus OR "xaa_Sicherheit".b_oRundschalttisch_aEin THEN

Ich würde hier Leerzeichen einsetzen, so das es einheitlich ist. Das hilft dir später z.B. wenn du
mit Hilfsmitteln wie Notepad++ arbeitest ungemein ( bei der Suche von Deklaration, Zuweisung.... )
Alt:
Code:
bRundtaktInPosition_LetzterZyklus:BOOL;
Neu:
Code:
bRundtaktInPosition_LetzterZyklus : BOOL;
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Neu:
Code:
IF oRundschalt_aBremseAus OR "xaa_Sicherheit".b_oRundschalttisch_aEin THEN
Noch neuer, weil IMHO noch lesbarer:
Code:
IF
        oRundschalt_aBremseAus                                // Kommentar Bedingung 1
    OR  "xaa_Sicherheit".b_oRundschalttisch_aEin              // Kommentar Bedingung 2
THEN
    ;
ELSIF
        ...
    AND ...
THEN
    ;
ELSE
    ;
END_IF;
 
Zurück
Oben