发明名称 车载电子总线静态段通讯扩容方法
摘要 本发明公开了一种车载电子总线静态段通讯扩容方法,包括以下步骤:步骤一:确定ECU的任务和消息的属性和发送接收关系;步骤二:将仅发送信号的任务分配到传感器上,将仅接收信号的任务分配到执行器上,其余的任务既要接收信号也要发送信号,将他们分配到各个ECU上;步骤三:完成每个静态槽的归属,信号到静态槽的映射,任务配置和消息配置的依赖关系;步骤四:将传感器、ECU和执行器的任务、消息数据按照步骤三建立配置系统,求出所需的最小静态槽个数。与现有技术相比,使用本发明所述的方法减小了一个分布式应用系统在通讯时所占用的FlexRay总线上静态槽的个数,有利于未来的系统升级和扩展。
申请公布号 CN102035706B 申请公布日期 2013.01.30
申请号 CN201010569884.4 申请日期 2010.11.29
申请人 浙江大学 发明人 顾宗华;李红;李楠;孙征;杨国青;吴朝晖
分类号 H04L12/40(2006.01)I 主分类号 H04L12/40(2006.01)I
代理机构 杭州裕阳专利事务所(普通合伙) 33221 代理人 江助菊
主权项 1.一种车载电子总线静态段通讯扩容方法,其特征在于包括以下步骤:步骤一:构建车载总线系统对于通过现有拓扑总线相连的多个传感器、ECU和执行器构成的拓扑结构系统,确定ECU的任务和消息的属性和发送接收关系、以及每个任务的最坏情况处理时间和每个信号的大小;步骤二:实现任务到ECU的映射和分配将仅发送信号的任务分配到传感器上,将仅接收信号的任务分配到执行器上,其余的任务既要接收信号也要发送信号,将他们分配到各个ECU上;步骤三:完成每个静态槽的归属,信号到静态槽的映射,任务配置和消息配置的依赖关系将FlexRay总线特征与约束总结为三个方面,即任务与消息配置约束,FlexRay总线配置约束与数据依赖关系约束,将约束规则通过约束规划的函数转化成可以求解的公式,每个任务采用一个三元组&lt;P,C,D&gt;来表示,其中P是任务的周期,C是任务的最坏情况处理时间,而D是其截止期,每个信号也用一个二元组&lt;S,D&gt;来表示,其中S是其位大小,D是其截止期,设任务和信号的周期为FlexRay通讯周期的2<sup>n</sup>倍,其中,n=0,1,2……,应用周期H定义为所有任务周期的最小公倍数,用SigSender<sub>j</sub>和SigReceiver<sub>j</sub>来分别表示第j个信号的发送和接收任务,对于一个给定的任务映射,可以得到所有需要在总线上发送的信号集合,称之为OutSignal,对于一个信号signal<sub>j</sub>,若其SigSender<sub>j</sub>和SigReceiver<sub>j</sub>是不同的ECU,则signal<sub>j</sub>属于OutSignal信号集;而信号集InSignal则表示ECU内部通讯的信号,这些信号不需要在总线上进行传输,SignalInEcu<sub>j</sub>用于表示发送signal<sub>j</sub>的ECU的ID,具体的约束规划包括:a.任务和消息配置在应用周期H中,每个周期性任务都处理固定次数,a<sub>i,k</sub>表示任务i的第k个实例的调用时间,f<sub>i,k</sub>则表示其结束时间,假设初始的任务释放补偿是0,因此a<sub>i,k</sub>可以通过以下公式计算,其中forall函数用来列举遍历一个集合中的所有元素,N<sub>task</sub>表示任务task的个数:<maths num="0001"><![CDATA[<math><mrow><mi>forall</mi><mrow><mo>(</mo><msub><mi>iinN</mi><mi>task</mi></msub><mo>,</mo><mi>kin</mi><mfrac><mi>H</mi><msub><mi>P</mi><mi>i</mi></msub></mfrac><mo>)</mo></mrow><mo>,</mo><msub><mi>a</mi><mrow><mi>i</mi><mo>,</mo><mi>k</mi></mrow></msub><mo>=</mo><mrow><mo>(</mo><mi>k</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><msub><mi>P</mi><mi>i</mi></msub><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>1</mn><mo>)</mo></mrow></mrow></math>]]></maths>用r<sub>i,k</sub>来表示a<sub>i,k</sub>和f<sub>i,k</sub>之间的时间间隔,这也是任务i的第k个实例的响应时间,R<sub>i</sub>代表任务i的最坏响应时间,也就是r<sub>i,k</sub>能取到的最大值,f<sub>i,k</sub>=a<sub>i,k</sub>+r<sub>i,k</sub>                (2)任务在实时系统中固定优先级配置下的最坏响应时间有以下公式,<img file="FSB00000911701800022.GIF" wi="970" he="142" />在公式(3)中,hp(i)表示比任务i优先级更高的任务集合;每个静态槽的开始和结束时间必定是静态槽长度的整数倍,用S<sup>s</sup><sub>u,v</sub>来表示通讯周期v的第u个静态槽的开始时间,<maths num="0002"><![CDATA[<math><mrow><mi>forall</mi><mrow><mo>(</mo><msub><mi>uinN</mi><mi>slot</mi></msub><mo>,</mo><mi>vin</mi><mfrac><mi>H</mi><mi>CC</mi></mfrac><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0003"><![CDATA[<math><mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>4</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0004"><![CDATA[<math><mrow><msubsup><mi>S</mi><mrow><mi>u</mi><mo>,</mo><mi>v</mi></mrow><mi>s</mi></msubsup><mo>=</mo><mrow><mo>(</mo><mi>u</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><msub><mi>L</mi><mi>slot</mi></msub><mo>+</mo><mrow><mo>(</mo><mi>v</mi><mo>-</mo><mn>1</mn><mo>)</mo></mrow><mo>&times;</mo><mi>CC</mi></mrow></math>]]></maths>对于信号j,SigLength<sub>j,v</sub>表示时间的时间间隔,其长度等于L<sub>slot</sub>,如果消息涉及的任务部署在同一个ECU上,传输不通过总线,就认为其通讯时间为0,否则就需要将消息打包并且通过一个静态槽进行传输,消息将在静态槽的开始时间进行传输,开始时间是静态槽长度的整数倍,其中,startOf函数表示某一段数值间隔的起始数值,mod操作符为求余函数,<maths num="0005"><![CDATA[<math><mrow><mi>forall</mi><mrow><mo>(</mo><mi>jinOutSignal</mi><mo>,</mo><mi>vin</mi><mfrac><mi>H</mi><mi>CC</mi></mfrac><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>5</mn><mo>)</mo></mrow></mrow></math>]]></maths>startOf(SigLength<sub>j,v</sub>)mod L<sub>slot</sub>==0b.FlexRay总线配置EtoSMap<sub>t,u</sub>代表静态槽u是否归属于ECU t,如果静态槽u归属于ECU t,则EtoSMap<sub>t,u</sub>为1,否则为0,sum函数为求和函数,forall(uin N<sub>slot</sub>),sum(tin N<sub>ecu</sub>)EtoSMap<sub>t,u</sub>≤1    (6)forall(uin N<sub>ecu</sub>),sum(tin N<sub>slot</sub>)EtoSMap<sub>i,u</sub>≥1   (7)其中N<sub>ecu</sub>表示ECU的数量,在FlexRay总线的静态槽中传输的消息包含了从一个ECU发送到另一个ECU的信号,因此打包在这个消息中的信号的总的大小不能超过静态槽的大小,StoSMap<sub>j,u,v</sub>代表了信号j是否映射到了周期v的第u个静态槽里,如果存在映射关系则为1,否则为0,forall(u in N<sub>slot</sub>,vin N<sub>cycle</sub>)  (8)sum(j in OutSignal)S<sub>j</sub>×StoSMap<sub>j,u,v</sub>≤B<sub>slot</sub>其中N<sub>cycle</sub>表示周期v的周期数量,如果OutSignal信号集当中的信号j可以在周期v的静态槽u中进行传输,换言之StoSMap<sub>j,u,v</sub>值为1,那么静态槽u必须是分配属于信号j的发送任务所在的ECU的,forall(u in N<sub>slot</sub>,v in N<sub>cycle</sub>,j in OutSignal)(9)<maths num="0006"><![CDATA[<math><mrow><msub><mi>StoSMap</mi><mrow><mi>j</mi><mo>,</mo><mi>u</mi><mo>,</mo><mi>v</mi></mrow></msub><mo>&le;</mo><msub><mi>EtoSMap</mi><mrow><mi>Sigal</mi><mi>ln</mi><mi>E</mi><msub><mi>cu</mi><mi>j</mi></msub><mo>,</mo><mi>u</mi></mrow></msub></mrow></math>]]></maths>c.数据依赖关系数据的传输分为两种,对于ECU之间的情况,信号会打包到消息中,通过总线进行传输,而对于ECU内部的,信号可以不通过总线传输,直接从发送者发给接收者,endOf函数表示某一段数值间隔的终止数值,当一个任务i要发送消息m给同一个ECU上的另一个任务i′,则有forall(m in InSignal)<maths num="0007"><![CDATA[<math><mrow><mi>endOf</mi><mrow><mo>(</mo><msub><mi>task</mi><mrow><mi>SigSende</mi><msub><mi>r</mi><mi>m</mi></msub></mrow></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow></math>]]></maths><maths num="0008"><![CDATA[<math><mrow><mo>&le;</mo><mi>startOf</mi><mrow><mo>(</mo><msub><mi>task</mi><mrow><mi>SigReceive</mi><msub><mi>r</mi><mi>m</mi></msub></mrow></msub><mo>)</mo></mrow></mrow></math>]]></maths>当ECU之间通讯,则有,forall(m in OutSignal)<maths num="0009"><![CDATA[<math><mrow><mi>endOf</mi><mrow><mo>(</mo><msub><mi>task</mi><mrow><mi>SigSende</mi><msub><mi>r</mi><mi>m</mi></msub></mrow></msub><mo>)</mo></mrow></mrow></math>]]></maths>≤startOf(signal<sub>m</sub>)                       (11)endOf(signal<sub>m</sub>)<maths num="0010"><![CDATA[<math><mrow><mo>&le;</mo><mi>startOf</mi><mrow><mo>(</mo><msub><mi>task</mi><mrow><mi>SigReceive</mi><msub><mi>r</mi><mi>m</mi></msub></mrow></msub><mo>)</mo></mrow></mrow></math>]]></maths>其中<img file="FSB00000911701800036.GIF" wi="261" he="60" />表示发送消息m的任务的时间间隔;<img file="FSB00000911701800037.GIF" wi="287" he="59" />表示接受消息m的任务的时间间隔,公式(10)和(11)用于限制周期相同或者不同的发送和接收任务,如果二者周期相同,在每个周期内用以上两个公式,否则,在一个完成的消息传输周期中应用公式;d.最小化所占用的静态槽目标函数中的minimize表示最小化约束函数,minimize sum(u in N<sub>ecu</sub>,v in N<sub>slot</sub>)EtoSMap<sub>u,v</sub>        (12)上述关系式中,BR(Bit Rate),即比特率,有三种选择,2.5MBit/s,5MBit/s和10MBit/s;CC(Cycle Length),即FlexRay周期的长度,这项参数配置为以下预定值:1000us,5000us或者8000us;N<sub>channel</sub>是FlexRay总线中物理信道的数量,设置为1;N<sub>slot</sub>是FlexRay静态段中静态槽的数量,其取值范围是2到1023;L<sub>slot</sub>是每个静态槽的长度,其取值可以通过以下计算公式计算得到:L<sub>slot</sub>=CC/N<sub>slot</sub>;B<sub>slot</sub>是一个静态槽中的位大小,它的取值限定了一个静态槽中所能传输的消息的大小;步骤四:求解将传感器、ECU和执行器上的任务和总线上的消息数据按照步骤三建立配置系统,并且使用IBM ILOG OPL-CPLEX Analyst Studio Teaching Edition Trial6.3来对约束规划配置进行求解,求出所需的最小静态槽个数。
地址 310027 浙江省杭州市西湖区浙大路38号