ControlLogix与自定义协议设备之间的通信

2014-04-03 02:18
自动化仪表 2014年6期
关键词:串口温湿度端口

(广西中烟工业有限责任公司1,广西 柳州 545005;北京中电红石科技有限公司2,北京 100083)

0 引言

ControlLogix是美国罗克韦尔公司生产的大型、高端新一代集成通信与控制平台,广泛应用于钢铁、汽车、冶金、烟草等行业。它提供了单一的集成化控制架构,能够实现离散、传动、运动、过程控制任务,其处理器自带有RS-232(DFl协议)端口。同时,用户可以通过扩展通信模块实现与Ethernet、ControlNet、DeviceNet和普通的Remote I/O链路之间的通信,可以插入第三方通信接口模块连接到Modbus、Profibus等国际标准协议网络上[1]。

然而现阶段,企业仍有一些在用的设备和仪表采用自定义通信协议而非标准协议,导致ControlLogix系统与其不能相互实现高速的数据传输。为了使自定义协议设备实现与ControlLogix系统方便、快捷地互联通信,本文以广西中烟公司烟叶库温湿度控制系统为例,在分析ControlLogix各类通信接口、第三方提供的不同通信模块功能的基础上,提出了一种通过串行通信实现与自定义协议设备通信的方案,解决了ControlLogix系统与自定义协议设备之间的通信难题。

1 系统通信硬件配置

1.1 通信接口选型

ControlLogix平台自带有RS-232端口,但其与外部设备交换数据都需要另外插入通信扩展模块。RS-232端口可以与调制解调器实现DF1协议通信,也可以实现发送接收ASCII码如条形码阅读器、打印机等,还可以借助AIC+高级接口转换器(1761-NET-AIC),将ControlLogix控制器连接到RS- 485网络,实现Modbus一主多从通信[2]。在插入模块扩展通信功能方面,制造商罗克韦尔公司只提供以下几种常见类型。

① 1756-ENET,用于以太网通信接口模块,支持TCP/IP协议,用于计算机和有关设备之间的高速信息交换。

② 1756-CNBR,用于高速确定性ControlNet网络,与同级别的设备提供实时信息和数据发送。

③ 1756-DNB,用于控制器与DeviceNet网络设备之间的通信接口,如传感器、变频器、触摸屏等控制元件。

④ 1756-DHRIO,用于DH+网络,支持远程编程和数据采集,实现一个小型同级对同级的网络。

⑤ 1756-RIO,用于和远程I/O通信模块连接,可以传送浮点数据和专用数据[3]。

柳州卷烟厂烟叶库空调温湿度监控系统采用ControlLogix平台。一套控制器负责连接3台TB2X系列数字温湿度巡检仪。巡检仪只提供自定义通信协议,物理层采用两线制RS- 485接口;工作于异步通信方式,1个起始位、8个数据位和1个停止位,波特率为19 200 bit/s或9 600 bit/s。因此,必须借助第三方通信模块实现ControlLogix与温湿度巡检仪的串口通信。美国Prosoft公司提供的MVI56 ADM是一种C语言应用开发模块,能够与ControlLogix的背槽直接通信,允许用户开发的“C”应用程序在ControlLogix平台运行[4]。该模块支持两个完全孤立的串行端口,允许多种串行现场设备集成到ControlLogix平台;提供简单的输入/输出功能,可直接访问处理器的内存,完成数据传输。该模块特别适用于与自定义协议设备之间的通信。

1.2 硬件构成

整个烟叶库温湿度监控系统的硬件构成如图1所示。上位机通过1784 PCIC控制网卡与ControlLogix通信,实现库区温湿度的实时监视和对中央空调的远程控制。ControlLogix采用1756 L63作为控制器,MVI56 ADM模块负责读取3台温湿度巡检仪上54个传感器的数据,并计算平均温度和平均湿度。控制器按照算法控制中央空调冷水阀、加热阀和加湿阀的开度,实现对库区温湿度的自动控制。

图1 硬件连接示意图

1.3 系统通信原理

ControlLogix控制器通过编写梯形图程序可以直接写入或读取MVI56 ADM模块的输入输出映像区。输入映像区占500 B,输出映像区占496 B。数据刷新的频率可以由用户自行设定,一般在2~10 ms之间。MVI56 ADM模块设置有内部数据库,可以从映像区中取出数据或者写入数据。这些数据最后通过加载不同的用户驱动程序,完成与外部网络设备的交换。ControlLogix控制器、MVI56 ADM模块以及外部设备三者之间的数据传输流程如图2所示。

HCC 在我国的发病率和病死率均居前列,手术切除仍是目前主要的治疗方式。然而,HCC 切除术后的复发和转移成为影响手术效果和患者生存期的瓶颈。HCC 一旦发生转移,即使积极治疗,这些患者的 3年生存率也不足 20%[10]。包括 HCC在内,肿瘤转移导致的相关死亡率为 90%[11],因此对 HCC 转移机制的深入探讨有助于临床设计相关防治策略。

图2 数据传输流程图

2 MVI56 ADM模块API函数

2.1 操作系统

MVI56 ADM模块类似于一台带3个串口的计算机,自带一套通用嵌入式DOS6-XL操作系统。这个操作系统与DOS系统兼容,允许用户实时、多任务处理。操作系统存储在模块的ROM中,当模块启动时由BIOS加载进去。该系统允许用户使用标准DOS工具开发应用程序,如Digital Mars C++和Borland公司的编译器。用户程序可以通过CONFIG.SYS或AUTOEXEC.BAT文件加载并自动执行。

2.2 API函数

应用程序编程接口函数(application programming interface,API)是MVI56 ADM模块提供给用户的接口函数。应用程序可通过调用操作系统提供的相关API函数,使操作系统通过应用程序去执行一些命令[5]。MVI56 ADM API函数允许用户不需要详细了解模块的硬件结构即可实现PLC背板访问和串行通信。API函数包括3个不同的部分:SP API、BP API和ADM API,其中,SP API提供访问串行端口,BP API提供访问背槽接口,ADM API提供简化用户开发难度的功能。每个API提供了一个函数调用库。该库支持任何编程语言,且必须创建与用户应用程序的连接,并最终生成可执行文件。MVI、ADM、API函数之间的关系如图3所示。

图3 MVI56、ADM、API函数关系图

3 系统软件设计

3.1 主要使用的软件

系统主要使用的软件包括:用于ControlLogix PLC编程的软件“RSLogix 5000”、C语言开发编程软件“Borland C++ 5.1”、生成MVI56 ADM模块硬盘映像文件“WINIMAGE”、下载硬盘映像文件至模块的软件“MVI Flash Update”,及Windows系统自带串口调试工具“超级终端”。用户可以到Prosoft公司的相关网站下载MVI56 ADM模块的编程软件,同时也可以下载相应的使用说明书和案例代码,以上软件均需要使用。

3.2 程序工作流程

整个通信程序主要包括读取命令、发送命令、接收数据、写入数据4部分。程序工作流程如图4所示。

图4 MVI56 ADM通信程序工作流程图

系统要求能够实现远程读取温湿度巡检仪的数据,并可以写入控制参数。实质上就是MVI56 ADM模块在读取ControlLogix的数据后,通过串口发送这些数据指令至总线,巡检仪接收到指令后按要求返回数据,模块再接收总线上反馈的数据,如此反复[6]。因此,通信程序设计的难点在于MVI56 ADM模块。需要特别注意的是,如果终端一次返回较大的数据量,在发送指令完成后要做适当的延时处理,否则就会造成校验错误。根本原因是MVI56 ADM模块串口接收区的数据还没有来得及全部刷新。

3.3 软件设计

3.3.1 创建工程文件

打开“Borland C++ 5.1”软件,新建一个工程文件。在“Target Type”框里选择“Application(.exe)”,在“Platform”框里选择“DOS(Standard)”,在“Target Model”框里选择“Large”,在“Math Support”选项中点中“Emulation”,最后点击“OK”按钮。在弹出的窗口中删除“.cpp”文件。在新建工程的“.exe”文件列表处点右键选中“Add Node”菜单,打开窗口在文件类型,选择“*.lib”,依次加入“admapi.lib”、“mvispapi.lib”、“mvibpapi.lib”、“mviscapi.lib”“cipapi.lib”库函数。这些库函数的源文件可以通过访问Prosoft公司官方网站,下载资料包“ADM_TOOL_MVI.ZIP”解压获取。

3.3.2 设计主函数

② 设置端口参数:打开PRT2端口,波特率19 200 bit/s、无奇偶校验、8个数据位、1个停止位。

MVIsp_Open(COM2,BAUD_19200,PARITY_NONE,WORDLEN8,STOPBITS1)

③ 读取命令:读取ControlLogix数据指令。以下程序是读取MVI56 ADM模块数据映像区的30 B的数据(前4个为模块状态数据,因此从4开始读取),数据存储在数组rdbuff中。

ADM_BtOpen(adm_handle,interface_ptr,1);

MVIcip_ReadConnected(interface_ptr->handle,ConnHandle,(BYTE*)rdbuff,4,30);

④ 发送命令:将数组rdbuff从PRT2端口发送。其中,len为数组长度,TIMEOUT_ASAP为超时设定。

MVIsp_PutData(COM2,&rdbuff[0], &len,TIMEOUT_ASAP);

⑤ 接收数据:读取终端返回的数据,存储在数组data中,n为数据长度,TIMEOUT_ASAP为超时设定。

MVIsp_GetData(COM2,data,&n,TIMEOUT_ASAP);

⑥ 写入数据:将数组data中的数据写入ControlLogix,共计78 B。

MVIcip_WriteConnected(interface_ptr->handle,ConnHandle,data,0,77)

⑦ 关闭通信:ADM_BtClose(adm_handle,interface_ptr);MVIsp_Close(COM2)。

3.3.3 程序下载

编译前面的工程文件,生成可执行文件,如命名为ADM.EXE。打开“WINIMAGE”软件,选择新建一个“1.44 MB”磁盘格式,在“Options”中选中“Truncate unused image part”,截掉未使用的空间。选择“CONFIG.SYS”、“AUTOEXEC.BAT”、“TINYCMD.COM”、“MVI56BP.EXE”、“ADM.EXE”文件并加入,最后选择“Save As”,另存为IMG格式,生成用户程序映像文件。背槽硬件驱动程序“MVI56BP.EXE”和用户自己编写的程序“ADM.EXE”必须通过创建批处理命令被系统自动调用并执行。

当启动模块时,按住“Ctrl-C”键,接着出现提醒用户配置PRT1端口的信息,设置正确的串口通信参数。然后将一台计算机的RS-232口与MVI56 ADM模块的“PRT1”口相连接,打开软件“MVIUPDAT.EXE”,再次给MVI56 ADM模块上电,计算机屏幕上将会显示“Main Menu”。选择“UPDATE FLASH DISK IMAGE”,按照程序的提醒输入要下载的IMG文件名。下载完成后选择“REBOOT MODULE”,重新启动模块。

3.4 梯形图程序设计

在“RSLogix5000”硬件配置中增加第三方模块。在弹出窗口“Connection Parameters”选项“input”输入1和250,“output”输入2和248,“configuration”输入4和0。在用户的梯形图程序中,需要发送的数据存储在数组中,并用“COP”指令将数据送入“Local:8:O.Data”。从模块中读取数据也用“COP”指令读取“Local:8:I.Data”,其中8指的是模块安装的插槽[7]。ControlLogix通过循环写入和读取MVI56 ADM模块输入输出映像区的数据,实现与外部设备的数据通信。

4 结束语

本文采用第三方模块MVI56 ADM解决了ControlLogix系统与自定协议设备之间的通信,应用串口技术为ControlLogix系统与各种设备之间通信提供了一种通用的实现方法,扩展了系统应用的灵活性。实践表明,以上通信解决方案数据传输稳定、刷新速度快且易于实现,完全满足烟叶库区对温湿度检测实时监控的要求。MVI56 ADM模块为ControlLogix系统与自定义协议设备之间的通信提供了高效解决方案,具有较好的推广和应用价值。

[1] 钱晓龙.ControlLogix系统电力行业自动化应用培训教程[M].北京:机械工业出版社,2009:46-54.

[2] 邓李.ControlLogix系统实用手册[M].北京:机械工业出版社,2008:102-110.

[3] 张本举.ControlLogix系统在煤气站的应用[J].自动化仪表,2009(5):22-24.

[4] 夏志英.ControlLogix控制系统在热煤炉中的应用[J].石油规划设计,2010(4):49-51.

[5] 蒲靖荣,杜开勋,朱占清,等.基于网络和Modbus协议的远程监控系统[J].自动化仪表,2009(7):52-54.

[6] 浙江大学罗克韦尔自动化技术中心.可编程序控制器系统[M].杭州:浙江大学出版社,2000:32-45.

[7] 孔凡才.自动控制系统-工作原理、性能分析与系统调试[M].北京:机械工业出版社,2003:239-241.

猜你喜欢
串口温湿度端口
基于NPORT的地面综合气象观测系统通信测试方法及故障处理
一种有源二端口网络参数计算方法
一种端口故障的解决方案
浅谈AB PLC串口跟RFID传感器的通讯应用
基于AT89C51的数字型蚕用温湿度计的设计
基于EM9000工控板高性能双串口通信模型设计与实现
多按键情况下,单片机端口不足的解决方法
基于温湿度控制的天气预测装置
基于DSP和μcos的温湿度检测系统的设计
船舶电子设备串口数据的软件共享方法