, eState=> , nCapacity=> , bBusy=> , bError=> , nErrID=> ); //******************************IO********************************* IO_EXCHANGE(); //*****************************CONFIGURATION*********************** IL(); //*****************************INTERLOCK*************************** Temp(); //*****************************PROCESS***************************** PROCESS_RUN:=GV.Process_Start AND NOT GV.ALARM_OCC AND GV.NDI.GV1_CLOSE; PROCESS_STOP:=GV.Process_Stop OR GV.ALARM_OCC; //PROCESS ENABLE IF PROCESS_RUN AND NOT PROCESS_EN THEN CYCLE_NUM := 0; STEP_NO:=1; P_NO:=1; PM.ProcessFeedBack.ProcessFinished:=FALSE; END_IF IF PROCESS_RUN AND NOT PROCESS_EN THEN PROCESS_EN:=TRUE; END_IF; IF PROCESS_STOP THEN CYCLE_NUM:=0; CYCLE_EN:=FALSE; PROCESS_EN:=FALSE; PROCESS_RUN:=FALSE; END_IF; IF NOT PM.ProcessFeedBack.ProcessFinished THEN PM.ProcessFeedBack.CurrentStepNo:=STEP_NO; ELSE PM.ProcessFeedBack.CurrentStepNo:=STEP_NO-1; END_IF IF PROCESS_EN THEN PM.ProcessFeedBack.ProcessStart:=TRUE; PM.ProcessFeedBack.CurrentStepstart:=TRUE; ELSE PM.ProcessFeedBack.ProcessStart:=FALSE; PM.ProcessFeedBack.CurrentStepstart:=FALSE; END_IF IF GV.Step_Num100 THEN STEP_NO:=1; END_IF //CYCLE初始化 IF GV.SetpArray[STEP_NO].CycleStart AND CYCLE_EN=FALSE THEN CYCLE_EN := TRUE; CYCLE_START_STEP_NO := STEP_NO; CYCLE_NUM := GV.SetpArray[STEP_NO].CycleNumber; END_IF; //STEP PROCESS( ENABLE := PROCESS_EN, NEXTSTEP_EN := NEXTSTEP_EN, Alarm_RST := UI.Warning_And_Alarm_RST, PMStableTime := UI.PMConfig.PMStableTime, STEP_DATA := GV.SetpArray[STEP_NO], ); //PROCESS FLOW CASE P_NO OF 1: IF NOT PROCESS_EN THEN P_NO:=100; ELSE P_NO:=2; END_IF; NEXTSTEP_EN:=FALSE; 2: IF PROCESS.NEXTSTEP THEN PM.ProcessFeedBack.CurrentStepFinished:=TRUE; PM.ProcessFeedBack.CurrentStepstart:=FALSE; P_NO:=3; END_IF; 3: IF CYCLE_EN THEN P_NO:=10; ELSE P_NO:=20; END_IF 10: IF GV.SetpArray[STEP_NO].CycleEnd THEN P_NO:=11; ELSE P_NO:=20; END_IF; 11: IF CYCLE_NUM=0 THEN P_NO:=20; CYCLE_EN:=FALSE; ELSE CYCLE_NUM:=CYCLE_NUM-1; P_NO:=21; END_IF; 20: STEP_NO:=STEP_NO+1; NEXTSTEP_EN:=TRUE; P_NO:=1; PM.ProcessFeedBack.CurrentStepstart:=TRUE; PM.ProcessFeedBack.CurrentStepFinished:=FALSE; 21: STEP_NO:=CYCLE_START_STEP_NO; NEXTSTEP_EN:=TRUE; P_NO:=1; 100:; END_CASE; IF PROCESS_EN THEN //******************工艺参数赋值*************** //APC GV. AO. APC.TARGET_PRESSURE := PROCESS.APC_PRESSURE; GV. AO. APC.TARGET_POSITION := PROCESS.APC_POSITION; IF GV_IL.APC_EN THEN GV.AO. APC. Control_Mode := PROCESS.APC_CONTROL_MODE ; ELSE GV.AO. APC. Control_Mode := 3 ; END_IF //MFC GV.AO.MFC1_Flow_Setpoint := PROCESS.MFC1_SV; GV.AO.MFC2_Flow_Setpoint := PROCESS.MFC2_SV; GV.AO.MFC3_Flow_Setpoint := PROCESS.MFC3_SV; // GV.AO.MFC4_Flow_Setpoint := PROCESS.MFC4_SV; GV.AO.MFC5_Flow_Setpoint := PROCESS.MFC5_SV; GV.AO.MFC6_Flow_Setpoint := PROCESS.MFC6_SV; GV.AO.MFC7_Flow_Setpoint := PROCESS.MFC7_SV; // GV.AO.MFC8_Flow_Setpoint := PROCESS.MFC8_SV; // GV.AO.MFC9_Flow_Setpoint := PROCESS.MFC9_SV; //LID HEATER GV.AO.LID_Temp_SV := PROCESS.LID_TEMP; //CHAMBER HEATER GV.AO. Chamber_Temp1_SV := GV.AO. Chamber_Temp2_SV := GV.AO. Chamber_Temp3_SV := PROCESS.WALL_TEMP; //CHILLER // GV. CHILLER2_TEMP_SV := PROCESS.STAGE_EDGE_TEMP; //CHILLER1 // GV. CHILLER1_TEMP_SV := PROCESS.STAGE_EDGE_TEMP; //CHILLER2 //************************TOLERANCE 赋值**************** //************************VALVE动作**************** GV.NDO.AV1 := FALSE ;// ( GV.AO.MFC1_Flow_Setpoint>0 ) AND PM.INFO.Alarm.TOLERANCE_MFC1 AND GV_IL.AV1_EN ; GV.NDO.AV2 := ( GV.AO.MFC1_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC1 AND GV_IL.AV2_EN ; GV.NDO.AV3 := ( GV.AO.MFC1_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC1 AND GV_IL.AV3_EN ; GV.NDO.AV4 := FALSE ;// ( GV.AO.MFC2_Flow_Setpoint>0 ) AND PM.INFO.Alarm.TOLERANCE_MFC2 AND GV_IL.AV4_EN ; GV.NDO.AV5 := ( GV.AO.MFC2_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC2 AND GV_IL.AV5_EN ; GV.NDO.AV6 := ( GV.AO.MFC2_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC2 AND GV_IL.AV6_EN ; GV.NDO.AV7 := FALSE ;// ( GV.AO.MFC3_Flow_Setpoint>0 ) AND PM.INFO.Alarm.TOLERANCE_MFC3 AND GV_IL.AV7_EN ; GV.NDO.AV8 := ( GV.AO.MFC3_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC3 AND GV_IL.AV8_EN ; GV.NDO.AV9 := ( GV.AO.MFC3_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC3 AND GV_IL.AV9_EN ; GV.NDO.AV10 := FALSE ;// ( ) AND AND GV_IL.AV10_EN ; GV.NDO.AV11 := FALSE ;// ( ) AND AND GV_IL.AV11_EN ; GV.NDO.AV12 := FALSE ;// ( ) AND AND GV_IL.AV12_EN ; GV.NDO.AV13 := FALSE ;// ( ) AND AND GV_IL.AV13_EN ; GV.NDO.AV14 := FALSE ;// ( GV.AO.MFC5_Flow_Setpoint>0 ) AND PM.INFO.Alarm.TOLERANCE_MFC5 AND GV_IL.AV14_EN ; GV.NDO.AV15 := ( GV.AO.MFC5_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC5 AND GV_IL.AV15_EN ; GV.NDO.AV16 := ( GV.AO.MFC5_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC5 AND GV_IL.AV16_EN ; GV.NDO.AV17 := FALSE ;// ( ) AND AND GV_IL.AV17_EN ; GV.NDO.AV18 := FALSE ;// ( ) AND AND GV_IL.AV18_EN ; GV.NDO.AV19 := FALSE ;// ( ) AND AND GV_IL.AV19_EN ; GV.NDO.AV20 := FALSE ;// ( GV.AO.MFC6_Flow_Setpoint>0 ) AND PM.INFO.Alarm.TOLERANCE_MFC6 AND GV_IL.AV20_EN ; GV.NDO.AV21 := ( GV.AO.MFC6_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC6 AND GV_IL.AV21_EN ; GV.NDO.AV22 := ( GV.AO.MFC6_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC6 AND GV_IL.AV22_EN ; GV.NDO.AV23 := FALSE ;// ( GV.AO.MFC7_Flow_Setpoint>0 ) AND PM.INFO.Alarm.TOLERANCE_MFC7 AND GV_IL.AV23_EN ; GV.NDO.AV24 := ( GV.AO.MFC7_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC7 AND GV_IL.AV24_EN ; GV.NDO.AV25 := ( GV.AO.MFC7_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC7 AND GV_IL.AV25_EN ; GV.NDO.AV26 := ( (( GV.AO.MFC1_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC1) OR (( GV.AO.MFC2_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC2) OR (( GV.AO.MFC3_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC3) ) AND GV_IL.AV26_EN ; GV.NDO.AV27 := ( (( GV.AO.MFC5_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC5) OR (( GV.AO.MFC6_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC6) OR (( GV.AO.MFC7_Flow_Setpoint>0 ) AND NOT PM.INFO.Alarm.TOLERANCE_MFC7) ) AND GV_IL.AV27_EN ; END_IF //TOL ALRM&WARNING PM.INFO.Alarm.TOLERANCE_PRESSURE := PROCESS.PRESSURE_ALARM; PM.INFO.Alarm.TOLERANCE_MFC1 := PROCESS.MFC1_Alarm; PM.INFO.Alarm.TOLERANCE_MFC2 := PROCESS.MFC2_Alarm; PM.INFO.Alarm.TOLERANCE_MFC3 := PROCESS.MFC3_Alarm; PM.INFO.Alarm.TOLERANCE_MFC5 := PROCESS.MFC5_Alarm; PM.INFO.Alarm.TOLERANCE_MFC6 := PROCESS.MFC6_Alarm; PM.INFO.Alarm.TOLERANCE_MFC7 := PROCESS.MFC7_Alarm; PM.INFO.Alarm.TOLERANCE_WALL_TEMP := PROCESS.WALL_TEMP_Alarm; PM.INFO.Alarm.TOLERANCE_LID_TEMP := PROCESS.LID_TEMP_Alarm; PM.INFO.Alarm.TOLERANCE_STAGE_EDGE_TEMP := PROCESS.STAGE_EDGE_TEMP_Alarm; PM.INFO.Alarm.TOLERANCE_STAGE_CENTER_TEMP := PROCESS.STAGE_CENTER_TEMP_ALARM; PM.INFO.Warning.TOLERANCE_PRESSURE := PROCESS.PRESSURE_WARNING; PM.INFO.Warning.TOLERANCE_MFC1 := PROCESS.MFC1_WARNING; PM.INFO.Warning.TOLERANCE_MFC2 := PROCESS.MFC2_WARNING; PM.INFO.Warning.TOLERANCE_MFC3 := PROCESS.MFC3_WARNING; PM.INFO.Warning.TOLERANCE_MFC5 := PROCESS.MFC5_WARNING; PM.INFO.Warning.TOLERANCE_MFC6 := PROCESS.MFC6_WARNING; PM.INFO.Warning.TOLERANCE_MFC7 := PROCESS.MFC7_WARNING; PM.INFO.Warning.TOLERANCE_WALL_TEMP := PROCESS.WALL_TEMP_WARNING; PM.INFO.Warning.TOLERANCE_LID_TEMP := PROCESS.LID_TEMP_WARNING; PM.INFO.Warning.TOLERANCE_STAGE_EDGE_TEMP := PROCESS.STAGE_EDGE_TEMP_WARNING; PM.INFO.Warning.TOLERANCE_STAGE_CENTER_TEMP := PROCESS.STAGE_CENTER_TEMP_WARNING; ]]>