基于PC 机的PLC 资源管理系统设计与实现

2013-12-23 05:46黄金梭沈正华
组合机床与自动化加工技术 2013年4期
关键词:字符串通信协议串口

黄金梭,沈正华

(温州职业技术学院 电气电子工程系,浙江 温州 325035)

可编程逻辑控制器(PLC)是一种专门为工业环境而设计的数字运算操作的电子装置。经过近50多年的不断发展,PLC 现在已经形成具有可靠性高、抗干扰能力强、编程简单、系统搭建快捷、体积小、质量轻、耗能少和维护方便等等优点[1]。

因以上优点,在现代工业控制领域中,PLC 经常被作为现场设备的控制器而得到广泛的应用,在生产过程中管理着大量的数据。然而,PLC 与外部设备及用户之间的信息交互性较差,尽管控制器面板上具有输入继电器X 和输出继电器Y 的状态指示灯,但信息量少且无法直观地反映工业现场及生产运行的状态,尤其是PLC 内部蕴含关键信息的数据寄存器D、中间辅助继电器M、定时器C 和计数器T等软元件的状态和数值无法直接被监测和控制。

为此,市场上出现了类如组态软件等可视化器件作为PLC 监控系统的上位机[2],实现PLC 内部资源的监控管理。虽然组态软件功能强大,画面丰富,操作也简单,但是价格昂贵,且测控系统中元件增多后会提高系统运行不稳定的风险。综合考虑以上分析,在普通PC 机开发平台上,采用VB6.0 编程软件作为开发工具,通过MSComm 串口控件实现PC 机与PLC 之间的通信,高效利用闲置的编程口作为通信接口,不需要另外购置通信模块,简化了系统硬件构成,又节约了开发成本,PC 机直接面向用户,而且在数据处理、人机交互功能等方面具有强大的优势,实现对PLC 内部资源的直观、高效管理。本文将详细研究以上思路中的通信原理、软件系统及程序实现方法。

1 编程口通信协议

FX 系列PLC 的编程口通信协议具有固定的通信格式、应答模式、控制符、命令符及通信字串结构。通过发送符合以上各项规定的数据帧可以实现对PLC 相应软元件的强制ON/OFF、读、写等命令操作。具体通信协议如下。

1.1 通信格式

编程口通信的格式为:RS422 电气标准、9600bps波特率、偶校验、7 位数据位、1 位停止位。

1.2 数据流方向

PC 机与PLC 的编程口通信时序为:首先由PC机向PLC 发起通信请求帧ENQ(05H),确认PLC 是否存在及其当前的状态,同时也检测通信线路是否正常,如图1 第①步。PLC 收到ENG 请求后,向PC发送“字串正确”帧ACK(06H),如果收到无法识别的数据帧,则向PC 机发送“字串错误”帧NAK(15H),如图1 第②步。PC 机收到PLC 的响应后再发送相关的命令帧,如图1 第③步。PLC 收到相关命令帧后,向PC 机回送相应的响应帧,如图1 第④步。通过图1 所示的4 个步骤完成一次通信过程[3]。

图1 数据流示意图

1.3 通信字串结构

FX 系列PLC 的编程口通信协议中一共有3 个控制符、4 个命令符CMD、字串起始符STX 和字串终止符ETX,对应ASCII 码的十六进制值及含义如表1所示[3]。

表1 通信字串各符号含义

它们通过相互搭配形成特定的通信字串结构来完成不同的通信目的,如下所示:

(1)读取命令

(2)写入命令

ACK 或NAK←PLC

(3)强制ON/OFF 命令

2 MSCOMM 串口通信控件

在VB6.0 开发环境中,通过引用MSComm 控件实现对PC 机串行口数据的接收与发送操作[4]。MSComm 控件中与串口通信过程相关的的属性非常丰富,对该类属性的使用大致可以分为两类,一类是调用串口之前的初始设置,另外一类是在串口使用过程中的数据收发与OnComm 响应。下文就以上两类相关属性的使用做具体介绍。

2.1 串口初始化

根据编程口通信协议的规定,对MSComm 串口作如下初始化设置:

2.2 数据收发与OnComm 响应

在利用MSComm 控件发送字符前,需要打开串口,如下语句所示:

If MSComm1.Port =False then MSComm1. Port =True‘为防止因重复打开串口而产生错误,每次打开串口之前都需要判断是否已经打开

MSComm1.Output=Send_Data(n)‘将要发送的数据赋予Output 属性,将字符推入发送寄存器

当串口接收寄存器内的字符数达到设定的数目、通信过程发送错误时,将产生OnComm 事件,激活以下函数:

3 PLC 资源管理系统框架

对PLC 进行资源管理,其实质是读取和改变PLC 内部软元件的数值或状态。本文以三菱FX 系列PLC 为例,设计了PLC 资源管理系统(PLC Resources Management System,以下简称PRMS)。由于篇幅所限,只重点说明PRMS 的框架结构及其字符串生成模块的工作机制。

3.1 PRMS 框架搭建

PRMS 框架模型的设计有两个目的:一是为人机交互提供良好界面;二是在用户任务与PLC 资源库之间形成高效的数据运算与通信控制。为此,构建了如图2 所示的PRMS 框架模型结构。

其中,任务请求层的作用是接受用户任务并显示查询结果。任务分析中心模块的功能是分解用户任务,提取其中的指令类型、操作对象以及数据,同时提取包含查询结果的数据码。字符串生成与处理模块的功能是根据任务分析的结果生成相应的指令字符串,发送至PLC 以进行相应的管理操作,或处理由PLC 返回的字符串,整理出包含查询结果的字符供任务分析中心模块提取之用。知识库根据编程口通信协议编制而成,是字符串生成与处理模块执行具体生成和处理作业的参照。

图2 PRMS 框架

3.2 指令字符串生成模块

如上文所述,PRMS 框架的字符串生成与处理模块的一个重要功能是生成指令字符串,其工作机制如图3 所示。将用户任务的指令类型、操作对象及数据作为生成模块的输入参数,首先根据通信协议规定的指令库对指令类型进行识别并生成指令码,结合指令类型,根据通信协议规定的地址编码库和数据转换原理分别计算出对象的地址码和相应的数据码,根据通信协议规定的校验码转换原理计算出指令字符串的校验码。最后,根据通信协议规定的报文结构依次输出指令字符串码。

图3 指令字符串生成机制

4 程序中的若干关键函数

高效实现PRMS 的功能需要众多函数群的支撑,其中较为关键的函数是地址码计算函数、数据码转换函数、校验码计算函数和指令字符串合成函数等,通过调用和组合以上函数,即可生成特定的指令字符串,完成某一命令操作。

(1)元件地址的ASCII 码计算函数

由编程口通信协议所规定的地址码库可以发现,不同元件对象具有不同的地址码,同一元件对象在不同操作指令下的地址码也不同,针对上述情况需编写的地址码计算函数有:①Reg_Val_Add‘寄存器D、T、C 的当前值查询地址计算;②Contactor_Add’触点X、Y、M、S、T、C 的状态查询地址计算;③Bit_Add’X、Y、M、S、T、C 强制命令地址计算。

(2)操作数据的ASCII 码计算函数

Data_Key_ASCII‘输入十进制数,根据数据转换原理,输出相应的ASCII 码,存入全局变量。

(3)校验码的计算函数

Sum_Cal‘输入需要校验的字符串Data(),根据校验转换原理,输出两位校验码,存入全局变量。

(4)各个指令的合成函数

指令合成函数可以任意调用以上3 中关键函数以及其它函数。程序中,根据操作命令的不同,可供调用的指令合成函数有以下4 个:

①READ_Register‘输入元件对象、元件序号及元件数量(扩展参数,PRMS 中设定为1 个),即可合成读取命令的指令字符串,并返回PLC 是否响应。

②Write_Register‘输入元件对象、元件序号、元件数量及数据,即可合成写入命令的指令字符串,并返回PLC 是否响应。

③SET_Object‘输入元件对象和元件序号,即可合成置位命令的指令字符串,并返回PLC 是否响应。

④RST_Object‘输入元件对象和元件序号,即可合成复位命令的指令字符串,并返回PLC 是否响应。

5 PRMS 的实现

5.1 硬件平台

以普通PC 机作为上位机,PLC 作为下位机,通过一根通信电缆S09 连接上下位机,实现系统的通信目的,所搭建的系统平台如图4 所示。其中,采用VB6.0可视化编程软件在PC 机上开发上位机程序实现人机交互、数据处理和通信控制等目的。S09 编程电缆一端为RS232 电气标准,可与PC 机串口连接,另一端为RS422 电气标准,可与PLC 的编程口连接。

图4 PRMS 的硬件平台

5.2 程序实现

围绕文中图2 所设计的系统框架以及图3 所研究的指令生成机制,在VB6.0 开发环境下着手程序的编写与调试工作,以实现PRMS 的功能。

(1)人机界面窗口

针对PRMS 中人机交互的功能要求,设计了登入界面、控制器选择界面及元件操作界面等。其中,元件操作界面如图5 所示。操作命令菜单下拉后可选择读取、写入、置位以及复位等命令选项;根据操作命令不同,元件对象菜单下拉后可选择X、Y、M、S、C、T、D 等全部或者部分范围;根据选元件对象的不同,元件序号菜单下拉后可选择十进制或八进制数字,也可直接输入数字。以上菜单选择完毕后点击“执行操作”按钮,在选择读取命令的前提下,还会出现“查询结果”显示项目。该人机界面简单、友好,操作过程直观、快捷。

图5 元件操作界面

(2)功能代码编写

点击“执行操作”时,激活响应代码程序。通过分析操作界面中设置的参数,方便、简洁地调用相应的功能函数,快速合成目标指令字符串。合成机制如上文所述。

6 结束语

通过该程序与FX2n-48MR PLC 的联机测试证明,软件运行稳定、系统工作可靠、数据读写正确。

本文所提出的PRMS 框架及指令字符串生成机制具有较强的可行性,可以实现更直观、高效、快捷地管理PLC 的内部资源,对今后开发系统更加庞大、功能更加复杂的PLC 测控系统奠定了扎实的基础,也为开发其他类似的测控系统提供了借鉴意义。

[1]陆运华. 可编程控制器(PLC)综述[J]. 电子制作,2007(7):6-8.

[2]王淑旺,顾立才,张定,等. 基于PLC 和触摸屏的车身总装夹具控制系统设计[J]. 组合机床与自动化加工技术,2012(1):74-76.

[3]Mitsubishi. 三菱可程控制器FX 编程口专用通信协[Online]. www.ymmfa.com,2012.9.1.

[4]张传伟,王昀睿. VB 下PLC 与PC 串口通信的实现[J].组合机床与自动化加工技术,2012(12):62-63.

[5]郭昌荣,吴作明. FX 系列PLC 的链接通信及VB 图形监控[M]. 北京:北京航空航天大学出版社,2008.

[6]李长林. Visual Basics 串口通讯技术与典型实例[M]. 北京:清华大学出版社,2006.

[7]黄金梭. 基于MAS 理论的模块化工业机器人控制策略研究[D]. 浙江大学,2010.

[8]谭晓东,刘俊鹏,谭丰. 基于VB 的自动化立体仓库监控系统设计[J]. 组合机床与自动化加工技术,2008(10):75-77.

[9]张鲁国. PLC 在机械手控制系统中的应用[J]. 微计算机信息,2000,1(16):36-37.

[10]龚仲华,史建成,孙毅,等. 三菱FX/Q 系列PLC 应用技术[M]. 北京:人民邮电出版社,2006.

猜你喜欢
字符串通信协议串口
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
浅谈AB PLC串口跟RFID传感器的通讯应用
基于文本挖掘的语词典研究
基于Wireshark的列控中心以太网通信协议解析器的研究与实现
基于EM9000工控板高性能双串口通信模型设计与实现
车载网络通信协议标准化问题研究
船舶电子设备串口数据的软件共享方法
SQL server 2008中的常见的字符串处理函数
电动汽车充电接口及通信协议新国标发布
倍增法之后缀数组解决重复子串的问题