基于LabVIEW的一种时间触发协议设计实现
2021-03-15李小卿
刘 伟,李小卿,胡 车
(1.北京中天星控科技开发有限公司 西安分公司,陕西 西安 710076;2.西安现代控制技术研究所 系统测试与仿真评估中心,陕西 西安 710065)
随着工业通信系统的复杂程度逐渐提高,对于高速、准确、灵活的通信方式的依赖程度更加深入。目前实际应用的通信总线大多为事件触发模式,通信终端根据运行情况随机发送数据。在复杂通信环境中,如多任务进行数据传输时,这种模式传递数据的可靠性、实时性难以满足实际需求[1]。
基于时间触发协议的通信方式,在通信网络中根据唯一的高速同步时钟,可按照预先定义的时间序列进行数据的收发控制,实现对通信数据高速可靠地传输。
FlexRay总线是基于时间触发协议的工业总线,通过2条独立的物理线路进行通信,每一条速率最大可达到10 Mbit/s[2],可进行多种网络拓扑,是一款具备高可靠性、高实时性、高容错性的工业总线[3]。它既考虑了时间同步、通信调度和容错机制,又考虑了传输速度、安全性、操作灵活性、实时、分布式智能、网络拓扑等[4]。FlexRay总线与传统CAN总线相比,在传输效率、可靠性和灵活性方面具有较大的优势[5]。但是,由于FlexRay总线的参数数量较多,通信设计复杂程度很高,所以在实际应用中较为困难。
本文针对飞思卡尔(Freescale)公司的MFR4310芯片作为FlexRay总线通信控制器,通过设计一种针对FlexRay总线协议的软件,可降低FlexRay总线在通信系统中的设计难度,准确方便地实现FlexRay总线的应用。
1 总线协议
1.1 节点
FlexRay节点包括主机处理器、通信控制器、总线驱动器和总线监控器等设备。处理器产生和提供数据,进而通过FlexRay控制器将数据传送出去。总线驱动器连接通信控制器和总线,或是连接总线监视器和总线。主处理器把FlexRay控制器分配的时隙发送给总线监视器,然后总线监视器允许FlexRay控制器在这些时隙中传输数据。
1.2 帧格式
FlexRay数据帧由帧头、负载段和帧尾3部分组成(见图1)。帧头由5个字节组成,帧ID为11位,有效数据长度为7位,头部CRC为11位,周期计数为6位。负载段长度由0~254个字节组成。帧尾是只含有单个的数据域,由3个字节组成[6]。
图1 FlexRay数据帧格式
1.3 通信方式
FlexRay总线数据通信方式为周期循环,每个周期由静态段、动态段、符号段、空闲段组成(见图2)。FlexRay符合时分多路访问(TDMS)机制,节点与数据都被分配了确定的时隙,时隙是周期性重复的,所以总线上的数据访问时间是可预测的。FlexRay可通过参数设置对静态段、动态段的长度进行灵活设计。
图2 FlexRay周期组成
2 软件设计实现
软件采用NI公司的LabVIEW 2015版进行设计,LabVIEW是一款G语言编辑软件,其拥有高效的界面设计、强大的数学与信号算法、丰富的数据通信支持,日益被广泛应用在测试测控领域。LabVIEW的程序文件称为VI,每一个VI都可以调用或被调用,从而组成层次分明的LabVIEW程序[7]。
2.1 软件架构设计
FlexRay总线协议设计软件(以下统称为协议软件)分为3层,分别是驱动层、数据层和交互层(见图3)。
1)驱动层位于整个软件的底层,通过LabVIEW调用动态链接库的形式,完成软件与硬件之间的数据交互。
Graham找到了一个极为吸引人的角度,靠近动作者、向下拍摄。正在摔跤的两人正好构成画面的对角线,将观者的视线从左向右引导,一直到Dylan的脸,而Dylan的头部也正处于对焦清晰的地方。他双眼向下凝神观看的神情,为画面增添了不少神韵。Graham在当天拍摄了很多张照片,所以他在挑选照片时能有充足的备选,可以从中选出各个画面要素组合中最满意的。很可惜的是这幅作品的清晰度还没有做到精准完美,但这毕竟是拍摄动作场景而非人物肖像,所以总体而言,还是瑕不掩瑜的。
2)数据层是整个软件的核心关键,主要工作内容是对所有总线参数的分类、设计、计算、验证、管理、负载段数据及标识的设计,以及硬件状态的解析。
3)交互层是软件的人机交互窗口,提供友好的交互界面,完成对FlexRay总线设计各种控制操作与状态查看。
图3 软件架构示意图
2.2 软件流程与主界面设计
协议软件按照功能流程主要分为协议参数与数据设计部分、总线通信参数下装配置部分、协议参数与数据保存部分。软件工作流程如图4所示。
图4 软件工作流程示意图
协议软件主界面(见图5)主要按功能分为4个区:左上方为软件控制区,左下方为协议参数显示调整区,右上方为总线网络拓扑显示与硬件状态显示区,右下方为时隙调度设计查看区。
2.3 网络拓扑设计
根据FlexRay总线的特性,其网络拓扑主要分为3种:总线型、星型、总线星型混合型,在星型结构中还存在级联方式。由于FlexRay总线是独立双通道方式,因此可以设计单或双通道模式,在双通道模式下,不是所有节点都必须与2个通道连接[8]。与总线型相比,星型结构具有如下优点:1)在接收器与发送器之间提供点到点连接;2)错误分离功能。
图5 协议软件主界面
图6 网络拓扑设计界面
图7 网络拓扑显示界面
协议软件目前提供总线型和星型拓扑设计,网络拓扑设计界面与显示界面分别如图6和图7所示(以总线型拓扑为例)。
2.4 协议参数设计
FlexRay总线协议的可变参数非常多,包含整个网络的节点簇参数和每个节点自身的节点参数。通过分类设计,将节点簇参数与节点参数分为3类:基础参数、高级工程参数和关联计算参数。
1)基础参数是指用户所必须设置,或者大多数应用需要更改的参数。节点簇和节点的基础参数见表1。
表1 基础参数表
2)高级工程参数是指用户可以设置,但一般不需要设置的参数,或者只能根据协议约束条件推出取值范围,而无法计算确定结果的参数。高级工程参数表见表2。
表2 高级工程参数表
3)关联计算参数可以由协议常数、基础参数和高级工程参数计算而来,不需要用户设置,如每bit周期时间gdBit=1/gBaudRate,其他计算公式参考协议。
2.5 时隙调度设计
完成FlexRay总线协议参数设计后,总线通信周期中静态段的数量可根据参数“gNumberOfstaticSlots”确定,而动态段可根据实际需求通过参数“SwitchOfDynamic-Segment”进行选择,动态段的最小时隙数量根据参数“gNumberOfMiniSlots”确定,动态时隙的时间长度还与实际的动态负载数据长度有关,具体每周期能发送的动态时隙数量会根据实际总线数据传输情况动态确定[9]。协议软件提供通信时隙调度设计,可直观地完成每一个时隙的收发节点与发送数据配置。时隙设计界面如图8所示。
图8 时隙设计界面
2.6 参数编译计算与导出
在参数下装到硬件前,需要根据Flex-Ray总线协议约束的条件对所有参数进行编辑计算,当满足所有约束条件后参数有效,允许下装。
例如,gdNIT参数协议规定的范围为(2≤gdNIT≤805),其约束计算公式如下。
1)有动态段:
gdNIT=max(adRemRateCalculation,(adRe
mOffsetCalculation+adOffsetCorrection))
+(gMacroPerCycle-max(adRemRateCalculation,(adRemOffsetCalculation+adOffsetCorrection))-adActionPointDifference-gNumberOfStaticSlots*gdStaticSlot-gdSymbolWindow) % gdMinislot
2)无动态段:
gdNIT=gMacroPerCycleg-NumberOfStaticSlots * gdStaticSlot -gdSymbolWindow
当以其他方式进行FlexRay通信设计时,协议软件可将所有参数的配置结果根据固定格式进行导出,为设计提供参考,简化通信的实现难度。
3 结语
时间触发协议的高速、实时、灵活等优点,现已在车辆、武器系统等领域中逐渐应用,以适应复杂的通信环境。协议软件大大简化了FlexRay总线通信的设计难度,分类整理了所有FlexRay协议参数,提供设计者根据不同需求进行总线协议设计。希望协议软件能够对FlexRay总线的推广应用有所帮助。