基于Host Link FINS协议的PLC远程通信
2014-03-08裴忠诚陈洪骏
裴忠诚 ,陈洪骏 ,叶 桦
(1.东南大学 自动化学院,南京 210096;2.苏州经贸职业技术学院 机电与信息技术学院,苏州215009)
远程通信和监控技术是通过各种通信手段收集并处理远端监控设备的多元信息,以便实时了解设备的运行情况以及对设备进行统一管理的一种技术。为了帮助自动化设备企业进一步缩短设备故障诊断时间,提高设备维护效率,改进设备制造质量,降低去现场修改PLC程序的人员费用[1]。本项目设计了一种基于欧姆龙PLC的工业监控网络系统,该系统现场设备使用欧姆龙CP1H型号PLC,其核心技术之一就是对Host Link FINS协议解析和使用。通过对PLC通信指令进行解析,基于通信协议定制相关监控指令和操作指令来实现监控软件与PLC的远程通信以及远程程序下载上传[2]。维护人员只需连接至网络,即可通过监控软件在线监视PLC的程序运行情况,从而降低运营成本。
1 总体架构
整个监控系统分成2个部分:现场设备和监控软件,如图1所示。现场的PLC负责设备的控制和信息采集;信号发射器通过串口和PLC相接,用于实现PLC设备与监控软件的远程通讯,实时监测PLC设备的运行状态以及实现程序的远程修改和升级[3];服务器主要作为数据通信与数据处理部分,主要为客户端软件提供它所需的数据源,同时将来自客户端软件的远程控制指令实时转发给目标PLC设备;客户端部分则主要提供数据监控与分析、程序升级、客户信息查询、设备位置管理等功能[5]。
图1 监控系统结构图Fig.1 Monitor and control system structure
1.1 信号发射器
CP1H型号PLC设备没有配置网络拓展模块,无法直接和服务器通信。需要在PLC侧开发信号发射器,使PLC设备能与监控软件进行数据通信。发射器模块具有串口数据转WIFI发送、串口数据转以太网发送和串口数据转GPRS发送3种功能,根据PLC设备所在现场的不同环境,选择不同的工作模式。
1.2 PLC控制设备
底层PLC部分选用的是欧姆龙公司较新的一款PLC CP1H,是一种能够实现高速处理、高功能的程序一体化型PLC,处理速度可达到以往CP1M2A设备的10倍;丰富的高速计数器功能,多样的脉冲控制,各种组件如串口、USB等使其连接相容性大大提高;可用于CJ拓展系列的高单元功能,灵活性比较高[4]。它能够支持较新的Host Link FINS传输协议,通过串口直接与信号发射器相连,负责数据收发,并且能自动校验,通过通信链路进行检测。
1.3 监控软件
PC监控软件主要负责数据的采集、处理、实时显示、警报和PLC程序的远程下载、调试,从而实现对PLC的实时状态进行监控等[6]。这个功能方便监控人员查询PLC设备的参数数据状态,及时发现故障点,以及进行参数配置和远程指令控制操作。
监控软件包括客户端和服务器2部分,服务器分别与客户端和PLC设备通信。服务器对接收到2边的指令进行处理和转发,实现设备和终端通信,并且将数据存储到数据库中,为客户端提供数据源。客户端部分主要是收发指令,并且对数据进行处理,显示出监控状态。MFC中的各种类构成了一个应用程序框架,在此基础上建立Windows应用程序,是一种相对SDK来说更为简单的方法[9]。客户端采用MFC技术设计监控所需的界面,后台进行指令传送、解析、数据接收和处理,并且将需要的数据在软件界面上显示,方便工程人员监控。当工程人员需要调试时,可以将监控程序关闭,切换到调试状态,系统打开PC上的CX-ONE软件,进行修改、测试,并且能够远程上传下载程序。
2 Host Link FINS通信协议
2.1 Host Link FINS简介
Host Link协议是欧姆龙公司产品的一种常用通信协议,通过Host Link协议,PLC可以和开发软件相互之间进行串口通信。Host Link FINS协议采用的是问答式的通信方式,主机(Host computer)没有向PLC发送任何指令时,PLC设备除了内部程序执行发送数据指令,是不会通过串口对外发送数据。当通信链路为通的状态,主机向连接的PLC发送一条指令,PLC必须返回对应的一条指令。PLC接收到主机发送的指令之后,首先进行指令校验(FCS),没有问题,取出FINS的指令部分,转换成ASCII码执行相关操作,执行结束后将返回给主机的指令重新进行校验,发送给主机,完成一次通信过程。
2.2 Host Link FINS数据帧格式
Host Link FINS协议是基于Host Link协议的FINS通信协议。主机发送数据帧中,由Host Link数据帧头、FINS发送指令数据、Host Link FCS校验码、Host Link帧尾组成,在PLC的返回数据帧中,由Host Link数据帧头、FINS返回指令数据、Host Link FCS校验码、Host Link帧尾组成。
图2和图3是Host Link FINS发送指令和应答指令的数据帧格式。
图2 Host Link FINS发送指令Fig.2 Host Link FINS send command
图3 Host Link FINS应答指令Fig.3 Host Link FINS reply command
@:在PLC的Host Link FINS数据帧中,是以ASCII码‘@’为开头;
Unit No.:单元号,对应PLC内置串口或串行通讯单元设置的Host Link单元号;
Header code:在PC主机直连PLC的情况下,头代码为FA;
ICF:为信息控制域,用于标明指令和响应,当FINS指令依赖网络就用80,如果是直连就用00;
RSV:为系统保留,设定为00;
GCT:为网关允许数目;
DNA:为目的网络号;
DA1:为目的节点号;
DA2:为目的单元号;
SNA:为源网络号;
SA1:为源节点号;
SA2:为源单元号;
SID:为服务和响应的标识号,可任意设置,指令和响应对应相同;
MRC和SRC:分别为FINS指令的主指令和从指令;
FCS:用于标明所操作的数据地址、范围等,在响应帧中前2个字节MRES和SRES构成响应码,用来诊断错误信息。
2.2.1 FINS数据帧格式
上面的Host Link FINS指令中,包含了FINS指令。FINS指令的数据帧格式如图4和图5所示。
图4 FINS发送指令Fig.4 FINS send command
图5 FINS应答指令Fig.5 FINS reply command
指令开头2字节是指令码,这里0102说明是读存储区的指令,82是变量分类,根据指令码的不同而含义不同,当指令码是读数据指令时,那么这个字节的意义就是确定数据区,82表示DM存储区。接着为数据区的起始地址(3个字节),字数(2个字节)。
2.2.2 FCS校验码
数据帧中Host Link结束符前面是FCS校验码。校验采用异或校验方式,将FCS字段之前的所有字段逐一进行异或,最终得到的就是FCS校验码,接收端在收到指令的时候,就要用这个FCS校验码去验证这条指令是否正确。如表1所示为FCS校验码计算。
表1 FCS校验码计算Tab.1 FCS code calcutation
[A]FCS校验码采用的是逐位异或,如表中第3列和上一行第5列的值进行异或,异或值为第5行,依次异或,XXXXXXXX为最终异或结果。
2.2.3 PLC数据区设计
Host Link FINS协议具有一定字节数量的数据头和尾。传输的数据连续字数越长,传输的效率越高,接收一个比特位时需要接收最短数据包长度为43字节,传输效率只有2.3%,当传输连续50字数据时,传输效率有54%,当连续传输200个字的时候,传输效率高达82.6%,所以为了能够高效地传输有效数据,PLC的内存区最好取连续区域,表2列出PLC中内部划分的几种常用IO区。
为了能够增加传输效率,可以将待传输数据发送到一个连续的内存区域中,比如是D区,这样可以通过比较简单的指令完成一系列的数据通信。在有限的串口传输速度下,这是一种比较好的提高传输效率的方法[7-8]。
3 监控软件与PLC通信
如图6、图7所示为监控软件指令发送(PLC设备接收)和接收(PLC设备返回指令)的通信指令的流程。用MFC软件编写出简易的串口通信软件,MFC主要做的是根据输入的指令计算出FCS校验码,然后生成一条完整的指令发送到PLC中。在数据返回部分,采用多线程技术和基于MFC的消息处理机制,当有数据接收时,系统捕获到这一消息,触发串口接收事件,然后从接收缓冲区读取数据,并且存放在队列中,当数据读取完毕时,设置数据处理事件,系统捕获到这一事件后,在数据处理线程中继续从队列中读取数据并且进行解析处理,事件处理线程开始FCS校验指令,取出所需要的数据。这种采用多线程的方式更加高效利用CPU执行能力,加快了数据读取处理能力[9]。
图7 指令接收流程图Fig.7 Flow chart of reply command
在通信之前要先进行初始化,设置传输波特率,数据传输格式,要根据PLC中的设置来确定监控软件的这些串口通信参数[10]。
MFC支持MSComm插件,可以进行简易串口收发数据[11]。如图8所示为读取数据的通信界面。
图8 监控软件测试界面Fig.8 Monitor and control software testing interface
图8中为数据要求从D20000起50个字的数据,在接收数据框中便显示接收到的数据。从监控软件界面上发送和接收的数据来看,整个监控过程中能够正确地发送需要的指令,以及接收到从底层PLC返回来的所有需要的数据,监控功能完成。
4 结语
基于Host Link FINS协议的串口通信方式具有较强的数据传输能力和传输效率,其问答模式大大提高了这种方式下数据传输的可靠性。本文以欧姆龙公司CP1H型号的PLC为应用背景,设计了基于Host Link Fins协议的PLC设备远程监控系统。信号发射器的设计实现了PLC串口数据在网络中的传输;基于MFC开发的通信软件则实现了监控软件与PLC的远程通信功能,能够对PLC进行远程监控与管理。现场测试和运行结果表明,该系统运行稳定可靠,PLC通信性能较高,具有很好的实用价值。
[1] 侯瑞春,丁香乾,陶冶,等.制造物联及相关技术架构研究[J].计算机集成制造系统,2014,20(1):11-20.
[2] 郭永勇,潘存海,李军锋,等.WinCC监控系统中OPC通信及数据处理方法[J].制造业自动化,2014,36(2):98-100.
[3] 谢扬球,吴宏栋.微成形制造中的上下位机通信设计及实现[J].制造业自动化,2013,35(1):71-72,84.
[4] 樊锐,宋晓亮.通过DP通讯改变6RA70装置参数设定在铝冷轧机上的应用[J].制造业自动化,2014,36(3):141-145,156.
[5] 苏宝平.基于无线通信的轨道车防溜智能监控系统设计[J].制造业自动化,2014,36(3):46-49.
[6] 黄大伟.LabVIEW与S7-200 PLC PPI协议通讯的设计与实现[J].自动化与仪器仪表,2013(4):94-95,99.
[7] 段润群,谢云山.上位机软件与S7-1200 PLC的OPC通信研究[J].自动化与仪器仪表,2014(5):13-15,19.
[8] 苏虎平,沈三民,刘文怡,等.基于冗余CAN总线的实时通信系统设计[J].自动化与仪表,2013,28(1):26-29,55.
[9] 孙鑫.VC++深入详解[M].北京:电子工业出版社,2012.
[10]刘艳平,李化南,赵连环,等.基于ARM的FreeModbus通信协议的实现[J].自动化与仪表,2013,28(5):22-26.
[11]李敏.基于PPI协议的PLC通信控制设计[J].自动化与仪器仪表,2013(2):66-68. ■