[发明专利]基于CAN总线数据传输的DDS中间件通讯方法有效
申请号: | 202011291070.9 | 申请日: | 2020-11-18 |
公开(公告)号: | CN112104538B | 公开(公告)日: | 2021-02-12 |
发明(设计)人: | 王振华;张旸;陈诚;刘洁 | 申请(专利权)人: | 奥特酷智能科技(南京)有限公司 |
主分类号: | H04L12/40 | 分类号: | H04L12/40;H04L12/24;H04L29/08;H04L29/06 |
代理公司: | 南京行高知识产权代理有限公司 32404 | 代理人: | 李晓 |
地址: | 211800 江苏省南京市*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 can 总线 数据传输 dds 中间件 通讯 方法 | ||
1.一种基于CAN总线数据传输的DDS中间件通讯方法,其特征在于包括步骤:
步骤1,在CAN总线网络中,传感器数据采集平台周期性的以广播包的方式向外发出连接请求,去发现传感器节点;
步骤2,传感器节点根据连接请求回传应答数据包,携带自身Node-ID;
步骤3,在连接请求完成后,数据分发服务DDS创建带有Topic-ID的CAN会话,并且向数据处理模块注册新的Topic,包含Topic Type、Topic Name及TopicQoS;多个Topic组成订阅登记列表;
步骤4,注册完成后创建数据发布者和订阅者,发布者创建CAN传输列表,按照每个Topic的传输优先级Priori-num和TopicQoS参数排序,产生CAN数据包,通过CAN总线接口向其订阅者发送CAN数据包;
步骤5,订阅者创建CAN列表,并按传输优先级Priori-num和TopicQoS参数排序;构造一个事件对象来通知其侦听器某个Topic-ID的CAN会话到达,收到CAN数据包后,提取出其中TopicQoS参数,并遍历CAN列表;如果CAN列表中有匹配的TopicQoS参数,则进行数据处理;否则丢弃CAN数据包;
其中,CAN数据包的CAN-ID采用扩展格式29bit,包括传输优先级Priori-num、Node-ID、Topic-ID以及DataType;DataType 占 2位,当DataType 值为0或者1时,数据帧中的数据为真实有效数据;当数据类型DataType 值为3时,表示CAN总线发送的DDS数据是多包数据,需要拆包和组包。
2.根据权利要求1所述的基于CAN总线数据传输的DDS中间件通讯方法,其特征在于,当数据类型DataType 值为3时,CAN的数据帧byte[0]的值表示DDS数据的总长度Data_Len,byte[1]表示包的序列号,byte[2..7]表示payload,为本包数据的真实有效数据。
3.根据权利要求2所述的基于CAN总线数据传输的DDS中间件通讯方法,其特征在于,所述步骤4中,产生数据包的组包过程包括:
步骤4.1,填充CAN-ID,发布者从订阅登记列表中取出传输优先级Priori-num、Topic-ID、Node-ID的值赋给结构体CanExId对应的成员变量;
步骤4.2,填充数据区,对结构体CanData中的成员变量赋值。
4.根据权利要求3所述的基于CAN总线数据传输的DDS中间件通讯方法,其特征在于,Data_Len 8,需要组包处理数据,把DataType 赋值为3并把DataType的值填充到CAN-ID对应的DataType 数据位;把DDS数据的总长度赋给结构体CanData的成员变量Data_Len,并把结构体CanData中表示包序列号的成员变量Data_sn清0,然后从DDS的数据区中取出6个byte 数据填充到结构体CanData 的成员变量payload,CanData中的成员变量msg_len赋值为8,此时完成第一个CAN数据帧的组包,然后把组包好的CAN数据帧写入CAN发送队列;紧接着进行后续CAN数据帧的组包。
5.根据权利要求2所述的基于CAN总线数据传输的DDS中间件通讯方法,其特征在于,所述步骤5中进行数据处理的拆包过程包括:
步骤5.1,解析CAN-ID,对接收到的CAN-ID进行解析,得到传输优先级Priori-num、Topic-ID、Node-ID及DataType数据;
步骤5.2,解析数据帧中的payload数据区。
6.根据权利要求5所述的基于CAN总线数据传输的DDS中间件通讯方法,其特征在于,当DataType值为3时,计算分包总数pack_cnt,然后取出分包的序列号Data_sn = byte[1];从byte[2..7]取出6个真实数据存入DDS数据接收缓冲区,Data_sn加1,比较Data_sn和pack_cnt是否相等,如果不相等,那么接收到下一帧CAN数据后按照同样的方法拆包解析数据,并把payload中的真实有效数据存储到DDS数据接收缓冲区的末尾位置,如此反复,直到Data_sn+1等于pack_cnt才算完成一帧DDS数据的接收。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于奥特酷智能科技(南京)有限公司,未经奥特酷智能科技(南京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011291070.9/1.html,转载请声明来源钻瓜专利网。