基于VC的梯形图编程软件开发技术

2017-06-28 14:23史先桂
成都工业学院学报 2017年2期
关键词:梯形图表达式继电器

史先桂

(安徽新华学院 信息工程学院,合肥 230088)

史先桂

(安徽新华学院 信息工程学院,合肥 230088)

介绍一种采用VC++2010开发梯形图编程工具软件的设计与实现方法。利用面向对象的方法,进行系统类层次结构的设计,使系统具有更强的执行效率、开放性和可扩展性;采用链表结构存储梯形图,能够方便、灵活地进行动态编辑操作;运行程序将梯形图图形语言转换为链表指令程序,通过高效逻辑和运算管理链表指令快速执行。

VC++;梯形图;可编程逻辑控制器控制;组态软件

在自动控制领域,梯形图因其直观易学的优势,成为PLC(Programmable Logic Controller,可编程逻辑控制器)中应用广泛的编程语言[1]。基于工控机的PCI(Peripheral Component Interconnect,外设部件互连标准)插槽、运动控制卡多轴控制系统以及基于以太网、串口等智能终端的控制编程都要通过组态软件或上位机自编开发软件。针对拥有大量输入输出的复杂逻辑控制系统,采用上位机自编开发软件,需要定义大量的变量,靠编写代码等控制工艺动作。因此,项目开发时间长、可控性差、风险大,一旦出现故障和漏洞,需要开发人员才能解决。同时,复杂的逻辑控制通过在组态软件上编写脚本语言实现也非常困难,没有梯形图编程方便、直观。这种情况下,在组态软件基础上开发类似PLC的梯形图编程工具软件,那么只要是有梯形图编程经验的人员,就可以在上位机上开发复杂的控制项目,使复杂的上位机软件开发大大简化,不需要编写代码,而且调试方便、直观、快捷,项目风险降低。本文利用VC++2010开发梯形图编程工具软件,并重点介绍梯形图指令图形化编辑系统、梯形图编程系统、梯形图运行系统[2],等功能模块的实现方法。

1 梯形图指令图形化编辑系统

完成梯形图指令图形化编辑系统,首先要确定梯形图的指令系统,然后将梯形图指令符号用不同图形表示出来。

1.1 指令系统

首先规划系统需要支持哪些指令,并且要容易扩展。本系统支持的梯形图命令有:

常规指令:常开、常闭、>、 >=、 <、 <=、 ==、M继电器输出、M继电器上升沿微分、M继电器下降沿微分、DI输入、DO输出、AI输入 、AO输出、时间计时器计时、计时器计数、置位、复位、位设置;

运算指令:数据+、-、*、/、绝对值运算;

数据传送指令:字节传送、字传送、数字快传送;

伺服步进指令:设置常速、设置高速、设置恒速、加速,设置运行脉冲数,制动,清零,查询当前脉冲数、原位、方向、运行状态;

特殊指令:子程序、功能块、报警信息提示。

1.2 指令符号绘制

图1 类层次结构

图1是画指令图元的相关继承关系,每个画图对象由以下数据结构实现:

typedef struct _TBObjInfo

所有对象在虚函数 virtual void Draw(CDC* pDC)里实现画图,这种设计方案简单且指令可扩展性强。

2 梯形图编程系统

一个完善的梯形图编程系统,首先要将梯形图指令与相关的继电器关联,其次要完成梯形图编程的编辑系统

2.1 继电器定义

梯形图在编辑时,指令要与相关继电器关联。继电器一般有2种:外部I/O继电器和内部辅助继电器。

本系统规划的外部I/O继电器最多可提供0~255个设备的虚拟地址,供工控机插卡输入输出编址用,数字量和模拟量输入输出变量地址支持0.00~0.31到255.00~255.32,具体地址分配根据配置的虚拟地址编号用对话框设置如图2所示。

图2 输入、输出地址配置

如一块16位DI插卡,地址编号=1,编址为1.00~1.15,没有编址的不能在梯形图里使用。地址编号为0,1,...,255,不能重复;另外数字量输入/输出、模拟量输入/输出的数量要和实际插卡设备一致,以便梯形图正确编址。

系统规划的内部继电器有:M辅助继电器,地址支持M0~M10000,共具有10 000个M辅助继电器。其中:特殊继电器M0,程序第一次循环是ON,以后为OFF;M1,0.5 s脉冲;M2,1 s脉冲;M3,M4备用,编程选择从M5开始;DW数据寄存器,共有DW0~DW5000可用;时间继电器T,共有T0~T500可用;计数器C,共有C0~C500可用。

2.2 梯形图编程的编辑系统

完成梯形图编程的编辑系统开发有2个要点:智能编辑和存储。梯形图的智能编辑系统对绘制的梯形图是否正确具有智能判断功能,可根据梯形图符号、指令类型,左、右连接的对象,上、下连接的对象、位置等检测绘制是否正确。

2.2.1 梯形图智能编辑

程序完成相关功能后,可根据工艺要求进行梯形图编程。图3是本系统编辑的一段梯形图。

图3 梯形图编程实例

程序的每个段编辑完成,系统将自动检测判断是否符合逻辑要求,如果不合要求则梯形图开始端会变红色,同时提示错误。同样,梯形图指令绘制位置不正确时也会有错误提示[4]。

2.2.2 梯形图存储

每行梯形图编辑顺序为从左到右、从上到下,下面以图4所示的一段梯形图来说明存储方法。

图4 一段梯形图

梯形图的每个段由两部分组成:图4中虚线左边是逻辑关系组合,右边是输出结果。梯形图程序编辑完成后,存储梯形图要将逻辑关系转换成关系表达式存储,以链表形式存储,其结构如下。

typedef struct _TBControLadInfo

结构_TBControLadInfo存储梯形图的ID、子程序号、梯形图段牵引、梯形图所属页面ID、梯形图逻辑关系组合关系表达式、最后一列输出结果表达式。其中成员变量ladder存储梯形图每个段中虚线左边的逻辑关系组合表达式。图4所示的一段梯形图存储表达式如下:(((M50&M101|T22)|T28)|M217)&!M226&M215&!M224,表达式通过+、-、*、、^、=、&、|、!=、<=、<、>=、>、==等逻辑关系,在梯形图运行时经过运算得出一个逻辑状态0或1,然后确定最右边一列的输出结果。

成员变量ControlOut存储梯形图的每个段最右边一列,输出结果为组合表达式,图4中存储结果是(M,217),表示辅助继电器M217线圈输出为0或1。

在存储时要求系统能自动将梯形图符号转换成对应的运算关系和逻辑符号,存储在TBControLadInfo结构链表里,并最终存储到数据库。

3 梯形图运行系统

运行系统首先从数据库读取梯形图存储的相关信息,然后不停循环扫描主程序,根据梯形图程序扫描顺序和相关继电器状态,逐行分析和计算每个程序段的逻辑关系组合表达式值。若逻辑状态为1,在最后一列输出相关动作,若逻辑状态为0则不输出相关动作,从而实现梯形图的实时执行[5]。梯形图运行系统开发有2个难点:

1)高效分析和计算程序段前面的逻辑关系表达式值

针对逻辑表达式专门开发一个运算管理类CLadParser,能满足常用的=、&、|、!=、<=、<、>=、>、==、+、-、*、、^等所有逻辑运算,判断逻辑和运行优先级别。运行速度要快,否则会影响整个系统实时性。其实现分析和计算程序段前面的逻辑关系的方法如下:

CLadParser m_Parser; //声明一个对象

Cstring sLad=(((M50&M101|T22)|T28)|M217)&!M226&M215&!M224;//梯形图逻辑关系组合表达式

bool bV = m_Parser.JudgeEaluate(sLad);//计算梯形图逻辑关系组合表达式值

if(bV){ //执行最后一列输出相关动作,M227置1 }

系统实时获得相关继电器的值,再通过CladParser进行分析判断,计算出逻辑状态值(0或1),这样就能确定如何执行后序动作[6]。

2)梯形图实时调试

梯形图一大优点就是调试时直观、方便,所以梯形图在运行时,要实时观察到相关继电器数值和状态,某段梯形图导通要用不同颜色来显示。如果梯形图前面逻辑关系表达式值为1,则这段梯形图全部用灰色线条联通,如图5所示。

图5 梯形图编程调试

另外实时调试要有强迫和取消继电器值改变功能,这样可为调试带来很多方便,在此不一一赘述。

4 结语

梯形图编程系统的开发,将使上位机软件开发大大简单化,不同项目不需要编写代码只需要根据梯形图来编程实现相关控制,调试方便、直观、快捷,本文介绍的开发梯形图编辑工具的方法,也适用于开发其他任何控制器的梯形图编程工具。

[1]韩伟,宋明伟,魏志强,等.基于Windows的华中世纪星数控系统PLC编程系统设计[J].机床与液压,2011,39(14):97-99.

[2]陈雪,刘荫忠,徐恩松.基于Qt的软PLC梯形图编辑软件的设计与实现[J].计算机系统应用,2011,20(12):64-69.

[3]吴盼盼,严义.基于构件的梯形图算法模块封装方法[J].机电工程,2013,30(6):764-768.

[4]石锐,周雷,杨正益.软PLC梯形图到语句表转换新策略的研究[J].计算机工程与应用,2010,46(18):244-248.

[5]郭书杰,马跃,王品,等.软件PLC梯形图开发系统的研究与实现[J].组合机床与自动化加工技术,2010(5):47-51.

[6]张汉兵,叶伯生,杨道善.数控系统中内嵌式PLC梯形图编程的软件实现[J].组合机床与自动化加工技术,2002(1):26-28.

Design and Implementation of Ladder Diagram Programming Tool Software based on VC++

SHIXiangui

(School of Information Science and Technology,Xinhua University,Hefei 230088,China)

This paper introduces the design and implementation of ladder diagram programming tool software based on VC++2010.Using object-oriented method,the author designs the system hierarchical structure,makes the system more efficient,open and expansible;the storage list structure of ladder diagram,can be easily and flexibly dynamically edited;ladder graphics language can be converted into the list instruction program by running the program,and be implemented through the efficient and rapid logic and operation management instruction list.

VC++;ladder diagram;PLC control;configuration software

10.13542/j.cnki.51-1747/tn.2017.02.003

2017-03-15

安徽省教育厅重点自然科研项目(KJ2015A306)

史先桂(1975—),女,讲师,硕士,研究方向:建模仿真、单片机开发、嵌入式系统,电子邮箱:sndy999@163.com。

TP273

A

2095-5383(2017)02-0013-04

猜你喜欢
梯形图表达式继电器
一个混合核Hilbert型积分不等式及其算子范数表达式
继电器控制及诊断在电动汽车动力电池包的应用
表达式转换及求值探析
便携式继电器测试台的研制和应用
计算机联锁复示继电器电路改进方案探讨
浅析C语言运算符及表达式的教学误区
PLC编译功能的实现
数控机床梯形图故障设置方法研究
一种可编程逻辑控制程序的竞态检测方法
PLC梯形图程序设计技巧及应用