总第269期 2012年第3期 计算机与数字工程 Computer&Digital Engineering Vo1.40 No.3 136 基于IEC61 131-3标准的PLC编辑模块设计与实现 秦(桂林空军学院三系摘要华 桂林541003) 基于IEC61131—3标准设计一个可编程逻辑控制器(PLC)编辑模块,并给出了主要数据结构和算法的设计。通过测试表明用 户界面友好,操作简单,对后续开发具指导意义 关键词 可编程逻辑控制器;IEC61131—3标准;梯形图语言;指令表语言;编辑模块 中图分类号TP391 Design and Realization of Edition Module for PLC Based on IEC61131-3 Standard QINHua (No.3 Deparment,Guilin Air Force Academy,Guilin 541003) Abstract Designed a edition module for PLC based on the IEC61131—3 standard and introduced data structure and algorithm of this module.The result of experiment shows that the edition module has a friendly user interface and easy to operate,which provides for the fur— ther development. Key Words PLC,IEC61131—3 standard,ladder diagram,instruction list,edition module Class Nillm ̄r TP391 1 引言 计算机的汇编语言,逻辑性强,较受计算机工程人员欢 迎[2]。根据这两种语言的特点,考虑到不同领域人员对软 PLC(programmable logic controller,可编程逻辑控制 件使用时的要求,本软件设计的第一阶段选用IEC61131—3 器)是以微型计算机为核心的工控装置,是工业自动化三大 所提供的五种语言中的梯形图和指令表语言作为编辑语 支柱之一。目前相关技术的PLC编程软件几乎都要从国 言。 外引进,价格十分昂贵,开发具有自主知识产权的PLC编 图1表示了在编辑环境中各子功能模块之问的交互过 程系统具有十分重要的意义。 程及编辑过程中消息的传递。 1993年国际电工委员会正式颁布IEC61131标准,该 标准将信息技术领域的先进思想和技术引入工业控制领 域,其中第三部分对PLC编程进行了规范,这一标准为工 控软件的发展起到了举足轻重的推动作用_1 ],各大PLC 生产厂商都用此标准来规范自己的PLC软硬件产品。 本文通过对IEC61131—3标准的研究,设计一个满足标 准要求的PLC梯形图编程模块。 2编辑模块功能设计[5] 编辑模块是PLC编程系统最基本的功能块,包括文本 编辑器和图形编辑器,分别对IEC61131—3提供的文本语言 图1编辑器UML交互图 和图形语言进行编辑。编辑模块主要为用户提供一个友好 的程序编辑环境,包括具有一定智能的图形编辑环境及文 3数据结构设计 本编辑环境。 3.1梯形图数据结构设计[6] IEC61131—3标准提供了五种程序设计语言,其中包括 LD采用逻辑元件和逻辑关系图表示程序,IEC61131-3 三种图形化编辑语言两种文本化编辑语言。在这五种程序 标准规定可采用的图符有电源轨线、连接元素、触点、线圈、 设计语言中,梯形图LD是其中最典型的、最基本的一种编 功能和功能块等,我们设计了如图2所示的类对LD对象 程方式,它与电器控制系统的电路图很相似,具有直观易懂 进行封装。 的优点,较受工程技术人员欢迎。而指令表语言是一种流 根据以上分析,可以设计出基本元件的数据结构: 行于欧洲和日本的低级语言,简单易学,容易实现,类似于 class CPLadElement:public CObjeet *收稿日期:2011年9月10日,修回日期:2011年1O月1O日 作者简介:秦华,女,硕士,讲师,研究方向:网络信息安全。 2012年第3期 计算机与数字工程 137 { CString mstrElementID;//元件的ID UINT mnParameterNO;//参数个数 UINT mnOutputNO;//输出端个数 CRect mrectI adElement;//元件所在矩形区域的位置 CPTopology mpTopology;//拓扑信息 CPI adPosition)*mpI dPosition;//梯形图位置信息 }: 结构CPTopology和CPI adPosition如下: class CPTopology:public CObiect { BOOL ITIbT。pRidbtLine;//右上连线标志 BOOI mbBottomRightLine;//右下连线标志 ) class CPI dPosition:public(;Object ( UINT m nNetworkNO://网络号 UINT mnRowNO;//行号 UINT mnColumnNO;{ 号 } LD对象 一名称 一参数 一注释 +参数调用() +检验() +转换() +拖动() 1 . f f t t l 电源轨线 连接元素 触点 线圈 功能/功能块 一类型 一类型 一类型 一类型 一名称 +选择() +选择() +选择() 一输入信号 +删除() +转换() +转换0 一输出信号 +链接() +链接() 十调用() +删除() +删除() 图2 LD类图 梯形图元件的基类信息如上所示,包含了元件ID,输 出个数,与其他元件的连接关系以及元件所在网络号、行号 和列号,把梯形图元件从这个基类派生下来,再加上元件特 有信息即可满足要求。 3.2指令表数据结构设计 IL类似于汇编语言,由一系列指令组成,指令包括操 作符和操作数。为了支持IL编辑,可使用CEditView派生 出CTextView类。 4模块具体设计 4.1梯形图编辑模块 1)LD语言分析 ] 梯形图语言的组成部分是表示各个触点、线圈、功能的 符号资源,以及记录每一个符号命令的内部参数等。根据 梯形图的图形表示特点,将各符号、功能块通过位图的形式 表示,并一一显式在梯形图编辑区内,完成梯形图的绘制。 考虑到软件的易用性,并根据LD程序设计的特点,我 们要求LD编辑器具有以下基本功能: (1)各种PLC元件在LD编辑工具栏中以元件工具形 式给出,以鼠标拖拽的方式绘制梯形图元件; (2)支持梯形图元件的插入、删除、赋值、剪切、粘贴等 操作; (3)支持“撤销undo”和“重做redo”的编辑功能; (4)使用元件组件绘制出梯形图后,支持对梯形图中 元件属性的更改; (5)在用户绘制包含有一些基本语法错误的元件时, 提示并取消操作; (6)支持滚动,在编辑内容超过当前窗口范围时,自动 产生滚动条。 2)LD程序的存储_3 一个梯形图程序是一些梯形图元件的集合,包含的元 件数量可以有许多,组织好它们之间的关系也是一个重要 的问题。 在绘制梯形图时,我们每次只绘制一个元件(横向连线 和纵向连线也当成元件处理),这些元件从产生时间的角度 看是前后相串联的,而且,每个梯形图程序中所使用的元件 数量又是不确定的,这两个特点恰好是链表结构所特有的 性质,所以,使用链表结构来描述梯形图程序是最合适的。 使用链表结构的另一个优点是:链表中的节点是时间有序 的。时间有序的特点使我们在实现编辑器的撤销与重做这 两个编辑功能时变得非常容易。 LD常用的存储结构有双向链表、邻接链表和十字链表 等。为了对LD程序进行正确存储、显示并方便后续处理, 除了需要存储图符的全部信息,还要正确表示图符间的拓 扑关系。一个LD程序可看成是一个有向图,其中图符可 看作图的顶点,连接符可看成图的弧。在后续处理中,还经 常需要使用各个顶点的入度和出度。考虑到双向链表无法 清晰的表示出图的结构,邻接表在求人度、出度时较为复 杂,我们选用十字链表来存储LD程序。 在对梯形图进行存储时,首先对梯形图程序进行一次 从左到右,从上到下的扫描,统计程序中的图符和弧的数 目,并得到各图符的直接前驱结点、直接后继结点、各图符 顶点的入度和出度等信息,其中梯形图并连线抽象成虚结 点。然后用同样的顺序进行第二次扫描,生成图的十字链 表。下面给出一个实例来说明梯 形图的十字链表存储方式。 梯形图编写的程序如图3所 示。 经过一次扫描后,将并联线 图3梯形图实例 抽象成虚结点,梯形图程序将转 换为图4所示。 第二次扫描,将梯形图存储为十字链表,如图5所示。 在实现对梯形图文件的保存和打开时,使用MFC提供 的CObArray类,在文档中定义CObArray类的一个成员变 量m_pointArray,然后可以直接调用m_pointArray.Serial— ize(ar)来保存梯形图。 138 秦华:基于IEC61131—3标准的PLC编辑模块设计与实现 第40卷 图4转换后的梯形图程序 U I 1 u-L 2 I l 2I 3l_++ 3 j I 4I I—厂 4 I 5 : 丁 6 789 — —I 一l ,J 丌-T]一 I I I l 9 I 7 l_’—十一 1O I 1 I10l f l・ I10I 3。。 ll I 3 I 11I l卜 图5梯形图的十字链表存储 3)梯形图绘制区的设计 梯形图的绘制区域应该具有以下功能:梯形图程序在 绘制区域不能显示全部图形的时候能够自动产生滑动条; 绘图区域网格的划分;点击绘图工具栏不同图形时,光标显 示出不同的图形;绘制指定图形到指定的单元网格内;连接 线绘制功能的实现。为了实现上述的功能,我们采取下列 措施: (1)首先要建立一个多文档的应用程序,定义一个继 承于C ̄rolWiew的视图类CLADView,这样就能够实现 自动产生滑动条。 (2)在绘图区域画上一条左母线,将做母线右边的部 分划分成固定长宽的网格,我们用点来标示不同的网格范 围。 m—pMemDc-- ̄MoveTo(50,O); mpMemDc-- ̄LineTo(50,m_nAreHigh);//画左母线 for(inti=::CurW+50;i<m_nAreWidth;i+=::CurW) for(inti=::CurH;j<m_nAreHigh;j+一::CureH) m_pMemDc-->SetPixel(i,j—10,1);//用点来标示不同的网 格范围 (3)事先建立几个光标位图资源,用SetCursor和 LoadCursor函数来改变鼠标的图形。将不同绘图工具的选 择值与变量rfl—nDrawType关联起来,根据不同的rfl— nDrawType,来加载不同的光标位图资源。 (4)鼠标点击绘图区域后,自动判断所属网格,使用兼 容IX;绘图将图形绘制在指定网格区域。 (5)连接线要绘制在标识网格的点之间,并且只能是 水平和垂直方向;但是鼠标绘图移动时会产生偏差,需要自 动判断一下更接近哪个网格点来做出直线。 4.2 IL编辑器 1)IL特点 语句是应用程序的基础单元,应用系统的每个控制功 能均由一条或多条语句组成的应用程序来完成。PLC的语 句由操作码和操作数组成,其一般形式为操作码+操作数。 操作码用助记符表示,它表明PLC要完成的某种操作功 能。操作数包含为执行某种操作所必须的信息,告诉PLC 用什么地方的数据来执行此操作。指令表编程有键入方 便、编程灵活、能直接被PLC所识别等优点,但不如梯形图 形象、直观。 指令表程序编辑器是一个文本编辑器,所有的逻辑和 运算都使用指令和操作数的方式输入。 2)设计目标 (1)允许用文本方式编辑源程序; (2)实现文本的拷贝、剪切、粘贴、删除、撤销和查找等 功能; (3)实现源文件创建、存储和打开; (4)提供语法敏感功能,即当用户输入关键字、常熟以 及注释等单词时,以格式化的文本显式; (5)在状态栏中显式当前光标所在的行列。 3)编辑器的设计 IL语言使用CEditView派生出CTextView类。 CEditView已经具有文字编辑功能,支持多窗口操作并有 文件预览功能,由此派生的ETextView能支持IL程序在 编辑视窗中进行编辑。 5模块测试 测试时主要针对较复杂的梯形图编辑方式进行。梯形 图编辑界面如图 6,新建梯形图程 序P0U(程序组织 单元)后便可以打 开LD编程界面, 也可以双击工程管 理器上相应的图标 来切换到LD编程 界面。在LD编程 图6 LD编辑界面运行效果图 系统下,用户可用 鼠标从编辑工具栏中拖拽组件进行LD程序的编辑。测试 表明系统软件开发遵循IEC61131—3标准,用户界面友好, 操作简单,用户可通过对编辑工具栏中LD组件的拖拽轻 松完成LD程序编辑工作。 6结语 本文给出了基于IEC6ll31—3标准的PLC编辑模块的 功能设计,对所用的数据结构和设计思路进行了说明,并对 模块的运行进行了初步测试。该软件框架的设计思想为以 后进一步的开发打下了较为坚实的基础,但是第一阶段只 进行了初步的开发,要完善软件功能,还需要进行大量的工 作。 参考文献 [13巩向信,葛益军.IEC61131—3编程语言的现状与趋势I-J].控制 工程,2007,14(1):99-101. GONG Xiangxin,GE Yijun.Actuality and Development Trend of Programming Language Based on IEC61131—3[J].Control Engineering of China,2007,14(1):99—101. E23周士贵,宋颖超.IEC61131—3工控编程语言国际标准及其应用 EJ].计算机与信息技术,2008(7):78—80. 2012年第3期 计算机与数字工程 139 ZHOU Shigui,SONG Yingchao.The International Standard of IEC61131—3 for Industrial programming and Its Application JANG Cunxue,LI Jishun,LIANG Chun’an.Ladder Diagram Edit Sohwarc for Embedded PLC with Visual C++Lan— [J1.Computer&Information Technology,2008(7):78—80. [33谭锦浩,程良鸿.嵌入式PLC梯形图的一种数据结构描述方法 口].计算机工程,2004,30(10):85—87. TAN Jinhao,CHENG Lianghong.Idea of Description on Lad— guage[J].Manufacturing Technology&Machine Tool,2006, 9:64-66. [71陈辉,李坚强,裴海龙,等.基于梯形图语言的软PLC技术研究 与实现[J1.微计算机信息,2006,22(9),266—268. CHEN Hui,LI Jianqiang,PEI Hailong,et a1.Study and realize der Diagram s Data Structure for Embedded PLC[J1.Comput— er Engineering,2004,30(10):85—87. oftS PLC technology based on ladder language[J].Microcom— purer Information,2006,22(9),266—268. [4]潘勇,高峻雄,王耘波.PLC的应用和发展[J].计算机与数字工 程,2007,35(2):76—78. PAN Yong,GAO Junxiong,WANG Gengyun.Application and [83宫淑贞,王冬青,徐世许.可编程控制器原理及应用[M1.北京: 人民邮电出版社,2002. GONG Shuzhen,WANG Dongqing,XU Shixu.Principle of Development Trend of PLC[J].Computer 8L Digital Engineer— ing,2007,35:76—78. Programmable Controller and Its Applications[M].Beijing: Posts and Telecommunications press,2002. [53张汉兵,叶伯生,杨道善.数控系统中内嵌式PLC梯形图编程 的软件实现[J].组合机床与自动化加工技术,2002(12):26— 28. [9]何衍庆,戴自祥.可编程控制器原理及其应用技巧[M].jE京: 化学工业出版社,2003. HE Yanqing.DAI ZiMang.Principle of Programmable Con— ZHANG Hanbing,YE Bosheng。YANG Daoshan.The struc- tures of editting and compiling program of ladder diagram of troller and Its Applications Skills[M1.Beijing:Chemical In— dustry Press,2003. built-in PLC in CNC systemD].Modular Machine Tool&Au— tomatic Manufacturing Technique,2002(12):26—28. [10]张海藩.软件工程导论[M].北京:清华大学出版社,2001. [6]姜存学,李济顺,梁春安.用Visual C++语言实现的嵌入式 PLC梯形图编辑软件[J].制造技术与机,2006,9:64—66. ^ ^ : ^ : ‘ 协 t ^ ^ ^ ZHANG Halfan.Soft Engineering Introduction[M1.Beijing: Tsinghua University press,2001. 协 z ^ ^ d0=、 (上接第125页) S3C2416 DATASHEET 0F SAMSUNG PR0DUCT()VER— VIEW. [71.ARM9平台下嵌入式Linux/Bootloader系统驱动程序的 设计与实现[D].吉林大学,2008,(5). ZHANG Jiam Design and Realization of Embedded IANUX/ [33 DM9000A data sheet.DAVICOM.httpt com/. .davicom. Boot Loader System Driver on the ARM9 Platform[D].JiLin University,2008。(5). [41于明,范书瑞,曾祥烨.ARM9嵌入式系统设计与开发教程 [M].北京:电子工业出版社,2006. YU Ming。FAN Shurui,ZENG Xiangye.ARM9 embedded sys— [81 David Brownel1.USB Gadget API for Linux[EBI.http:// tal1.admingilde.org/linux-docbook/gadget tem design and development[M].BeiJing:Publishing House of Electronics Industry,2006. [9]熊春杰.Linux内核移植与USB驱动开发[D1.电子科技大学, 2008,(1). [5]魏永明.Linux设备驱动程序[M]。北京:中国电力出版社, 2006. XIONG Chunjie.Linux Kernel Transplant and USB Driver e— Dvelopment[D].University of Electronic Science and Technolo— gy,2008,(1). WEI Yongming.Linux Device Driver[M1.BeiJing:China elec— tric power press,2006. [1O]冯韬.嵌入式Linux下USB2.0设备驱动设计与实现[D1.电 子科技大学,2008. FENG Tao.USB2.0 Device Driver Design and Implementation [61倪继利.Linux内核分析及编程[M].北京:电子工业出版社, 2005. NI Jihong.Linux Kernel Analysis and Programming[M].Bei— Jing:Publishing House of Electronics Industry,2005. based on the Embedded Linux_】)].University of Electronic Science and Technology,2008.