您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 工业控制系统通讯协议的描述方法
工业控制系统通讯协议的描述方法(1)2008-08-0610:07:09来源:互联网针对工业控制系统实际问题,使用列表的方法总结了通讯协议所涉及的内容,讨论了由阻塞和干扰引起的异常情况以及处理办法,给出了工业控制系统通讯协议的基本规范和纵向描述表。关键字:工业控制[38篇]通信协议[1篇]描述表[1篇]引言通讯协议在工业控制系统中十分重要[1]。一般来说网络协议有7层。其中第1部分由硬件完成,称为物理层。第2部分由操作系统完成,包括链路层、网络层、传输层。第3部分包括会话层、表示层和应用层,一般在应用软件里实现[2]。所谓在工业控制系统中的通讯协议均指会话协议。合理的会话协议能够大幅度提高硬件的操作效率,准确的描述能提高程序员之间的协作效率。如何设计出高效的通讯协议并使用准确的语言描述,对每个系统分析者以及软件设计者来说必不可少。笔者通过总结多年的设计工业控制系统的经验,得到了关于工业控制系统通讯协议的一些描述方法。希望能够给广大设计工业控制系统的同行予以借鉴。1.工业控制系统的基本模型图1工业控制系统的信号传送过程一般情况下,工业控制系统涉及上位机、控制柜、传感器与控制器四大部分。如图1所示上位机主要指的是计算机,控制系统在这里安装。控制柜是连接计算机、PLC(可编程控制器)、传感器与控制器的设备,PLC是其中的主要部件。其实PLC也是计算机,在测量时,它的作用是把传感器送来的电流或电压信号转化为数字信号,称为A/D转换,并将这些数字信号送给计算机。在控制时,它的作用是把计算机送来的数字信号转化为电流或电压信号,称为D/A转换,并将这些数字信号送给控制器。一般来说,PLC是计算机与传感器和控制器之间的桥梁。PLC的功能在不断完善,现代的PLC完全可以替代计算机。在绝大多数情况下,人们仍需要在计算机上运行控制系统,这时便需要在PLC和计算机之间进行通讯。我们所说的通讯协议主要是指计算机与PLC的通讯协议[3][4]。2.客户与服务器网络通讯总是以客户(Client)与服务器(Server)方式进行的。所谓服务器是指,它总是处于被动状态,等待客户的询问,负责应答。而客户总是处于主动地位,在启动时客户总是首先向服务器发出联络信号,然后等待服务器的回答。在设计程序时,到底谁作客户,谁作服务器要看具体的情况而定。一般来说,上位机是客户,PLC是服务器,为上位机提供各种测量数据并负责向控制器传送控制信号[5]。工业控制数据可分为目标值(Target)、设定值(Setpoint)、测量值(Measure)、操作状态(Status)、阀门位置(Valvevalue)等,这是按照纵向控制界面来划分的。如果要按照网络传输方式来划分,可分为:一般运行数据(Data)、参数(Parameter)、命令(Command)、出错信息(Error)、消息(Message),如表1。表1工业控制数据通讯读写分类表3.网络通讯的数据一般来说,网络通讯协议主要描述客户如何与服务器进行对话,所以下面的描述总是以客户身份表现的。对于客户来说有:①请求运行数据、②请求参数、③写参数、④写命令,服务器应答后便相应的有:⑤读数据、⑥读参数、⑦读错误信息、⑧读消息。这些操作之间的对应关系与它们的具体含义请看表2。数据传送过程必须由发送方和接收方共同完成。发送方收集数据并打包然后发送,接收方则在收到数据后按照协议(protocol)进行解包后分发到各个位置上。所谓的协议就是一种描述规范,首先必须使得接收方明确:哪一路的数据,读还是写,具体内容是什么。如果要让接收方准确无误的接收,还必须考虑到工业控制的具体情况,如阻塞和干扰。表2工业控制数据通讯读写关系说明表4.阻塞与干扰传送数据的方式一般有两种格式,即2进制模式或文本字符模式。对于这两种截然不同的格式来说,编写协议的方法也大不相同。2进制模式下整数和浮点数所占用的空间与数值的大小没有关系,文本字符模式下则大不相同,必须充分考虑数值的取值范围与小数点的位置。一般来说,2进制模式传送数据的效率要高的多,而文本字符模式下的纠错能力更强,而且所得到的数据可以直接显示。在工业控制条件下,由于考虑到纠错方法的容易实现,采用文本字符模式的居多。在不考虑阻塞(block)的情况下,接收方所得到的数据块与发送方所发送的数据块完全一样,这时不必考虑起始符与结束符。但是在工业控制环境下,连续不断地、大批量地传送数据阻塞是不可避免的,于是像图2所示的情况常常会发生。接收方某次所读到的并不是发送方某一次所送来的,而是发送方第n-1块数据的后半部分与发送方第n块数据的前半部分,这样如果简单的以顺序解读就必然会造成误会。如表3中的起始符与结束符就是为了克服受阻塞条件下的接收数据的起始位值的偏移。应该说明的是,起始符中使用过的字符不应该在其它地方再使用。图2受阻塞条件下的数据接收情况另外,在工业现场,许多金属设备及电动机的高速运转,强烈电磁干扰也是不可避免。本来在实验室里能正常传送的网络数据,到了工业现场却不能正常运行。本来的正常的数据会变得不可思议。排除那些因受现场干扰(interfere)而变得不可使用的数据是非常有必要的。对付这些异常数据的办法就是丢弃它们。这时,如何辨别它们是错误的就变得非常重要。校验码(verifycode)的作用就是让接收方知道自己所接收到的数据是否受过干扰。所谓校验码就是在数据块的固定位置放置若干字符,如表3。这些字符可以是固定字符、求和(sum)或异或(Xor)求和。固定字符容易实现,但是难以知道其它位置的数据是否受到干扰。求和或异或求和是常用的校验方法,这种方法通常把求和结果转换成两位16进制的文本字符码,这两位16进值符号就能表示出一个字节的数据。5.协议描述方法表3是笔者在设计网络会话通讯协议时常用的描述方法,称为纵向描述方法。这种方法的优点是能够将所要传送的每个字段进行详细的描述。在这里将每个所要描述的字段分为:起始位置、名称、字节数、数据类型、数据内容等5项说明。表3工业控制数据通讯协议的格式显然这是一种适用于文本字符描述的协议,2进制协议也可以参照这种方法。由于2进制协议的任意位置可以取任何值,所以在2进制协议中无法起始符与结束符。6.结束语上述的表3中描述的主要是针对串口通讯,在以太网环境下当然也是可以的。一般来说,纠错功能在传输层进行,但是由于在以太网环境下,传输层协议是由操作系统完成的,如TCP协议[3],纠错功能自然包含在内,所以表3中的校验码可以不予考虑。在串口通讯模式下,操作系统(Windows)仅仅为串口通讯建立了缓冲区,大部分传输层功能需要由编程者来完成,所以表3中的校验码是绝对不可以缺少的。以上的通讯协议设计方法笔者已在许多地方,如山东临清、广西荔浦、内蒙河套等的抄纸过程控制系统中广泛使用,效果良好。参考文献[1]纪玉波.造纸系统计算机控制系统[J].微计算机信息,2000.16(2):26-27,70[2]鲁士文编著.计算机网络原理与网络技术[M],机械工业出版社,1996.2-6,296-316[3]王志坚,陈松乔,蔡自兴,彭世铎,周昊,ABB工业控制系统与外部计算机通讯软件设计[J],微计算机信息1998.14(2)54-57[4]杨武,田伟,可编程控制器与工业控制计算机通讯方法的研究[J],包装工程1999.20(4),44-45[5]王存,用串行通讯构成工业控制小型集散系统[J],内蒙古大学学报(自然科学版)2000.31(4),385-387[6]王思明,S5-115UPLC与工业控制计算机的通信[J],兰州铁道学院学报,1998.17(4),92-97ModBus通讯协议软件包ModBus通讯协议简介Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议。通过此协议,控制器相互之间、或控制器经由网络(如以太网)可以和其它设备之间进行通信。Modbus协议使用的是主从通讯技术,即由主设备主动查询和操作从设备。一般将主控设备方所使用的协议称为ModbusMaster,从设备方使用的协议称为ModbusSlave。典型的主设备包括工控机和工业控制器等;典型的从设备如PLC可编程控制器等。Modbus通讯物理接口可以选用串口(包括RS232和RS485),也可以选择以太网口。其通信遵循以下的过程:·主设备向从设备发送请求;·从设备分析并处理主设备的请求,然后向主设备发送结果;·如果出现任何差错,从设备将返回一个异常功能码。英创ModBus通讯协议软件产品简介英创公司推出的ModBus通讯协议软件产品主要应用于英创ARM9嵌入式主板环境,英创工控主板均带有丰富的串口、网络资源、通用GPIO接口等,同时具有强大的处理能力。结合ModBus通讯协议软件,就可非常方便地构成符合ModBus通讯规范的主控(Master)及设备(Slave)的应用平台。针对ModBus通讯的主从方式这一特点,英创公司的ModBus通讯协议软件包分为两个可独立使用的部分,即“ModBus主控协议软件”(简称modbus_Master)以及“ModBus设备方协议软件”(简称modbus_Slave)。目前英创ModBus通许协议软件运行于WinCE环境下,均以C函数加静态LIB库的形式提供给客户。其主要特征如下:·非常适用于实时的工业应用。·可以支持基于串口的ModBus通讯协议应用或TCP的ModBus通讯协议应用。·RTU传输模式。·支持大多数的Modbus功能码操作,包括对线圈、离散开关输入的位操作,以及对寄存器的字节操作。·支持广播地址。·可以灵活设置ModBus通讯的超时时间。·可以获取通讯中传输协议的错误代码的详细信息。英创ModBus协议软件通讯关系图英创ModBus协议软件支持的功能码功能码描述1读单个线圈2读离散量输入3读多个寄存器4读输入寄存器5写单个线圈6写单个寄存器15写多个线圈16写多个寄存器22屏蔽写寄存器23读/写寄存器软件基本使用方法为了方便应用程序的使用,对不同的通讯介质保持一致的代码形式,英创所提供的ModBus协议软件(包括modbus_Master和modbus_Slave)中的API函数可以同时支持基于串口和TCP的Modbus协议,应用程序只需要在调用初始化函数时,用不同参数区分即可,有关参数的说明请参见相应的头文件:modbus_Master.h和modbus_Slave.h1、modbus_Master的应用作为Modbus客户端模式的应用,主要是准备请求并向服务器设备发送请求,并等待服务器的响应。在做此类应用开发时,用户可参考Modbus标准文献以及被控设备的通讯接口数据手册,直接调用英创提供的modbus_Master软件包提供了相应的操作API函数,来完成对服务器设备的访问和控制。在进行此类应用开发时,用户只需要包含modbus_master.h/modbus_master.lib即可。2、modbus_Slave的应用作为ModBus服务器模式的应用,主要需要实现了对于ModBus应用报文的分析与响应,但这还只是ModBus整个通讯的一部分,另一部分是还需要有对应用数据的访问,这部分的内容则需要用户自己来进行定义。为了方便客户的使用,在modbus_Slave软件包中通过函数指针的形式,实现了这些用户接口函数的自动加载,将用户应用数据处理和ModBus应用报文响应关联起来。用户只需根据需求定义这些接口函数来实现相应的功能,各个函数具体的定义是通过专门的一个CPP文件:DataProvider.cpp来实现。由此可见在这类的开发应用时,需包含两个部分的内容,一部分是modbus_slave.h/modbus_slave.lib定义的API函数;另一部分是DataProvider.h/DataProvider.cpp定义的用户数据接口函数,其中接口函数需要用户在DataProvider.cpp中具体实现。为了及时地响应ModBus应用报文,需要注意的是在程序设计时应设计一个线程反复调用modbus_Slave执行函数,该函数为阻塞模式。
本文标题:工业控制系统通讯协议的描述方法
链接地址:https://www.777doc.com/doc-7514027 .html