关健词:可编程逻辑控制器;梯形图;指令表;IEC61 131—3标准
1概述
可编程逻辑控制器(Programmable Logic Control,PLC)是以微型计算机为核心的工控装置。目前,PLC功能要求不断增长,传统PLC编程方式的开发时闻和错误率都相对增加,对大型程序的纠错和维护也非常困难。与此同时,多数公司的编程软件只针对自己的产品,产生了不同PLC程序可移植性、可复用性差,缺乏封装能力等一系列问题。
1993年国际电工委员会颁布IEC6113I标准,其中,第3部分对PLC编程进行规范,这一标准为工控软件的发展起到了举足轻蘑的推动作用”J。但是,多种软件开发平台并存且没有针对组态软件设计约规范,使组态软件在设计上大相径庭,即使同一种组态功能实现时也各有侧重点。现阶段PLC编程软件普遍存在提供的编程语言较少、人机交互界面设计简单粗糙、功能少、缺乏整体的视觉效果容易使用户对组态工作产生混乱等问题。
本文通过对IEC61131-3标准的研究,设计一个基于PC的PLC统一编程环境。为编程人员提供一个将自己的要求转化成程序的友好平台,编程环境要求具有良好的可视化人机界面,程序开发简单、维护方便、系统运行稳定,具有智能的图形及文本编辑系统,提供使用符合标准的5种语言,并能实现图形语言至文本语言转换。
2 IEC61131—3的软件模型
IEC61 13l·3软件模型在最上层把软件概括为。配置”,专指一个特定类型的控制系统,包括硬件装置、处理资源、I/0通道的存储地址和系统能力。在一个“配置”中可定义一个或多个“贽源”,反映控制器的物理结构,在程序和控制器的物理I/O通道之间提供一个接口,只有在装入“资源”后才能执行程序。在一个“资源”内可以定义一个或多个“任务”,配置后控制一组程序组织单元(Program OrganizationUnits,POU)周期执行或事件驱动执行。标准定义了5种编程语言,其中,图形语言有梯形图(Ladder Diagram,LD)、顺序功能图(Sequential Function Chart,SFC)和功能块图(Function Block Diagram,FBD),文本语言有指令表(Instruction List,IL)和结构化文本(Structured Text,ST)。
3编程环境体系结构设计
为满足EC61131-3各项要求,系统可划分为编辑模块、检查模块、翻译模块、监视模块、通信模块5个部分。
(1)编辑模块
包括图形及文本编辑环境,图形语言支持使用鼠标拖拽编辑,文本语言需要对用户的输入进行提示。
(2)检查模块
对文本语言程序进行基本的词法和语法错误检查,对图形语言程序进行图元组合错误检查,同时提示错误。
(3)翻译模块
图形语言不能被PLC识别,要转换成文本语言,以便调用编译器进行编译。
(4)监视模块
当程序在PLC中运行时反映其执行和参数变化情况,以便及时调整和维护。
(5)通信模块
负责PC与PLC硬件之间的数据通信,包括用户程序下载、操作命令和硬件配置参数、内存等的记取。除了这些主要功能模块外的其他基本功能可以内嵌到以上模块中。系统工作流程如图l所示。
4软件模块具体实现
4.1编辑模块
软件设计的第1阶段选用LD和IL作为编辑语言。
4.1.1 LD编辑模块
(1)LD对象类定义
LD采用逻辑元件和逻辑关系图表示程序。标准规定可采用的元件图符有电源轨线、连接元素、触点、线圈、功能和功能块等,可设计如图2所示的类图对LD对象进行封装。
(2)LD程序的存储
LD程序常用的存储结构有双向链表、邻接链表和十字链表等。为了对LD程序进行正确存储、显示并方便后续处理,除了需要存储图符的全部信息,还要正确表示图符间的拓扑关系。一个LD程序可看成是一个有向图,其中,图符可看作图的顶点,连接符可看成图的弧。在后续处理中,还经常需要使用各个顶点的入度和出度。双向链表无法清晰的表示出图的结构,邻接表在求出度、入度时较为复杂,因此,采用十字链表存储LD程序。
4.1.2 IL编辑模块
IL类似于汇编语言,由一系列指令组成,指令包括操作符和操作数。为了支持IL编辑,可使用CEditView派生出CTextView类。CEditView已经具有文字编辑功能,支持多窗口操作并有文件预览功能,由此派生的ETextView能支持IL程序在编辑视窗中进行编辑。
4.2检查模块
4.2.1 LD检查模块
本模块主要是规范使用者的编程,给出出错信息引导用户做出修改。从软件的易用性考虑,不只在程序设计结束后进行检查,而是将检查模块分为实时和非实时2部分设计。
(1)实时检查
对编程过程中出现的明显错误弹出对话框提示,引导编程人员规范的编写程序,提高编程效率。
(2)tie实时检查
程序编辑完成后全面枪查,保证通过检查的LD程序是正确的,主要是检查元件参数错误、短路和断路错误、混合连接错误,下面给出检查的思路。
1)元件参数错误:在遍历元件链表时获取每个元件的参数,判断是否合法。
2)短路错误:如果网络(回路)中某个部分并联了几条支路,其中一条支路全由直线或者直线和空元件组成的,那么该部分其他支路被短路。
3)开路错误:按一定原则把行划分为若干小行,然后检查小行的开始、中间和结束元件是否合法。小行划分标准是:如果发现空元件则其前面所有元件为一小行;如果某元件的列号比上一个元件的列号大2及以上,则该元素前所有元素为一小行;元件链表的结束也是划分小行的标志。
4)检查混合连接错误:若网络中存在任何一部分(行数和列数都至少为3,并且行与行之间相互联系),这部分的行不能在任何一列处交汇到一个点,否则就发生了混合连接错误。
4.2.2 IL检查模块
指令表错误处理主要是对指令表文本进行词法和语法分析,对操作码和操作数有效性进行校验。
4.3翻译模块
目前国内多数PLC开发系统中采用的LD至IL翻译算法是将LD映射成AOV(Activity On Vertex)图,再采用拓扑排序对图进行遍历,从而实现转换。该方法通过相应的图符含义来获得LD中的逻辑关系,并不通用,且不适用于串、并联关系较复杂的程序。所以,本文采用将LD映射成AOV图,再由AOV图建立二叉树,并对其进行后序遍历的方法,步骤如下:
(I)LD程序映射成AOV图AOV图用顶点表示活动,用弧动,开始之前完成。可以将LD中的图符抽象成顶点,图符之间的连接关系抽象成弧。映射时首先对LD程序进行一次从左到右,从上到下的扫描,统计其中图符和弧的数目,得到各图符的前驱节点、后继节点、入度和出度等信息,并把LD并连线抽象成虚节点。然后进行第2次扫描,建立AOV图的结构。
(2)AOV图转换成相应的二叉树基本思路是:入度为零的顶点设置为根节点,每个图符对应二叉树的一个叶子节点。如果图符的出度为l,则建立一个“与”节点;若图符的出度大干等于2,则建立一个“或”节点。
AOV图转换成二叉树算法流程如图3所示,其中,P1表示图符顶点指针;F1表示Pl当前指向图符的访问标志;Ⅳl表示尸l指向图符的入度;N2表示JDl指向图符的出度。
对图3的说明如下:
StepI创建与堆栈s1或堆栈舵。初始化P1、二叉树节点指针P2,将Fl清0。P1指向入度为0的节点。
Step2从S1中弹出“与”节点指针,并赋给Jp2。
Step3创建“与”节点,并赋给尸3。
Step4如果JD2左子树为空,则P3作为尸2的左子树,否则P3作为P2的右子树。
Step5 PI作为Jp3的左子树,挖指向P3对应的节点,Pl指向Jpl的第1个直接后继。
Step6创建2个“与”节点P3,P4,创建N2·1个“或” Step7如果P2左子树为空,则P3作为P2的左子树,否则P3作为P2的右子树。
Step7如果P2左子树为空,则P3作为P2的左子树,否则P3作为P2的右子树。
Step8 P4作为P3左子树,PI作为P4左子树,P6作为P左子树,P7作为P6左子树,?,PN作为肌1左子树。P5~JP~压入舵,PI的直接后继压入眈。PI指向其第1个直接后继,P2指向PN对应的节点。
tep9从观中弹出2个对象指针,分别赋给P1,P2。
(3)对生成的二叉树进行后序遍历,访问每个节点时进行相应的处理,生成对应的指令表。
4.4在线监视模块
监视画面可以根据PLC程序的控制流程和中间变量,用直观的编程方式完成,并提供出错报警,以达到随时了解程序执行和参数变化情况的目的。模块由图形界面和实时数据库组成。
图形界面可以依照操作系统的图形标准,采用面向对象技术通过图形来反应参数变化情况,生成图形的数据驱动来源于数据采集过程中自动生成的数据表。在连接过程中,从数据表选择驱动数据源,最终生成图形目标应用系统供图形行环境运行时使用。实时数据库中应定义数据库的结构、数据连接、数据类型及相关的各种参数,其数据的主要来源为数据采集时生成的数据表。
4.5通信模块
PLC和Pc的通信通常通过Pc的串I:i以“命令.响应”的交互方式进行。设计时建一个能够实现串口通信的类,类中设计2个函数:ReadData,SendData,按照PLC通信格式建立起上位机和PLC的通信以后,即可完成所需功能。
4.6工程管理器
工程管理器对配置层进行管理。配置层是IEC61 131-3软件模型中的最上层。对应于整个控制系统。工程管理器负责配置中各个部分的组织和联络,并要求能对系统中所有资源进行统一的管理。
工程管理器按照树形结构进行组织,并应具备如下功能:
(1)登记新创建的文件;
(2)从其他项目导入文件;
(3)显示所有已经存在的POU;
(4)更名或删除POU;
(5)显示整个项目的信息结构。
5软件测试
VS2005拥有完善的集成开发环境,包括可视化设计器、代码编辑器以及程序设计语言,为提高开发速度和程序执行效率,选用VS2005作为开发工具。系统主界面及翻译模块运行结果如图4所示。
通过实验表明:
(1)系统软件开发遵循IEC61131-3标准,用户界面友好、操作简单、功能全面。
(2)工程管理器反映了IEC61131-3软件模型的结构,使用户清晰地了解所进行组态工作的全貌。管理器能够以不同的树型视图来显示不同的工程部分,操作基于Windows标准。通过界面良好的工程管理器,用户能够对工程中的各种资源进行管理。
(3)用户可通过对编辑工具栏中LD组件的拖拽轻松完成LD程序编辑工作。可使用不同语言进行交叉编程,编程方式灵活。对程序编辑过程中出现的一般错误,软件正确进行了提示,避免不必要的错误,极大提高了程序开发的效率。
(4)系统正确高效地完成了LD向IL的转换,编译生成的可执行程序在PLC中正确运行。运行过程中各个参数的变化在监视界面中以图形方式正确显示,方便进行程序的修改和维护。
(5)软件正确进行了异常处理,运行稳定。
6 结束语
本文对IEC6113l-3标准进行介绍,给出基于IEC61131—3的PLC编程环境框架结构,对其中各个模块进行说明,给出主要的算法和数据结构。并针对较难实现的LD向IL转换的算法思想和实现步骤进行说明。实验证明该软件界面友好、编程方式方便灵活、易于维护,在一定程度上可以解决目前各种品牌PLC编程方法无法统一的问题,提高编程效率,减少培训、维护费用,具有广阔的应用前景。
该软件框架的设计思想为以后的开发打下较为坚实的基础,但是第l阶段只进行了初步的开发,要进一步提供全部5种语言,全面兼容IEC6113l标准,还需要进行大量的工作。