发布于 2008-04-24 19:51:48
0楼
首先需要一个阀门控制功能块,它包含了输入信号:启动start,停止信号stop,开状态open_status,关状态;输出信号:控制点out,报警点alarm;静态变量:开时间opentime,关时间closetime,运行时间runtime,当前状态:flg,动作结束over。
主要功能:如果启动,并且没有停止,记录下这个状态flg=1.如果flg发生变化,runtime清零。如果flg=1,那么输出out=1,判断runtime〉=opentime,如果open_status=0,close_status=0,或者open_status=0,close_status=1,或者两个状态都为1,那么报警alarm=1,否则over=1;如果flg=0,那么输出out=0,判断runtime〉=closetime,如果open_status=0,close_status=0,或者open_status=1,close_status=0,或者两个状态都为1那么报警alarm=1,否则over=1;
主程序中:
如果启动Bstart=1,那么置位一个状态srun.正序判断(1、2、3、4、5、。。。。。)下面的每一个阀门的控制的启动条件都包含这个srun.正常运行:下一个启动条件还包含前面几个的结束标志over=1。
异常(只要23个阀门有一个报警alarm=1)或者Bstop结束,那么复位srun,阀门的控制倒序判断(23、22、21、20、19。。。。。),停止的条件:总的条件srun=0,23号阀其他条件,如果出现报警关阀门,22号阀如果23号阀关结束(over=1)或者出现报警则关闭。21号阀如果23号出现报警或者结束(over=1)并且22阀出现报警或者关闭结束(over=1),则关闭21号。。。。。。。。。。。
最后如果Bstart=1,则复位,如果Bstop=1则复位。
活到老,学到老!为了生活学习吧!