Obsidean_VM/01-Documentation/Vetromeccanica/Micromeccanica Guides/Software/Logic.md

3.5 KiB

FC1035


CASE "DB Cycle".nAutoStat OF
        
    0: // Manual
        
        "DB Cycle".xExecute := FALSE;
        "DB Cycle".nZonaStat := 0;
        
        IF ("DB Collegamento HMI".NumeroPagina.NumeroPaginaCorrente = #Page101) THEN
            "DB Gateway".nOnSelection := "DB AreaPar".N["DB Cycle".nZona_ManSel].Gateway;
        ELSIF ("DB Collegamento HMI".NumeroPagina.NumeroPaginaCorrente = #Page102) THEN
            "DB Gateway".nOnSelection := "DB HMI Guide".nGWNumber;
        END_IF;
        
        
    1: // Stopped
        
        "DB Cycle".xExecute := FALSE;
        "DB Remote Control DB".WR.StatusWord."Bit_2 ChangeOverDone" := TRUE;
        "DB Cycle".nZonaStat := 0;
        
        // IF "xDI_SafetyModuleResetted_CH1" AND "xDI_SafetyModuleResetted_CH2" THEN
            IF "DB HMI Guide".xPBReset THEN
                "DB Cycle".nAutoStat := 2;               // GOTO Resetting
            END_IF;
        // END_IF;
        
            
    2: // Resetting
        
        // "DB Cycle".xZona_Stopped := FALSE;
        
        IF NOT "DB Alarms".Alm_1."15" THEN
            "DB Cycle".nAutoStat := 3;                   // GOTO Idle
        END_IF;
        
        
    3: // Idle
        
        IF "Ton_AutoStartDelay".Q THEN
            "DB Cycle".nAutoStat := 4;                   // GOTO Starting
        END_IF;
        
        
    4: // Starting
        
        "DB Cycle".nZonaStat := 2;                       // GOTO Assegnazione zona iniziale
        
        
    5: // Execute
        
        "DB Cycle".xExecute := TRUE;
        "rtExecute"(CLK:= "DB Cycle".xExecute);
        IF "rtExecute".Q THEN
            "DB Cycle".nZonaStat := 3;                  // GOTO Caricamento posizione attuatori
        END_IF;
        
        IF "DB HMI Guide".xPBCycleStop THEN               
            "DB Cycle".nAutoStat := 10;                 // GOTO Stopping
        END_IF;
        
        
    6: // Completing
        
        "DB Cycle".nZona_Actual := 1;
        
        IF "DB Cycle".xCF_Complete THEN
            "DB Cycle".nFormat_Actual := "DB Cycle".nFormat_Required;
            "DB Cycle".sFormat_NameActual := "DB Cycle".sFormat_NameRequired;
        END_IF;
        
        "DB Cycle".nAutoStat := 7;                      // GOTO Complete
        
        
    7: // Complete
        
        "DB Cycle".nZonaStat := 1;
        
        IF ("DB HMI Guide".xSELLocRem AND "DB HMI Guide".xPBReset) OR
            (NOT "DB HMI Guide".xSELLocRem AND NOT "DB Remote Control DB".RD.CtrlWord."Bit_0 ChangeOverRequest") THEN
            "DB Cycle".nAutoStat := 1;                  // GOTO Stopped
        END_IF;
        
        
    10: // Stopping
        
        "DB Cycle".xExecute := TRUE;
        
        IF "DB Cycle".xZona_Stopped THEN
            "DB Cycle".nAutoStat := 1;                  // GOTO Stopped
            "DB Cycle".xZona_Stopped := FALSE;
        END_IF;
        
        
    11: // Aborting
        
        "DB Cycle".xExecute := FALSE;
        "DB Cycle".nZonaStat := 0;
        
        IF "DB Cycle".xZona_Stopped THEN
            "DB Cycle".nAutoStat := 12;                  // GOTO Aborted
        END_IF;
        
        
    12: // Aborted
        
        "DB Cycle".xZona_Stopped := FALSE;
        
        IF "DB HMI Guide".xPBReset THEN
            "DB Cycle".nAutoStat := 1;                  // GOTO Stopped
        END_IF;
        
        
    13: // Clearing
        
        IF NOT "DB HMI Guide".xActiveAlarm THEN
            "DB Cycle".nAutoStat := 1;                   // GOTO Stopped
        END_IF;