编程序控制器(简称plc)是一种工业自动控制中使用的计算装置。它广泛应用于钢铁、石油、化工、电力、建材、机械制造、汽车、轻纺、交通运输、航天、环保及文化***等各个行业。小到家用设备,大到航天器材,都有plc的应用。
典型的plc由一个专用的cpu,一个存储器和一组输入输出端口构成,如图1所示。它通过输入端口接收来自传感器的信号,并通过输出端口发出控制信号驱动同它连接的外部设备。存储器中安放控制程序,系统的活动由控制程序所驱动。
plc系统每隔一定的时间间隔(比如5毫秒)从输入端口读入信号,执行计算,然后向输出端口发送输出信号。每一“输入-计算-输出”周期称为一个扫描周期。plc程序在每个扫描周期中重复执行一遍。plc的简单应用有洗衣机控制,电梯控制。复杂的应用有自动机床控制,自动化工程控制。
plc程序设计具有不寻常的软件编程模式。设计中需要考虑多个并行线程,它们之间的交互作用,以及在时间域上的行为。在plc的五种主要的编程语言当中,源自继电器控制系统的梯形图语言采用了一种简单的方式巧妙地处理了并行程序设计问题,然而,由于plc编程问题的固有复杂性,以及测试手段的缺乏,许***lc程序中依然存在大量的错误。
为了解决这一问题,灵芯实验室正在开发plc测试系统,为plc程序的调试提供解决方案。在这一系统的试用过程中,在两本plc入门教科书的6个简单程序例子中发现其中的4个程序里面至少包含8个错误。
●一个抢答器程序在两个参赛者同时按下抢答按钮时,只有其中一个人的警报器能够发出警报;
●一个喷泉程序中,喷水组在几个指定时间上没有按要求停止喷水,或开始喷水;
●一个交通灯控制程序中,绿灯闪烁控制不正常;系统启动的时候,一个方向绿灯亮,另一个方向的红灯却不亮;强通结束之后,交通灯没有立即***正常运行;
●在另一个交通灯程序中,按下停止按钮之后,所有的灯熄灭,但两个方向人行道上却亮红灯。
我们认为这一发现是不同寻常的。虽然每个程序员和教师都会犯编程错误,但是我们还从未在任何一本程序设计的教科书中发现如此高比例的程序错。这一现象初步证实了plc程序错误的广泛性和严重性。
本文将逐一分析上述每一个程序的错误,指出错误原因。其中大部分程序,我们给出纠正了错误的新程序。期望这一分析能够帮助plc程序员和教师提高plc程序设计的正确性。plc程序的执行原理以及梯形图的语义将在例子的介绍中同时给予解释。我们相信,通过分析错误来学习是掌握遍程技巧的好方法