当前位置: 首页 > news >正文

muse怎么做响应式网站公司概况简介

muse怎么做响应式网站,公司概况简介,可以做图接单的网站,php和ASP网站那个好XCP协议基础 文章目录 XCP协议基础一、引言1.1 什么是标定1.2 什么时候进行标定1.3 标定的意义 二、XCP协议简介2.1 xcp简介2.2 XCP如何加快开发过程#xff1f;2.3 XCP的主要作用 三、XCP工作过程3.1 工作过程3.2 通讯模型3.3 测量与标定 四、XCP报文解析4.1 数据包报文格式4…XCP协议基础 文章目录 XCP协议基础一、引言1.1 什么是标定1.2 什么时候进行标定1.3 标定的意义 二、XCP协议简介2.1 xcp简介2.2 XCP如何加快开发过程2.3 XCP的主要作用 三、XCP工作过程3.1 工作过程3.2 通讯模型3.3 测量与标定 四、XCP报文解析4.1 数据包报文格式4.1.1 PID标识域4.1.2 计数器域4.1.3 时间戳域4.1.4 数据域 4.2 CTO 与 DTO报文4.2.1 CTO包4.2.2 DTO包4.2.3 常见命令4.2.3.1 标准命令4.2.3.2 标定命令4.2.3.3 页切换命令4.2.3.4 周期性数据交换命令4.2.3.5 FLASH编程命令4.2.3.6 时钟同步命令4.2.3.7 ASAM连接标准命令 4.3 数据传输方式4.3.1 标准传输模式4.3.2 Master块传输模式4.3.3 Slave块传输模式4.3.4 交错传输模式 五、测量与标定5.1 测量5.1.1 Poling模式5.1.1.1 SHORT_UPLOAD命令5.1.1.2 SHORT_UPLOAD应答5.1.1.3 Poling模式缺点 5.1.2 DAQ模式5.1.2.1 ODT映射过程5.1.2.2 预定义DAQList5.1.2.3 静态DAQList5.1.2.4 动态DAQList5.1.2.5 动态DAQ配置过程 5.2 激励与旁路STIM By Passing)5.2.1 STIM5.2.2 By Passing 5.3 标定5.4 地址映射5.4.1 硬件方式Overlay5.4.2 软件方式(Offset偏移) 5.5 A2L文件5.5.1 A2L文件概述5.5.2 A2L文件结构5.5.3 A2L预定义类型 六、标定数据怎么保存6.1 将参数保存在ECU中6.2 将参数以文件的形式保存在计算机上 参考文献 标定是传统汽车行业很重要的工作往往需要大量人员从事标定工作ECU中的程序由软件工程师进行设计而工程师不可能总是一开始就把这些参数设置成最合理的值因为这些值需要在实验中根据汽车数学模型进行设置即便一开始写入了一个看似合理的值后期也会因为很多不可控的因素导致的误差这时候最初设置的那个值就变得不再可靠。而如何确定算法中的关键参数这时候就需要进行标定在标定过程中通过一次又一次的改变参数然后观测实际运行状况进而将这个过程中得出的能使运行状况最符合预期的值确定下来。XCP就提供了这种标定的方式。 XCP提供了一种对ECU中某些值进行读取、写入操作的一种协议一般是把支持XCP的软件与汽车的CAN总线相连目前XCP主要使用的工具有Vector公司的CANape ITAS的INCAValue CAN等工具。 一、引言 1.1 什么是标定 假定现在需要对车上的一台电机进行控制软件工程师通过说明书了解了这台电机的相关额定参数随后写好了一套算法控制程序用于完成对电机的控制。之后测试过程中发现基于这套算法无法使电机达到最佳运行状态而电机的相关参数不可更改已成既定事实所以为了使这台电机达到最好的运行状态需要调整之前写好的这套算法控制程序。 已知电机转速y和电压x之间存在如下关系yaxb我们的算法控制程序也是这样设计的。在这套算法中X是某一档位下的电压是既定事实我们不能更改所以为了使电机转速y达到最佳需要进行不断的测试通过更改系数a或者常量b然后观察y的值循环往复将观察到的数据进行记录然后总结出能够使电机运行状况达到最优工况下的a和b的值并更改算法控制程序。整个过程就是一次标定的过程。 再比如已知油门踏板开度x与喷油量y之间存在如下关系yaxb,如果要做标定我们需要修改什么值首先肯定不可能是x因为油门踏板开度是驾驶员用脚踩出来的我们没办法要求别人其次也不可能是y因为这是输出根据x来的。那么就只剩下a或者b了。对于某些动力车型它想要50%的踏板开度就能有很强的动力y很大这时候我们就应该去修改常数a和b。标定在这个例子中的意义就是修改某些特征值以满足不同车型的要求。一旦标定工程师认为这些值达到效果了就通过flash刷写的方式将这些数写进Flash中再通过技术手段告诉ECU以后就到Flash去取a,b的值这就完成了汽车量产前的标定工作。 真实的标定过程远比上述示例复杂甚至还有冬标与夏标之分因为一些标定实现通常需要在特定温度下反复调整系统参数以满足车辆舒适性要求但是在自然环境下无法保证时刻都有合适的实验条件且自然环境多变常常无法准确确定参数因此需要反复调整从而导致标定周期过长。例如 轮胎气压夏标和冬标轮胎的气压要求不同。夏季气温高轮胎气压会稍微降低以减少轮胎的热胀冷缩提高行驶的安全性和舒适性。冬季气温低轮胎气压则需要适当增加以提高轮胎的抓地力和操控性能。机油黏度夏标和冬标机油的黏度也有所不同。夏季气温高机油黏度需要适当降低以保证机油的流动性和润滑性能。冬季气温低机油黏度则需要适当增加以保证机油在低温下的流动性和润滑性能。 标定根据ECU的性能要求或者整车的性能要求修改调整或者优化ECU内部参数的过程。 1.2 什么时候进行标定 零部件更换后软件升级后车辆碰撞或维修后日常定期维护 1.3 标定的意义 标定可确保不同的车辆系统协调高效地运行。正确的标定可以优化油耗、最大限度地提高性能、减少排放并增强安全性能。如果没有定期标定车辆可能无法发挥预期性能从而导致效率低下和潜在的安全风险。 汽车行业的标定工作在确保汽车以最佳性能和安全性运行方面发挥着举足轻重的作用。 二、XCP协议简介 2.1 xcp简介 CCP: CAN Calibration Protocol 基于CAN总线的标定协议 XCP: Universal Calibration Protocol 通用标定协议 XCP是继CCP之后的协议升级版基于CAN的部分基本没有改变。XCP的开发旨在通过不同的传输媒介来实现此功能其中“X”代表任意的传输层如CAN、CANFD、FlexRay、Ethernet…即协议层的内容不用改变而传输层支持多种传输协议。 XCP是实现对嵌入式系统内部存储器的读写访问的标准协议作为一种通用的测量协议已经建立了多年并允许在运行时对嵌入式系统中的算法进行参数化。 2.2 XCP如何加快开发过程 在传统开发过程中代码开发完成后对于一个算法yaxb在标定过程中由于要反复观察改变系数a,常量b之后最终结果y的实际数值因此要一遍又一遍的修改代码而修改代码就意味着要重新编译链接集成然后再测量…这个过程会一直重复直到标定过程结束总结成流程图就是 引入XCP之后最关键的一处变化就是待标定的参数可以在运行时被更改不需要再更改任何代码而是利用标定工具直接更改相应的内存单元中的值 可以看到引入XCP标定之后省去了代码的重新编译链接刷写集成的过程通过直接更改内存单元中的参数的值加快了整个标定过程。 2.3 XCP的主要作用 标定测量反馈一些变量的值供上位机或测试系统查看如转速等编程和刷新例如更新一部分地址的数据值甚至重编程等对ECU功能进行旁路简单来说就是模拟ECU的数据 其中主要用标定和测量两点其他两点用的比较少。 三、XCP工作过程 XCP是一种基于主从节点标定协议标定时可以有1个主节点多个从节点。主节点通常由CANapeINCA等标定工具担当从节点则是一个个真实的ECU或者仿真ECU。 3.1 工作过程 将Master和Slave通过设备连接起来通过发命令的方式建立连接通过上位机工具观测之前定义好的一些变量例如速度转矩电压等参数可进行在线标定一般是先在一个存储区RAM定义的变量找出一个比较好的参数然后将这个比较好的参数固化下来擦除原来的数据写入到另外一个映射好的存储区flash通过将标定完成的软件烧录到ECU中使用其编程的功能。 3.2 通讯模型 相关术语解释 缩写 全称 含义 CMD Command 上位机下发给下位机的一些命令比如连接命令FF解锁获取状态等一些和下位机交互的命令 RES Response 命令回复肯定回答 ERR Error 命令回复否定回答 EV Event 事件指下位机发生某事件时通知上位机 SERV Service 服务指下位机在某些情况下需要上位机执行一些动作可理解为请求上位机服务。 DAQ Data AcQuisition 下位机发送周期性测量数据给上位机 STIM Stimulation 可以理解为一种上位机向下位机大量发数据的一种方式相当于反向的DAQ用于数据标定时上位机向下位机修改参数 DBG Debugging 对从机进行调试 PGM Programming 将新程序或数据状态刷写到控制单元中 CAL Calibration 更改参数或切换校准页面 XCP的数据帧分为两类CTO(Command Transfer Object)与DTO(Data Transfer Object)顾名思义CTO数据帧传输命令DTO数据帧传输数据。 上述通讯模型中如果按照数据的流动方向划分 由Master向Slave传输的数据包的形式有CMD和STIM这里的CMD即为CTOSTIM即为DTO 由Slave向Master传输的数据包的形式有RES,ERR,EV,SERV和DAQ同理这里的RES,ERR,EV,SERV即CTODAQ即DTO。关于DAQ与STIM暂时可以只当做传输批量数据的一种形式只是方向相反DAQ是从机主动向主机发送数据STIM是主机向从机发送模拟数据 3.3 测量与标定 ASAM MCD 1MC : ECU与标定测量系统接口ASAM MCD 2MC : 即A2L文件是控制器内部信息描述文件规范ASAM MCD 3MC : 此接口用于自动化标定工具与上位机中的标定测量系统通信 首先在ECU中安装XCP驱动程序生成一个A2L文件A2L文件对ECU的相关信息做了描述包含前期阶段识别出来的待标定量与测量量的地址和长度相当于ECU的数据库文件然后将这个生成的A2L文件导入上位机装有XCP驱动程序的标定工具按照一定格式对这个文件进行解析最后与ECU建立通讯便可实时进行测量和标定。 四、XCP报文解析 4.1 数据包报文格式 上图是一个完整的XCP数据帧的格式包含帧头Header、帧尾Tail和XCP数据包三部分。其中帧头Header、帧尾Tail依赖不同的传输层协议传输时XCP帧支持的传输层可将这三个帧元素映射到相应的传输帧格式。所以真正要关心的是XCP数据包部分: XCP数据包由一个标识域(Identification)、一个可选的计数器域(Counter Field)、可选的时间戳域(Timestamp Field)和一个数据域Data Field组成。 PID 交换数据包时主设备和从设备都必须能够识别对方发送的信息。这个过程是在标识字段的帮助下完成的。因此每个数据包都以数据包标识符PID开始。从主设备到从设备的命令使用从0xC0到0xFF的PID。XCP从设备用0xFC到0xFF的PID响应或通知主设备。这意味着在每种情况下都有一个唯一的PID分配给发送的CTO。 TIMESTAMP DTO报文提供时间戳。BYTE、WORD和DWORD可用作时间戳的数据类型。CTO数据包是在没有时间戳的情况下发送的。在通过DAQ传输测量数据的情况下XCP从机将测量时间写入时间戳字段。由于DAQ列表中的所有测量变量都是同时获取的因此每个DAQ周期只传输一次时间戳。 DATA 实际数据在数据字段中传输。在CTO数据包的情况下数据字段由不同命令的特定参数组成。DTO数据包包含来自从设备的测量值在发送STIM数据的情况下包含来自主设备的值。 下面进行详细说明。 4.1.1 PID标识域 传输数据包时主节点和从节点都必须能够识别对方发送的信息。这个过程是在PID的帮助下完成的。因此每个数据包都以数据包标识符PID开始。 在3.2章节中曾说数据包有CTO和DTO之分而由Master向Slave传输的数据包的形式有CMD和STIM这里的CMD即为CTOSTIM即为DTO由Slave向Master传输的数据包的形式有RES,ERR,EV,SERV和DAQ同理这里的RES,ERR,EV,SERV即为CTODAQ即为DTO。 对应的PID为 4.1.2 计数器域 DTO包可以选择性地包含计数器字段。如果存在计数器字段直接位于标识字段之后并且具有BYTE大小。如果在传输DAQ数据包时使用计数器字段则XCP从设备在DAQlist的第一个ODT数据包中插入计数器。插入的计数器是为此DAQlist配置的事件的属性。 4.1.3 时间戳域 DTO包可以选择性地包含计数器字段。在通过DAQ传输测量数据的情况下从机将测量时间写入时间戳字段。由于DAQlist中的所有测量变量都是同时获取的因此每个DAQ周期只传输一次时间戳。在从主设备到从设备的STIM数据传输过程中XCP主设备向时间戳字段写入一个值。 4.1.4 数据域 实际数据在数据字段中传输。在CTO数据包的情况下数据字段由不同命令的特定参数组成。DTO分组包含来自从设备的测量值并且在发送STIM数据的情况下包含来自主设备的值。 4.2 CTO 与 DTO报文 4.2.1 CTO包 主节点通过CMD向从节点发送一个通用请求。PID字段包含命令的标识号。附加的特定参数在数据字段中传输。然后主节点等待来自从节点的响应RES或ERR。XCP在其实现中具有很强的可扩展性因此并非每个命令都必须实现。在A2L文件中在所谓的XCP IF_DATA中列出了可用的CMD。如果A2L文件中的定义与从节点中的实现之间存在差异则主节点可以从从节点的反应中识别出从节点不支持该命令。如果主节点发送的命令尚未在从设备中实现则从节点必须使用ERR_CMD_UNKNOWN进行确认并且在从节点中不会触发进一步的活动。 4.2.2 DTO包 DTO可用于DAQ和STIM。 通过DAQ数据与内部事件同步地从从设备发送到主设备。此通信分为两个阶段在初始化阶段主设备通知从设备在不同的事件中应该发送哪些数据。在该阶段之后主设备触发从设备处的测量并且测量阶段开始。从这一点开始从设备向主设备发送所需的数据主设备只“监听”直到向从设备发送“测量停止”。测量数据采集和发送的触发通过控制单元中的事件来完成。 通过STIM主设备向从设备发送数据。此通信还包括两个阶段在初始化阶段主设备告诉从设备将向从设备发送哪些数据。在该阶段之后主设备将数据发送到从设备STIM处理器存储数据。一旦在从设备中触发相应的STIM事件数据就会传输到应用程序的内存中。 4.2.3 常见命令 4.2.3.1 标准命令 4.2.3.2 标定命令 4.2.3.3 页切换命令 4.2.3.4 周期性数据交换命令 基础命令 静态配置 动态配置 4.2.3.5 FLASH编程命令 4.2.3.6 时钟同步命令 4.2.3.7 ASAM连接标准命令 标准中描述了可选命令ASAM AE MCD-1 XCP AS SW-DBG-over-XCP and ASAM AE MCD-1 POD BS 4.3 数据传输方式 4.3.1 标准传输模式 在标准通信模型中对从机的每个请求都有一个响应一问一答。主设备发送一个请求并在发送另一个命令之前等待从设备的响应。 4.3.2 Master块传输模式 主设备可以连续向从设备发送多个命令而无需等待从设备对每个命令的单独响应。块传输模式是可选的可以加快大数据传输的进程。但是必须考虑该模式在从机方向上的性能。这包括两个命令之间的最小时间间隔MIN_ST和没有响应MAX_BS的最大命令数。可选地这些通信设置可以由主设备通过GET_COMM_MODE_INFO从从节点读出。 比如使用download命令传输大数据给ECU就会用到这种模式。 4.3.3 Slave块传输模式 比如Upload指令获取ECu内部的数据状态一般指定download完之后会紧跟着一个upload检查是否写进了目标ram地址。 4.3.4 交错传输模式 在标准通信中主设备和从设备相互等待。交织通信模式可用于加速数据传输。在这里主机可以连续发送几个请求。它必须考虑从端接收缓冲区的大小。从设备可以连续向主设备发送多个响应。从方不必考虑主方的任何限制。交织模式不得与块模式同时使用。该模式是可选的并且与块传输模式相比没有实际意义。 交错模式也是出于性能原因而提供的在典型通讯模式中主机在收到上一条指令的回复前不会发送下一条指令为提高通讯的效率交错通讯模型可以不等待回复直接再发送下一条指令。它在实践中没有相关性。比较少见。 五、测量与标定 5.1 测量 参数测量本质上是作为主设备对从设备的请求而实现的“读取存储位置0x1234的值”。按测量方式可分为异步测量与同步测量。 5.1.1 Poling模式 轮询即Poling模式最简单的测量方法它不是基于DTO而是基于CTO。对需要采集的变量进行挨个轮询。对于要通过轮询测量的每个值必须传输两个帧从主设备到从设备的请求和从设备到主设备的响应。这就可能造成总线的负载率。 主节点可以使用SHORT_UPLOAD命令从从节点请求测量参数的值。这称为轮询。这是最简单的测量情况在已接收并执行SHORT_UPLOAD命令时发送测量参数的测量值。 异步测量是使用主节点发送的命令通过指定的XCP地址来提取从节点的ECU内部的数据并通过从节点的应答将该数据传送给主节点如此循环往复来实现的。 为了取出数据使用PID为“0xF4”的命令“SHORT_UPLOAD”。这个命令和应答的格式如下所述。 5.1.1.1 SHORT_UPLOAD命令 0字节 指定为PID“0xF4” 1字节 指定为取出字节数。最大为MAX_CTO -1字节 2字节 保留字段 3字节 指定为要读出的8位扩展地址 4-7字节 指定为要读出的32位地址 5.1.1.2 SHORT_UPLOAD应答 0字节指定为PID“0xFF” 1~MAX_CTO字节位置指定为取出的数据。 5.1.1.3 Poling模式缺点 此模式基于CTO也就意味着Poling模式下的时间戳机制不能使用也就意味着无法获悉数据实际上是哪一时刻的数据一问一答包含2条报文上位机请求和Slave响应影响总线负载率异步测量无法保证数据的相关性标定过程中标定人员其实更关心数据的相关性简单来说就是X变了之后Y会怎么变而不是只关心某个具体值会怎么变化但是Polling模式是异步测量使用这种模式标定人员根本无法获知X变了之后Y是在哪个计算周期内变的这种变化是不是X引起的 举例 while(true){x computX(...);...//假如在这个时刻收到了polling的CTO数据包请给我X的值...//随后又在这个时刻收到了polling的CTO数据包请给我Y的值y computY(X,...);//y的计算依赖于X... } //由于取Y的时候Y的计算周期实际上并没有走完因此给的值实际上是上一次Y的值但是这个时刻的X值已经是最新的X,这就造成了这一时刻的X和Y实际上是没有任何关联性的5.1.2 DAQ模式 为了使测量与ECU的控制相匹配有必要由ECU确定测量时机并在数据取出来后由从节点主动发送到主节点。这是DAQ模式的核心思想这种数据通信方式是基于DTO来完成的。 主节点在进行同步测量之前通过命令指定要取出的数据的地址从节点在等到同步测量开始命令后使用DTO发送到主节点。因此在同步测量的情况下不是通过命令和应答的组合而是通过测量周期或事件由从节点发送DTO报文到主节点。 DAQ模式解决了Poling的两个问题 通过将测量值与控制单元中的事件相关联来实现测量数据的相关性。这个测量值仅在事件发生时记录和传输。这样可以确保所有数据相互匹配。 为了减少总线负载测量过程分为两个阶段 在配置阶段主设备通知从设备它感兴趣的值 在第二阶段只将从设备的测量数据传输到主设备。在传输期间测量数据被尽可能紧凑地汇总在分组中。 举例 while(true){x computX(...);......y computY(X,...);//y的计算依赖于X...event(COMPUTER_OVER);//这里通过设置event driver让原先的主机主动获取值变成了现在的从机在计算周期结束之后主动上报值从而确保这一时刻的所有待测量基于同一计算周期具备数据相关性。 }那么问题又来了从机是怎么知道主机将来都要测量哪些变量的 答案只需事先让ECU的event与待测参数之间产生关联为某个event配置DAQList。 1个Event -- 1个daqList -- n个ODT -- n条数据帧 具有三个ODT的DAQList ODT同步数据传输对象与从机内存之间的映射关系Object Descriptor Table DAQList: 位于从机的数据元素通过数据传输对象传输到主机决定了在一个同步测量的周期或者事件触发时要测量的内存数量。 1个Event对应1个DAQList一个DAQList包括多个ODT一个ODT里可以包括多个变量。 5.1.2.1 ODT映射过程 让我们从控制器中的存储器结构的视角侧面来看这个问题用户已经选择了某些值并想要测量它们。为了不必使用完整的帧来发送信号值从机将尽可能多的值打包到一个帧中。但从机不会自己创建组成的定义否则主机在接收帧时将无法解释这些数据。因此主设备向从设备发送如何将值分配到帧的指令。 该分配是通过所谓的对象描述表ODT进行的。为了明确地识别测量变量地址和对象长度非常重要。因此用ODT接收从机到总线上的帧结构的RAM内容的分配。根据通信模型传输时作为DAQ DTO数据传输对象来完成。 将RAM地址分配给ODT 更准确地说ODT列表中的条目通过对象的地址和长度引用RAM中的存储区域。 在接收到测量开始命令之后在与测量相关联的某个点处到达事件。从节点记录这些值并通过总线进行传输。主机从总线上读取信息。由于它定义了将值分配给数据包本身因此数据的解释很简单。 数据包中可传输的最大有效载荷字节数取决于传输协议。在CAN的情况下这是七个字节。如果要测量更多的数据一个ODT是不够的。如果测量数据的传输必须使用两个或多个ODT则从设备必须将数据复制到正确的ODT中并且主设备必须能够唯一地识别接收到的ODT。如果使用控制单元的多个eventODT和event之间的连接也必须是可明确分配的。 例如如果用户使用两个event也会使用两个DAQList。每个使用的event都需要一个DAQlist。每个DAQlist都包含与ODT有关的条目每个ODT都包含对RAM单元中值的引用。 可选地存在从节点也传输时间戳信息的可能性。DAQList表示属于特定事件的值。当这些值被记录在从设备中时ECU的有效时间值被记录并在第一个ODT内传输。此DAQ列表的其他ODT不包含时间戳。时间戳是以递增计数器的形式实现的。该值以固定的时间间隔递增。执行递增的时间间隔被存储在A2L中。 带有时间戳的1-10号信号传输 DAQlist有三种不同形式预定义、静态以及动态。 5.1.2.2 预定义DAQList 主机一次性配置好所有要读取的变量并关联ECU端的不同事件channel一旦ECU对应的事件发生例如每隔100ms主动上传数据给主机。 5.1.2.3 静态DAQList 如果DAQList和ODT是在ECU中永久定义的则称为静态DAQ列表。 这里没有定义ODT列表中有哪些测量变量。静态DAQ列表定义了可以填充的帧与此相反如果事先定义了有哪些测量变量则为预定义的DAQlist。 对于静态DAQlist定义在ECU代码中并在A2L中描述。下图是A2L的一部分其中定义了静态DAQ清单 在上图中有一个数字为0的DAQ列表它与10ms event相关联最多可以携带五个ODT。编号为1的DAQ列表有三个ODT并且与1ms event相关联。 随着应用程序加载到ECU中在配置静态DAQList的情况下DAQList和其中包含的相应ODT数量是固定的。如果用户现在试图用一个event测量比分配的DAQList更多的信号则ECU中的从节点将无法满足要求配置尝试将因错误而中止但此时另一个DAQList仍然可用。 5.1.2.4 动态DAQList 静态DAQ测量中通过增加DAQList中的ODT的数量可以增加待测量量的数量。而且通过维持与要测量的事件通道数量一样多的DAQList可以对ECU的所有测量时机进行测量。 但是这些数量的增加会增大ECU中的管理缓冲区因此会消耗ECU的内存而且如果ECU具有10ms和20ms的控制周期有场景下10ms的控制周期中测量的测量点的数量很大有场景下20ms的控制周期中测量的测量点的数量也很大即根据测量的场景不同测量点的数量需求会有不同。对于这样的应用程序有一种称为“动态DAQ”的功能可以允许从节点动态更改每次测量的DAQList、ODT和ODT条目的数量。相反的如果在集成XCP驱动程序时这些数量是预先确定的则称为“静态DAQ”。 即同样ECU内存情况下可以通过减少10ms的DAQ来增加20ms的DAQ数量在总的内存范围中动态调整。 5.1.2.5 动态DAQ配置过程 动态DAQ列表配置使用FREE_DAQ、ALLOC_DAQ、ALLOC_ODT和ALLOC_ODT_ENTRY命令完成。这些命令允许在上述限制范围内动态分配多个DAQList、多个ODT到DAQList以及多个ODT list到ODT。如果没有足够的内存来分配请求的对象这些命令会得到一个ERR_MEMORY_溢出作为负响应。如果发生错误内存溢出则完整的DAQ列表配置无效。 在动态DAQList配置序列开始时主机首先必须发送一个FREE_DAQ。其次对于ALLOC_DAQ主机必须分配可配置DAQ列表的数量。然后主机必须使用ALLOC_ODT命令将所有ODT分配给所有DAQ列表。最后主机必须使用ALLOC_ODT_ENTRY命令将所有ODT条目分配给所有DAQ列表的所有ODT。 配置测量变量后用户开始测量。XCP主控器在所谓的DAQ列表中总结所需的测量变量。测量信号被分配给选定的事件。该配置信息在实际开始测量之前被发送到从设备。然后从设备知道它应该读取哪些地址并在到达哪个事件时进行传输。即DAQ模式将测量划分为配置和测量阶段。这解决了轮询过程中出现的两个问题由于主机在测量过程中不再需要单独请求每个值因此带宽的优化使用以及测量数据的相关性。 5.2 激励与旁路STIM By Passing) 5.2.1 STIM STIMStimulus是指一种用于发送信号或模拟输入到电子控制单元ECU的功能。 STIM允许开发人员模拟不同的输入条件以测试和评估ECU的响应。通过发送特定的信号或值到ECU可以模拟各种工作条件例如传感器数据、用户输入或环境变化。这样开发人员可以验证ECU在不同输入条件下的行为和性能。 举例来说假设我们正在开发一款车辆的引擎控制系统并需要测试不同的驾驶场景对引擎性能的影响。使用STIM功能我们可以模拟不同的驾驶情况如高速行驶、加速、急刹车等。通过发送相应的信号值到引擎控制系统我们可以观察ECU如何调整燃油喷射、点火时机等参数来适应不同的驾驶需求。 另一个例子是在汽车安全系统的开发过程中可以使用STIM来模拟各种传感器数据如雷达、摄像头或激光扫描仪。通过发送模拟的传感器输入到ECU可以评估安全系统在各种道路和交通条件下的响应和决策能力。 STIM功能提供了一种灵活的方式使开发人员能够模拟各种输入条件以测试和验证ECU的性能、稳定性和适应性。它在开发、优化和调试汽车电子系统中起着重要的作用帮助确保车辆在不同工作条件下的可靠性和安全性。 5.2.2 By Passing By Passing即旁路通过DAQ与STIM实现的一种“快速原型设计”解决方案。例如在一个系统中如果我们在标定时期需要摒弃现有的算法验证另外一套算法的实际工作表现就可以利用旁路功能 看起来也很形象在计算开始前ECU将输入数据通过DAQ模式传输给主机由主机中实现设置好的另一套算法计算并将输出结果通过STIM模式发送给从机“绕”过了原有算法实现了“旁路”从而达到快速验证的目的。 5.3 标定 对从机的参数标定写访问可简单理解为“将地址0x1234的值设置为5”。 在理解标定之前需要对参考页、工作页与激活页有所了解: 参考页Reference Page可以理解为定义的逻辑地址对应Flash上的一块地址参考页的属性在标定过程可读不可写 工作页Working Page可以理解为定义的逻辑地址对应RAM上的一块地址工作页的属性是可读可写。 激活页Activiting Page就是指选择激活的一个页比如激活工作页或者激活参考页等。 标定过程激活参考页仅可读读取当前的参数比如PID中的比例因子 P然后切换激活页激活工作页可读可写可以在工作页在线修改参数来获得较好标定值最后需要将优化后的P参数写入到原来参考页上这样就完成了一个参数的标定。 5.4 地址映射 5.4.1 硬件方式Overlay 有些芯片是支持硬件地址映射的比如英飞凌TC系列其工作方式比较简单就是在切换激活的工作页时通过操作寄存器完成地址映射。 如当寄存器Reg1 0时激活页是参考页逻辑地址0x000~0x200 对应的Flash中的0x1000x300;切换激活页为工作页时寄存器Reg11对应逻辑地址0x0000x200对应Ram中的0x000~0x200; 5.4.2 软件方式(Offset偏移) 通过加入一个offset偏移量来实现还是以上面的例子为例 激活页-参考页 逻辑地址 0x000~0x200 - Offset0x100 Flash地址0x100~0x300 (逻辑地址Offset) 激活页-工作页 逻辑地址 0x000~0x200 - Offset0x000 Flash地址0x000~0x200 (逻辑地址Offset) 5.5 A2L文件 【参考资料】https://blog.csdn.net/sinat_40003796/article/details/126426704 5.5.1 A2L文件概述 A2L文件是基于ASAP2标准采用ASAP2指定的一套类XML语言的描述性语言采用开标签和关标签来描述信息书写描述ECU的通信等相关的参数以及标定观测变量的地址以及物理值计算公式等等的文本格式文件。它用来指导上位机和ECU的通讯交互过程让他们对交互的信息有一致的认识从而是上位机工具准确且友好的将ECU中的信息展现给用户。 5.5.2 A2L文件结构 /begin PROJECT /*表示一整个项目一个文件一个项目*//begin HEADER /*描述项目信息包括项目编号项目版本等信息*/ /end HEADER/begin MODLUE/*描述ECU需要的所有信息一个ECU对应一个MODULE块*//begin A2ML/*描述接口数据格式包括传输命令DAQ及传输层的定义*//end A2ML /begin MOD_PAR /*管理ECU的数据CPU 客户 编号等等最重要的是内存的分段分页管理类似DSP中的CMD文件*//end MOD_PAR /begin MOD_COMMON/*一般性描述信息比如数据的对齐方式*//end MOD_COMMON/begin IF_DATA/*接口数据具体的参数*//end IF_DATA/begin FUNCTION/*【非必须】FUNCTION这个在Vcetor提供的SIP包中会对XcpAppl的版本进行引用*//end FUNCTION/begin CHARACTERISTIC/*定义标定变量包含被标定的变量的名字地址长度计算公式精度最大最小值等信息*//end CHARACTERISTIC /*可定义多个*//begin AXIS_PTS /*该块用来定义数组或查表变量对应的轴的类型它将被标定变量【二维表CURVE、三维图MAP】等块来引用一个ECU里边可以有很多种不同的轴类型用于实现查表和插值*//end AXIS_PTS/begin MEASUREMENT/*定义测量变量包含了被测量的变量的名字地址长度计算公式精度分辨率Resolution和准确度Accuracy最大最小值等信息*//end MEASUREMENT/*可定义多个*//begin COMPU_METHOD/*定义计算公式及原始值和物理值之前的转换关系 如phy axb*//end COMPU_METHOD/begin COMPU_VTAB /*定义原始值和物理值的映射关系 一般是枚举变量*//end COMPU_VTAB/begin RECORD_LAYOUT/*定义标定变量的物理存储结构一维二维表三维图等*//end RECORD_LAYOUT/begin MERGED UNIT /*【非必须】MERGED UNIT部分会对单位进行定义如将“Seconds”定义为“s”等*//end MERGED UNIT /end MODLUE/end PROJECTPROJECT一个A2L文件只能有一个PROJECT而PROJECT中至少要有一个ModuleA2L文件的注释和C语言的注释方式是一样的支持 /* 和 // 两种方式。 HEADER该块里边包含了项目信息包括项目编号项目版本等信息 MODULE该块里边包含了在标定测量层面来描述ECU需要的所有信息一个ECU对应一个MODULE块MODULE由许多子块来组成 MOD_PAR这个块里包含了用于管理ECU的数据例如客户名编号CPU类型ECU的内存分配等其中最重要的就是ECU的内存分配开发人员需要根据ECU内存分段情况定义MEMORY SEGMENT和SEGMENT里边的PAGE这里的SEGMENT/PAGE的概念和在线标定中的概念是一致的一个MODULE里边只能出现一次。 MOD_COMMON该块用来指定ECU的一些标准的一般性描述信息比如大小端数据的对齐方式FLOAT变量的处理方式等一个MODULE里也只能出现一次。 RECORD_LAYOUT内存布局描述数据的存放方式单个变量二维表三维表等。 CHARACTERISTIC该块用来定义标定变量里边包含了可以被标定的变量的名字地址长度计算公式精度最大最小值等信息一个MODULE里边可以出现很多次这样的块也就是说一个ECU可以有很多的标定变量。 /begin CHARACTERISTIC/* Name */ unique identifier/* Long Identifier */ comment, description/* Type */ 见A2L文件预定义类型[Type类型]/* Memory Address */ 内存地址/* Record Layout */ 见RECORD_LAYOUT/* Maximum Difference */ table value最大浮动/* Conversion Method */ 见COMPU_METHOD/* Lower Limit */ table values范围/* Upper Limit */ table values范围 /end CHARACTERISTICMEASUREMENT该块用来定义测量变量里边包含了可以被测量的变量的名字地址长度计算公式精度最大最小值等信息一个MODULE里边可以出现很多次这样的块也就是说一个ECU可以有很多的测量变量。 /begin MEASUREMENT/* Name */ unique identifier/* Long Identifier */ comment, description/* Data Type */ 见A2L文件预定义类型[datatype类型]/* Conversion Method */ 见COMPU_METHOD/* Resolution */ smallest possible change in bits/* Accuracy */ possible variation from exact value in %/* Lower Limit */ table values范围/* Upper Limit */ table values范围ECU_ADDRESS Addess in the memory /end MEASUREMENTCOMPU_METHOD该块用于定义计算公式及原始值和物理值之前的转换关系这些公式可以被标定变量和测量变量来引用从而将原始值转换成便于用户阅读和使用的物理值。具体有6种转换方法。 /begin COMPU_METHOD/* Name */ unique identifier/* Long Identifier */ comment, description/* ConversionType */ 见A2L文件预定义类型[ConversionType类型]/* Format */ %[总长].[小数点位数]/* Unit */ 物理单位/* Lower Limit */ table values范围/* Upper Limit */ table values范围COMPU_TAB_REF 见COMPU_VTAB /*ConversionType选择TAB_VERB时需要*/COEFFS a b c d e f /*ConversionType选择RAT_FUNC时需要*/ /end COMPU_METHODCOMPU_VTAB该块用来定义原始值和物理值的映射关系是一种特殊的转换关系它一般应用于枚举变量。 /begin COMPU_VTAB/* Name */ VTAB_FOR_COMPU_METHOD_0/* Long Identifier */ comment, description/* Conversion Type */ 只能选择TAB_VERB/* Num of Elements */ number of value pairs/* Table Element */ float string /end COMPU_VTABFUNCTION这个块不是必须。 GROUPS该块是把标定变量和测量变量按照一定的逻辑比如功能模块组织起来在上位机中形成一个下拉菜单使得用于可以从中选择变量这块是可选的。 5.5.3 A2L预定义类型 六、标定数据怎么保存 整个标定过程持续时间可能很长而进行标定时程序是运行于RAM中的下电之后所有的数据就消失了那么如何永久保存更改后的参数化呢基本上有两种选择 6.1 将参数保存在ECU中 当控制单元关闭时,RAM中改变的数据可以自动地或由用户手动地保存在ECU中的EEPROM中。前提条件是数据可以存储在从节点的非易失性存储器中。在ECU的情况下这通常是EEPROM或Flash。然而具有数千个参数的ECU很少有这么多未使用的EEPROM内存空间因此很少使用此过程。 另一种可能性是将RAM大小写回到控制单元的闪存中。这个过程相对复杂。闪存必须先擦除然后才能重写。这反过来只能一块一块地完成。因此不可能写回单个字节。 6.2 将参数以文件的形式保存在计算机上 更常见的是将参数存储在计算机上。所有参数都以文件的形式存储。数据在标定完成之后可以保存到上位机中保存成一个parameter set file,这样在下次标定之前通过这个文件将上次标定的最终结果通过DOWNLOAD命令重新刷回RAM中。 参考文献 [1]. XCP_ReferenceBook_V3.0_EN.pdf [2].ASAM MCD-1 XCP v 1.1 [3].【XCP学习】CCP/XCP标定协议解析 [4].如何使用CANape实现XCP/CCP“Measurement测量”和“Calibration标定”变量 [5].XCP协议-协议篇 [6].A2L文件内容详细解析 [7].基于can总线的A2L文件解析1 [8].XCP协议-命令代码篇 [9].面向初学者的XCP——XCP协议的通信的构造和功能 [10].【XCP学习】测量/校准协议XCP入门-1 [11].【XCP学习】XCP协议的通信的构造和功能-2 [12].【XCP学习】XCP的趋势和应用实例-3
http://www.pierceye.com/news/716900/

相关文章:

  • 茶叶红酒网站建设关键词的优化方法
  • 做网站后台用什么语言好吴川市建设工程公司网站
  • 海口专业网站建设公司怎样利用网站做淘宝客
  • 雄安专业网站建设方案长沙做网站建设
  • 微信上的网站实物黄金哪个网站做的好
  • 网站建设的作用和用途wordpress外网固定链接
  • 网站做多长时间才有流量上海商城网站制作公司
  • 做电影网站服务器网站如何备案 流程图
  • 太原建站模板搭建wordpress attachment
  • 购买腾讯备案网站网站错误列表
  • 怎么查看网站的外链php网站建设流程图
  • 顺企网萍乡网站建设wordpress 读者墙
  • 电力建设期刊网站投稿域名提供商
  • 广东网站备案需要多久oa信息化管理系统平台
  • 哪个网站可以做担保交易小程序排行榜
  • 网站用html做的怎么弄后台中铁十六局个人门户网
  • 一个网站怎么做流量统计佛山市seo广告优化工具
  • 机关网站建设需求文档国家住建部官网
  • 一条龙网站建设哪家好六安招聘网官网
  • 网站建设 中企动力阀门和建设银行类似的网站
  • 所有做运动的网站姜堰网网站
  • 广西汽车网网站建设影楼微网站建设方案
  • 企业展厅设计比较好的公司北京优化服务
  • 网站的icp 备案信息wordpress爆破字典
  • 福建厦门网站建设公司网站代码素材建设
  • 广州网络公司建站e语言可以做网站吗
  • 不想用原来的网站模板了就用小偷工具采集了一个可是怎么替换seo顾问张智伟
  • 效果好的徐州网站开发建设网站怎么学
  • 上海网站设计要多少钱建设银行个人网站打不开
  • 哪个网站做欧洲旅行比较好东营网站制作