梯形图语言编辑界面的软件实现


http://www.paper.edu.cn 梯形图语言编辑界面的软件实现1 万伟 武汉理工大学通信与信息系统,武汉(430070) E-mail:cupidwan@163.com 摘 要:仿真西门子 STEP-7,利用 Visual C ++开发 PLC 梯形图编辑功能的软件。本软件使 用链表数据结构,实现梯形图符号的编辑、存储、显示等功能,同时还实现了语法检查等功 能。 关键词:梯形图语言,链表,仿真 1. 引言 可编程序控制器 PLC(Programmable Logic Controller)是工业自动化的不可缺少的部分, 我国对 PLC 有着巨大的市场需求。但是 PLC 的生产厂家众多,各公司都有自己专用网络通 讯手段,各种机型互不兼容,没有明确一致的标准,在编程元件的种类、数目、编程语言等 方面各不相同。PLC 编程语言的标准化己经是当今 PLC 发展的一大趋势。IEC61131-3 的修 订版己于 2002 年年底左右公布,遵循 IEC61131-3 显然是我们的首要选择。IEC61131-3 对 多种 PLC 语言进行了支持,而多语言支持的新型 PLC 能使广大的计算机工程人员、机械工 程人员、电气工程人员能够较快地掌握 PLC 的编程技术,这对推动 PLC 在电气、机械工程 中的应用,提高我国制造业的自动化水平有着重要意义[1]。 2.梯形图语言编辑界面的设计思路 该软件采用 Visual C++作为开发语言,在开发设计过程中采用面向对象的方法,以提高 软件的可重用性。Visual C++是微软开发的一门面向对象的程序开发语言,它充分利用 C++ 语言的面向对象的特性:封装、继承、重载和虚函数,程序的可移植性好,易于维护。而且 C++语言的编译和执行效率都很高。所以用它编写的程序的性能比较好。此外,Visual C++ 在图形编程方面也有比较强大的功能[2]。 2.1 梯形图语言编辑界面的设计要求 1) 梯形图语言的编辑功能能够实现梯形图语言的输入(梯形图元素,点击后绘制该梯 形图元件)、编辑、存储、显示等功能。 2) 支持新建分支、闭合分支等梯形图操作。 3) 能够进行梯形图词法、语法逻辑分析,反馈程序错误给人机界面。 2.2 梯形图语言编辑界面的效果图 菜单下面有绘图用的工具栏;工具栏下面是梯形图的绘图区域,绘图区被划分成了一个 一个的网格;在画上图形块后,双击图形块,可以弹出设置地址的对话框。下面给出运行的 效果图,如图 1-1 所示: 1本课题得到湖北省教研基金项目(200207855)的资助。 -1- http://www.paper.edu.cn 图 1-1 运行效果图 3. 梯形图的数据结构设计 3.1 梯形图的表示 整个梯形图指令由若干个梯级组成,每个梯级又是由一个或几个输入元件和一个输出元 件组成。计算机绘制图形都是位图格式的,它只能按要求画出图形中的直线、圆、矩形等元 素,而不知道各个图形元素之间的逻辑关系,但是在绘制梯形图的时候,各个图形元素之间 都是由一定的逻辑关系组成的,为了解决这个问题,我们将梯形图元素“放在”一个个小“单 位区域”中,每一个图形元素在单位区域中的相对位置都是统一固定的,这样每一个“单位区 域”连接的时候,就能解决连线连接的问题。 其实,抛开梯形图的图像表象,我们可以发现梯形图中每个元件其实都有一个共同的属 性,该属性可以用一个四元组表示(元件类型,所在位置,地址)。这个四元组是对所有梯形 图元件共性的抽象表示,我们将这四个元素封装在类 CIO 中[3]。 为每个梯形图元件建立各自一个单独的类 LD,LDN,O,ON,HOR,OUT。这样做的 好处就在于,因为我们在每一个单位区域中画的图形相对于单位区域的位置可以比较容易的 控制,举一个简单的常开触点的例子它的图形用如下两个函数来绘制: void LD::print(int x,int y,CDC *pDC) { put_img(x,y,pDC); pDC->SetBkMode(TRANSPARENT); pDC->SetTextAlign(TA_CENTER+TA_BOTTOM); pDC->TextOut(x+::CurW/2,y+30,name); pDC->TextOut(x+::CurW/2,y+40,addr); changeimg(x,y,pDC); } void LD::put_img(int x,int y,CDC *pDC) { int x1,y1; x1=x; y1=y+::CurH-10; -2- http://www.paper.edu.cn pDC->MoveTo(x1,y1); x1=x1+26; pDC->LineTo(x1,y1); pDC->MoveTo(x1,y1-10); y1=y+::CurH; pDC->LineTo(x1,y1); x1=x1+27; pDC->MoveTo(x1,y1); pDC->LineTo(x1,y1-20); pDC->MoveTo(x1,y1-10); pDC->LineTo(x+::CurW,y1-10); } 在上面的代码中 CurW 是指的单元区域的宽度,CurH 是指的单元区域的高度,它们都 是固定的长度,也可以说是单位长度。 我们知道如果把所有的触点如常闭触点、常开触点等类似的触点,甚至输出触点等功能 块的输入电流线起点终点的位置相对于单元区域都是在一条水平线上的时候,当把一个个梯 形图元素连接起来的时候,连线也就自然在一条水平线上了。 3.2 梯形图的存储 在绘制梯形图时,我们每次都只绘制一个元件(横向连线和纵向连线也当成元件处理), 这些元件从产生时间的角度看是前后相串联的,而且,每个梯形图程序中所使用的元件的数 量又是不定的,这两个特点恰是链表结构所特有的性质,所以,我们使用链表结构来描述梯 形图程序是最合适的。 我们使用MFC给我们提供的CObArray类来实现,CObArray和CPtrArray用法很类似,都 有GetSize,Add,GetAt等函数,但是CObArray类本身支持串行化,所以我们选用CObArray 类来实现,有关文件读写的操作在CDocument的Serialize函数中进行,有关数据和图形显示 的操作在CView的OnDraw函数中进行。我们在其派生类中,只需要去关注Serialize和OnDraw 函数就可以了,其它的细节我们不需要去理会,程序就可以良好地运行。 3.3 梯形图绘制区的设计 梯形图的绘制区域应该具有以下功能: 1.梯级绘制区在绘制区域不能显示全部图形的时候能够自动产生滑动条 2.绘图区域网格的划分 3.点击绘图工具栏不同图形时,光标显示图形的变换 4.绘制指定图形到指定的单元网格内 为了实现上述的功能我们采取下列措施: 1) 要建立一个多文档的应用程序,定义一个视图类 CLADView,使其继承于 CScrollView, 这样就能够实现自动产生滑动条。 2)在绘图区域画上一条左母线,将做母线右边的部分划分成固定长宽的网格,我们用点来 标示不同的网格范围。 3)建立几个光标位图资源,用 SetCursor 和 LoadCursor 函数来改变鼠标的图形。 4)点击绘图区域后,自动判断所属网格,将图形绘制在指定区域,我们使用兼容 DC 绘图 -3- http://www.paper.edu.cn 来完成。 使用兼容 DC 绘图具体实现如下: void CLADView::OnDraw(CDC* pDC) { CLADDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); CRect workare; this->GetClientRect(&workare); CPoint workare_start=this->GetScrollPosition(); pDC->BitBlt(workare_start.x,workare_start.y, workare.BottomRight().x,workare.BottomRight().y, m_pMemDc,workare_start.x,workare_start.y,SRCCOPY); } 3.4 语法检测功能的实现 检查主要检查所绘制的梯形图是否符合规定的格式,如果梯形图不符合格式要求,则会 给出错误信息。首先在设置元件地址时,检查地址是否为‘I’,‘Q’,‘SM’,‘M’等事先规定好 的字母,如不是则指出错误;然后对字母后的数字进行检查,例如I后面数字的范围在0.0-31.7 之间(小数点前的数字范围在 0-31 之间,小数点后的数字范围在 0-7 之间),不是则指出相 应错误。还要检查输出元件是否在最右边,元件是否为孤立的等,如果有错在编译是提示出 错信息。 4.总结 本文较详细地介绍了梯形图语言编辑器的设计思想,给出了其中用到的主要数据结构, 列出了具体实现中用到的函数,还给出了它们的运行效果。这为开发新型软件 PLC 的工作 打下了较坚实的基础。 -4- http://www.paper.edu.cn 参考文献 [1] 崔小乐.周卓岑.可编程控制器的梯形图语言与语句表语言的互换算法[J].微电子学与计算机,2000.1 [2] 何玉安.一种面向PLC的编程软件及其应用方法[J].机电工程技术.2003.2 [3] 周峰,王新华,李剑峰,温燕杰,张威. 软PLC编辑系统的设计与实现[J]. 计算机工程与应用.2005.7 Software realization for the edit function of ladder graphics language Wan Wei communication and informationg system,Wuhan University of Technology,Wuhan (430074) Abstract The software which can simulate the function of PLC program tracer is developed with Visual C++.This software can realize the function of editing,saving , showing and syntax checking with Ladder Graphics by using the data structure of catenulate table. Keywords: the language of ladder graphics; catenulate table ;simulation 作者简介:万伟,女,1982 年生,硕士研究生,主要研究方向是嵌入式与智能控制。 -5-
还剩4页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 0 人已下载

下载pdf

pdf贡献者

jjchuangda

贡献于2017-05-26

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf