用ST编的程序 点击:384 | 回复:3



hele

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:49帖 | 1460回
  • 年度积分:0
  • 历史总积分:3521
  • 注册:2005年11月14日
发表于:2013-12-30 14:04:31
楼主

_CondGen10_1:= _CondGenLoad AND
    _xZSC_B371 AND
    _xZSC_XV353 AND
    _xZSC_XV354 AND
    _xZSC_XV332 AND
    _xZSC_XV333 AND
    _xZSC_XV334 AND
    _xZSC_XV331 AND
    _xZSO_DoE81 AND
    NOT _All_Val_LD AND
    _xPSL_E81;

_CondToStart10_1:= _CondToStartLoad AND
     _wtt_TE100>=60 AND
     _wtt_TE101>=60 AND
     _wtt_TE502>=60 AND
     _wtt_TE10>=60 AND
     NOT _mtt_L_LT10 AND
     _xZSO_XV358;

IF _wtt_Step10_1=0 AND
_CondGen10_1 AND
_CondToStart10_1 AND
_mrt_Start
THEN
_wtt_Step10_1:=1;(*Open Line Valves*)
_wrtQta2:=_wdt_Qta8_1;
_qXV_357:=TRUE;
_qXV_352:=TRUE;
_qXV_349:=TRUE;
_qXV_336:=TRUE;
_qXV_335:=TRUE;
END_IF

IF _wtt_Step10_1=1 AND
_CondGen10_1 AND
_xZSO_XV357 AND
_xZSO_XV352 AND
_xZSO_XV349 AND
_xZSO_XV336 AND
_xZSO_XV335 AND
NOT _xLSL_301
THEN
_wtt_Step10_1:=2;(*Product in P21: Waiting Time 10Sec*)
END_IF

TON1(IN:=_wtt_Step10_1=2, PT:=T#10S);

IF _wtt_Step10_1=2 AND
_CondGen10_1 AND
TON1.Q
THEN
_wtt_Step10_1:=3;(*Start Pump 21*)
_Set_PM21:=TRUE;
END_IF

IF _wtt_Step10_1=3 AND
_CondGen10_1 AND
_xFB_PM21
THEN
_wtt_Step10_1:=4;(*Wait for filling line*)
END_IF

IF _wtt_Step10_1=4 AND
_CondGen10_1 AND
NOT _xLSH_303
THEN
_wtt_Step10_1:=5;(*Close XV 357*)
_qXV_357:=FALSE;
_qXV_360:=TRUE;
END_IF

IF _wtt_Step10_1=5 AND
_CondGen10_1 AND
_xZSC_XV357 AND
_xZSO_XV360 AND
(_xLSHH_304 OR
_xLSH_306 OR
_xLSHH_302 OR
_xLSH_304)
THEN
_wtt_Step10_1:=6;(*Close XV 360*)
_qXV_360:=FALSE;
END_IF

IF _wtt_Step10_1=6 AND
_CondGen10_1 AND
_xZSC_XV357 AND
_xZSC_XV360
THEN
_wtt_Step10_1:=7;(*Enable External Counters*)
_qToExtCounter4:=TRUE;
END_IF

IF _wtt_Step10_1=7 AND
_CondGen10_1 AND
_xZSC_XV357 AND
_xZSC_XV360
THEN
_wtt_Step10_1:=8;(*Reset Countres*)
_qRESET_CT4:=TRUE;
_mrtReset2:=TRUE;
END_IF

TON2(IN:=_wtt_Step10_1=8, PT:=T#1S);

IF _wtt_Step10_1=8 AND
_CondGen10_1 AND
_xZSC_XV357 AND
_xZSC_XV360 AND
TON2.Q
THEN
_wtt_Step10_1:=9;(*Open XV 355*)
_qRESET_CT4:=FALSE;
_mrtReset2:=FALSE;
_qXV_355:=TRUE;
END_IF

IF _wtt_Step10_1=9 AND
_CondGen10_1 AND
_xZSO_XV355
THEN
_wtt_Step10_1:=10;(*Open XV 356*)
_qXV_356:=TRUE;
END_IF

IF _wtt_Step10_1=10 AND
_CondGen10_1 AND
_xZSO_XV355 AND
_xZSO_XV356
THEN
_wtt_Step10_1:=11;(*Reactor Load In Progress*)
END_IF

IF _wtt_Step10_1=11 AND
_CondGen10_1 AND
_mrtQtaOK2
THEN
_wtt_Step10_1:=12;(*Setpoint: Close XV 356*)
_qXV_356:=FALSE;
END_IF

IF _wtt_Step10_1=12 AND
_CondGen10_1 AND
_xZSC_XV356
THEN
_wtt_Step10_1:=13;(*Stop Pump 21*)
_qToExtCounter4:=FALSE;
_Set_PM21:=FALSE;
END_IF

IF _wtt_Step10_1=13 AND
_CondGen10_1 AND
_xZSC_XV356 AND
NOT _xFB_PM21
THEN
_wtt_Step10_1:=14;(*Waiting Time to Empty Manifold 20Sec*)
END_IF

TON2(IN:=_wtt_Step10_1=14, PT:=T#20S);

IF _wtt_Step10_1=14 AND
_CondGen10_1 AND
_xZSC_XV356 AND
NOT _xFB_PM21 AND
TON2.Q
THEN
_wtt_Step10_1:=15;(*Close XV 355*)
_qXV_355:=FALSE;
END_IF

IF _wtt_Step10_1=15 AND
_CondGen10_1 AND
_xZSC_XV356 AND
_xZSC_XV355 AND
NOT _xFB_PM21 AND
TON2.Q
THEN
_wtt_Step10_1:=16;(*Finish Load Process*)
END_IF

IF _wtt_Step10_1=16  OR
(_wtt_Step10_1=0 AND _mrt_Blw_LD) AND
_CondGen10_1
THEN
_wtt_Step10_1:=17;(*Close XV 358*)
_qXV_358:=FALSE;
END_IF

IF _wtt_Step10_1=17  AND
_CondGen10_1 AND
_xZSC_XV358
THEN
_wtt_Step10_1:=18;(*Open All Line*)
_qXV_360:=TRUE;
_qXV_357:=TRUE;
_qXV_352:=TRUE;
_qXV_349:=TRUE;
_qXV_336:=TRUE;
_qXV_335:=TRUE;
END_IF

IF _wtt_Step10_1=18  AND
_CondGen10_1 AND
_xZSC_XV358 AND
_xZSO_XV360 AND
_xZSO_XV357 AND
_xZSO_XV352 AND
_xZSO_XV349 AND
_xZSO_XV336 AND
_xZSO_XV335
THEN
_wtt_Step10_1:=19;(*Open XV 359*)
_qXV_359:=TRUE;
END_IF

IF _wtt_Step10_1=19  AND
_CondGen10_1 AND
_xZSC_XV358 AND
_xZSO_XV360 AND
_xZSO_XV357 AND
_xZSO_XV352 AND
_xZSO_XV349 AND
_xZSO_XV336 AND
_xZSO_XV335 AND
_xZSO_XV359
THEN
_wtt_Step10_1:=20;(*Blowing in Progress*)
END_IF

(*_________Problems with Air Compressed Pressure_________*)
IF _wtt_Step10_1=20  AND
_CondGen10_1 AND
_wtt_PT302<=1000
THEN
_wtt_Step10_1:=21;(*Compressed Air Pressure Too Low: Close XV 336 *)
_qXV_336:=FALSE;
END_IF

IF _wtt_Step10_1=21  AND
_CondGen10_1 AND
_wtt_PT302>=5000
THEN
_wtt_Step10_1:=20;(**)
_qXV_336:=TRUE;
END_IF
(*_________________________________________________*)

IF _wtt_Step10_1=20  AND
_CondGen10_1 AND
_xLSL_301 AND
_wtt_PT302>=1000
THEN
_wtt_Step10_1:=22;(*No Product in Pump Suction: Wiating Time *)
END_IF

TON4(IN:=_wtt_Step10_1=22 AND _xLSL_301, PT:=T#20S);

IF _wtt_Step10_1=22  AND
_CondGen10_1 AND
TON4.Q
THEN
_wtt_Step10_1:=23;(*Start De_Pressurization: Close XV 335-259 *)
_qXV_335:=FALSE;
_qXV_359:=FALSE;
END_IF

IF _wtt_Step10_1=23  AND
_CondGen10_1 AND
_xZSC_XV359 AND
_xZSC_XV335
THEN
_wtt_Step10_1:=24;(*Open XV 358 *)
_qXV_358:=TRUE;
END_IF

IF _wtt_Step10_1=24  AND
_CondGen10_1 AND
_xZSO_XV358
THEN
_wtt_Step10_1:=25;(*De_Pressurization: Wating Time 20Sec *)
END_IF

TON5(IN:=_wtt_Step10_1=25, PT:=T#20S);

IF _wtt_Step10_1=25  AND
_CondGen10_1 AND
TON5.Q
THEN
_wtt_Step10_1:=26;(*Close All Valves *)
_qXV_360:=FALSE;
_qXV_357:=FALSE;
_qXV_352:=FALSE;
_qXV_349:=FALSE;
_qXV_336:=FALSE;
_qXV_335:=FALSE;
_qXV_359:=FALSE;
END_IF

IF _wtt_Step10_1=26  AND
_CondGen10_1 AND
_xZSO_XV358 AND
_xZSC_XV360 AND
_xZSC_XV357 AND
_xZSC_XV352 AND
_xZSC_XV349 AND
_xZSC_XV336 AND
_xZSC_XV335 AND
_xZSC_XV359
THEN
_wtt_Step10_1:=27;(*Push Stop Botton To Exit Operation*)
END_IF

IF _wtt_Step10_1=27  AND
_CondGen10_1 AND
_mrt_Stop
THEN
_wtt_Step10_1:=0;(*Push Stop Botton To Exit Operation*)
END_IF

(*__________Mancano Condizioni Generali____________*)
IF _wtt_Step10_1>0  AND
NOT _CondGen10_1
THEN
_wtt_Step10_1:=28;(*Loose General Condition: Push Stop to End Process*)
_qXV_360:=FALSE;
_qXV_357:=FALSE;
_qXV_352:=FALSE;
_qXV_349:=FALSE;
_qXV_336:=FALSE;
_qXV_335:=FALSE;
_qXV_359:=FALSE;
_qXV_355:=FALSE;
_qXV_356:=FALSE;
_qXV_358:=TRUE;
_Set_PM21:=FALSE;
END_IF

IF _wtt_Step10_1=28  AND
_mrt_Stop
THEN
_wtt_Step10_1:=0;(**)
END_IF
(*________________________________________________*)

(*_________Pausa Non Durante il Carico Reattore___________*)
IF _wtt_Step10_1>0  AND _wtt_Step10_1<>11 AND
_CondGen10_1 AND
_mrt_Pause
THEN
_wtt_Step10_1:=29;(*Pause: Push Stop to End Process*)
_qXV_360:=FALSE;
_qXV_357:=FALSE;
_qXV_352:=FALSE;
_qXV_349:=FALSE;
_qXV_336:=FALSE;
_qXV_335:=FALSE;
_qXV_359:=FALSE;
_qXV_355:=FALSE;
_qXV_356:=FALSE;
_qXV_358:=TRUE;
_Set_PM21:=FALSE;
END_IF

IF _wtt_Step10_1=29 AND
_CondGen10_1 AND
_xZSO_XV358 AND
_xZSC_XV360 AND
_xZSC_XV357 AND
_xZSC_XV352 AND
_xZSC_XV349 AND
_xZSC_XV336 AND
_xZSC_XV335 AND
_xZSC_XV355 AND
_xZSC_XV356 AND
_xZSC_XV359 AND
_mrt_Stop
THEN
_wtt_Step10_1:=0;(**)
END_IF
(*_____________________________________________*)

(*__________Pausa Durante il Carico Reattore____________*)
IF _wtt_Step10_1=11  AND
_CondGen10_1 AND
_mrt_Pause
THEN
_wtt_Step10_1:=30;(*Pause: Push Stop to End Process or Start to ReStart Process*)
_qXV_336:=FALSE;
_Set_PM21:=FALSE;
END_IF

IF _wtt_Step10_1=30  AND
_CondGen10_1 AND
_xZSC_XV336 AND
NOT _xFB_PM21 AND
_mrt_Start
THEN
_wtt_Step10_1:=11;(**)
_qXV_336:=TRUE;
_Set_PM21:=TRUE;
END_IF

IF _wtt_Step10_1=30  AND
_CondGen10_1 AND
_xZSC_XV336 AND
NOT _xFB_PM21 AND
_mrt_Stop
THEN
_wtt_Step10_1:=0;(**)
_qXV_360:=FALSE;
_qXV_357:=FALSE;
_qXV_352:=FALSE;
_qXV_349:=FALSE;
_qXV_336:=FALSE;
_qXV_335:=FALSE;
_qXV_359:=FALSE;
_qXV_355:=FALSE;
_qXV_356:=FALSE;
_qXV_358:=TRUE;
_Set_PM21:=FALSE;
END_IF





yan1314520home

  • 精华:0帖
  • 求助:20帖
  • 帖子:35帖 | 377回
  • 年度积分:0
  • 历史总积分:279
  • 注册:2011年11月18日
发表于:2013-12-30 19:40:46
1楼

怎么感觉跟C语言差不多的啊!

hele

  • 精华:0帖
  • 求助:0帖
  • 帖子:49帖 | 1460回
  • 年度积分:0
  • 历史总积分:3521
  • 注册:2005年11月14日
发表于:2013-12-31 10:43:36
2楼

用习惯了觉得比其他的方式  灵活

yuanke314

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:24
  • 注册:2008年10月23日
发表于:2014-01-18 19:40:50
3楼

也就用了一个 IF  THEN  END_IF  其他语句也没有见怎么用   变量名真难看   把人眼睛都能看花  也看不明白是怎么意思


热门招聘
相关主题

官方公众号

智造工程师