说起顺序控制,西门子的Graph语言绝对是首屈一指的,想当年第一个项目的滤池控制就是使用了graph语言,但是调试过程真是不堪回首,没有足够的经验,不了解这个语言的用法会发生很多问题。我曾经碰到过程序意外退出的时候,原来运行的风机停止了,结果再次运行风机直接启动了,连放空阀都还没打开。并且用graph编程代码效率不太高,占用CPU存储较大。 后来在工作中慢慢放弃了graph,开始自己编写顺序控制的逻辑框架,基本功能是:有若干输入条件和输出控制,只能顺序执行,即每一步执行的条件为本步输入条件满足且上一步在执行中,每一步均可计时,可根据需要自行编写超时报警。程序基本逻辑如下: 运行控制是程序运行条件,使能的上升沿进行计时器和步骤的清零,可根据需要加入初始化步骤。 步骤1条件满足时步骤1输出,同时当前步骤显示为1,此时如果步骤2条件满足,则步骤2输出,同时断开步骤1输出,依次类推。可以设置步骤最小持续时间,控制顺序节拍。 顺序输出时,记录输出持续时间,并复制给当前步骤时间用作 hmi显示。当前步骤可用作HMI显示当前动作,方便操作员了解程序运行过程。同时顺序输出信号用作自动控制的标志位控制外部设备。 如果程序需要跳转,不能跨步骤,只能按顺序一步一步跳转。如果运行控制复位则程序所有输出复位,再次运行必须从第一步开始执行。 下图是我利用这个方法编写的发电机组控制逻辑的画面,有了逻辑框图顺序控制程序就非常简单,所有条件判断都是当前步骤执行的输入条件,所有控制动作都是当前步骤的控制输出,有一个地方要特别注意,就是多点输出的问题,有可能一个设备在不同的步骤里多次启停控制,要注意归集输出,不能在每一步直接利用线圈输出。 这个顺序控制逻辑跟graph比起来肯定是弱爆了,灵活性也比不上,但是简单可靠,对于没有多少程序跳转的机组启停机来说足够使用了,并且即使200这种小型 plc也可以实现。 有的厂家编写顺序控制完全利用设备的状态做判断,没有整体框架上的互锁,在正常条件下可能没有问题,但是现场情况多种多样,尤其是机械控制,一旦人为或者设备故障造成中间条件满足使中间步骤立即输出会很容易造成逻辑混乱发生危险。 来源:西门子工业技术论坛 |