李驰骎 王庭有 李应春 杨安园

摘 要:为了探索PLC梯形图编辑系统的设计方法,从梯形图编程系统设计需求出发,分析传统梯形图网络的不足,采用一种高自由度的网络拓扑结构描述梯形图网络,并根据该网络拓扑结构提出一种分布式存储方案,实现梯形图图元之间的连接关系存储。基于QT图形框架采用面向对象的软件方法实现梯形图标准图元创建、连接关系建立、图元删除等功能。完成梯形图编辑系统设计后,对图元管理、各种指令调用进行编辑测试,结果表明该系统设计方法可行。

关键词:可编程控制器;梯形图;QT;存储结构;图元管理

DOI:10. 11907/rjdk. 181943

中图分类号:TP319文献标识码:A文章编号:1672-7800(2019)002-0072-04

Abstract: In order to explore the design method of PLC ladder diagram (LAD) editor system, we start with the overall requirements of LAD editor system, analyze the shortcomings of the traditional LAD network, and use a high-degree-of-freedom network topology to describe LAD network. According to the network topology, a distributed storage scheme is proposed to implement the storage of connection relationships between LAD primitives. The object-oriented software method based on the QT graphics framework is used to realize the functions of creating ladder diagram standard primitives, establishing connection relationships and deleting primitives. After completing the design of the ladder diagram editing system, we tested the management of graphic elements and various instructions. No problems were found during the process. The results shows that the method of designing the ladder diagram editing system proposed in this paper is feasible.

Key Words: programmable logic controller; ladder diagram; QT; storage scheme; primitive management

0 引言

可編程控制器(programmable logic controller,PLC)在工业控制领域应用广泛, PLC编程软件是推动PLC发展的重要动力[1-2],而编辑系统是编程软件中至关重要的组成部分,它负责梯形图的输入、编辑、显示,各个单元的位置、符号等信息保存,决定了软件的交互性[3]。

国外PLC发展相当成熟,PLC编程软件技术研究较多:Milik A[4]提出了一种多线程执行技术,利用数据流图识别程序的并行性,完成编程语言的编译;Prahofer等[5]采用程序上的模式匹配、控制流、数据流等分析方法,开发静态代码分析工具;Deveza等[6]将指令表作为Matlab/Simulink翻译软件包的输入,实现PLC在Matlab中的仿真;Kim H S等[7]采用二叉逻辑树方法实现梯形图程序的解释;Moonga等[8-10]通过将梯形图映射为AOV图的方法,把梯形图转换为AOV图,且使用双堆栈深度优先搜索算法(TSDFS)实现梯形图到指令表的转换;Asensio等[11]提出了基于IEC61131-3标准和PLCOpen TC6架构的完整工业自动化程序开发环境。

国内PLC编程软件研究主要有:李慧亮等[12]使用FLEC、BISON对指令表进行词法分析和语法分析,进一步完成了中间代码结构设计、目标代码生成器设计,但文中的中间代码结构和目标代码生成器考虑过少,不具备通用性;韩江等[13]将梯形图映射为AOV图,建立梯形图到以邻接矩阵方式存储的AOV图的映射,但由于梯形图串并联关系的复杂性,使用该算法会导致转换不稳定;吴盼盼等[14]采用XML文件描述梯形图图元及其连接方式的存储结构,以类C的脚本语言作为中间语言实现梯形图到指令表的转换,但存储方式和转换方式稍显复杂,支持的指令不多;黄健[15]基于MFC实现图元的数据结构设计,用分层方法存储图元位置关系;杨观赐等[16]提出了以链表与双向二维链表结合的梯形图网络存储结构。

本文对梯形图编辑系统设计方法进行研究。从梯形图编程系统总体需求出发,通过分析梯形图的网络拓扑结构及图元存储方案,提出拓扑结构及对应的图元存储结构,采用面向对象的软件方法实现图元管理功能,该方案在梯形图网络结构上更加人性化,图元存储结构更加简单,对编辑语言转换的复杂度更低,图元管理的各种功能更加健全。

1 系统总体设计

1.1 系统功能

编辑系统在整个编程软件中起着基石作用,可细分为变量模块、图元模块、程序网络模块[17],具体功能细分如图1所示。

1.2 梯形图网络拓扑结构设计

大部分梯形图编程软件的编辑模块采用网格或矩阵固定位置的方式向梯形图网络中添加图元[18-19],这种方式规定每个元件所占网格数,优点是图元连接关系清晰且排版简单,但也有一些缺点:①网络空间利用率低;②图元操作的算法时间复杂度高,串并联关系识别较复杂,如图2所示。

因此,本文不采用固定位置的网络结构而采用元件可以自由移动的网络拓扑结构,这种网络结构不限制梯级中任何一个图元位置,图元之间的连接关系是用户添加的,通过解析连接线唯一得到,与图元位置没有任何关系。删除图元时,只删除和该图元直接相连的连接线,不对其余图元及连接线做任何更新。

本文采用的网络结构以最优方式完整呈现整个梯级网络,同时降低图元存储结构复杂度和图形网络转换复杂度。此外,虽然没有网格会给程序编排带来困难,但通过建立大小随意设置的栅格可以解决问题,元件按照栅格的设置移动,每次只移动一格[20]。

1.3 程序结构设计

基于面向对象的软件开发方法,本文使用Qt图形/视图框架搭建编辑系统的程序结构。图形/視图框架包含图元(QGraphicsItem)、场景(QGraphicsScene)、视图(QGraphicsView)三层结构,分别具有作为场景图形项目的基类、提供图形/视图场景管理器的容器、使场景中的内容可视化功能[21]。

将IEC61131-3标准规定的梯形图图元抽象为图形视图框架中的图元,采用继承QGraphicsItem的方法生成不同的图元,并通过响应图元的鼠标双击事件完成图元信息的修改。图元的管理通过重写场景类QGraphicsScene实现:响应鼠标的单击事件完成图元的连接及图元的添加,响应键盘事件删除图元。最后,考虑到梯形图网络中功能/功能块的使用频率高,增加拖拽添加功能/功能块图元的方式,该过程通过重写图形/视图框架中的视图类QGraphicsView的拖放响应函数完成。面向对象的软件开发方法将软件系统中各个实体抽象为类,然后基于类的继承、封装、消息传送、多态等特性构造软件系统,最后设计各个实体类之间关键信息通信。编辑系统实现结构如图3所示。

2 图元数据结构设计

2.1 图元存储结构设计

采用准确高效的图元存储结构是设计梯形图编辑系统不可缺少的环节。目前,主流的梯形图存储结构有双向链表[22]、分层存储法[23]、三级单向链表[24]。

根据网络拓扑结构提出一种分布式图元存储结构,该存储结构设计如下:①每个图元存储每个输入/输出点对应的连接线集合;②连接线存储起点图元及终点图元。

由于梯形图图元管理系统由Qt图形/视图框架中的场景类QGraphicsScene提供,所以这种分布式存储结构仅仅需要存储图元之间的连接关系,并不需要考虑图元本身的存储,从而降低了存储结构的复杂度,图4为该存储结构的方法示例。

2.2 图元类设计

图元作为梯形图网络中最小的单元,是构造梯形图网络的核心元素,但是图元的多样性决定了不能对每个图元单独设计,因此本文对图元进行类设计。图元类设计思路是:把图元的通用属性抽象成所有图元的基类,然后按照各个图元的不同属性从该基类中派生出具体类,所有图元将基于图形/视图框架中的图元类QGraphicsItem生成。为使图元支持SIGNLA/SLOT操作[25],采用继承QGraphicsItem、QObject的多继承方式实现梯形图图元类设计,图5是图元类的继承关系。

3 图元管理

3.1 图元创建

本文设计的图元采用工具栏按钮添加方式创建。

图元添加工具栏属于主程序实体,和梯形图编辑框架中的图元管理实体属于不同的实体,故无法在对应工具按钮的响应函数中生成图元。通过工具栏按钮添加图元时,需要将图元的型别信息通过SIGNAL/SLOT传递给图元管理实体类,型别信息的传递过程如图6所示。图6中KM_PLC为编程软件主框架类,LD_Viewer为梯形图编辑模块主部件,LD_View为基于图形/视图框架中视图类QGraphicsView的自定义视图类,LD_Scene为基于图形/视图框架的场景类。

自定义图元管理类LD_Scene通过响应鼠标的单击事件完成与当前型别信息相对应的图元类添加。型别信息为字符串类型,无法被new运算符直接使用,为了保证图元添加算法的可伸缩性,采用工厂模式(Object Factory)完成型别信息映射到对应图元类。本文使用map类容器完成型别信息与函数指针之间的映射关系,图元的注册、取消注册、创建分别对应于map容器的添加、删除、查找。

根据上述设计,要在梯形图程序组织单元中产生图形元素必须用到该工厂模式,如果每个程序组织单元都实例化一个全局的BaseItem工厂模式,程序将可能因内存不足而被迫结束。因此,本文将工厂类封装在Singleton模式下,在LD_Scene的构造函数中完成图元注册。

3.2 图元连接关系建立

创建连接关系的实质是确定图元之间的存储关系。起始连接、结束连接信号都是从图元中输入(输出)连接捕捉点发出的,为了区分这两个信号,设计一个公有的bool变量flag作为标记:当flag的值为false时,发射开始连接信号;当flag的值为true时,发射结束连接信号。此外为保证正确的位置绘制连接线起点、终点且实现连接线起始图元的正确存储,在请求连接/结束时需要传递“请求连接位置”及“请求连接捕捉点类型”。

3.4 图元删除

图元删除操作通过重写LD_Scene的键盘响应事件完成(按Del建实现删除)。使用场景类的接口函数selectItem()提取当前所有的选中项目,利用运行时类型识别(run-time type identification,RTTI)技术中的dynamic_cast判断选中的项目类型。由于图元基类的析构函数会删除所有与该图元相连的连接线,所以为了避免二次删除连接线,本文先删除连接线再对选中的项目执行delete操作。

4 软件测试

对系统设计方案进行编辑测试,对图元管理、各种指令调用都进行了测试,结果表明本文提出的编辑系统设计方法可行。图7为梯形图编程实例。

5 结语

本文基于面向对象的软件开发方法实现了PLC梯形图编辑系统设计,通过软件测试证明该方案有良好的应用效果,为后续功能完善的PLC编程软件开发打下了基础,是在目前国内没有完全自主开发的PLC编程软件现状下的一种探索。梯形图是PLC编程语言中最常用的语言,该编程软件的其它模块正在开发中,本文的研究对推进PLC软件发展有着重要意义。

参考文献:

[1] 欧阳三泰,周琴,欧阳希. 软PLC控制技术综述[J]. 电气传动,2005(9):52-54.

[2] GREGOR K,GIOVANNI G,STANKO S. A new approach to PLC software design[J]. ISA Transactions,2003,42(2):167-171.

[3] 赵雨生,高美凤. 一种梯形图编程系统的研究与实现方法[J]. 工业控制计算机,2008(6):34-35.

[4] MILIK A. Multiple-core PLC CPU implementation and programming[J]. Journal of Circuits, Systems and Computers,2018,27(10): 162-185.

[5] PRAHOFER H, ANGERER F, RAMLER R, et al. Static code analysis of iec 61131-3 programs: comprehensive tool support and experiences from large-scale industrial application[J]. IEEE Transactions on Industrial Informatics, 2017, 13(1): 37-47.

[6] DEVEZA T, MARTINS J F. PLC control and Matlab/Simulink simulations: a translation approach[C]. Mallorca, Spain: Emerging Technologies & Factory Automation, 2009.

[7] KIM H S, KWON W H, CHANG N. A translation method for ladder diagram with application to a manufacturing process[C]. Detroit, MI, USA: International Conference on Robotics and Automation, 1999.

[8] MOONGA K H, LINRU Y, SHAOJUN L. Algorithm for compiling unrestricted ladder diagram to IEC 61131-3 compliant instruction list[J]. Lecture Notes in Engineering and Computer Science, 2011, 2191(1): 949-954.

[9] FEN G,NING W. A transformation algorithm of ladder diagram into instruction list based on AOV digraph and binary tree[C]. Hong Kong: IEEE Region 10 Conference, 2006.

[10] YAN Y, ZHANG H. Compiling ladder diagram into instruction list to comply with IEC 61131-3[J]. Computers in Industry, 2010,61(5): 448-462.

[11] ASENSIO J, ORTU?O F, DAMAS M, et al. Industrial automation programming environment with a new translation algorithm among IEC 61131-3 languages based on the TC6-XML scheme[J]. International Journal of Automation and Control Engineering, 2013(2): 47-55.

[12] 李慧亮. 基于IEC61131-3標准的IL语言编译器的设计与实现[D]. 西安:西安电子科技大学,2014.

[13] 韩江,段少磊,夏链,等. PLC梯形图向指令表转化的算法研究与实现[J]. 组合机床与自动化加工技术,2013(11):61-63

[14] 吴盼盼. 梯形图与脚本语言互换方法的研究[D]. 杭州:杭州电子科技大学,2013.

[15] 黄健. 基于ARM与FPGA的PLC及其梯形图编程系统设计[D]. 广州:华南理工大学,2016.

[16] 杨观赐,陈占杰,李少波,等. 面向智能控制的软PLC中梯形图的动态解析方法[J]. 贵州大学学报:自然科学版,2016,33(6):43-47.

[17] 韩兵兵. PLC梯形图编程系统研究与实现[D].广州: 华南理工大学,2013.

[18] 吴玉香,郭建勋,周建香. 嵌入式软PLC编程系统的设计[J]. 控制工程,2010,17(3):363-366.

[19] 胡飞虎,傅亮,刘乐. 基于表格技术的软PLC梯形图编辑软件[J]. 微计算机信息,2009,25(19):227-229.

[20] 徐德刚,黄江波,刘育峰,等. 基于能流的梯形图到指令表转换方法研究[J]. 控制工程,2017,24(2):243-249.

[21] BLANCHETTE J, SUMMERFIELD M. C++GUIQt4编程[M]. 第2版. 北京:电子工业出版社,2008.

[22] 苏淑芝. 软PLC梯形图编程系统的研究与实现[D]. 广州:华南理工大学,2012.

[23] SUMMERFIELD M. Qt高级编程[M]. 北京:电子工业出版社,2011.

(责任编辑:杜能钢)

qt实现拓扑图_基于QT的PLC梯形图编辑系统设计与实现相关推荐

  1. 水泵smart200编程_基于S7-200 SMART PLC的超滤系统设计

    摘要:本文根据超滤设备的工作流程和控制要求,对其进行电气控制分析,在此基础上采用西门子PLC完成整个系统的设计,实现了设备的自动化运行和整个污水厂的控制联动,提高了出水水质,完善了污水厂工艺. 一.现 ...

  2. 【QT学习笔记】基于QT的天气预报

    [QT学习笔记]基于QT的天气预报 前言 那就开始吧! 先看一下效果 颜面最重要,画个UI 构造实现 怎么开始? 开始解析数据 关于城市切换 ok 最后源码献上 感谢 前言 学习qt已经有一段时间了, ...

  3. 检测噪声大小的c语言程序,单片机课程设计(论文)_基于AT89C51的噪音检测自适应系统设计.doc...

    单片机课程设计(论文)_基于AT89C51的噪音检测自适应系统设计 摘 要 本文以AT89S52 单片机为控制核心,通过播音判断电路寻找广播间歇时段,实时采集噪声环境内的噪音信 号,根据A/ D 转换 ...

  4. qt web混合编程_基于Qt与MATLAB的混合编程技术

    摘要:在Qt雷达仿真系统中,数据处理及图形显示尤为重要.本文为此提出了一种Qt与MATLAB混合编程的方法.通过VC++和MATLAB混合编程技术,将MATLAB函数封装成动态链接库,Qt调用这个动态 ...

  5. qt控制程序打开记事本_基于QT记事本应用程序开发.doc

    基于QT记事本应用程序开发 基于QT记事本应用程序开发 [摘要]本文通过对嵌入式Linux和Qt的分析,利用Qt在源代码级上能够实现跨平台特性,在源代码开放的Linux操作系统上,根据嵌入式应用的特点 ...

  6. qt制作一个画板_基于Qt的画图板的设计与实现(含录像)

    基于Qt的画图板的设计与实现(含录像)(任务书,开题报告,外文翻译,毕业论文20000字,程序代码,答辩PPT,答辩视频录像) 摘要 本文的主要内容是记述画图板的设计与实现课程设计中的一些关键技术和辅 ...

  7. qt控制程序打开记事本_基于QT记事本源代码

    基于 QT 记事本源代码 dialog.h #include "mainwindow.h" #ifndef DIALOG_H #define DIALOG_H #include n ...

  8. ubuntu下qt模拟键盘按键按下_基于QT的跨平台虚拟键盘设计与实现

    摘  要: 针对QT在Windows.Linux.以及嵌入式Linux-arm等不同平台下没有开源.高效的虚拟键盘(包含中文输入法),以及QT版本升级造成代码不兼容等问题,设计并实现了一个跨平台的虚拟 ...

  9. qt中socket通信流程图_基于Qt的局域网通信设计说明书.doc

    文档控制记录 序号版本日期修改内容修改人审批人1V1.02017-04-24创建2 目录目录4 辅助功能设计14 1目的 本文主要介绍利用Qt实现局域网通信的主要实现流程和一些技术知识点的设计说明. ...

  10. 基于qt和mysql点菜系统的优点_基于QT的电子点餐订餐系统的设计与实现(SQLite)

    基于QT的电子点餐订餐系统的设计与实现(SQLite)(任务书,外文翻译,毕业论文20000字,程序代码,SQLite数据库,答辩PPT) 摘  要 在深入研究中小餐饮企业工作流程的基础上,分析制约餐 ...

最新文章

  1. leetcode--买股票的最佳时机II--python
  2. 范式化设计和反范式化设计优缺点
  3. Virtual Treeview 5 0 0的安装以及入门
  4. 零基础带你学习MySQL—数学函数(十四)
  5. Google 发布全中文机器学习速成课,曾内部培训过 1.8 万人!
  6. html怎么用div从左到右,单独使用CSS,你怎么能有一个从右到左的边框底部渐变?...
  7. 拓端tecdat|R语言生态学建模:增强回归树(BRT)预测短鳍鳗生存分布和影响因素
  8. 来访登记系统源码_ZKTeco|智能访客管理系统
  9. 非线性动力学_matlab应用1:非线性动力学系统理论部分
  10. 怎么制作OC材质预设?
  11. 销售订单(SO)新建BAPI_SALESORDER_CREATEFROMDAT2或修改BAPI_SALESORDER_CHANGE价格条件值扩大或缩小问题解决方法
  12. 【学习笔记】Kruskal 重构树(BZOJ3551【ONTAK2010】Peaks加强版)
  13. Oracle中用户查询表一定要加上表空间名的问题
  14. 计算机在通风网络中的应用,普适计算在煤矿通风网络解算中的应用研究
  15. [练气期]计算机视觉之从矩阵本质修炼图像几何变换秘籍
  16. Qt基于QMediaPlayer音视频播放
  17. 小程序开发-准备工作
  18. Mybatis The error may involve defaultParameterMap ### The error occurred while setting parameters
  19. 【VJudge】【Legilimens Contest 1】
  20. 瑞萨RA系列-开发环境搭建

热门文章

  1. 极限思想之阿基里斯和乌龟赛跑
  2. 智能优化算法:共生生物搜索算法 - 附代码
  3. 指数分布在生活中的应用_概率论中指数分布的应用
  4. 计算机四级考448分算低吗,英语4级成绩,四级300多成绩单有用吗。
  5. HTML 区块、布局与框架
  6. uinty SkinnedMeshRenderer (二) batches 优化,模型合并网格贴图
  7. 世纪佳缘 用户名 显示隐藏内容
  8. 联想笔记本显卡驱动正常音箱没声音但插耳机有声音?驱动人生提供解决方案
  9. 微信抖音的服务器,抖音微信登陆未获得权限怎么办
  10. 计算机不能删除用户,删除用户时提示无法在内置账户上运行此操作 -电脑资料...