(广西中烟工业有限责任公司1,广西 柳州 545005;北京中电红石科技有限公司2,北京 100083)
ControlLogix是美国罗克韦尔公司生产的大型、高端新一代集成通信与控制平台,广泛应用于钢铁、汽车、冶金、烟草等行业。它提供了单一的集成化控制架构,能够实现离散、传动、运动、过程控制任务,其处理器自带有RS-232(DFl协议)端口。同时,用户可以通过扩展通信模块实现与Ethernet、ControlNet、DeviceNet和普通的Remote I/O链路之间的通信,可以插入第三方通信接口模块连接到Modbus、Profibus等国际标准协议网络上[1]。
然而现阶段,企业仍有一些在用的设备和仪表采用自定义通信协议而非标准协议,导致ControlLogix系统与其不能相互实现高速的数据传输。为了使自定义协议设备实现与ControlLogix系统方便、快捷地互联通信,本文以广西中烟公司烟叶库温湿度控制系统为例,在分析ControlLogix各类通信接口、第三方提供的不同通信模块功能的基础上,提出了一种通过串行通信实现与自定义协议设备通信的方案,解决了ControlLogix系统与自定义协议设备之间的通信难题。
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所示。上位机通过1784 PCIC控制网卡与ControlLogix通信,实现库区温湿度的实时监视和对中央空调的远程控制。ControlLogix采用1756 L63作为控制器,MVI56 ADM模块负责读取3台温湿度巡检仪上54个传感器的数据,并计算平均温度和平均湿度。控制器按照算法控制中央空调冷水阀、加热阀和加湿阀的开度,实现对库区温湿度的自动控制。
图1 硬件连接示意图
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 数据传输流程图
MVI56 ADM模块类似于一台带3个串口的计算机,自带一套通用嵌入式DOS6-XL操作系统。这个操作系统与DOS系统兼容,允许用户实时、多任务处理。操作系统存储在模块的ROM中,当模块启动时由BIOS加载进去。该系统允许用户使用标准DOS工具开发应用程序,如Digital Mars C++和Borland公司的编译器。用户程序可以通过CONFIG.SYS或AUTOEXEC.BAT文件加载并自动执行。
应用程序编程接口函数(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函数关系图
系统主要使用的软件包括:用于ControlLogix PLC编程的软件“RSLogix 5000”、C语言开发编程软件“Borland C++ 5.1”、生成MVI56 ADM模块硬盘映像文件“WINIMAGE”、下载硬盘映像文件至模块的软件“MVI Flash Update”,及Windows系统自带串口调试工具“超级终端”。用户可以到Prosoft公司的相关网站下载MVI56 ADM模块的编程软件,同时也可以下载相应的使用说明书和案例代码,以上软件均需要使用。
整个通信程序主要包括读取命令、发送命令、接收数据、写入数据4部分。程序工作流程如图4所示。
图4 MVI56 ADM通信程序工作流程图
系统要求能够实现远程读取温湿度巡检仪的数据,并可以写入控制参数。实质上就是MVI56 ADM模块在读取ControlLogix的数据后,通过串口发送这些数据指令至总线,巡检仪接收到指令后按要求返回数据,模块再接收总线上反馈的数据,如此反复[6]。因此,通信程序设计的难点在于MVI56 ADM模块。需要特别注意的是,如果终端一次返回较大的数据量,在发送指令完成后要做适当的延时处理,否则就会造成校验错误。根本原因是MVI56 ADM模块串口接收区的数据还没有来得及全部刷新。
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”,重新启动模块。
在“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模块输入输出映像区的数据,实现与外部设备的数据通信。
本文采用第三方模块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.