1 引言
分布式控制系统是基本的控制结构形式。实现分布式控制,多采用主从式微机网络形式。随着现代控制系统结构越来越复杂,控制系统大多数基于主从站节点建构远距离通信网络。由于RS-485总线性能优异、结构简单、组网容易,得到广泛的应用。
本项目参照OSI网络参考模型和TCP/IP(传输控制/网间)协议的设计思想,设计相对简化且适用于基于RS-485总线的多CPU控制系统的简化网络模型和通信协议。
2 RS-485简化网络模型的总体设计
2.1 总体设计
控制系统的网络通信采用主从式通信方式。主控制器与子控制器之间通信采用查询方式。子控制器之间不能通信,只有通过主控制器作间接通信。主控制器和子控制器之间数据交换过程为一问一答方式,该种方式可以防止多个子控制器之间无次序通信,从而避免扰乱整个网络数据传输。
2.2 OSI七层
模型的简化
OSI参考模型是国际标准化组织(ISO)制定的一种开放式互联的基准模型,其包含七层参考模型,分别为:应用层、表示层、会话层、运输层、网络层、数据链路层和物理层。而TCP/IP实质只有三层,即应用层、运输层和网络层。由于网络接口层框架内容空泛,所以综合OSI和TCP/IP的特点,可以简化为五层模型。然而从网络硬件和成本上考虑运用OSI的七层模型或五层模型,是不现实的。根据TCP/IP协议和OSI分层的思想,在实际应用中可采用进一步简化的网络模型即四层模型。该四层模型各层分别为:物理层、数据链路层、运输层和应用层。简化的四层模型如图1所示。
2.3 简化模型的结构定义
(1)物理层:采用EIA RS-485电气标准,节点通信接口采用MAX485完成电平转化,波特率为9600bps,主从式总线网络结构。
(2)数据链路层:定义各CPU控制器之间数据传输的基本帧格式,帧边界识别方法及其传输方式。
(3)运输层:提供控制程序之间通信服务,各CPU之间数据可靠连接和传输,检测传输中出现的错误、丢帧等错误并解决这些错误。
(4)应用层:利用下层提供的数据和接口,定义解释网络数据协议。将网络数据解释成控制软件能够使用的各种控制命令或将控制命令封装成符合网络传输的数据。
2.4 简化网络模型中帧封装格式
(1)指令数据帧格式:对于多CPU控制系统来说,一般指令由“目的+内容”组成。“目的”为指令所要实现的功能,“内容”为要实现目的所要的数据。所以必须要为整个网络定义一个统一的帧格式,其如图2所示。
系统控制指令用1个字节表示,其表示范围为00H~FFH,共可以表示256条控制指令。如果采用短帧数据其可以提高数据传输效率,但由系统实际需要传输的数据长度来说,用2个字节的帧数据较为合适。累加和校验将前面的3字节(24位)的“0”和“1”全部相加,取和的最低字节(1字节)作为校验值。
该种帧格式没有定义源地址和目的地址,由于该控制系统通信采用主从通信方式。其主控制器与子控制器之间数据交换一一对应即可以用子控制器的地址作为查询码,当主控制器用某个子控制器地址查询且有正确回答时,其才能建立连接。同时主控制器和子控制器之间采用一问一答方式传送数据帧,这样可以明确区分帧数据来源和目的。
(2)连接控制字:本系统采用一个字节的连接控制字,其通过一问一答的方式建立连接。但连接控制字包括地址查询字和连接状态字。为了区分两种控制字,其可以划分范围为:00H~79H为地址查询字,80H~FFH为连接状态控制字。
3 系统通信协议
3.1 数据链路层协议
关于数据帧的定义前面已经叙述,在这不予解释。在多CPU的控制系统中子控制器的地址可以通过在硬件中设置一个拨码开关,通过设置拨码开关的值来设置子控制器的物理地址。
其网络地址也就是拨码开关的“0”和“1”组合。在设置过程中其地址分配为:00H为主控制器,01H~FFH为子控制器。主控制器依次查询子控制器的地址,当与某个子控制器对话的时候,其他子控制器均不作应答。3.2 运输层通信协议
TCP/IP运输层有两个主要的协议:TCP(传输控制协议)和UDP(用户数据报协议)。TCP协议是面向连接的协议即发送方每发出一帧,接受方总要等待确认帧,否则认为出错,因而该方式是一种可靠的通信方式。而UDP协议是无连接的协议,其发送方总是认为接收方接收正确,从而无需等待。这种协议虽然发送过程简单,但其可靠性不高。对于多CPU的控制系统来说,其传输的命令和参数都是非常重要的,所以选择类似于TCP协议方式,建立连接和数据帧传送过程如图3和4所示。
由图3所示可知,当主控制器查询到某个子控制器时,如果子控制器有指令数据帧要发送给主控制器则子控制器发送A_S_HAVE,主控制器收到后发出应答控制字A_M_READY;
由图4所示可知,通信连接建立以后主控制器和子控制器之间可以进行指令数据帧传输。当传输完一个数据帧后,接收方需要应答相应的连接控制字(如:“已接收一帧”即A_S_RECEIVED/A_M_RECEIVED),只有这样才能继续发送下一帧指令数据帧,否则认为发送不成功。
3.3 应用层通信协议
应用层是四层简化网络模型中最顶层,其主要关心具体要发送什么数据和接收到数据后执行后续的操作等,而数据传输由应用层以下的层完成。应用层主要包含以下几点:
(1)数据格式:在多CPU控制系统中采用两种格式的数据。一是本地使用的数据,为了编程方便和直观,采用ASCⅡ码来表示。二是网络通信数据,为了使通信程序高效、简洁,采用压缩BCD码。通过这两种格式数据大大提高了网络传输效率。
(2)消息:在应用层中采用WIN32操作平台的“消息”概念来描述控制器之间的数据传输,其内容与指令数据帧相同。由于本地对数据处理可能很快,而数据传输要等待网络连接建立,这样数据本地处理和网络传输就不能够同步进行,所以就必须采用缓冲机制来协调。仿照WIN32操作平台中对消息的处理办法,用循环队列数据结构来缓冲消息(如图5所示)。消息全部采用统一长度,一般采用4个字节,队列中每个元素为一个数组(长度为4个字节),每个队列中共有5个元素,采用先进先出(FIFO)原则,并且循环使用。生成或收到的消息时先放入消息数组中,并作为一个元素放入REAL指针所指尾部入缓冲队列(REAL加1),进行通信时从HEAD指针所指首部取出最先进入队列数据帧(HEAD加1)。同时系统对当前的消息中第一个字节(控制指令)内容进行判断,从而进入相应的消息处理程序。
4 通信软件的抗干扰措施
4.1 在协议中增加差错控制措施
当主控制器发送呼叫帧后,如果在规定的时间内没有收到子控制器的应答帧或没有得到正确应答帧,则认为通信失败。只有等到下次再与该子控制器建立连接时,重新完成上次未交换的数据帧。同时采用累加校验字段来判断数据是否正确,通过以上措施可以有效的防止通信错误发生。
4.2 在软件设计中适当增加延时
当主控制器或子控制器有一种状态转到另一种状态时,插入一定延时(一般为几十毫秒),其可以大大提高总线稳定性,从而可提高数据传输可靠性。
5 结束语
由RS-485网络的多CPU控制系统的特点,并参照ISO七层网络模型和TCP/IP协议设计思想,提出了适用于该系统的四层简化网络模型、各层的通信协议和数据帧的格式。在实际应用中,根据四层简化网络模型及其通信协议编制的通信软件在实际应用中效果良好、通信速度和可靠性得到大大的提高。