kaiyun官方注册
您所在的位置: 首页> 可编程逻辑> 设计应用> 软PLC编程系统软件的设计
软PLC编程系统软件的设计
来源:电子技术应用2012年第6期
侯艳君
华北水利水电学院, 河南 郑州 450011
摘要:采用面向对象和多线程技术设计,实现了软PLC编程系统软件在PC环境中进行梯形图的绘制、编辑、存储、加载、调试及仿真等功能。研究了梯形图程序存储与加载的实现方式和仿真模块中线程的应用,提出了一种编码规则表示控件,采用记事本格式存储程序。软件界面友好,用户操作方便,提高了PLC编程效率,方便了PLC的离线调试。
中图分类号:TP391
文献标识码:A
文章编号: 0258-7998(2012)06-0141-04
Development of soft PLC programming system
Hou Yanjun
North China Institute of Water Conservancy and Hydroelectric Power, Zhengzhou 450011, China
Abstract:The soft PLC programming system software was designed and implemented using object-oriented technology and multithread technology. It was achieved to design, edit, save, load, debug ladder diagram and to simulate program run etc. in PC(Personal Computer) environment. The thesis focused on realization of saving and loading ladder diagram programs and multithread technology application in simulating module. A kind of coding rule was proposed to express controls, to save programs with notepad format. It has friendly user interface, easy operation, which promotes efficiency of programming, and also facilitates PLC off-line debugging.
Key words :soft PLC; simulation; multithread technology; C++ Builder

计算机科学的快速发展和IEC61131-3标准的制定有力推动了软PLC(Programmable Logic Controller)技术的发展。软PLC技术是一种基于PC的新型控制技术,相对于传统的硬PLC而言,软PLC具有开放的体系结构、强大的网络通信能力和数据处理能力, 能较好地满足工业自动化领域中控制系统开放性和柔性的要求,是目前工业自动化领域研究的热点之一。所谓软PLC技术[1],就是以PC作为硬件支撑平台,利用软件实现传统PLC的基本功能,即将PLC的控制运算功能封装在软件内,运行于PC的环境中。这样的控制系统在提供了PLC相同功能的同时,也具备了PC的各种优点。

本文介绍的软PLC编程系统软件采用Windows多任务环境下的多线程技术,以C++ Builder为主要开发平台,利用其强大的软件功能,使人机交互界面更为友好。由于C++ Builder固有的面向对象机制,可方便地设计梯形图数据结构,并结合相应的算法,完成软PLC编程系统设计。本文设计了界面友好的编辑环境和方便灵活的编辑方式,实现了可视化、规范化的梯形图设计,方便用户使用,提高了PLC编程效率。对提高当前软PLC梯形图编程软件通用化和标准化做出了有益的尝试和探索。
1 总体设计
1.1软PLC系统的体系结构

软PLC系统包括编程系统和运行系统,如图1所示[1-2]。编程系统是基于Windows环境的编程工具,运行于普通PC机上。它独立于运行系统,主要完成PLC源程序的编辑、编译以及仿真功能。编程系统最终产生一份满足控制要求的目标代码,运行系统在启动时就可以加载该目标代码,对其进行解释执行,并控制对象进行交互,完成输入、输出处理等工作,最终实现控制功能。

1.2 功能分析
经分析,编程系统软件应具有以下功能:(1)编程和仿真功能:编程功能主要包括程序录入、修改、文件存取和语法检查功能;仿真功能包括模拟开关控制、模拟脱机运行过程。(2)提供菜单和工具栏两种操作方式,输入输出采用直观的图形方式,便于用户直观地编辑梯形图程序。(3)顺序控制功能、逻辑控制功能、数据控制功能、定时/计数功能和监控功能。(4)可对PLC用户程序进行正确性检查(包括编程元件的使用、语法和逻辑关系正确性检查)。(5)实现常见PLC的内部编程元件的仿真,实现PLC指令解释器的仿真。(6)与Windows界面一致,提供中英文两种语言界面与随机帮助,支持对程序的注释。
1.3 模块划分
根据功能需求分析,采用模块化的思想进行软件设计,将编辑系统软件划分为主模块、输入模块、支持模块,仿真模块和通信模块。软件的组成及其相互间的关系如图2所示。

主模块完成软件运行参数的初始化,协调其他各模块调用控制,程序打开、显示、保存等。支持模块进行类、对象和结构体的定义。输入模块通过对具体的指令类对象的调用,对数据成员进行赋值、修改等操作,录入、编辑PLC应用程序。仿真模块模拟PLC中的继电器、寄存器及相关I/O变量,有效模拟现场被控对象信号输入,直观地描述各个继电器的相互控制关系,通过时序图实时监控所有(或部分) 程序使用的继电器的通断状态。通信模块在编辑系统和运行系统间进行通信,把经过编译和脱机调试后的目标代码文件下载到运行系统中。
2 存储与加载的实现
IEC61131-3标准[3]规定了5种编程语言,其中梯形图(Ladder Diagram)是应用最广泛的编程语言,是PLC编程的最重要编程语言,因此本系统采用梯形图(LD),其他语言待以后进一步加入和完善。梯形图程序的保存采用操作系统自带的记事本,由此需要制定编码规则,并按照这个固定的规则存储数据或打开显示梯形图。
2.1 编码规则制定
PLC程序中需要表示的控件主要有常开触点NO,常闭触点NC,输出触点OP,记时器触点TM,记数器触点CT、MC、MCE、跳转控制触点JP、LAL,上升沿触点DF、下降沿DF/,进栈ANS、ORS、PUSH、RDS、POPS、置位触点SET,复位触点RST,保持触点KEEP,横线及竖线等[3-4]。必须为每个触点设定一个专用的标志符号,以便于保存、打开程序时能够识别这些控件。采用字符串与数字组合表示每一个触点控件的相关信息,制定规则如图3所示。


文件加载时,通过制定的规则进行译码,执行的顺序与存储文件基本相同。
3 多线程技术的应用
Windows多任务环境下的多线程技术是将CPU的时间划分成许多时间片段,并按照一定的优先级将时间片段分配给各个线程,各线程在各自的时间片段内共享CPU,从而实现微观上的轮次执行宏观上并发运行的多任务机制。多线程技术的主要优势在于充分利用了CPU的空闲时间片,用尽可能少的时间对用户的要求做出响应,使得进程的整体运行效率得到较大提高,同时增强了应用程序的灵活性。
PLC的工作原理是一个“顺序扫描、不断循环”的单线程循环过程[4]。如果软件采用单线程,一旦开始执行PLC程序,CPU将被这个死循环完全占用,软件的其他事件得不到系统响应,无法运行。因此,决定采用多线程机制[5-6]。仿真模块占用2个线程:(1)控制程序在“在线模式”与“离线模式”之间转换;(2)精确地实时监控。加上系统本身的主线程,共有3个线程。在C++Builder中,通过File/New/Other下new页面的“Thread Object” 即可轻松地建立多个线程[5]。
  实时监控线程的作用是不断地读取程序运行中各个继电器的状态,并将状态的值返回到时序图,以控制时序图的输出。线程对各继电器状态的读取采用链表的形式,依次读各节点的属性。当启动线程时,线程会执行Execute()函数中的程序,GO按钮调用Resume()函数启动线程,STOP按钮调用Suspend()函数暂停线程。运行时,从头开始遍历读取各个继电器的通电状态的powered属性,如果powered=true,则在时序图上做高为20、以淡绿色填充的矩形,表示继电器处于通电状态;如果powered=false,则在梯形图上作高为20的矩形,将矩形设置为与窗体相同的颜色,使视觉上感觉好像没有画矩形图,以达到显示不通电状态的效果。矩形左上角的X坐标用一个xstart变量来取值,xstart的值为powered 改变的那一刻的Image1的水平位置;右下角的X坐标始终为Image1的水平位置,不停地变化。为了限制时序图的大小,等到Image1走到一定的位置,即将它复位到起始点,重新开始画图。程序片段如下[5]:
if(powered)
{TimingmapForm->Canvas->Brush->Color=clLime; TimingmapForm->Canvas->Pen->Style=psSolid; }
else
{TimingmapForm->Canvas->Brush->Color=clWhite; TimingmapForm->Canvas->Pen->Style=psClear;}
TimingmapForm->Canvas->Rectangle(xstart,count*30+50,left-1,count*30+70)。
以C++ Builder为开发平台,采用面向对象和多线程技术,实现了在PC机上进行PLC程序的编制、调试和逻辑结果的仿真,使PLC程序编制、调试与硬件脱离。软件提供了菜单和工具栏两种操作方式,操作简单,便于用户直观地画梯形图程序,具有较高的应用和实践价值, 对其他类似模拟系统的设计也具有参考价值。
参考文献
[1] 吴玉香,周东霞,林锦赟.嵌入式软PLC系统的研究和实现[J].计算机工程,2009,35(10):235-237.
[2] 贺无名,余强国.基于嵌入式软PLC的矿井提升机控制系统设计[J].煤矿机械,2011,32(6):244-246.
[3] 彭瑜,何衍庆.IEC 61131-3编程语言及应用基础[M].北京:机械工业出版社,2009.
[4] 吴建强.可编程控制器原理及其应用(第2版)[M].北京:高等教育出版社,2004.
[5] 陆卫忠,刘文亮.C++Builder 6程序设计教程(第2版)[M].北京:科学出版社,2009.
[6] 章德宾,胡斌,张金隆.多线程技术与分布式并发离散事件仿真[J].计算机仿真,2007,24(1):97-100.
[7] 王纪森,王俊,周宇.基于多线程的电液伺服加载系统测控软件设计[J].机床与液压,2009,37(10):159-160.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map