小型PLC编辑与监控系统的设计

2014-03-22 00:42未庆超蔡启仲李克俭谢从涩潘绍明
仪表技术与传感器 2014年8期
关键词:元件指令编程

未庆超,蔡启仲,李克俭,谢从涩,潘绍明

(广西科技大学电气与信息工程学院,广西柳州 545006)

0 引言

目前,小型PLC的编程装置[1-2]主要有两类,即带有专用编程软件的计算机和专用便携式手持编程器,两种编程装置在联机方式下必须通过专用通讯电缆连接PLC主机的固定通讯端口才能进行操作,只能够在靠近PLC主机的位置监控PLC主机的运行状态。后者工作电源依靠PLC专用接口提供,不能在脱机方式下使用,且只能存储一套PLC用户程序。两种编程装置能够与PLC主机通讯,但相互之间不能直接通讯。

针对基于ARM-FPGA的小型可编程控制器[3]中新型便携式PLC编程装置[4],设计小型PLC编辑与监控系统,该系统应用LPC2478作为控制核心,在联机或脱机方式下可编辑、编译PLC程序;可存储多套PLC程序;在工业现场的合适位置设置CAN总线节点,通过CAN总线节点接入PLC编程装置,实现远程监控PLC主机的运行状态;设计多操作位逻辑运算指令,应用FPGA实行逻辑运算的并行执行,提高PLC运行速度。

1 总体思路的设计

系统的电路结构如图1所示,其硬件框架主要由主控制模块、存储模块、人机界面模块、通讯模块、JTAG调试模块组成。其中,CAN总线与PLC主机通信总线连接,串口通信模块与计算机连接;电源模块中工作直流电源可通过外部电源接口从PLC主机获取,也可通过USB收发器通过与上位机的USB接口获取,也可由5 V内部充电电池提供。使用外部电源时,对电池充电,提高了编程装置的适用性。

图1 系统的硬件设计框架

系统的功能结构图如图2所示。采用IEC61131-3[5]标准中指令表作为编程语言,每条指令由指令号、操作符与操作数构成,有的还包含软元件的参数。操作数包括软元件的类型及其编号、接点类型。编辑过程中每套PLC用户程序以源指令文件的形式存储于FLASH存储器中,为在编的指令文件开辟一动态存储空间。每录入一条指令,就对其分析与优化,若有错误,则对错误进行处理,若没有错误,则将其存储并显示。接着继续录入其他指令,直到录入完为止,此时PLC源指令文件生成。通过人机界面录入的,或从存储器中读出的PLC源指令文件,可对其进行编辑,实现插入、删除、查找等功能;当执行程序传输命令时,读出源指令文件,将其编译成二进制目标代码文件,按照自定义的CAN扩展协议格式填充编码成一报文,发送给PLC主机。当接收PLC主机发送的数据时,系统先对报文解码,再将其反编译成源指令文件,可对其进行编辑。

当与PLC主机联机时,编程装置可检测软元件X、Y、T、C、S、M、D的动态ON/OFF状态,以及T、C、D的当前值与设定值,强制对输出端口Y,软元件S、T、C、M置1复0,数据寄存器D、V、Z设置数据,定时器T和计数器C设置参数,实现编辑系统远程监控PLC主机的运行状态、检测软元件的信息、强制设置参数等功能。

图2 系统的功能结构图

2 指令系统的设计

2.1多操作位逻辑运算指令的特点

深入研究PLC梯形图程序[6-7]的特点,发现经常会有多个动合或者动断触点串联或者并联排列。针对这种情况,应用FPGA设计可同时执行27个操作位的与、或运算的多操作位逻辑运算。相对于三菱基本指令系统,新增一条LDR指令,用于多个软元件并联与母线连接的情况,若LD指令后紧跟OR指令,则用LDR指令取代LD和OR指令。这样逻辑运算指令LD、LDR、AND和OR都至少有1个以上的操作位,最多26个操作位。

图3中左侧的梯形图应用新型LD、LDR、AND和OR编制的程序位于右侧。用三菱PLC指令[7]编写该梯形图的程序,至少需要12条指令,而用设计的多操作位逻辑运算指令编写,只需7条指令。

图3 PLC梯形图及其指令程序

一条逻辑运算指令能带多个操作位,充分利用了FPGA并行处理的特点,用户程序执行过程中减少操作符的识别次数,多个操作位的逻辑运算可一次性完成。若多操作位逻辑运算指令的操作位越多,则其优势越显著。

2.2指令的编码

编码PLC指令以字为基本单位,即每条指令的字长以32位为基本单位;软元件的编排以字为基本单位。指令中,操作符采用4位二进制数编码,软元件采用基地址和位地址来编码,其基地址用3位二进制数编码,位地址用8位或10位二进制数来编码。接点类型用3位二进制数编码。

编码多操作位逻辑运算指令时,除了数据寄存器D、V、Z是字单元外,X、Y、T、C、M、S均为位单元。按照操作位的个数进行编码,每个字中最低位设置指令是否结束的标志。若指令只有一个操作位,则除了编码操作符、软元件的基地址和位地址、接点类型外,再用2位设置指令结束标志,其他为无关项,置1。若指令有2个操作位,则用17位编码操作符与第一个操作位,用14位编码第二个操作位,用1位表示指令结束标志位。对LD、OR指令编码,若指令有偶数个操作位,则第3个、第4个、…、第n(n为偶数)个操作位的编码方法如同仅有2个操作位的指令;若指令有奇数个操作位,则第n(n为奇数)个操作位的编码方法如同仅有1个操作位的指令。

3 编辑功能的实现

编辑主要完成对PLC源指令文件的创建、写入、插入、修改、删除、查找、读出显示等功能,其执行流程如图4所示。编辑整个PLC源指令文件过程中,要对文件进行修改,如插入、删除指令或其中某一部分程序等,所以编辑过程是一个动态处理指令序列和存储程序的过程。通过操作双向链表中每个结点的前驱指针和后继指针完成写入、插入、删除、查找、读出等功能。

系统中编辑功能的特殊之处在于对多操作位逻辑运算指令的编辑。多操作位逻辑运算指令的操作位个数不定,每条多操作位逻辑运算指令设置了操作位的结束标识位,用于表明操作位是否全部被录入。

图4 编辑执行流程图

3.1人机界面的规划

键盘采用功能复用的方法设计,包括功能键、指令键、字母键、移位键、执行键、空格键等,共有35个按键。其中,指令键分别与字母键、数字键复用;功能复用键包括读出与写入、插入与删除、检测与强制。

屏幕显示具有上下滚动、刷屏等特点。录入指令时,指令号和操作符、操作符和操作数、各个操作数之间都只有一个空格符,各个操作数类型与其编号之间无任何符号。屏幕上指令序列的显示规划如图5所示。屏幕上逐行显示指令,原则上每行只显示1条完整的指令。若1行不能完全显示1条指令,则换行显示余下的操作数。

图5 人机界面屏幕显示设计图

3.2创建文件

编辑过程中,首先为指令文件创建足够大的空间,建立PLC源指令文件,用于存储录入的PLC源程序。当已编辑好的PLC源指令文件经编译后生成二进制目标代码时,二进制目标代码存储在PLC目标代码文件中。PLC源指令文件与目标代码文件是一一对应的,2个文件中结点的个数、结点的数据域是一一对应。PLC源指令文件中构成每条指令的字符都是以对应的ASCII值被存储的,都是根据在点阵字库表中对应的16×16点阵字模代码而显示。

3.3数据存储

系统中,LPC2478微处理器内部含有512KB片上Flash程序存储器,再加上外部存储模块(由NOR FLASH、SDRAM和NAND FLASH组成),故系统的存储容量较大。NOR FLASH用于存储系统程序,SDRAM用作程序的运行空间,为系统运行、通讯和数据处理提供动态存储空间,用于存储在编辑的源指令文件、编译或反编译过程中的目标代码文件、软元件的信息等。NAND FLASH存储已编辑好的多套源指令文件。而FX2N系列手持编程装置内置RAM存储容量最大为16 KB,可存储8 000步指令(即1套PLC指令)。该系统至少可存储256 000步指令,即32套PLC源指令文件。

所有文件采用双向链表存储,链表中每个结点有前驱指针和后继指针,结点的数据域用于存储指令。录入每条指令时,采用边录入边存储的方式来存储。所有指令被录入完后,PLC源指令文件已被存储。

3.4文件分析、优化和错误处理

文件的分析主要是对PLC源指令文件进行词法分析与语法分析[7-8],并进行错误处理,若有能优化的代码则优化处理,之后生成结构和逻辑上完全正确的PLC源指令文件。将指令的操作符、软元件的类型和接点类型设置为标识符,将软元件的编号设置为常数,分别建立操作符、软元件类型和接点类型的标识符库,软元件编号的常数库。

词法分析采用正则文法[9]和有限自动机[9]的原理来实现扫描功能。为了识别PLC源指令文件中每条指令的标识符和常数,建立了读取空格符位置函数Read_Space()、截取子字符串函数substr()函数,判断出空格的个数,从指令中分离出标识符与常数。检查词法分析阶段中产生的标识符与常数,判断操作符标识符是否在操作符标识符库、操作数的类型是否在软元件类型的标识符库、操作数的接点类型是否在接点类型的标识符库中,若不在则提示错误,重新键入;判断常数是否在相应的软元件的常数库中,若不在,则表明操作数的编号超界。经对文件中每条条指令分析、错误处理后,就产生了无错误的PLC源指令文件。

3.5编译处理

将已编辑好的PLC源指令文件编译成二进制机器代码。当执行发送写命令时,系统先按CAN扩展协议格式把二进制目标代码文件填充一报文,再发送给主机。若存储源指令文件的编程装置不在现场,而使用另外一台编程装置,其内没有存储源指令文件,则PLC主机将目标代码文件发送给该装置,该装置对其反编译,生成源指令文件,可对其进行编辑,避免重新录入指令。

4 监控功能的实现

为了远程监控PLC主机、检测软元件的信息,编程装置在联机方式下使用CAN总线[10]实现与PLC主机通讯。针对通讯的数据量大、复杂的特点,系统扩展了CAN协议。由于编程装置与PLC主机通讯的数据类型有PLC用户程序和软元件的信息,所以采用“起始位+设备地址+数据类型+数据号+命令+CAN发送的数据长度+数据+CRC校验码+结束标志”的自定义CAN扩展协议格式来传输数据,如表1所示。当系统发送写命令时,只将目标代码文件填充数据项,再按格式填充成一帧报文;发送读、改变PLC主机状态或其他命令时不携带数据,除了数据项外按顺序填好报文。

表1 CAN扩展协议格式表

图6为监控主机流程图。

图6 监控PLC主机流程图

发送前,将数据按照CAN扩展协议格式填充编码,接收数据后,按协议格式解码,计算出CRC校验码。当计算和接收的CRC校验码相同时,则表明接收的数据正确,若不同,则继续发送。根据解码内容监控PLC主机的运行状态,当监控到PLC主机处于编辑状态时,系统可发送用户程序到PLC主机,并固化程序到PLC主机的NOR FLASH中。当监控到PLC主机处于运行状态,系统可读取PLC程序和软元件的信息,并可对软元件强制设置数据。

5 实例验证

以图3中PLC梯形图为例来说明编辑系统的可行性。图7是梯形图的编码,上方是其源指令程序,下方是编码结果,以十六进制显示,共32个字节。

编程装置接收PLC主机发送的报文后对其解码,若PLC主机处于编辑状态,则向其发送写PLC程序命令,将图7中含有32个字节的目标代码文件按照CAN扩展协议格式编码,再发送给PLC主机。图8的上方是PLC主机接收的数据帧和CRC校验码,下方是数据帧被解码后获得的目标代码及计算出的CRC校验码,与接收的CRC校验码相同,说明主机接收的数据是正确的,再将数据写入PLC主机的Norflash中。

图7 PLC源指令及其编码

图8 PLC主机接收数据

若PLC主机处于运行状态,则向其发送读命令,可检测软元件的信息。结果表明:系统提高了编辑指令的效率,能远程监控PLC主机的状态,提高了PLC主机的处理速度。

6 结束语

设计出一种小型PLC编程装置的编辑与监控系统,克服了现有编程装置存在的一些缺点。该系统能在脱机下独立供电使用;能存储多套PLC程序;设计的新型多操作数逻辑运算指令提高了编辑与编译的效率,提高了PLC主机处理数据的速度;设计了CAN 总线的扩展协议,解决了与PLC主机的通讯问题。系统通过CAN总线将目标代码文件发送给PLC主机,可远程监控PLC主机的运行状态,检测软元件的信息。

参考文献:

[1]田文琦.基于IEC61131-3标准软PLC开发系统的设计与实现[学位论文].沈阳:沈阳计算技术研究所,2011.

[2]方承远,张振国.工厂电气控制技术.北京:机械工业出版社,2006.

[3]蔡启仲,郭毅锋,陈文辉,等.通用小型可编程控制器及其控制方法:中国,200710052941.X.2009-08-19.

[4]蔡启仲,李克俭,罗功坤,等.新型便携式PLC编程装置:中国,ZL 200910223190.2.2013-01-09.

[5]高金刚,陈建春,刘雄伟.数控系统的软PLC系统开发.计算机测量与控制,2010,12(3):254-256.

[6]吴玉香,周东霞,林锦赟.嵌入式软PLC系统的研究与实现.计算机工程,2009,35(10):235-238.

[7]龚仲华.三菱FX系列PLC应用技术.北京:人民邮电出版社,2010.

[8]陆林,白瑞林.一类PLC的编译器的设计与实现.微计算机信息,2008,24(12):17-19.

[9]蒋宗礼,姜守旭.编译原理.北京:高等教育出版社,2010.

[10]王黎明,夏立,邵英,等.CAN现场总线系统的设计与应用.北京:电子工业出版社,2008.

猜你喜欢
元件指令编程
承压类特种设备受压元件壁厚测定问题的探讨
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
纺织机上诞生的编程
中核北方核燃料元件有限公司
QFN元件的返工指南
宝马i3高电压元件介绍(上)
中断与跳转操作对指令串的影响
基于汇编指令分布的恶意代码检测算法研究