首页> 中国专利> 汽车FlexRay总线静态段消息调度方法

汽车FlexRay总线静态段消息调度方法

摘要

本发明公开了一种汽车FlexRay总线静态段消息调度方法,提出了一个求解消息参数的整数线性规划问题模型,对于一个给定的FlexRay网络系统,该模型以节点分配的帧数与节点消息抖动值的加权和为优化目标,要求网络分配节点帧总数与节点消息抖动值加权和越小越好,以消息重复发送周期小于或等于消息重复产生周期、网络静态段节点分配帧数方程和节点消息抖动值方程为约束条件,求解出最优的消息重复发送周期,进而得到FlexRay网络静态段节点的所有消息所对应的重复发送周期以及分配的帧,从而为网络静态段参数配置提供一种算法。本发明不仅可以提高网络带宽利用率,而且适用于消息重复周期与FlexRay通信周期不同步的情况。

著录项

  • 公开/公告号CN107204881A

    专利类型发明专利

  • 公开/公告日2017-09-26

    原文格式PDF

  • 申请/专利权人 合肥工业大学;

    申请/专利号CN201710446634.3

  • 申请日2017-06-14

  • 分类号

  • 代理机构安徽合肥华信知识产权代理有限公司;

  • 代理人余成俊

  • 地址 230009 安徽省合肥市包河区屯溪路193号

  • 入库时间 2023-06-19 03:21:52

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-01-10

    授权

    授权

  • 2017-10-27

    实质审查的生效 IPC(主分类):H04L12/24 申请日:20170614

    实质审查的生效

  • 2017-09-26

    公开

    公开

说明书

技术领域

本发明涉及汽车总线网络参数配置技术领域,具体是一种汽车FlexRay总线静态段消息调度方法。

背景技术

随着汽车电子技术的发展,车身系统的控制逐步向自动化和智能化转变,汽车电气系统变得日益复杂。人们对车辆安全性、舒适性等要求也越来越高,这使得越来越多的电子控制系统被应用到汽车上,车辆总线上的数据传输量也随之激增,同时也提高了车辆数据交互精度、传输时序的需求,原有的CAN总线通信协议逐渐无法满足要求。

目前的研究工作虽然在FlexRay网络静态段的参数设计和消息的优化调度等方面取得了很多成效,但是在提高网络带宽利用率、消息分配的帧数、消息抖动等方面的综合研究较少。在消息的重复周期与FlexRay的通信周期不一致的情况下,要求消息的响应时间小于或等于其截止时间且消息抖动较小,但现有技术并不能达到这一效果。

发明内容

本发明的目的是为了适应整车控制FlexRay系统通信时可靠性和安全性的需求,提供一种汽车FlexRay总线静态段消息调度方法,其目的是最小化消息分配帧数和消息抖动值大小,研究用于计算消息重复周期参数配置的优化模型及其求解算法,进而获得FlexRay网络静态段最小分配时隙数及分配方案,最终为提高带宽利用率和良好的通信时间性能提供重要的计算方法。

本发明的技术方案如下:

一种汽车FlexRay总线静态段消息调度方法,其特征在于:具体为:

给定一个FlexRay网络,包括节点数、节点所需发送的消息流集合、所有消息的发送周期;

建立一个静态段消息设计的整数线性规划问题模型,所述模型是以节点分配的帧数与节点消息抖动值的加权和为优化目标,要求网络分配的节点帧总数与节点消息抖动值加权和越小越好,以消息重复发送周期小于或等于消息的重复产生周期、网络静态段节点分配帧数方程和节点消息抖动值方程为约束条件;通过计算获得最优节点消息重复发送周期值,利用最优消息重复发送周期值得到每个节点FlexRay静态段消息的配置参数以及分配的帧ID数,以此得到的FlexRay静态段消息调度能够节省网络带宽、消息传输抖动小、网络传输稳定。

所述的汽车FlexRay总线静态段消息调度方法,其特征在于:按如下步骤进行:

步骤1、计算节点分配帧数:

给定一个FlexRay网络为:节点数为n,对应节点i的消息流集合为Mi,任意消息M∈Mi的重复产生周期为PM、消息重复发送周期设为RPM,所述消息重复发送周期RPM为节点消息重复发送的周期,消息所能选择的重复发送周期集合为RPSM,RPSM={2q|2q≤PM},其中q∈N0,N0为自然数,即非负整数集合,且满足条件2q≤PM

设任意R∈RPSM,引入布尔变量BM,R则节点i静态段需分配帧数由式(1)计算获得:

步骤2、计算节点消息抖动值:

定义FlexRay网络在传输消息时的抖动值:开始分配给消息的FlexRay通信计数周期与初始计数周期的差值,消息抖动是由于消息不是在最开始的FlexRay通信计数周期内发送而产生的,则节点i消息抖动值JMt由式(2)计算获得:

步骤3、建立线性整数规划模型:

以R、BM,B和b为优化变量,b∈N0,其中N0为自然数,即非负整数集合,以节点消息分配帧数及节点消息抖动总值的加权求和最小化为目标,以节点消息重复发送周期小于或等于其重复产生周期为约束条件,建立用于求解最优消息重复发送周期的线性规划模型如式(3):

其中α和β为加权系数,取α=10,β=0.1;

约束条件如下:

(1)

(2)R∈RPSM={2q|2q≤PM},

(3)b∈N0且取最小值

步骤4、优化模型的求解算法:

通过求解所述线性规划模型,获得节点i消息流集合中各个消息的消息重复周期RPM的最优值、布尔变量BM,B、节点i分配帧数其中N为正整数集合,选取所有符合R∈RPSM={2q|2q≤PM}的R,计算对应符合要求,即b∈N0的b值,得出对应的和JMi,然后算出一个或多个符合线性规划约束条件的ω值,比较这些ω值,并选取其中最小的ω值作为最佳值ωbest,求解算法按如下步骤进行:

(4.1)令q=0;

(4.2)消息重复周期R∈RPSM={2q|2q≤PM};

(4.3)判断布尔变量BM,R,根据步骤(3)中的约束条件(3),要求节点i分配帧数为正整数,求解出最小整数值b使步骤(3)中的约束条件(3)两边成立,若不存在b∈N0满足步骤(3)中的约束条件(3),则返回步骤(4.2),且将q值增加1,若2q>PM,则返回结束;

(4.4)将BP,R、PM和R代入步骤(2)中的式(2)求解节点i消息抖动值JMi,将节点所有消息按上述步骤求解抖动值,然后根据求解节点消息抖动值之和,若有多个R∈RPSM符合要求,则将所有符合要求的节点i分配帧数和消息抖动值JMi求解出来;

(4.5)利用步骤(4.3)得到的节点i分配帧数和步骤(4.4)得到的节点i消息抖动值之和根据步骤(3)中的式(3)求解获得当前优化目标ω,若当前优化目标ω较之前求解的ω值而言更小,则令当前优化目标ω为最佳值ωbest

步骤5、节点网络静态段时隙及消息抖动分配算法:

通过求解步骤4的优化模型,可得出各个节点的消息最优重复周期及分配的帧数,以任意节点i为例,得到任意消息M∈Mi的重复周期为RPMbest,消息抖动为OFM引入偏移常量集合OF={0,1,…,63},消息M分配ID为FIDM,初始分配帧ID为FIDinit,消息当前分配帧ID为FIDd,将消息流集合Mi中的消息按消息重复周期排序生成集合LMi,具体分配算法如下:

(5.1)FIDd=FIDinit,u=a,当KMi为非空集合时继续,否则退出;

(5.2)如果u≥1,则令u=0,OF={0,1,…,63},FIDd=FIDd+1;

(5.3)如果0≤u<1,则移除集合LMi中的第一个元素,u=u+1/RPMbest,分配FIDM=FIDd,分配集合OF中最小元素OFmin给OFM,即OFM=OFmin,然后移除集合OF中满足OFmin+k·RPMbest,k∈N0的所有元素,若u<1,则重复步骤(5.3),否则返回到步骤(5.2);

(5.4)返回关于消息M参数的三元数组(RPMbest,OFM,FIDM),完成分配。

与现有技术相比,本发明的有益效果体现在:

1、本发明给出的求解节点消息最优重复周期模型与帧分配算法模型,不仅能够减少静态段传输消息所需的帧数,而且能够减小消息的抖动值,从而大大提高FlexRay总线带宽利用率和网络消息传输稳定性。

2、本发明给出的FlexRay网络静态段消息设计算法,可以直接应用到汽车FlexRay总线参数的配置,为FlexRay网络系统的静态段消息调度提供便利。

附图说明

图1为发明算法流程图。

图2为本发明中求解节点消息最优重复周期算法流程图。

图3为本发明中消息分配帧ID及抖动算法流程图。

图4为本发明中输入模块流程图。

图5为本发明中参数计算模块流程图。

具体实施方式

参见附图,一种汽车FlexRay总线静态段消息调度方法,具体为:

给定一个FlexRay网络,包括节点数、节点所需发送的消息流集合、所有消息的发送周期;

建立一个静态段消息设计的整数线性规划问题模型,模型是以节点分配的帧数与节点消息抖动值的加权和为优化目标,要求网络分配的节点帧总数与节点消息抖动值加权和越小越好,以消息重复发送周期小于或等于消息的重复产生周期、网络静态段节点分配帧数方程和节点消息抖动值方程为约束条件;通过计算获得最优节点消息重复发送周期值,利用最优消息重复发送周期值得到每个节点FlexRay静态段消息的配置参数以及分配的帧ID数,以此得到的FlexRay静态段消息调度能够节省网络带宽、消息传输抖动小、网络传输稳定。

具体按如下步骤进行:

步骤1、计算节点分配帧数:

给定一个FlexRay网络为:节点数为n,对应节点i的消息流集合为Mi,任意消息M∈Mt的重复产生周期为PM、消息重复发送周期设为RPM,消息重复发送周期RPM为节点消息重复发送的周期,消息所能选择的重复发送周期集合为RPSM,RPSM={2q|2q≤PM},其中q∈N0,N0为自然数,即非负整数集合,且满足条件2q≤PM

设任意R∈RPSM,引入布尔变量BM,R则节点i静态段需分配帧数由式(1)计算获得:

步骤2、计算节点消息抖动值:

定义FlexRay网络在传输消息时的抖动值:开始分配给消息的FlexRay通信计数周期与初始计数周期的差值,消息抖动是由于消息不是在最开始的FlexRay通信计数周期内发送而产生的,则节点i消息抖动值JMi由式(2)计算获得:

步骤3、建立线性整数规划模型:

以R、BM,R和b为优化变量,b∈N0,其中N0为自然数,即非负整数集合,以节点消息分配帧数及节点消息抖动总值的加权求和最小化为目标,以节点消息重复发送周期小于或等于其重复产生周期为约束条件,建立用于求解最优消息重复发送周期的线性规划模型如式(3):

其中α和β为加权系数,取α=10,β=0.1;

约束条件如下:

(1)

(2)R∈RPSM={2q|2q≤PM},

(3)b∈N0且取最小值

步骤4、优化模型的求解算法:

通过求解线性规划模型,获得节点i消息流集合中各个消息的消息重复周期RPM的最优值、布尔变量BM,R、节点i分配帧数其中N为正整数集合,选取所有符合R∈RPSM={2q|2q≤PM}的R,计算对应符合要求,即b∈N0的b值,得出对应的和JMi,然后算出一个或多个符合线性规划约束条件的ω值,比较这些ω值,并选取其中最小的ω值作为最佳值ωbest,求解算法按如下步骤进行:

(4.1)令q=0;

(4.2)消息重复周期R∈RPSM={2q|2q≤PM};

(4.3)判断布尔变量BM,R,根据步骤(3)中的约束条件(3),要求节点i分配帧数为正整数,求解出最小整数值b使步骤(3)中的约束条件(3)两边成立,若不存在b∈N0满足步骤(3)中的约束条件(3),则返回步骤(4.2),且将q值增加1,若2q>PM,则返回结束;

(4.4)将BP,R、PM和R代入步骤(2)中的式(2)求解节点i消息抖动值JMi,将节点所有消息按上述步骤求解抖动值,然后根据求解节点消息抖动值之和,若有多个R∈RPSM符合要求,则将所有符合要求的节点i分配帧数和消息抖动值JMi求解出来;

(4.5)利用步骤(4.3)得到的节点i分配帧数和步骤(4.4)得到的节点i消息抖动值之和根据步骤(3)中的式(3)求解获得当前优化目标ω,若当前优化目标ω较之前求解的ω值而言更小,则令当前优化目标ω为最佳值ωbest

步骤5、节点网络静态段时隙及消息抖动分配算法:

通过求解步骤4的优化模型,可得出各个节点的消息最优重复周期及分配的帧数,以任意节点i为例,得到任意消息M∈Mi的重复周期为RPMbest,消息抖动为OFM引入偏移常量集合OF={0,1,...,63},消息M分配ID为FIDM,初始分配帧ID为FIDinit,消息当前分配帧ID为FIDd,将消息流集合Mi中的消息按消息重复周期排序生成集合LMi,具体分配算法如下:

(5.1)FIDd=FIDinit,u=0,当LMi为非空集合时继续,否则退出;

(5.2)如果u≥1,则令u=0,OF={0,1,…,63},FIDd=FIDd+1;

(5.3)如果0≤u<1,则移除集合LMi中的第一个元素,u=u+1/RPMbest,分配FIDM=FIDd,分配集合OF中最小元素OFmin给OFM,即OFM=OFmin,然后移除集合OF中满足OFmin+k·RPMbest,k∈N0的所有元素,若u<1,则重复步骤(5.3),否则返回到步骤(5.2);

(5.4)返回关于消息M参数的三元数组(RPMbest,OFM,FIDM),完成分配。

以下结合附图对本发明作进一步的说明:

本发明提出的一种汽车FlexRay总线静态段消息调度方法可以通过程序实现。将实现该方法的整个程序分为三个模块:输入模块、参数计算模块、输出模块。输入模块负责节点数及消息集合等参数的输入与格式检测;参数计算模块根据本发明提出的求解算法计算每个节点中消息的最优重复周期、最小消息抖动值以及分配的帧ID;输出模块则负责消息参数和FlexRay网络配置参数的输出。

定义结构体struct Message{int period_repetition;int jitter;int period_send;int i}为消息特性的数据结构,其中period_repetition为消息M的重复周期,是待优化的消息参数,jitter为消息抖动,period_send为发送周期,i为消息所属节点。

定义结构体struct Node{int number;Struct messgage M_Array[maxMCount];int LM_Array[maxMCount];int M_count;int FR_ID[IDCount]}为节点特性的数据结构,其中number为节点序号,表示第几个节点;M_Array[max MCount]保存所有节点中所有消息,maxMCount表示节点上消息的最大数目,默认值为100;LM_Array[maxMCount]表示节点消息按照重复周期从小到大排序的数组;M_count为节点中消息的数量;FR_ID[IDCount]统计分配给节点的帧ID和数目。定义数组struct messgage m_Array[maxMCount]为中间变量保存节点内部所有消息信息;定义数组struct Node n_Array[maxNCount]保存网络中所有节点,其中maxNCount为网络中节点的最大数目,默认值为30,定义数组struct RM n_Array[RPCount]保存消息重复周期集合,定义函数CalculateILP_FNandJit(int i)用于求解消息M的最优重复周期以及抖动值,定义函数AllocationFID_M(int i)用于分配节点i消息所属的帧。

定义函数CheckFormat(int i)检查所有节点n_Array[i]内部元素的格式,如果全部正确,则函数返回true,否则返回flase;定义函数setNode(struct Node nd)将节点i内的信息放入数组n_Array[i]中;定义函数CalculateFrameNumber(int i)计算节点i需分配的帧数;定义函数CalculateJitterM(int i,int m)计算消息编号为m的消息抖动;定义CalculateFNandJIT(int i)计算节点i的分配帧数以及抖动的加权和,定义boolen全局变量isSuccessful表示参数计算模块是否有解。

输入模块功能的具体流程如图3所示。用户输入完数据后,对节点序号i初始化,选取节点i,对消息集合Struct messgage M_Array[maxMCount]赋初值,并对每个消息的产生周期period_send赋初值;结合函数CheckFormat(int i)检查n_Array[i]节点内部所有元素的格式:如果函数返回true,调用函数setNode(struct Node nd)将节点i内的信息放入数组n_Array[i]中,否则输出错误信息。

参数计算模块具体流程如图4所示。首先对节点序号i(0≤i≤N)和消息集合初始化,由节点i消息的重复周期集合struct RM n_Array[RPCount]结合函数CalculateFrameNumber(int i)可计算得节点i需分配的帧数;由节点i消息的发送周期intperiod_send等参数可计算消息的抖动值。由上述提到的线性规划问题求解函数CalculateILP_FNandJit(int i)可计算出最优消息重复周期,利用函数AllocationFID_M(int i)可进行消息分配给相应分配的帧,并对下一节点(节点总数用变量N表示)重复上述操作;若每个节点都返回最终参数,则计算完成,否则,置变量isSuccessful为false并终止运算。

输出模块具体流程如图5所示。判断变量isSuccessful值:如果变量值为true,输出所有消息的参数struct Message{int period_repetition;int jitter;int period_send;int i},节点i所分配的帧ID结果CalculateFrameNumber(int i)以及节点i消息对应分配的帧。

实际例:根据一个实际应用的FlexRay网络系统,已知FlexRay总线上有3个节点,Mi表示整个节点系统内消息的编号,具体各个消息相关参数如下表1所示,输入步骤如图3所示:

表1节点消息参数初始化表

消息名称M1M2M3M4M5M6M7M8M9所属节点222212112发送周期214222222消息名称M10M11M12M13M14M15M16M17M18所属节点222222111发送周期224242222消息名称M19M20M21M22M23M24M25M26M27所属节点112223312发送周期201020202050100502消息名称M28M29M30M31M32M33M34M35M36所属节点111111131发送周期2020204004002002004400消息名称M37M38M39M40M41所属节点12231发送周期40040040040020

节点1消息重复周期计算步骤如下:

1)消息重复周期R∈RPSM={2q|2q≤PM},从最小值q=0开始代入;

2)判断布尔变量BM,R,代入步骤(3)中的约束条件(3)中,要求节点1分配帧数为正整数,因此可求出最小整数值b使等式两边成立,若不存在b∈N0满足步骤(3)中的约束条件(3),则返回第一步,且且q=q+1,若2q>PM,则返回结束;

3)将BP,R,PM,R代入步骤(2)中的式(2)中求解节点1消息抖动值JMi

4)将上述步骤2)、3)得到的节点1分配帧数和消息抖动值JMi代入步骤(3)中的式(3)中求解优化目标ω,其中α=10,β=0.1,与之前值进行比较,若当前ω更小,则保存ωbest=ω。

其他节点计算步骤和节点1类同,将表1参数输入程序中,可得到总线上所有消息的最优重复周期如下表2所示:

表2消息最优重复周期计算结果

消息名称M1M2M3M4M5M6M7M8M9最优重复周期214222222消息名称M10M11M12M13M14M15M16M17M18最优重复周期224242222消息名称M19M20M21M22M23M24M25M26M27最优重复周期1681616163264322消息名称M28M29M30M31M32M33M34M35M36最优重复周期16161664646464464消息名称M37M38M39M40M41最优重复周期6464646416

计算得到消息的最优重复周期后,将最优重复周期代入公式求解每个消息的分配帧ID以及节点分配的帧ID数,具体步骤如下:

1)FIDd=FIDinit,u=0,当LMi为非空集合时继续,否则退出;

2)如果u≥1,则令u=0,OF={0,1,…,63},FIDd=FIDd+1;

3)如果0≤u<1,则移除集合LMi中的第一个元素,u=u+1/RPMbest,分配FIDM=FIDd,分配集合OF中最小元素OFmin给OFM,即OFM=OFmin,然后移除集合OF中满足OFmin+k·RPMbest,k∈N0的所有元素,若u<1,则重复步骤3),否则返回到步骤2);

4)返回关于消息M参数的三元数组(RPMbest,OFM,FIDM),完成分配。

其他节点计算步骤和节点1类同,将表2参数输入程序中,可得到总线上所有消息的分配帧ID以及节点分配的帧总数如下表3、4所示:

表3节点消息分配帧ID计算结果

消息名称M1M2M3M4M5M6M7M8M9消息分配ID549506016消息名称M10M11M12M13M14M15M16M17M18消息分配ID7798108122消息名称M19M20M21M22M23M24M25M26M27消息分配MID33101010111139消息名称M28M12M30M31M32M33M34M35M36消息分配ID3333333113消息名称M37M38M39M40M41消息分配ID31010113

表4节点分配帧ID及总数计算结果

综上所述,表2、3、4中数据即为该实例下总线设计的全部输出结果。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号