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

124 lines
3.5 KiB
Markdown

FC1035
```pascal
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;
```