XCP协议中关于同步数据传输的理解和应用

根据数据传输的方向不同,XCP协议中,同步数据传输可以分为如下两种类型:

DAQ: ECU(slave)向上位机(master)发送数据,实现数据采集

STIM: 上位机(master)向ECU(slave)发送数据,实现数据的刷新

本文重要描述对同步数据采集DAQ方式的理解和应用。

一个完整的DAQ数据采集流程有两个步骤:

1.上位机发送要获取的数据地址和长度等信息给ECU做采集前的初始化

2.ECU在做完初始化后,周期性的把数据发送出来

        实现周期性的数据获取,需要有一个数据结构来维护发送数据的地址和长度,这个数据结构在XCP中成为ODT(Object Description Table),该结构中的每一个条目代表一个数据所处的地址和它的长度,XCP中称之为ODT Entry。

 

        从实施的角度来讲,ODT代表的就是操作数据时使用的数据结构,而从通讯角度讲ODT就是每一帧数据,因此不同的传输层ODT的参数也不尽相同,通过CAN来举例,ODT从通讯角度代表着一帧CAN报文,而ODT Entry代表一个数据即CAN报文中字节的内容,因此,对于CAN来说,一个ODT里边最多能容纳7个ODT Entry(每个Entry代表的数据为一个字节,剩余一个字节位于首字节是PID)。

        应用中希望一个周期内采集非常多的数据(超过一帧),那么就需要把多个ODT组合起来,这种组合在XCP中称为DAQ List。从通讯的角度看,它对应了很多帧的报文,每个报文的第一个字节存放着PID用于识别不同帧所对应的ODT编号,不能放数据。
        有了DAQ/ODT以后,要被上传的数据就可以通过他们来索引并获得,获得这些数据以后就需要一定的周期或事件来触发上传,这些周期任务和事件在XCP中被称为Event。

 

         有3个不同周期的任务,可以为5ms/10ms/100ms,他们分别能触发DAQ0/DAQ1/DAQ2进行数据上传,每个DAQ中都有若干个ODT,它们相互独立,编号都是从0开始,每个ODT中的ODT Entry也相互独立,编号从0开始。
        上位机对ECU XCP进行DAQ初始化其实就是把想要采集的数据的地址和长度按照设定好的周期填充到每个DAQ/ODT中的ODT entry里边,初始化完毕后,XCP协议就可以在Event(5ms/10ms/100ms)中定期的利用这些信息将地址上指定长度的数据发送出来。

        DAQlist 分为静态的(static),动态的(dynamic)。

        静态DAQ lists:DAQlist和ODT表在ECU中是被永久固定的,他们在ECU代码中被设定,在A2L中。被描述基本上DAQlist的个数和event的个数相同。例如下图,DAQlist0 配置10ms的event,有最大俩个ODTs,最大的ODT列表数2   

 

动态DAQ lists:
DAQlist和ODT表在ECU中不是被永久固定的,是在ECU中可以动态分配的内存空间。
两者的区别如下:

 

 

Master通过如下四个命令进行动态DAQ list的ECU内存空间配置
FREE_DAQ    :清空动态DAQ配置    
ALLOC_DAQ    :配置DAQ list    
ALLOC_ODT    :给一个DAQlist配置ODTs        
ALLOC_ODT_ENTRY        :给ODT配置ODT列表        
以上四个命令,对应静态DAQ 只需要一个命令就可,也就是清空DAQlist                                       CLEAR_DAQ_LIST        :    清空静态DAQ 的list                

静态和动态DAQ配置序列如下:

 

动态DAQ数据传输过程实现:
具体分为三个阶段,分别为获取通信模式,设置内存空间和接收传来的地址和数据。
程序回复给Master相关DAQ的工作模式和初始化后的相关信息,包括标定系统内可用的DAQ通道数和允许发送的最大包数。
在slave接收到FREE_DAQ这个命令后,程序要对主从节点的会话状态重新进行设置。
Master会传入本次数据观测的DAQlist数据,ODT数量和每个ODT的列表数。
程序需要根据传入的顺序将他们存入相应的结构体中,并且在程序中进行动态申请所需的内存并在传输空间后释放这些内存。
然后Master发送SET_DAQ_PTR和WRITE_DAQ命令来传入要观测数据的地址和长度。
在获取这些信息后,程序会在周期性任务中(event)向传输网络发送这些数据对应的地址和长度。
以上,DAQ实现了对应于应用程序中所观测变量的动态采集,这种观测方式只需要对slave提供一次数据相关的信息就可以采集该变量在程序中的变化。

同步数据传送时用到的命令及时序

以上,是个人理解,仅供参考,后续会推出XCP协议DAQ方式以RESUME形式的应用。

  • 15
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: xCP协议和UDS协议是两种不同的通信协议。 首先,xCP协议全称为xCloud Protocol,是一种用于云计算环境下设备之间的通信协议xCP协议采用基于RESTful架构的设计,支持设备之间的去心化通信,并且具备高度的灵活性和扩展性。xCP协议可以实现设备的互联互通,提供设备注册、设备发现、设备控制、设备状态查询等功能。通过xCP协议,设备可以通过云平台实现互相交互,实现远程监控、固件升级、数据采集等功能。 而UDS协议则是一种用于汽车电子控制单元(ECU)之间的通信协议。UDS全称为Unified Diagnostic Services,是汽车行业标准ISO14229定义的一套通信服务。UDS协议通过CAN总线或者其他物理层介质,提供了诊断、编程和故障处理等功能。通过UDS协议,汽车ECU可以与诊断工具进行通信,实现故障码读取、参数设置、ECU编程等操作。 综上所述,xCP协议和UDS协议主要区别在于应用领域和通信方式。xCP协议适用于云计算环境下设备之间的通信,采用RESTful架构进行通信;而UDS协议适用于汽车电子控制单元之间的通信,通过CAN总线或其他物理层介质进行通信。 ### 回答2: XCP和UDS都是用于汽车诊断的通信协议,但它们在协议结构、通信方式和应用领域方面存在一些区别。 首先,XCP(CANape扩展协议)是一种基于CAN总线的协议,主要用于汽车电子控制单元(ECU)的调试、测试和校准。它支持高速数据采集和参数校准,具有高实时性和低延迟。XCP协议采用主从架构,主机负责发送指令和接收数据,而ECU负责接收指令并返回数据。通过XCP协议,可以实现对ECU的读写操作,如读取和修改内存、调整参数等。XCP协议具有灵活的数据存储格式,可以支持不同编码和尺寸的数据。 相比之下,UDS(统一诊断服务)是一种基于CAN或其他通信总线的协议,广泛用于汽车故障诊断和维修。它定义了一组通用的诊断服务,例如读取错误码、清除错误码、读取和修改ECU参数等。UDS协议采用客户端-服务器架构,诊断仪作为客户端向ECU发送诊断请求,而ECU作为服务器响应请求。UDS协议提供了丰富的诊断服务和通信机制,能够满足车辆修复和故障排除的需求。与XCP相比,UDS协议更加通用,适用于不同种类的车辆和ECU。 总结来说,XCP协议主要用于ECU的调试和校准,支持高速数据采集和参数调整;而UDS协议主要用于车辆诊断和维修,提供通用的诊断服务和通信机制。两者的应用领域和功能略有不同,但都对汽车电子系统进行通信和控制,为车辆的开发和维护提供支持。 ### 回答3: XCP协议和UDS协议是两种通信协议,主要用于汽车电子系统的诊断与控制。 首先,XCP协议是一种基于CAN总线的诊断协议,它通过提供一组命令和数据采集功能,实现了对ECU(电子控制单元)的访问和控制。而UDS协议是一种基于ISO 14229标准的诊断协议,常用于汽车行业的诊断与测试领域。 其次,XCP协议数据传输方面较为灵活,支持高速数据采集和实时数据传输。它可以在毫秒级的时间内读取并记录ECU的状态和变量信息,并能够实时控制ECU的参数。而UDS协议则更偏向于诊断功能,能够实现各种诊断操作,如读取故障码、清除故障码、读写参数等。 此外,XCP协议具有更高的通信速率,能够实现更快的诊断速度和数据传输效率。而UDS协议通常采用慢速的K线物理层传输方式,通信速率较低,但更稳定可靠。 最后,XCP协议具有更强大的功能和灵活性,支持大量的扩展功能,如实时标定、测量和校准等。而UDS协议主要用于故障码诊断和控制操作,功能相对较为简单。 综上所述,XCP协议和UDS协议在功能、通信方式和应用领域上存在一些区别。XCP协议更适用于需要高速数据采集和实时控制的场景,而UDS协议则更适合故障码诊断和常规控制操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值