PLC梯形图编程软件实现
发布时间:2023-08-02 13:07:29
龙源期刊网http://www.qikan.com.cnPLC梯形图编程软件实现
作者:李应春王庭有杨安园来源:《价值工程》2018年第01期
摘要:本文使用跨平台的C++应用程序开发框架(Qt)及其图形视图框架(TheGraphicsViewArchitecture)以及信号与槽机制,结合C++标准模板库中的链表结构、运行时类型识别等技术,实现了PLC梯形图编程软件的总体框架设计;梯形图语言的主程序、子程序、中断程序的存储及图元的插入编辑操作等功能。
Abstract:Thispaperusesthecross-platformC++applicationdevelopmentframework(Qt)anditsGraphicsViewArchitecture,aswellasthesignalandslotmechanism,combinedwiththeC++standardtemplatelibrarylinkedliststructure,run-timetyperecognitiontechnologytoachievethePLCLadderdiagramprogrammingsoftwareoverallframeworkdesign;ladderlanguagemainprogram,subroutine,interruptprogramstorageandprimitiveinserteditingoperationandotherfunctions.关键词:梯形图;Qt;存储结构
Keywords:ladderdiagram;Qt;storagestructure中图分类号:TP313文献标识码:A文章编号:1006-4311(2018)01-0185-030引言
PLC作为一种工控装备,占据了自动化控制领域的半壁江山。在德国提出“工业4.0”,我国部署“中国制造2025”的大环境下,自动化形式越来越严峻,在这样的形式下,PLC的技术改进也就成为了一种必然的趋势。另一方面,虽然我国是PLC的使用大国,但是就最近几年的PLC市场份额来看,我国使用的PLC大多来自欧美和日本。国内的PLC主要应用在小型自动化控制系统中。所以综合来看,开发具有自主知识产权的PLC系统是我国自动化产业发展的必然需要。
梯形图被称为PLC的第一编程语言,凭借其直观易学的优点,成为最广泛的PLC编程语言。梯形图采用图形语言,沿用了继电器的触点、线圈、串并联等术语与图形符号,在计算机和控制技术上称为“面向生产过程的语言”[1]。
Qt使用“一次编写,随处编译”的方式为开发跨平台的图形用户界面应用程序提供了一个完整的C++应用程序开发框架。Qt允许程序开发人员使用应用程序的单一源码来构建可以运行在不同平台下的应用程序,这些平台包括从Windows98到Vista、MacOSX、Linux以及其他很多基于X11的UNIX[2]。
龙源期刊网http://www.qikan.com.cn由于当下工业形式的发展对工业生产的速度和安全提出了全新的要求,Windows系统在工业现场中的非实时性、不安全性得到了进一步暴露。所以开发跨平台的、高效的PLC系统是今后PLC发展的一大趋势。故本文基于Qt平台实现的PLC梯形图编程软件将对开发跨平台的PLC系统有着一定的贡献。因为它结合了C++语言的高效性以及Qt框架的跨平台特性充分体现了以上两个PLC发展的方向。
1梯形图编程软件的总体框架设计及实现
同任何的软件框架相同,PLC梯形图编程软件的基本框架也包含了基于Qt类——QMainWindow的应用程序主窗口。其中包含基于QMenu的菜单栏、基于QToolBar的工具栏、基于QTabWidget的中央窗口部件、基于QStatusBar的状态栏以及基于QDockWidget的停靠窗口(软件主要构架如图1所示)。中央窗口作为应用程序的主要部分,用QTabWidget来实现梯形图编程时候的主、子、中断程序之间的相互切换。当然,其中QTabWidget中包含的部件是基于Qt图形视图框架的梯形图编辑部分。
从图1中可以看出,中央窗口QTabWidget下面将包含三层结构:QGraphicsView、QGraphicsSecne、QGraphicsItem.其实这就是整个图形视图框架的三层结构:视图、场景、项目。其中,场景类用于提供一个用于管理位于其中的众多图元的容器,视图类用于显示场景中的图元,一个场景可以供多个视图来表现[3],场景的大小理论上来说是无限大的。图形视图框架的三元素关系如图2所示。由于图形视图框架支持时间传播体系结构,使得图元能够处理鼠标和键盘事件,另一方面来说,图形视图框架通过二叉空间分割树(BinarySpacePartitioning,BSP)来提供图元的快速查找。在这样的条件下,该框架能够处理百万级图元的大场景。从而可以轻松的完成梯形图的编辑。
龙源期刊网http://www.qikan.com.cn
龙源期刊网http://www.qikan.com.cn2梯形图的数据存储结构
在国际电工委推出了IEC61131-3标准后,基本上所有的PLC厂商都在逐渐的向这个标准靠拢。考虑到PLC梯形图编程语言的读写方便性,该标准将各种程序进行必要的划分——使用多种块来组成整个控制程序。所以PLC编程软件必须能对程序进行划分处理,本文主要将控制程序划分成主程序、子程序、终端程序三个部分。其实所有的划分都是在另外一个存储空间中存储不同的梯形图程序,他们的不同点存在于PLC梯形图编程语言到可执行二进制代码的编译过程。由于链表在任何位置插入和删除的速度都比较快,所以本文用QList链表的数据结构来存储主程序、子程序、中断程序中的各个程序段。从数据结构中可以看出,存储的内部结构都是以指针的形式来进行存储,这样就可以通过点击菜单动态的添加子程序、主程序、中断程序以及对应各个程序块的不同程序段。
从图1的主框架结构中可以看出,中央窗口部件QTabWidget主要以选项卡的方式来呈现出各个程序块。也就是说,必须在每一个选项卡中添加一个图形视图框架来显示场景。但是这样做将会使程序的内存开支大大增加,故本文结合场景的无限大特点,将场景进行认为的划分。其划分结果如图3所示。通过以上的场景划分,可以在同一个场景中完成所有程序快的显示,大大节省了程序的内存开支。3梯形图编辑实现
在梯形图编程语言中,为了让程序的可读性增强。一般将梯形图程序划分成多个程序段组成。在本文的设计中,一个程序段由以下