一种改进的多功能车辆总线周期扫描表的配置方法
2020-05-20朱慧龙
范 昊, 刘 汉, 朱慧龙
(中车青岛四方机车车辆股份有限公司, 山东青岛 266000)
多功能车辆总线(MVB)[1]是列车通信网络标准IEC61375[2]中定义的用于车辆内部各功能模块之间的实现互联的网络总线,MVB可以将编程设备相互连接,也可以将编程设备与其传感器和执行机构连接。MVB采用主从工作方式,同时主设备存储周期扫描表,用来决定主帧的发送顺序,从而达到控制整个网络的运行目的[3]。迄今为止,众多学者对MVB周期扫描表的构建和优化做了大量的工作[4-9],并得到了一定的成果。对MVB周期扫描表的构建方法进行研究,能够为MVB网络的应用提供理论指导,满足实际应用的需求。将引入总线负载均匀度[9]作为构建周期扫描表的约束条件,提出一种改进的MVB周期扫描表优化算法。总线负载均匀度是衡量MVB端口是否均匀排列的指标,总线中端口的排列越均匀,总线负载均匀度就越低,越能有效改善总线周期负载的分布,从而提高列车网络控制系统[10]的实时性和可靠性。
1 MVB周期扫描表
MVB通过一个总线设备进行控制访问,同时保证该设备能够在轮询周期内维持总线控制权。在该轮询周期内,该设备会按照周期扫描表规定的端口顺序发送主帧,其他设备只能发送从帧作为响应,并且是只有与主帧中相互匹配的端口才能发送。
1.1 基本周期
MVB主设备将每一个轮询时间片划分为固定的时间片,这个固定的时间片称为基本周期,记为Tbp,Tbp的取值范围如下[3]:
1 ms≤Tbp≤2.5 ms
(1)
如图1所示,可以看到一个基本周期Tbp分为周期相、监督相、事件相和保护相4个相,且4个相的作用各不一样。在周期相中,主设备对周期性数据进行轮询;在事件相中,主设备对偶发性事件进行查询;在监督相中,主设备进行设备扫描,同时传递轮询主权。由监督相、事件相和保护相构成偶发相,在偶发相的最后阶段,主设备会发送一个保护相作为缓冲段,为下一个周期的正确开始起到保护作用。IEC 61375标准建议,在每个基本周期中留出30%的时间作为偶发相[8]。
1.2 周期数据的报文定时
MVB的周期数据包括主帧和从帧,其周期数据报文定时如图2所示。
图1 基本周期
图2 周期数据报文定时
根据图2可知,总线完成一次MVB数据传输,应首先由总线主设备发送主帧,然后由从设备响应并应答从帧。完成一次上述过程所需的时间为:
t=t_mt_ms+t_s+t_sm
(2)
其中,t_m表示发送主帧所需要的时间;t_ms表示主帧到从帧之间的响应间隔;t_s表示发送从帧所需要的时间;t_sm表示从帧到下一主帧的时间间隔[8]。根据IEC 61375标准的规定,在网络最不通顺的情况下,t_ms等于42.7 μs。
1.3 周期扫描表定义
周期扫描表是周期数据实时轮询的依据,所有被轮询的端口都会在周期扫描表上展示。周期数据被轮询的周期称为特征周期Tip,特征周期等于基本周期的2的n次方,即
Tip=Tbp×2n,n=0,1,2,…,10
(3)
宏周期是最长的特征周期,但是不能超过1 024Tbp,如果基本周期Tbp定义为1 ms,那么在周期扫描表中最长的宏周期不应超过1 024 ms。
2 周期扫描表的构成规则
根据IEC 61375标准给出的周期扫描表构建基本规则,假设基本周期为1 ms,可得出周期扫描表构建过程如下[9]:
(1)通过特征周期Tip对周期数据进行分类,并将相同特征周期的周期数据编成一组,比如Cycle_2表示每2 ms轮询一次的周期数据组合;
(2)一个宏周期内的所有循环组成宏循环,宏循环为1 024个基本周期,即1 024 ms;
(3)一个周期数据经过宏循环的轮询,在其之后必然发生主权的转移,链路监视接口命令可以在每一个宏循环后使一个轮询终止;
(4)一个循环分为多个子循环,比如Cycle_32表示有32个子循环,Cycle_3.1表示Cycle_3的第2个子循环;
(5)保留每个宏循环的最后一个偶发相,为主权的转移做准备。
虽然不同周期如何划分子循环并没有一定的限制,但为了更好的性能,IEC 61375标准建议在宏周期中将端口均匀地排列循环。这也是引入总线负载均匀度的原因,以期能得到实时性和可靠性都更好的列车网络控制系统。
3 建立周期扫描表的优化算法
根据IEC 61375标准给出的建立周期扫描表的基本规则,将总线负载均匀度[9]加入约束条件,同时设置允许人工设定优先发送周期数据,提出一种改进的多功能总线扫描表优化算法,该算法的过程如下, 流程图如图3所示。
(1)判断是否有人工设定的优先发送周期数据,如果有,先把该类周期数据按照预先设定的需要填入的基本周期序号写入到周期扫描表对应的基本周期中,随后进入步骤(2);如果没有优先发送数据,直接进入步骤(2);
(2)将MVB总线上的设备的信息,包括其名称、轮询周期、数据长度等信息写入到所设定好的数组中;
(3)将特征周期相同的周期数据进行分类,建立对应的分类表;
(4)将同一个特征周期的周期数据按照不同的数据长度从小到大进行排序,并统计好其数量,记录在分类表中;
(5)从当前最小的特征周期的数据开始,设定好每个基本周期所允许的周期数据的最大数量k值(即每个基本周期最多不能写入超过k个周期数据),判断当前基本周期中已有的周期数据的报文时间和需要填入的周期数据的报文时间之和是否超过基本周期的65%(根据需要设定,可以更改)或者判断两者相加后的周期数据的数量是否超出k值,超过则略过当前的基本周期,跳到下一个基本周期,重新进入步骤(5);否则将该周期数据写入当前的基本周期中;
(6)判断所有周期数据是否都已经写入,如果均已写入,则此次周期扫描表完成配置,进入步骤(7);如果没有完全写入,重新进入步骤(4);
(7)计算并保存当前周期扫描表的均匀度[9],同时保存本次周期扫描表。均匀度的公式如式(4)。
(4)
(8)更换步骤(5)中的k值,重复步骤(4)、(5)、(6),计算所有设定的k并记录相应数据后,进入步骤(9);
(9)均匀度最佳的周期扫描表即为所需的列车多功能车辆总线周期扫描表;
图3 基于优化算法的周期扫描表的流程图
4 MVB周期扫描表软件及实例
4.1 周期扫描表生成软件
结合上述周期扫描表优化算法,使用C#语言开发了MVB周期扫描表生成软件,如图4所示。界面右边是图形显示区域,周期扫描表没有生成前,右边显示为空白。基本周期以1 ms计算,软件同时提供手动输入端口信息和导入端口配置文件两种输入方式,输入的端口信息会在界面左边第1个表中呈现。点击计算负载率后,软件会根据周期扫描表算法得到周期扫描表,并在界面左边第2个表中显示每个基本周期端口的排列顺序以及相关信息。点击导出负载率文件,可以将文件以“txt”格式文件导出分析。如果需要将某端口数据进行人工设定优先发送,比如需要人工设定零端口在周期扫描表的第1个基本周期首次发送数据,那么需要在“端口号”栏中输入“0A”,在“手动调整位置”栏中输入“1”,点击“计算负载率”按钮后,界面左边第2个表会生产相应的周期扫描表,同时0AH端口会在扫描表的第1个基本周期出现。
图4 MVB周期扫描表生成软件
4.2 实例分析
下面针对两个实例,利用上述优化算法和逐步填空[2]的方法分别配置周期扫描表,对两种算法得到的周期扫描表进行对比。
4.2.1实例1
实例1中,MVB总线上总共有238个需要配置的端口,端口信息包括端口基本周期、端口数据长度、端口轮询周期、报文时间、端口描述以及手动调整位置,为简单易懂,仅给出了端口的数据长度、报文时间和轮询周期的信息,如表1所示。其中数据长度是自主定义的,报文时间是通过仪器实测出来的发送某一字节长度的数据所需的时间。
表1 端口参数
从表1可以看出轮询周期为16 ms的有10个端口,轮询周期为32 ms 的有22个端口,轮询周期为64 ms的有41个端口,轮询周期为128 ms的有0个端口,轮询周期为256 ms的有29个端口,轮询周期为512 ms的有40个端口,轮询周期为1 024 ms的有96个端口。将端口信息形成的配置文件导入软件生成周期扫描表结果,由于端口数量多达238个,因此仅能部分呈现两种方法得到的周期扫描表的结果,图5为优化算法得到的结果,图6为逐步填空方法得到结果。周期扫描表的第1栏显示的是每个基本周期的序号,第2栏显示的每个基本周期的负载率,第3栏显示的是在当前这个基本周期的端口排序,第4栏和第5栏分别是端口数据长度和端口轮询周期。图7和图8分别为优化算法得到的周期扫描表的柱状图表示形式和逐步填空的方法得到的周期扫描表的柱状图表示形式。
从图7可以很明显地看出负载率为0的情况较少,对负载率为0的情况进行统计,结果仅有57个周期负载率为0,负载率最高为61.08%,最低为16.1%,均匀度为26.11%。从图8中可以看出负载率为0的情况较多,有172个周期负载率为0,负载率最高为62.8%,最低为30.5%,均匀度为31.14%。虽然两种算法得到的周期扫描表均符合IEC 61375标准,但是我们可以很明显地看到优化算法得到的周期扫描表分布更为均匀,周期负载率波动幅度更小。
图5 优化算法得到的周期扫描表部分结果
图6 逐步填空方法得到的周期扫描表部分结果
4.2.2实例2
实例2中,MVB总线上总共有219个需要配置的端口,如表2所示。其中轮询周期为16 ms的有0个端口,轮询周期为32 ms 的有59个端口,轮询周期为64 ms的有26个端口,轮询周期为128 ms的有0个端口,轮询周期为256 ms的有43个端口,轮询周期为512 ms的有39个端口,轮询周期为1 024 ms的有52个端口。同实例1,将端口信息形成的配置文件导入软件生成周期扫描表结果,图9为优化算法得到的结果,图10为逐步填空方法得到结果,图11和图12分别为优化算法得到的周期扫描表的柱状图表示形式和逐步填空的方法得到的周期扫描表的柱状图表示形式。
图7 优化算法得到的周期扫描表的柱状图
图8 逐步填空方法得到的周期扫描表的柱状图
表2 端口参数
从图11可以比较明显地看出负载率为0的情况较少,对负载率为0的情况进行统计,结果仅有38个周期负载率为0,负载率最高为51. 8%,最低为33.21%,均匀度为26.6%;从图12中可以看出负载率为0的情况较多,有49个周期负载率为0,负载率最高为51%,最低为16%,均匀度为27.47%。虽然两种算法得到的周期扫描表均符合IEC 61375标准,但是我们可以很明显地看到优化算法得到的周期扫描表分布更为均匀,周期负载率波动幅度更小,能得到更高的实时性和可靠性。
图9 优化算法得到的周期扫描表部分结果
图10 逐步填空方法得到的周期扫描表部分结果
图11 优化算法得到的周期扫描表的柱状图
图12 逐步填空方法得到的周期扫描表的柱状图
5 结 论
在充分分析了MVB总线周期数据的通信方式基础上,结合IEC 61375标准中关于建立周期扫描表的基本规则,提出了一种生成周期扫描表的优化算法,该优化算法将MVB总线负载均匀度加入约束条件,同时对每个基本周期可填入的周期数据的数量进行了设定。将该算法和逐步填空方法对2个实例生成的周期扫描表进行对比,从结果进行比较分析,文中提出的算法明显改善了周期数据负载率的分布,在均匀度方面优于逐步填空方法,更好地实现了周期扫描表的均匀分布,周期负载率波动幅度更小,有效提升列车网络控制系统的实时性和可靠性。该算法还可以进行人工设定优先数据,比如,在一些试验中,需要人为规定某些端口在周期扫描表选定的基本周期中发送数据,这样做可以在通过示波器采集波形或者通过MVB分析仪器进一步分析数据的时候,快速找到并分析这个端口发出的数据。最后结合该算法,开发了一款专门的周期扫描表生成软件,并结合两个具体的实例说明该算法是如何完成周期扫描表的配置。