众所周知,PLC自从问世以来就在自动控制各个行业发挥着难以取代的核心控制作用。PLC运行可靠,适用于各种恶劣的工业环境,PLC和工控机(IPC)相比,其运行可靠、可扩展性好、便于电气连接、控制更专业,但是工控机良好的人机界面,方便高级语言都是PLC所不能比拟的。
组态软件在很多场合应用于控制,可整个控制的中心往往还是PLC,组态软件(上位机)所起的控制作用很小。人机界面一般用于简单的动作控制,工艺参数的编制,配方的设定等等,虽然在概念上属于控制范畴,但它并未真正起到核心控制作用,因为真正长期的自动运行控制是由PLC完成。我们不经常使用工控机作为核心控制部分的原因有两点:第一,工控机不适于在很恶略的环境下运行;第二,工控机经常采用的Windows系统并不能够让人放心,其长期运行效果并不好。
尽管PLC、IPC在自动化控制中扮演不同角色,在许多运行连续时间较短,环境相对比较好的地方,人们还是希望使用IPC进行核心控制。使用IPC进行核心控制有很多种实现方式,当然其中最为简单的办法就是使用组态软件。
本文针对使用组态软件做控制中用户经常遇到的问题进行讨论。在许多用户使用组态软件进行控制,尤其是使用串口连接方式进行控制时,发现组态软件自动控制会影响的数据的采集速度,本文着重介绍如何解决此问题,解决此办法就是——将PLC的控制方式模仿的应用到上位机串口控制中。
1 用户使用组态软件控制后,导致数据采集慢的原因
这是许多组态软件用户在编写上位机自动控制程序中所遇到的问题,到底是什么原因?能否有好的办法来解决?
我们先简单描述组态软件数据采集控制的原理。在正常情况下,组态软件定时向下位机发出读命令来等待下位机回应以截取想要查询的数据,周而复始的循环,数据便动态的显示在上位机上,实现数据“实时采集”。那么当我们需要对下位机进行控制时,组态软件就会相应写命令,实现上位机对下位机的“实时控制”。
表面上看去合情合理,可为什么会出现数据采集慢这种情况?原来一切“归咎于”组态软件的读写机制。组态软件为实现快速的控制,所以给写命令最高的优先执行权,也就是说,当有写(控制)命令时,组态软件首先执行写命令,直到没有写(控制)命令时组态软件才恢复正常的读(采集)循环。
由此,我们不难发现用户经常出现数据采集慢的原因。如果用户频繁将控制指令发出,系统将分配很少的时间给数据采集,从而导致数据采集变慢或者中断。用户在循环指令中重复给一个变量赋值(如y0=1),就会导致以上问题,所以我们的解决办法就是需要控制时控制,不需要控制时放手。为了实现这种控制方式,我们可以参考PLC的运行模式。
2 PLC运行原理
在没有中断的情况下,PLC采用“顺序扫描,不断循环”的工作方式。
1) 每次扫描过程。集中对输入信号进行采样,集中对输出信号进行刷新。
2) 输入刷新过程。当输入端口关闭时,程序在进行执行阶段时,输入端有新状态,新状态不能被读入。只有程序进行下一次扫描时,新状态才被读入。
3) 一个扫描周期分为输入采样,程序执行,输出刷新。
4) 元件映象寄存器的内容是随着程序的执行变化而变化。
5) 扫描周期的长短由三条决定:<1>CPU执行指令的速度;<2>指令本身占有的时间;<3>指令条数。
6) 由于采用集中采样。集中输出的方式,存在输入/输出滞后的现象,即输入/输出响应延迟。
3 小结
如上所述,在组态软件控制中,我们采用先运算再输出的方法,即,对IO变量有循环复杂运算操作时,我们采用中间变量计算,待计算出结果时我们再对IO变量赋值,这样就会解决控制中采集慢的问题。