Create Cyclic.st
1234
This commit is contained in:
235
test/Cyclic.st
Normal file
235
test/Cyclic.st
Normal file
@@ -0,0 +1,235 @@
|
|||||||
|
|
||||||
|
PROGRAM _CYCLIC
|
||||||
|
(* Insert code here *)
|
||||||
|
|
||||||
|
// IV1 Valve Condition Change
|
||||||
|
IV1_SET_CLOSE;// := gPM.IO.AI.EXH_VG2_MONITOR > 1.33;
|
||||||
|
|
||||||
|
//IV7
|
||||||
|
// Gauge VG1 / V22
|
||||||
|
gPM.IO.AI.EXH_VG1_MONITOR := ChangeRange(AI_EXH_BOX1[1], 0, 32767.0, 0, 0.4); // P1
|
||||||
|
gPM.IO.AI.EXH_VG2_MONITOR := ChangeRange(AI_EXH_BOX1[2], 0, 32767.0, 0, 133.0); // P2
|
||||||
|
gPM.IO.AI.EXH_VG3_MONITOR := ChangeRange(AI_EXH_BOX1[3], 0, 32767.0 ,0, 1.33); // P.SW11
|
||||||
|
|
||||||
|
// Read
|
||||||
|
gAPC[0].Read.Remote := DI_EXH_BOX2[7]; // gPM.IO.DI.EXH_CKD_REMOTE_STATUS; : 1: remote
|
||||||
|
gAPC[0].Read.Alarm := NOT DI_EXH_BOX2[8]; // gPM.IO.DI.EXH_CKD_ALARM_STATUS; : 1: normal
|
||||||
|
|
||||||
|
gAPC[0].Read.Position := ChangeRange(AI_EXH_BOX1[0],0,32767,0,100); (* Change Position : 0~ 100% *)
|
||||||
|
gAPC[0].Read.Pressure := SEL(gAPC[0].Write.RangeSel = TRUE, gPM.IO.AI.EXH_VG1_MONITOR, gPM.IO.AI.EXH_VG2_MONITOR);
|
||||||
|
|
||||||
|
gAPC[0].Write.RangeSel := (gPM.IO.AI.EXH_VG2_MONITOR > 0.4);
|
||||||
|
|
||||||
|
// All Reset
|
||||||
|
gAPC[0].Write.Close := FALSE;
|
||||||
|
gAPC[0].Write.Open := FALSE;
|
||||||
|
gAPC[0].Write.SlowVac := FALSE;
|
||||||
|
gAPC[0].Write.Pressure := FALSE;
|
||||||
|
gAPC[0].Write.Position := FALSE;
|
||||||
|
gAPC[0].Write.OpeningHold := FALSE;
|
||||||
|
|
||||||
|
CASE gAPC[0].Set.ControlMode OF
|
||||||
|
0: // CLOSE
|
||||||
|
gAPC[0].Write.Close := TRUE;
|
||||||
|
1: // OPEN
|
||||||
|
gAPC[0].Write.Open := TRUE;
|
||||||
|
2: // SLOW VAC
|
||||||
|
gAPC[0].Write.SlowVac := TRUE;
|
||||||
|
3: // PRESSURE
|
||||||
|
gAPC[0].Write.Pressure := TRUE;
|
||||||
|
4: // POSITION
|
||||||
|
gAPC[0].Write.Position := TRUE;
|
||||||
|
END_CASE;
|
||||||
|
|
||||||
|
DO_EXH_BOX2[0] := NOT gAPC[0].Write.Close; // Close = false , OtherCommand = true
|
||||||
|
DO_EXH_BOX2[1] := gAPC[0].Write.Open;
|
||||||
|
DO_EXH_BOX2[2] := gAPC[0].Write.SlowVac;
|
||||||
|
DO_EXH_BOX2[3] := gAPC[0].Write.Pressure;
|
||||||
|
DO_EXH_BOX2[9] := gAPC[0].Write.Position;
|
||||||
|
|
||||||
|
DO_EXH_BOX2[4] := gAPC[0].Write.RangeSel; // Range Select P1 : false, P2 : true
|
||||||
|
DO_EXH_BOX2[7] := gAPC[0].Write.OpeningHold;
|
||||||
|
|
||||||
|
// Option
|
||||||
|
// Table Selector
|
||||||
|
// 1 : 0, 0
|
||||||
|
// 2 : 1, 0
|
||||||
|
// 3 : 0, 1
|
||||||
|
// 4 : 1, 1
|
||||||
|
|
||||||
|
TableSelect[0](Index := gAPC[0].Write.TableSelector);
|
||||||
|
TableSelector[0].First := TableSelect[0].Selector1;
|
||||||
|
TableSelector[0].Second := TableSelect[0].Selector2;
|
||||||
|
|
||||||
|
DO_EXH_BOX2[5] := TableSelector[0].First; // gPM.IO.DV.EXH_CKD_TABLE_SELECT1_CMD;
|
||||||
|
DO_EXH_BOX2[6] := TableSelector[0].Second; // gPM.IO.DV.EXH_CKD_TABLE_SELECT2_CMD;
|
||||||
|
|
||||||
|
// Set Pressure or Position Target
|
||||||
|
IF gAPC[0].Write.Pressure = TRUE THEN
|
||||||
|
|
||||||
|
// Change P1/P2 Setting Range
|
||||||
|
IF gAPC[0].Write.RangeSel = TRUE THEN
|
||||||
|
AO_EXH_BOX1[0] := REAL_TO_INT(ChangeRange(gAPC[0].Write.PressureValue,0, 133.0, 0, (32767.0/2.0)));
|
||||||
|
ELSE
|
||||||
|
AO_EXH_BOX1[0] := REAL_TO_INT(ChangeRange(gAPC[0].Write.PressureValue,0, 0.4, 0, (32767.0/2.0)));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
ELSE
|
||||||
|
IF gAPC[0].Write.Position = TRUE THEN
|
||||||
|
// Valve Type Old
|
||||||
|
AO_EXH_BOX1[0] := REAL_TO_INT(ChangeRange(gAPC[0].Write.PositionValue,0, 100.0, 0, (32767.0/2.0)));
|
||||||
|
// Valve Type New
|
||||||
|
//AO_EXH_BOX1[2] := REAL_TO_INT(gPM.IO.AV.EXH_CKD_OPE_SET / 100.0 * (32767.0/2.0));
|
||||||
|
END_IF
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
(* Select 1~20 Torr *)
|
||||||
|
IF gAPC[0].Write.SlowVacRate < 1 THEN
|
||||||
|
gAPC[0].Write.SlowVacRate := 1;
|
||||||
|
ELSIF gAPC[0].Write.SlowVacRate > 20 THEN
|
||||||
|
gAPC[0].Write.SlowVacRate := 20;
|
||||||
|
END_IF;
|
||||||
|
|
||||||
|
AO_EXH_BOX1[1] := REAL_TO_INT(ChangeRange(gAPC[0].Write.SlowVacRate,0, 20.0, 0, (32767.0/2.0)));
|
||||||
|
|
||||||
|
(* ============================================== *)
|
||||||
|
(* APC Alarm Judgement Loop *)
|
||||||
|
(* ============================================== *)
|
||||||
|
FOR i := 0 TO 0 DO
|
||||||
|
(* ===== 1. Stability Use Parameter ===== *)
|
||||||
|
JudgeConfig[i].Stab[0].Use := gAPC[i].Set.UsingStability;
|
||||||
|
JudgeConfig[i].Stab[1].Use := gAPC[i].Set.UsingStability;
|
||||||
|
|
||||||
|
(* ===== 2. Pressure Stabilize ===== *)
|
||||||
|
APC_PressStabilizes[i](
|
||||||
|
Enable := (gAPC[i].Set.UsingStability AND gAPC[i].Write.Pressure),
|
||||||
|
SV := gAPC[i].Write.PressureValue,
|
||||||
|
PV := gAPC[i].Read.Pressure,
|
||||||
|
Param := JudgeConfig[i].Stab[0],
|
||||||
|
CycleTime := CycleTime
|
||||||
|
);
|
||||||
|
|
||||||
|
(* ===== 3. Position Stabilize *)
|
||||||
|
APC_PosStabilizes[i](
|
||||||
|
Enable := (gAPC[i].Set.UsingStability AND gAPC[i].Write.Position),
|
||||||
|
SV := gAPC[i].Write.PositionValue,
|
||||||
|
PV := gAPC[i].Read.Position,
|
||||||
|
Param := JudgeConfig[i].Stab[1],
|
||||||
|
CycleTime := CycleTime
|
||||||
|
);
|
||||||
|
|
||||||
|
// 0=Idle, 1=Delay, 2=Stabilizing, 3=Stable
|
||||||
|
gAPC[i].State.StabStep := APC_PressStabilizes[i].State + APC_PosStabilizes[i].State;
|
||||||
|
|
||||||
|
(* Stabilize *)
|
||||||
|
gAPC[i].State.StabUpperAlarm := APC_PressStabilizes[i].AlarmUpper OR APC_PosStabilizes[i].AlarmUpper;
|
||||||
|
gAPC[i].State.StabLowerAlarm := APC_PressStabilizes[i].AlarmLower OR APC_PosStabilizes[i].AlarmLower;
|
||||||
|
|
||||||
|
|
||||||
|
(* ===== 4. Judge Use Parameter *)
|
||||||
|
JudgeConfig[i].Judge[0].Use := gAPC[i].Set.UsingAlarmWatch;
|
||||||
|
JudgeConfig[i].Judge[1].Use := gAPC[i].Set.UsingAlarmWatch;
|
||||||
|
JudgeConfig[i].Judge[2].Use := gAPC[i].Set.UsingAlarmWatch;
|
||||||
|
(* ===== 5. Pressure *)
|
||||||
|
APC_PressJudges[i](
|
||||||
|
Enable := (gAPC[i].Set.JudgementType = 0 AND gAPC[i].Write.Pressure),
|
||||||
|
SV := gAPC[i].Write.PressureValue,
|
||||||
|
PV := gAPC[i].Read.Pressure,
|
||||||
|
Param := JudgeConfig[i].Judge[0],
|
||||||
|
CycleTime := CycleTime
|
||||||
|
);
|
||||||
|
|
||||||
|
(* ===== 6. Position *)
|
||||||
|
APC_PosJudges[i](
|
||||||
|
Enable := (gAPC[i].Set.JudgementType = 0 AND gAPC[i].Write.Position),
|
||||||
|
SV := gAPC[i].Write.PositionValue,
|
||||||
|
PV := gAPC[i].Read.Position,
|
||||||
|
Param := JudgeConfig[i].Judge[2],
|
||||||
|
CycleTime := CycleTime
|
||||||
|
);
|
||||||
|
|
||||||
|
(* ===== 7. Leak ===== *)
|
||||||
|
(* Enable Condition : JudgeType = Leak AND Valve State = Close *)
|
||||||
|
APC_LeakJudges[i](
|
||||||
|
Enable := (gAPC[i].Set.JudgementType = 1 AND gAPC[i].Set.ControlMode = 0),
|
||||||
|
PV := gAPC[i].Read.Pressure,
|
||||||
|
Param := JudgeConfig[i].Judge[1],
|
||||||
|
CycleTime := CycleTime
|
||||||
|
);
|
||||||
|
gAPC[i].Read.LeakStartPressure := APC_LeakJudges[i].StartPressure;
|
||||||
|
|
||||||
|
gAPC[i].State.JudgeStep := APC_LeakJudges[i].State + APC_PressJudges[i].State + APC_PosJudges[i].State;
|
||||||
|
|
||||||
|
(* 8. Warning/Alarm *)
|
||||||
|
gAPC[i].State.WarningValueState :=
|
||||||
|
APC_PressJudges[i].WarningHighState OR APC_PressJudges[i].WarningLowState OR
|
||||||
|
APC_LeakJudges[i].WarningHighState OR APC_LeakJudges[i].WarningLowState OR
|
||||||
|
APC_PosJudges[i].WarningHighState OR APC_PosJudges[i].WarningLowState;
|
||||||
|
|
||||||
|
gAPC[i].State.AlarmValueState :=
|
||||||
|
APC_PressJudges[i].AlarmHighState OR APC_PressJudges[i].AlarmLowState OR
|
||||||
|
APC_LeakJudges[i].AlarmHighState OR APC_LeakJudges[i].AlarmLowState OR
|
||||||
|
APC_PosJudges[i].AlarmHighState OR APC_PosJudges[i].AlarmLowState;
|
||||||
|
|
||||||
|
|
||||||
|
IF APC_PosStabilizes[i].AlarmLower THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 518 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF APC_PosStabilizes[i].AlarmUpper THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 519 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF APC_PressStabilizes[i].AlarmLower THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 520 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF APC_PressStabilizes[i].AlarmUpper THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 521 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF APC_PosJudges[i].WarningLowState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 522 + (i*16));
|
||||||
|
END_IF
|
||||||
|
IF APC_PosJudges[i].WarningHighState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 523 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF APC_LeakJudges[i].WarningLowState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 524 + (i*16));
|
||||||
|
END_IF
|
||||||
|
IF APC_LeakJudges[i].WarningHighState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 525 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF APC_PressJudges[i].WarningLowState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 526 + (i*16));
|
||||||
|
END_IF
|
||||||
|
IF APC_PressJudges[i].WarningHighState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 527 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF APC_PosJudges[i].AlarmLowState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 528 + (i*16));
|
||||||
|
END_IF
|
||||||
|
IF APC_PosJudges[i].AlarmHighState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 529 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF APC_LeakJudges[i].AlarmLowState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 530 + (i*16));
|
||||||
|
END_IF
|
||||||
|
IF APC_LeakJudges[i].AlarmHighState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 531 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
IF APC_PressJudges[i].AlarmLowState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 532 + (i*16));
|
||||||
|
END_IF
|
||||||
|
IF APC_PressJudges[i].AlarmHighState THEN
|
||||||
|
PostAlarm(gAlarmManager,gAlarmUseInfo[AlarmTableIndex].UseInfo, 533 + (i*16));
|
||||||
|
END_IF
|
||||||
|
|
||||||
|
END_FOR;
|
||||||
|
|
||||||
|
END_PROGRAM
|
||||||
Reference in New Issue
Block a user