您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 其它相关文档 > DDS中间件在CAN总线传输中的应用
DDS中间件在CAN总线传输中的应用RojdiREKIKSalemHASNAOUI摘要:数据分发服务(DDS)是一种以发布和订阅数据为中心的中间件。它指专门为实时实现数据的API分布。并非常适用于复杂分布式系统和QoS功能的应用程序。但是,它需要通过传感器传输大量测量网络的时序参数。其基于优先级的媒体访问控制是用来选择具有较高的传感器信息。这种方式大大降低了获得的快照环境状态的时间,因此符合反馈控制回路的实时要求。使用的“发布/订阅/分发”模式和底层的实时CAN总线是当前在这个研究课题中才存在的几个区域。这些活动由德国国家研究中心和首尔国立大学结构实验室,以及由我们的“控制和通讯技术“研究小组负责。本文的主要目的是证明DDS中间件是如何在CAN总线实现的。1介绍:今天的嵌入式软件应用越来越分散,他们的数据通讯的联网的制度在许多计算节点之间。这包括在航空航天应用,国防,分布式仿真,工业自动化,分布式控制,机器人技术,电信设备和联网领域的消费电子产品。在当今的日子里,该行业被质疑对生产力的质量,安全,环保和程度横向和纵向整合需求的日益提高。然而,复杂的分布式控制系统(DCS)不能有效地和安全地管理提供更强大的对象之间的通信图案。对于需要控制的涵盖不同层次级别的功能网络。互操作性中间件架构和应用对象是系统集成商从不同的供应商中真正挑战适应和连接可用的组件的。智能控制系统已经成为国际关注的焦点。标准化组织,工业财团和研究团体提供更全面数据模型架构。2:相关作品:实时数据分布最近出现了一个重要的研究领域。有一个研讨会的主题(第一个车间对数据分布实时系统[4])2003年5月。对象管理组(OMG)有助于研究的努力的标准化数据分布在一个中间件服务。它提供了一个最长的等待启发式以减少开销。类似的工作[6]描述了一个广播技术的需求时间表,广播使用最早的期限,定期或混合调度算法。工作[7]中描述的是一个投机的数据传播服务使用的地理和时间地点参考,以确定哪些数据传播。这些技术考虑截止时间限制的客户,但是考虑数据时序一致性和底层实时网络的使用。一个应用领域,提供了各种研究努力数据分布是嵌入式传感器网络(8、9、10、11和12]。尽管这里分布的传感器网络描述为所有的工作提供了宝贵的见解解决问题的数据,但没有考虑实时的特点的数据或应用程序。也就是说,既不支持数据交付期限和时间一致性数据。大量的实时数据的分布研究已经在弗吉尼亚大学(UVA)完成,在无线传感器网络的环境中[13,14,15,和16]。这项工作确实解决了请求的最后期限。然而,当它到达请求时,它不保证提供数据在时间上是有效的。PrismTech[17]有一个产品是所谓的OpenSplice[18]这是符合实时联网。但类似的作品可以提到如ROFES[19]。在ROFES平台,S.的上下文Lankes和T.Bemmel描述实施了基于CAN的面向连接的点至点的通信模型和它的集成到实时CORBA,但这个项目没有被扩展以支持数据分布服务。这些研究工作已经被强制执行。这同时做几个商业产品已经成为符合OMG的数据分布规范。实时创新[20]有一个产品叫做NDDS,提供架构数据的时间要求严格的交付。泰利斯海军荷兰[21]有一个名为Splice产品[22]它提供了一个以数据为中心的架构为关键任务的应用程序。这两种产品提供宝贵的实时特性数据的分布。既保证了数据的时间期限也不实时网络支持。3实时和嵌入式系统:自动化控制组件与分布式组件只是一个例子。最通用和强大的图案是[23]:•事件驱动型数据分发•请求-答复服务•基于内容的事件通知•连续数据分布3.1事件驱动型数据分发事件驱动的数据分布(EDDD)用于当应用程序通过事件和控制的时候。因此,当一个事件被丢失的时候,则一个执行应用程序停止。在EDDD发送的消息是一个事件,而不是信号值时。该机制应该保证每个事件交付给所有的接收器。CORBA的消息规格支持异步消息调用(AMI),这个模型很好地映射了这种模式。3.2请求-答复服务请求-应答服务(RRS)是获取数据或启动服务更简单的方法。不管同步或异步的,只要回复即可。在后一种情况下,一个回调函数被调用时,答复接收。RRS是由所有的分布式提供环境,特别是CORBA的体系结构。3.3基于内容的事件通知基于内容的事件通知(CBEN)是用来通知改变组件的状态。警报和其他通知消息被发送到所有感兴趣的接收器或存储在历史数据库中。(一旦消息被称为报警时,它会强制接收器停止其正常运行的执行专项行动。)通过比较来EDDD,CBEN代表不是事件的一个单独的域。然而,报警和事件的可靠性也是必需的。CBEN可以通过CORBA实现事件服务(不过滤)或CORBA通知服务(带过滤)。OPC和传感器网络赋能(SWE)是DCS是这一类的CBEN模式范围内。3.4连续数据分布连续数据分布(CDD)是用于周期性数据传输(或当信号值超过应用特定阈值)。它允许一个生产商经常传送一个新的数据值。OMG的DDS[5]和OPC-DX[6]支持CDD以及RRS和CBEN。在DDS中,出版商给数据中间件。中间件需要照顾分配并通知用户时,消息到达。在3.1的情况下,名称或地点及种类事件需要在编译时。在3.2的情况下,则名称或服务的位置,可以通过获得命名或目录服务来编译。在3.3的情况下,生产商和消费者都去耦合。报警和事件被发送到一个信道;消费者通过向他们提供过滤器一些标准从通道检索它们。在3.4的情况下,唯一的财产生产商(出版商)需要与沟通消费者(用户)的名称和定义的数据(数据为中心的)。信号,报警通知和事件均标记有独特的主题名称,如“压力”或“温度”。发布者不需要了解任何信息的用户,反之亦然。CDD和CBEN分别是数据和服务内容代替的身份制片人,因此被称为基于内容的发布/订阅。出版商的松耦合服务器和订阅服务器,在客户尽职审查为基础的架构,作为新的发布者和订阅可以无缝集成到现有的应用程序,而不影响现有的代码,因此,剩余的几个生产者可以并行运行。常见的方法,允许消费者发现它们的性质的基础上,最合适的数据源和服务。所以,本发布/查询/预订/分配格局基于全球视野的内容。它解决了嵌入式通信模型通信挑战。DDS针对实时系统;DDS的规范是不太明显的,应该调度机制协调这些政策,并作出最佳效益。4DDS和QoS参数每一个QoS策略可以有多个参数与之相关联,如感兴趣的主题数据,数据过滤准则等。每个参数也可以是分配1值的范围的,整数范围对于数据消息的存储的最大数传输,或所述一组用于正则表达式作为过滤条件。QoS并非所有组合政策/参数提供所需的QoS体系,并且它可以是乏味且容易出错的手动变换一个有效的QoS策略的配置设计。它在一个特定的中间件实施平台。一个高效的DDS实现必须许可:•实体和服务质量之间的关联政策•管理QoS策略配置变性。•检查兼容性和一致性约束。•确保QoS的兼容性•确保服务质量的一致性•确保正确的QoS实现5建议模拟器该框架架构模拟器是一个通过设定DDS中间件和连接的节点。CAN是当只有网络控制器驱动程序所代表的发行者之间的替换一个CAN调度员。节点之间的通信的实现由于通过全球发布订阅界面从而代表一个文件,该文件的数据空间是同样在所有节点上。中间件必须保持跟踪数据的对象实例。每个数据对象是由其数据写入和价值和一个主题对象的组合来标识。5.1传输优先级的计算和CAN总线其主要思想是定义一个结构,它通过他们的最后期限(或优先)来分类的主题和每个主题的Datawriters列表来集成,还排序最后期限。这个结构仅仅是一个TreeMap的。DataWriter列表主题是它的键和对应的值。但是,我们必须添加一个排序条件为主题定义是不存在的在DDS规范。添加的方法被称为“的compareTo(对象O)”,它返回一个整数。图3示出了该添加。DataWriter做了同样的工作。此功能必须添加到DDS规范的未来版本,允许开发人员可以使用相同的指定方法。我们定义一个ListDataWriter类允许添加,删除和DataWriters也截止日期排序。Figure4.NewdefinitionofDataWriterImplClass我们实施了ListTopicDataWriter类负责管理TreeMap的结构体,见图2。这个类的主要操作是设置优先主题。发送的CAN总线为代表的CAN驱动程序和使用的管道,我们从ListTopicDataWriter检索必要的信息,构建CAN数据帧。要发送的CAN总线,我们从供应商里使用write(主题主题,对象O),只是表示在DDS规范方法。DataFrameCanframe=newDataFrameCan(topic.getPriority(),nodeId,topic.getTopicId(),data);DataWriterdataW=data.getDataWriter();Duration_tduration=dataW.getQOS().deadline.period;Framelist.addCanFrame(frame,duration);为了模拟在CAN总线的数据写入,我们在一个树状图收集的CAN数据帧,这是模拟的,以表示结构。见图2。Figure5.TreeMapStructureforsendingintheCAN_Bus我们实现了一个类叫“ListFrameCanDeadline”管理上述结构。图6示出了相关的算法5.2接收帧从CAN总线依赖DataReaderQoS要读取一个CAN帧,我们用一个用户检索DataFrameCan列表(类内管)。protectedvoidnotify(inttopicId){Eventevt=newEvent(this,getValue(topicId));Vectorv;synchronized(this){v=(Vector)Listeners.clone();}Iteratoriter=v.iterator();while(iter.hasNext()){DataReaderListenerdataTemp=(DataReaderListenerImpl)iter.next();if(dataTemp.geTopicId()==topicId){dataTemp.change(evt,topicId);}}Figure6.NotifyMethodimplementation这个类似管理DataReaderlisteners(添加,删除)。数据的传送是在做DataReader的,其中有一个侦听器的话题,分别需要的QoS(DataReaderQoS)和所获得的数据DataReader。int[]on_data_available(ListeFrameCanDeadlinelist){//EachCANdataframecontain8bytesint[]val=newint[8];Mapmap=null;map=list.getTopicsDataFrameCan(get_listener().geTopicId());for(Iteratorit=map.entrySet().iterator();it.hasNext();){Map.Entrye=(Map.Entry)it.next();Duration_tdr=(Duration_t)e.getValue();intsec=dr.sec;intnanosec=dr.nanosec;if((sec==qos.deadline.period.sec)&&(nanosec==qos.deadline.period.nanosec)){val=((DataFrameCan)e.getKey()).getDatas();}}returnval;}}图7on_data_available方法:Java的语法实现了CAN总线DataReaderImpl在图8中恢复Fig.8:DataReaderImplclass我们在下面的数字的抽象算法与该项目从使用D
本文标题:DDS中间件在CAN总线传输中的应用
链接地址:https://www.777doc.com/doc-2909083 .html