一种CAN总线环境下实现服务化的方法技术

技术编号:27751630 阅读:47 留言:0更新日期:2021-03-19 13:47
一种CAN总线环境下实现服务化的方法,包括以下步骤:步骤100,客户端从空闲链表中申请CAN_OBJ对象,设置对象属性,将对象状态设为“使用”,通过接收地址指向缓存队列,将服务查询调用帧置入发送缓存队列;步骤200,客户端发送缓存队列等待接收发送任务,当有数据置入后将数据发送;步骤300,服务端接收缓存队列挂起等待查询或调用信息;步骤400,客户端接收到调用帧后,根据查询返回帧中的定位CAN_OBJ对象,再根据接收地址将消息发送到接收缓存队列中,唤醒调用线程;步骤500,将CAN_OBJ对象释放,放回空闲链表的尾部,删除接收缓存队列。本发明专利技术提升通信传输能力,有效支持对时延要求较低的服务。

【技术实现步骤摘要】
一种CAN总线环境下实现服务化的方法
本专利技术属于服务计算领域,特别涉及一种CAN总线环境下实现服务化的方法。
技术介绍
自1998年美国麻省理工学院创造性地提出了当时被称作EPC系统的“物联网”的构想之后,物联网被认为将是信息科技产业的第三次革命,越来越多的发达国家和地区将其作为未来发展的战略制高点之一。随着物联网相关技术的普及,相关智能的嵌入式设备的研发和部署,智能汽车、智能农业、智能物流等越来越多的领域应运而生。在本课题中,将微服务架构的实现应用于智能汽车项目中,智能汽车内部模块通过CAN总线协议实现数据交换,不同的模块支持单一细小的功能,相互独立,可以支持独立开发。并且智能汽车内部模块可以远程调用车外服务。然而,在智能汽车设计中还存在一些问题:目前CAN总线信道通信传输能力还处于1Mbps左右,无法较好支持对时延要求较低的服务,由于自身协议的特点,CAN总线并不兼容TCP/IP协议,且CAN总线协议报文的长度数据域长度最大值为8个字节。
技术实现思路
为了克服已有技术的不足,本专利技术提供了一种CAN总线环境下实现服务化的方法,提升通信传输能力,有效支持对时延要求较低的服务。本专利技术解决其技术问题所采用的技术方案是:一种CAN总线环境下实现服务化的方法,包括以下步骤:步骤100,客户端从空闲链表中申请CAN_OBJ对象,设置对象属性,将对象状态设为“使用”,创建接收缓存队列,通过接收地址指向缓存队列,将服务查询调用帧置入发送缓存队列,进入等待状态;步骤200,客户端发送缓存队列等待接收发送任务,当有数据置入后,将数据发送;步骤300,服务端接收缓存队列挂起等待查询或调用信息,若接收到的信息为查询报文,就通过服务ID和服务的映射表查询服务在本服务端是否存在,如果服务不存在,则丢弃该消息,如果服务存在,则根据服务ID调用对应函数处理,然后将结果打包至调用返回帧,置于发送缓存队列发送;步骤400,客户端接收到调用帧后,根据查询返回帧中的positionID定位CAN_OBJ对象,再根据CAN_OBJ对象中的接收地址将消息发送到接收缓存队列中,唤醒该调用线程;步骤500,将CAN_OBJ对象释放,放回空闲链表的尾部,删除接收缓存队列。进一步,描述的数据结构如下:CAN_OBJ对象包括收端标识符、发端标识符、客户端进程标志、帧类型标志位、服务ID、数据包长度、数据包数据内容、状态、接收地址、下一个CAN_OBJ对象属性;收端标识符和发端标识符为CAN总线特有标识,表示CAN总线地址信息;帧类型标志位用于区分该数据帧是查询调用帧还是调用返回帧;服务ID与具体服务的哈希表:通过服务ID查询获取服务端的服务;状态表示该CAN_OBJ对象是空闲还是使用中;CAN_OBJ对象数组:数组下标为每一个CAN_OBJ对象的ID,即positionID,中文名称为客户端进程标志,通过positionID可快速定位到CAN_OBJ对象;空闲CAN_OBJ对象链表:使用链表的方式将CAN_OBJ对象串联,头指针指向第一个空闲的CAN_OBJ对象,尾指针指向空闲的CAN_OBJ对象尾部,当客户端申请空闲CAN_OBJ对象时,头指针后移动,当客户端释放CAN_OBJ对象时,尾指针后移;客户端发送缓存队列:存放即将从客户端发送的数据帧;客户端接收缓存队列:存放特定远程服务调用请求的查询返回结果和调用返回结果,CAN_OBJ对象中receiveID指向接收缓存队列,客户端收到信息以后,将信息解析后,根据CAN_OBJ对象中receiveID将信息发送至接收缓存队列;服务端发送缓存队列:存放即将从服务端发送的数据帧;服务端接收缓存队列:存放服务查询和服务调用请求。再进一步,所述步骤100中,查询调用帧设计如下:CAN总线协议数据帧分为CAN总线标准数据帧和CAN总线扩展数据帧,两者主要区别为CAN总线扩展数据帧包含一个18位的扩展标识符;为了更好地表示服务请求,提高单条协议的数据量,本专利技术选择CAN总线扩展数据帧;在查询调用帧的标识符中记录发端地址、客户端进程标志、帧类型标志位、数据包长度、服务ID,在查询调用帧的数据域中记录数据包数据内容。更进一步,所述步骤300中,调用返回帧设计如下:在调用返回帧的标识符中记录发端地址、收端地址、客户进程标志、帧类型标志位、数据包长度,在调用返回帧的数据域中记录返回结果。本专利技术的有益效果主要表现在:提升通信传输能力,有效支持对时延要求较低的服务。具体实施方式下面对本专利技术作进一步描述。一种CAN总线环境下实现服务化的方法,包括以下步骤:步骤100,客户端从空闲链表中申请CAN_OBJ对象,设置对象属性,将对象状态设为“使用”,创建接收缓存队列,通过接收地址指向缓存队列,将服务查询调用帧置入发送缓存队列,进入等待状态;步骤200,客户端发送缓存队列等待接收发送任务,当有数据置入后,将数据发送;步骤300,服务端接收缓存队列挂起等待查询或调用信息,若接收到的信息为查询报文,就通过服务ID和服务的映射表查询服务在本服务端是否存在,如果服务不存在,则丢弃该消息,如果服务存在,则根据服务ID调用对应函数处理,然后将结果打包至调用返回帧,置于发送缓存队列发送;步骤400,客户端接收到调用帧后,根据查询返回帧中的positionID定位CAN_OBJ对象,再根据CAN_OBJ对象中的接收地址将消息发送到接收缓存队列中,唤醒该调用线程;步骤500,将CAN_OBJ对象释放,放回空闲链表的尾部,删除接收缓存队列。进一步,步骤100-500中,描述的数据结构如下:CAN_OBJ对象包括收端标识符、发端标识符、客户端进程标志、帧类型标志位、服务ID、数据包长度、数据包数据内容、状态、接收地址、下一个CAN_OBJ对象属性;收端标识符和发端标识符为CAN总线特有标识,表示CAN总线地址信息;帧类型标志位用于区分该数据帧是查询调用帧还是调用返回帧;服务ID与具体服务的哈希表:通过服务ID查询获取服务端的服务;状态表示该CAN_OBJ对象是空闲还是使用中;CAN_OBJ对象数组:数组下标为每一个CAN_OBJ对象的ID,即positionID,中文名称为客户端进程标志,通过positionID可快速定位到CAN_OBJ对象;空闲CAN_OBJ对象链表:使用链表的方式将CAN_OBJ对象串联,头指针指向第一个空闲的CAN_OBJ对象,尾指针指向空闲的CAN_OBJ对象尾部,当客户端申请空闲CAN_OBJ对象时,头指针后移动,当客户端释放CAN_OBJ对象时,尾指针后移;客户端发送缓存队列:存放即将从客户端发送的数据帧;客户端接收缓存队列:存放特定远程服务调用请求的查询返回结果和调用返回结果,CAN_OB本文档来自技高网...

【技术保护点】
1.一种CAN总线环境下实现服务化的方法,其特征在于,所述方法包括以下步骤:/n步骤100,客户端从空闲链表中申请CAN_OBJ对象,设置对象属性,将对象状态设为“使用”,创建接收缓存队列,通过接收地址指向缓存队列,将服务查询调用帧置入发送缓存队列,进入等待状态;/n步骤200,客户端发送缓存队列等待接收发送任务,当有数据置入后,将数据发送;/n步骤300,服务端接收缓存队列挂起等待查询或调用信息,若接收到的信息为查询报文,就通过服务ID和服务的映射表查询服务在本服务端是否存在,如果服务不存在,则丢弃该消息,如果服务存在,则根据服务ID调用对应函数处理,然后将结果打包至调用返回帧,置于发送缓存队列发送;/n步骤400,客户端接收到调用帧后,根据查询返回帧中的positionID定位CAN_OBJ对象,再根据CAN_OBJ对象中的接收地址将消息发送到接收缓存队列中,唤醒该调用线程;/n步骤500,将CAN_OBJ对象释放,放回空闲链表的尾部,删除接收缓存队列。/n

【技术特征摘要】
1.一种CAN总线环境下实现服务化的方法,其特征在于,所述方法包括以下步骤:
步骤100,客户端从空闲链表中申请CAN_OBJ对象,设置对象属性,将对象状态设为“使用”,创建接收缓存队列,通过接收地址指向缓存队列,将服务查询调用帧置入发送缓存队列,进入等待状态;
步骤200,客户端发送缓存队列等待接收发送任务,当有数据置入后,将数据发送;
步骤300,服务端接收缓存队列挂起等待查询或调用信息,若接收到的信息为查询报文,就通过服务ID和服务的映射表查询服务在本服务端是否存在,如果服务不存在,则丢弃该消息,如果服务存在,则根据服务ID调用对应函数处理,然后将结果打包至调用返回帧,置于发送缓存队列发送;
步骤400,客户端接收到调用帧后,根据查询返回帧中的positionID定位CAN_OBJ对象,再根据CAN_OBJ对象中的接收地址将消息发送到接收缓存队列中,唤醒该调用线程;
步骤500,将CAN_OBJ对象释放,放回空闲链表的尾部,删除接收缓存队列。


2.如权利要求1所述的一种CAN总线环境下实现服务化的方法,其特征在于,描述的数据结构如下:
CAN_OBJ对象包括收端标识符、发端标识符、客户端进程标志、帧类型标志位、服务ID、数据包长度、数据包数据内容、状态、接收地址、下一个CAN_OBJ对象属性;
收端标识符和发端标识符为CAN总线特有标识,表示CAN总线地址信息;
帧类型标志位用于区分该数据帧是查询调用帧还是调用返回帧;
服务ID与具体服务的哈希表:通过服务ID查询获取服务端的服务;
状态表示该CAN_OBJ对象是空闲还是使用中;
CAN_OBJ对象数组:数组下标为每一个CAN_OBJ对象的ID,即posi...

【专利技术属性】
技术研发人员:叶蕾李鑫王垒解子阳陈康东
申请(专利权)人:浙江工业大学
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1