现在的高级语言基本上都是面向对象的,但是PLC编程象较早的BASIC/FORTRAN语言一样,是面向过程的。
PLC逻辑处理的基本过程为:
1) 将外部设备输入的数据写入输入映像区(I)。
2) 逻辑处理,包括读I区、写Q区。
3) 将输出映像区(Q)的数据输出到外部设备。
其中,1)和3)是PLC内部处理的,所有的PLC用户程序只处理第2)部分。
PLC的这种处理方式带来了下面2个特点。
特点1:OB1调用的程序不存在并发
我们知道,PLC用户程序主要运行在2个地方:中断和OB1。
一般而言,能够在一个扫描周期里完成的逻辑处理,通常我们会在OB1中进行调用,而OB1中的程序是按照严格的调用顺序进行处理的。
比如CPU扫描周期是20ms,那么在某个ns,CPU只会处理某个特定的FC/FB/NW。
举个例子,1工位的工人同时按个2个按钮,而在PLC层面,对这2个按钮的事件处理是有先后顺序的。
因此,严格地说起来,PLC不存在真正的并发。
有效利用这一特点,可以让编程变得更轻松。
比如1条线有30个工位要进行呼叫处理,而每个工位的呼叫处理逻辑是一样的,那么我们可以建立一个临时DB,存储任意一个工位的所有中间变量。
OB1按照工位的顺序进行处理,当执行到第N个工位时,临时DB的变量值就记录了第N个工位的中间变量值。当执行到下一工位时,临时DB被重写,以用于下一工位业务处理。
由于PLC在任意一个瞬间只处理一个特定的工位,因此临时DB的值和此工位有严格的对应关系,因此我们无需在FC里声明变量,因为所有的变量都已定义在临时DB中。
这样处理可以让程序更加简洁通用、变量少,可以用FC变相地实现FB的功能。
特点2:后面赋值覆盖前面赋值
高级语言在符

本文介绍了PLC编程的两个核心特点:不存在并发和后赋值覆盖前赋值。通过实例说明了如何利用这些特点简化编程流程,提高程序的效率。

4669

被折叠的 条评论
为什么被折叠?



