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