APP下载

产品开发中软PLC的实现探讨

2015-04-29刘军高

中国高新技术企业 2015年14期
关键词:梯形图中断语句

摘要:文章首先介绍了PLC的概念、功能特点和具有PLC功能的产品优势,接着分析了硬PLC和软PLC的区别,最后从PLC绘图工具的制作、PLC各种文件的生成、PLC语句表文件的编译和存储数据结构、PLC文件的运行机制、程序分类和运行控制等方面描述了在产品开发中软PLC的实现过程。

关键词:产品开发;硬PLC;软PLC;梯形图;一级程序;二级程序 文献标识码:A

中图分类号:TG659 文章编号:1009-2374(2015)14-0011-02 DOI:10.13535/j.cnki.11-4406/n.2015.14.006

PLC是一个以微处理器为核心的数字运算操作的电子系统装置,专为在工业现场应用而设计,它采用可编程序的存储器,用以在其内部存储执行逻辑运算、顺序控制、定时/计数和算术运算等操作指令,并通过数字式或模拟式的输入、输出接口,控制各种类型的机械或生产过程。

1 软PLC的概念

所谓的软PLC是利用软件技术在产品中开发PLC功能,在一些通用的CPU或者MCU上实现PLC指令的解释和编译运行,它仅是整个产品中的一个功能模块,该模块能够完成硬PLC大部分功能要求。

2 软PLC的实现全部过程

精心策划和技术论证后,笔者在产品开发中用以下方案实现了软PLC开发,具体实现方案框图如图1所示:

图1 软PLC开发具体实现方案

3 PLC绘图工具制作和各种文件的产生

框图实现的具体过程:第一,在PC机上用高级编程语言如VC等编写一个PLC梯形图制作工具,该工具不仅能绘制PLC梯形图,并且绘制梯形图所需要的指令元器件全部可以定制,可以按照你产品所需增加或删除指令,可以设定指令的地址类型和取值范围,可以设定指令的引脚属性。第二,制作好指令元器件后,运用该工具绘制你所需要的PLC梯形图后并编译它,生成你所需要的语句表文件和各种信息文件。第三,PLC的文件如何放到系统产品上?这就取决于你的产品能够如何接收外部的文件或数据。下文以USB接口和串口为例来讲述一下其实现接收PLC文件的过程:(1)U盘接口的实现方法。将用PC工具生成的PLC工程文件包从电脑拷贝到U盘,再将U盘插入到产品上,通过操作U盘读取PLC工程文件包,从文件包里得到你所需要的语句表文件和其他信息文件;(2)串口RS232的实现方法。由于RS232每次只支持接受一个文件,你可以先编写一个应用程序,将该应用程序放在PLC工程文件夹下指定的位置,运行该应用程序,提取所需要的文件信息生成一个TXT的文本格式文件,再用RS232方式传送到产品使用。

4 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,…直至当前程序的网络编译信息存储完毕。

PLC语句表文件的总体结构、PLC程序信息结构和PLC网络信息结构格式详见如下:

//PLC语句表文件的总体结构

typedef struct_PLC_File_t

{

uint32 PLCFlags[4] ;//PLC语句表文件存在标志,存在“_PLC_PLC_PLC_PLC”

//不存在,全部用0XFF代替

(uint32*)Addr_Level1; //存储一级程序的开始地址

(uint32*)Addr_Level2; //存储二级程序的开始地址

(uint32*)Addr_Son[C_MaxSonProgs];//存储子程序程序的开始地址

//uint32 Reserve[10] ;//保留

}PLC_File_t,*ptr_PLC_File_t;

//PLC程序信息(如:一级程序 二级程序 子程序)结构

__align(256) typedef struct_PLC_Program_t

{

uint32 Nets; //PLC网络数,若为0,则无该PLC程序

PLC_Net_t NetLineRows[C_MaxNetsPerFile]; //PLC每个网络信息

uint32 *address_File; //该程序编译后的网络数据开始存储地址

//uint32 Reserve[10] ;//保留

}PLC_Program_t,*ptr_PLC_Program_t;

//PLC网络信息结构

__align(4)typedef struct_PLC_Net_t

{

uint8 In_Rows; //网络输入列数

uint8 Lines[C_MaxLinesPerRow]; //网络每列行数

uint8 Out_Lines; //网络输出行数,若大于1,为多级输出

uint32 *Address_Net; //该网络数据在PLC程序中的开始存储地址

//uint32 Reserve; //保留

}PLC_Net_t,*ptr_PLC_Net_t;

5 PLC运行机制、程序分类和运行控制

PLC程序的运行是在中断模式下来实现对产品所有的输入和输出进行监控,只要PLC程序存在,产品从开机就要循环运行PLC程序监控产品的运行。在PLC中断模式下,中断服务程序不能够占用中断太多的时间,否则CPU就没有时间来执行其他的程序:一方面PLC程序一部分代码又必须快速及时地执行和响应,另一方面PLC程序又可能比较长,要运行完所有的PLC程序可能会消耗CPU太多的中断时间。如何解决这一问题?解决办法是将PLC程序分成一级程序和二级程序,将一部分必须快速完成的程序归入一级程序,另外一部分程序归为二级程序。一级程序每次PLC中断都是要执行,二级程序根据程序运行消耗的时间动态分段,在一个PLC中断周期除了运行一级程序外,还要运行二级程序的其中一段。这样二级程序就必须分段执行。

此外,还要在中断周期内正确调配二级中断程序。方法一:编译时就根据指令的运行时间将二级程序分段,保证一次中断只运行其中一段二级程序。方法二:运行时计算中断的消耗时候,中断运行时间到就停止在二级程序的某一个指令上,下一个中断运行二级程序时就接着上次的二级程序指令继续运行。

传统硬PLC性价比增长很缓慢,但随着电子技术和计算机技术的迅猛发展,软PLC技术打破了硬PLC许多局限性,开发PLC功能硬件成本和技术开发难度也越来越低,因此,在各行各业中软PLC都具有广泛的发展前景。

参考文献

[1] 周万珍,高鸿斌.PLC分析与设计应用[M].北京:电子工业出版社,2004.

[2] 曹辉.可编程序控制器过程控制技术[M].北京:机械工业出版社,2006.

作者简介:刘军高(1971-),男,江西人,广州数控设备有限公司工程师,研究方向:数控系统产品开发。

(责任编辑:周 琼)

猜你喜欢

梯形图中断语句
重点:语句衔接
跟踪导练(二)(5)
千里移防,卫勤保障不中断
基于VC的梯形图编程软件开发技术
继电器电路转为梯形图教学经验浅谈
PLC梯形图程序设计技巧及应用
如何搞定语句衔接题
AT89C51与中断有关的寄存器功能表解
FPGA内嵌PowerPC的中断响应分析
嵌入式软PLC编程系统的设计