1、PLC语句表文件的编译和存储数据结构
梯形图是由很多个由上到下顺序的网络组成。一个网络可看成一个总的输入和一个输出或多级输出组成。总的输入由许多从左到右顺序相“AND”的列组成。一个列可能由一个或多个行从上到下顺序的行相“OR”组成,一个行又可能包括多个从左到右顺序的相“AND”输入指令。按照上述对PLC梯形图原理的理解,笔者设计以下的编译后数据存储方法供PLC运行调用。语句表语言是PLC功能的另外一种表达方法,一般由梯形图转换出来。一个PLC语句表文件是由一级程序、二级程序和各个子程序组成。将一级程序、二级程序和各个子程序编译后都变成一个个独立的程序分开存储,每个程都有一个程序开始存储地址,从这个地址开始存储该程序的程序信息和所有编译后的网络数据,各个程序之间或网络之间相互调用或跳转使用编译后的相对地址进行。每个程序先存储程序信息,紧接着存储PLC程序的编译后的一个个网络数据。每个程序的组成具体为:程序信息+网络数据#1+“%%”+网络数据#2+,网络与网络之间有一个字符串(“%%”)隔开。程序信息主要包括:网络总数+程序中的所有网络信息(#1+#2+#3)+程序编译后的网络数据#1开始存储的地址。网络信息主要包括:该网络输入的总列数+输入每列的行数+输出行数+各个网络数据(#1#2#3等等)在PLC程序中的开始存储的地址。在程序信息之后,开始依次存储编译后网络数据#1、网络数据#2的数据,步骤如下:第一,填写输入指令开始存储标志(“N_IN”)。第二,一个网络数据保存格式为:(1)保存网络第一个列的第一行数据,存储格式为:输入指令个数+第一个输入指令(指令类型+指令地址号+触点类型)+“&&”+第二个输入指令(指令类型+指令地址号+触点类型)。如果同行内有多个输入指令,则指令之间有一个字符串(“&&”)隔开。(2)同样方式保存该列的第二行。如果一列内有多行,行与行之间一个字符串(“||”)隔开。(3)直至保存完该列的所有行。第三,接着保存网络第二个列数据,保存方法同上,直至保存完所有的列。第四,如果一个网络内有多列,列与列之间有一个字符串(“&&”)隔开。第五,填写输出指令开始存储标志(“NOUT”)。第六,接着保存输出指令,输出的存储格式为:第一个输出指令(指令类型+指令地址号)+第二个输出指令(指令类型+指令地址号),如果是多级输出,指令之间有一个字符串(“++”)隔开。第七,接着,用同样的方式开始存储网络数据#2,直至当前程序的网络编译信息存储完毕。
2、PLC运行机制、程序分类和运行控制
PLC程序的运行是在中断模式下来实现对产品所有的输入和输出进行监控,只要PLC程序存在,产品从开机就要循环运行PLC程序监控产品的运行。在PLC中断模式下,中断服务程序不能够占用中断太多的时间,否则CPU就没有时间来执行其他的程序:一方面PLC程序一部分代码又必须快速及时地执行和响应,另一方面PLC程序又可能比较长,要运行完所有的PLC程序可能会消耗CPU太多的中断时间。如何解决这一问题?解决办法是将PLC程序分成一级程序和二级程序,将一部分必须快速完成的程序归入一级程序,另外一部分程序归为二级程序。一级程序每次PLC中断都是要执行,二级程序根据程序运行消耗的时间动态分段,在一个PLC中断周期除了运行一级程序外,还要运行二级程序的其中一段。这样二级程序就必须分段执行。此外,还要在中断周期内正确调配二级中断程序。方法一:编译时就根据指令的运行时间将二级程序分段,保证一次中断只运行其中一段二级程序。方法二:运行时计算中断的消耗时候,中断运行时间到就停止在二级程序的某一个指令上,下一个中断运行二级程序时就接着上次的二级程序指令继续运行。传统硬PLC性价比增长很缓慢,但随着电子技术和计算机技术的迅猛发展,软PLC技术打破了硬PLC许多局限性,开发PLC功能硬件成本和技术开发难度也越来越低,因此,在各行各业中软PLC都具有广泛的发展前景。
作者:刘军高 单位:广州数控设备有限公司