APP下载

基于自定义协议的维护通信总线(M-BUS)设计∗

2020-05-15焦继业

计算机与数字工程 2020年2期
关键词:应用层通信协议数据包

杨 义 焦继业

(西安邮电大学计算机学院 西安 710121)

1 引言

在热电厂调控系统中,维护通信总线作为重要的测试通信网关,完成电厂系统中的重要工作环境参数和生产运行状态等参数的监控上报功能[1]。随着电厂系统复杂性越来越高,数据量的不断增加,实时、稳定、高速、精确已成为现代通信网关的发展趋势。由于系统中各设备之间信号类型的多样性和功能的复杂性使得整个调控网络更加庞大,控制管理机制复杂[2],因此需要一套稳定性强、安全性高的通信系统实现对数据信息的的实时、高效调控与处理。

目前,热电厂控制系统大多采用集散式控制系统——DCS系统[3],在该系统下,通信网关模块大多使用RS-422,RS-232C,RS-485和以太网接口与其他控制站设备进行连接通信[4],控制设备采用的通信协议不统一,控制方式多为主从问答方式,同一时刻仅允许一个终端拥有总线使用权,数据的通信速率取决于当前优先级最高的控制终端,限制了系统的传输速率[5]。

针对以上问题,本文采用自定义格式对总线协议进行设计,在分析RS485通信标准的基础上,根据4B5B编码、NRZI差分编码设计一个高效稳定的通信协议[6~7]。该协议能够实现电厂系统的自诊断与维护等功能,同时在较大数据量的数据交互下,通过添加CRC校验,保证芯片较高效稳定的运行[8]。

2 本地维护通信协议设计

2.1 系统总体概述

基于自定义协议的本地维护通信总线采用非标准总线来完成对个设备模块的数据通信,硬件采用Microsemi公司的IGLOO2系列FPGA和ST公司的STM32F103单片机,FPGA是整个电厂网关系统的控制中心和数据交互媒介,STM32完成配置并通过读取FPGA内部的寄存器来实现系统各项功能。总线上有485总线数据流控制模式,通过控制站发送485总线数据流控制维护总线的运行。RS-485接口从RS232发展过来,采用差分传输,可以实现点到点、多节点的通信,信号抗干扰能力较强,传输距离也较远[9~11]。在总线上允许连接多达128个收发器。

图1 网关模块对外配置图

系统上电启动后,需要完成相关器件的初始化功能,读取板卡ID信息,完成内部存储器的初始化功能,完成外部E2PROM接口的自检(数据CRC校验)功能,若校验正确取E2PROM中的配置参数初始化相应的内部RAM(加载数据),如E2PROM接口自检错误(存储器数据CRC校验错误)则进入故障状态,否则进入运行工作状态。

图2 软件运行流程图

2.2 M-BUS协议总体架构设计

M-BUS采用主从问答设计方式,维护接口模块为主节点,控制器、点对点卡、多节点卡、IO卡为从节点。M-BUS主节点从节点都连接在M-BUS总线上,通信时,主节点下发下装/维护数据包时,从节点需要在收到这包数据后立即发送反馈数据包,如果主节点发送的是广播数据包,则不用反馈数据,主节点发送数据包和从节点反馈数据包之间的间隔不能超过响应时间要求,否则视为超时[12]。

由于模块内存在两个时钟,输送给应用层的使能信号可能由于系统时钟和链路时钟的不同而踩不到关键的使能信号,故在和应用层对接时应做跨时钟域处理[13],具体方法如下:发送方向应该将w_tg信号展宽5倍,再用链路时钟去采样展宽后的信号,可以得到一个链路时钟的脉冲信号。接收方向应该将w_rg,w_crc展宽2倍,再用系统时钟去采样展宽后的信号,可以得到一个系统时钟的脉冲信号。

图3 M-BUS协议架构图

2.3 M-BUS协议应用层设计

M-BUS应用层主要实现控制链路层物理层发送和接收、接收数据,去掉无用字段,将有效数据存入下装下行缓存或者维护下行缓存、从下装上行缓冲区或者维护上行缓冲区读取数据加入包装字段存入链路层和物理层发送数据缓冲区,并通知链路层和物理层发送至物理总线、接收数据若为广播,则不发送上行反馈,连续接收到3包广播复位数据包,给出复位请求给当前板卡。M-BUS应用层上采用自定义数据帧格式来定义数据包,数据通过数据包的方式在总线中传输,一个数据包即一帧数据。常用的通信协议由帧头、地址信息、数据类型、数据长度、数据块、校验码、帧尾等部分组成[14]。M-BUS协议中应用层用DA域为目的地址标识,SA为源地址标识。主节点的SA域填写主节点(维护接口模块)的地址。从节点的DA域为主节点的SA域信息值,从节点的SA域为从节点的地址。功能码域代表两方面的信息,FC用来定义报文类型,表明该帧是请求帧还是应答帧。MODE域为发送此数据包的板卡模式,CMD域为此数据包的执行命令,SN域为包序号,用来区别相同位置不同时间的两次数据帧。ADDR域为请求从节点操作的内存首地址,TYPE域为板卡类型,板卡类型定义:维护接口模块:0x00;控制器:0x10;点对点卡:0x20;多节点卡:0x30。DATA域为Data Unit用户数据域,用于放置要携带的用户数据,长度可取128字节。

图4 M-BUS应用层自定义帧格式

2.4 M-BUS协议链路层和物理层设计

M-BUS通信协议链路层和物理层模块主要完成链路组帧/拆包[15],CRC 编码/解码,并串转换发送/接收任务。M-BUS的总线以12.5Mbps的速率进行传输,数据的同步信息无需附加在字符中间,每个字符以NRZI格式传输,在接收端通过数据时钟恢复并校验。帧字节格式为10位,跳变沿为1'b0,无跳变沿为1'b1。以下为5B/4B编码方式:

5'b11110:decodemap_5B4B=5'h0;//hex'0'

5'b01001:decodemap_5B4B=5'h1;//hex'1'

5'b10100:decodemap_5B4B=5'h2;//hex'2'

5'b10101:decodemap_5B4B=5'h3;//hex'3'

5'b01010:decodemap_5B4B=5'h4;//hex'4'

5'b01011:decodemap_5B4B=5'h5;//hex'5'

5'b01110:decodemap_5B4B=5'h6;//hex'6'

5'b01111:decodemap_5B4B=5'h7;//hex'7'

5'b10010:decodemap_5B4B=5'h8;//hex'8'

5'b10011:decodemap_5B4B=5'h9;//hex'9'

5'b10110:decodemap_5B4B=5'hA;//hex'A'

5'b10111:decodemap_5B4B=5'hB;//hex'B'

5'b11010:decodemap_5B4B=5'hC;//hex'C'

5'b11011:decodemap_5B4B=5'hD;//hex'D'

5'b11100:decodemap_5B4B=5'hE;//hex'E'

5'b11101:decodemap_5B4B=5'hF;//hex'F'

以下为非字符的译码:

5'b11000:decodemap_5B4B=J;

5'b10001:decodemap_5B4B=K;

5'b01101:decodemap_5B4B=T;

5'h1F:decodemap_5B4B=I;

当检测的JK时,标志着一帧的开始,检测到TT时,为一帧的结束。

图5 M-BUS物理层帧格式

M-BUS通信协议链路层SYNC数据域表示同步头固定字符“0x33,0x33”。JK数据域表示帧起始字符,DATA数据域为应用数据段,FCS数据域是为了校验CRC而设立的,其值等于帧中除同步符SYNC,起始符JK和结束符TT域外的所有各域的CRC32校验和,位于TT前。ED数据域为帧结束标志符。

图6 M-BUS链路层数据帧格式

M-BUS在周期开始时,主节点依次发送请求信号给各从节点,要求从节点在600bit时间内应答。

图7 M-BUS链路过程

3 性能评估

3.1 测试环境

本文采用Linux操作系统和Microsemi公司的IGLOO2系列M2GL090-FG484I器件FPGA搭建了软件验证平台,通过编写大量测试程序在电厂系统上对其进行测试,以此来验证对所设计M-BUS总线的正确性。

3.2 测试结果

为了验证所设计的M-BUS总线协议的正确性,编写大量的测试例子对总线进行测试。图8是通过向DUT输入50MHz时钟,通过station_in、rack_in和slot_in对DUT连续输入3组ID信息,待DUT完成初始化后,在运行模式下运行下装模式功能,通过波形查看M-BUS的性能。

图8 M-BUS性能测试

测试由波形看出M-BUS通信速率为12.5Mb⁃ps,数据传输正确,M-BUS性能正确。

对M-BUS接口布局布线后的网表进行分析。

图9 M-BUS接口测试

图9 中两级同步寄存器的时钟具有固定相位关系,因此做同步处理正确。

4 结语

在本文中,提出了M-BUS总线协议的架构设计,分别对M-BUS总线应用层、数据链路层和物理层进行了自定义协议设计,该协议是开放的,只要遵循此协议的板卡都可该总线兼容,实现了应用场景扩展,并且该总线协议借鉴了传统工业现场总线的优点,具有稳定性高、安全性高、实时精准等特点。此外,通过Linux操作系统和Microsemi公司的IGLOO2系列器件FPGA搭建了软件验证平台,完成了对M-BUS总线性能测试和接口测试,作为一种高效稳定的通信协议,该总线协议可以广泛应用于工业控制、远程抄表、维护监控等领域。

猜你喜欢

应用层通信协议数据包
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
C#串口高效可靠的接收方案设计
传输层和应用层的隧道技术
基于分级保护的OA系统应用层访问控制研究
奖状训练器飞行管理系统研究
物联网技术在信息机房制冷系统中的应用
基于R8C的汽车OBD通用故障诊断仪设计
SIP协议系统模型的形式化研究