CAN标定协议.docx
- 文档编号:29753465
- 上传时间:2023-07-26
- 格式:DOCX
- 页数:42
- 大小:1.47MB
CAN标定协议.docx
《CAN标定协议.docx》由会员分享,可在线阅读,更多相关《CAN标定协议.docx(42页珍藏版)》请在冰豆网上搜索。
CAN标定协议
1.2CAN标定协议
控制器局域网络CAN是由英特尔公司和罗伯特博世有限公司联合开发的。
该协议广泛应用在许多高端汽车控制系统如发动机管理以及工业控制系统。
用于CAN协议的控制器芯片可以从不同的半导体制造商处得来。
CAN标定协议是ASAP标准的一部分。
它是由一个名叫IngenieurbüroHelmutKleinknecht的标定系统制造商开发和推广的,并且应用于汽车行业的许多领域中。
CCP由ASAP的工作组控制,并且增强了可选功能。
2应用程序的领域及范围
这个文件规定了CAN标定协议CCP,是由包含了ASAP的工作组来定义。
CCP定义了控制器与主设备之间的连接使用CAN2.0B(11-bit和29-bit标示符),也包括2.0A(11-bit标示符)用于:
1.从控制器获得数据,
2.内存转移和标定控制器中的控制功能。
在以下领域CCP提供的功能可能会被用到:
开发电子控制单元(ECU)
ECU功能和环境测试的系统
用于控制设备的测试系统和测试标准
前车系列的机载测试盒测量系统
任何基于CAN的分布式电子控制系统的非汽车应用
5定义及缩写
CAN控制器区域网络:
通信协议(在ISO/OSI模型水平1+2)是由罗伯特博世有限公司开发和维护的。
设计此协议用以管理各种CPU之间多路复用的通讯。
它是信息化控制,采用无损的逐位仲裁决定哪个节点“拥有”总线,并且有一个信号优先体系,它基于每个信号传递的信号标示符。
CCPCAN标定协议:
由IngenieurbüroHelmutKleinknecht开发,并由ASAP工作组通过批准为用于数据采集和标定的标准协议。
CRO命令接收对象:
信号从主设备发送到从设备。
CRM命令返回信息:
一种由从设备发向主设备的信号格式,包含了命令/错误代码和命令
计数器。
DAQ数据采集:
从ECU中定义一个程序和从设备到主设备之间的信号发送,以实现数据的快速读取
DTO数据发送器:
从设备发送到主设备的信号。
(命令返回信号或者事件信号或数据采集信号)
ECU电子控制单元:
带有一个中央处理机利用它的外围电路执行程序功能的电子设备。
消息对象:
在CAN总线上传递的信号,是由发送端ECU发送到接收端ECU的。
接收端ECU拥有信号中包含的数据编码。
一个消息对象的数据可以是0到8字节。
消息框:
在最近的关于CAN的文献中,消息框是消息对象的同义名称。
主从设备:
一套通过CAN交换数据对象的控制器。
此外,外部控制器链接到网络,它与一个或多个控制器相连,并向它们发送命令,被称为主设备。
在现存网络中接收命令的控制器被称为从设备。
ODT对象描述符表:
用于接收数据组的变量元素列表。
6协议的定义
用于标定和获取数据的CAN通信协议是一个主-从通讯类型。
在CAN总线上,主设备和一个或多个从设备相连。
主从设备布局
主设备是一个标定工具或诊断/监测工具,或一个测量系统通过向从设备发送命令以启动CAN总线上的数据传输。
CCP实现支持命令,用于带有简单存储传输的通用控制和数据采集。
通讯协议的上述两部分(函数组)是相互独立并且可以分别运行的,这是依靠从控制器实现的。
这也支持各部分的信号以嵌套次序传输。
6.1通用控制命令
这些命令用于在从设备中实现功能。
出于这个目的,在主设备和CAN总线上的其他位置(从设备)之间建立了连续的逻辑连接。
这种逻辑连接一直有效,直到另一个站被选中或当前位置是通过明确的命令断开。
初始化过后,已经取得了逻辑连接,主设备控制数据从主设备到从设备间的相互传输。
所有来自主设备的命令必须由从设备上带有的握手协议来提示(命令返回码或错误代码)。
6.2数据采集命令
这些协议命令是用来在从设备中进行连续数据采集的。
CAN上的任一节点都可以定期的传送内部数据,它们对应于主设备的控制命令所配置的一个列表。
数据传输起始于主设备并由从设备完成,它可以依赖于固定的采样率或者由事件驱动(例如:
曲轴位置)。
7信号对象
7.1信号对象组织
根据对CAN的定义,所有需要传送的信号和数据都被打包成为“信号对象”,含有高达8字节的数据。
一个信号对象从CAN上的一个节点传送到另一个节点。
CCP要求至少两个信号对象,一个用于每个方向:
1)命令接受对象:
CRO
2)数据传送对象:
DTO
CRO用于命令代码和相关参数的接收,来执行内部功能或者是以逻辑连接的CAN设备之间的内存传输。
命令的接收必须由一个使用数据传送对象DTO的握手信号来提示,这样一来DTO就被称为命令返回信号。
这一DTO信号的返回代码,用来判定对应命令是否被成功执行。
功能框图:
CCP主从设备间的通讯流程
在从设备描述文件里定义了消息标识符在上述对象的分配(例如:
ASAP2格式描述文件),它被用来配置主设备。
一个好的建议表示信号对象的总线优先权需要认真确定,以防止破环总线上其他的实时通讯。
同时,CRO需要具备比DTO更高的优先权。
对于CCP数据传输,它的本身没有定义字节顺序。
因为数据组依靠ECU的CPU,字节顺序是在从设备描述文件中被定义的。
唯一的例外是TEST中的站地址,连接和断开命令。
7.2信号对象的描述
7.2.1命令接收对象CRO
一个命令接收对象CRO是由主设备送到其中一个从设备中的。
从设备响应中的数据传输对象包含一个命令返回信号CRM。
对象的结构:
信号范围参数:
CRO的数据长度代码必须是8.未使用的数据字节,在命令描述中标有“忽略”,可能代表任意值。
7.2.2数据传输对象DTO
DTO必须将从设备所有将要发出的信号和数据制作为数据包。
数据包的首字节被用作它的ID。
DTO是一个:
*命令返回信号CRM,如果DTO被当做主设备发送到一个CRO的响应。
*事件信号,如果DTO报告内部下属状态改变,以引用错误恢复或其他服务。
详细的解释在该章的‘错误处理’。
*数据采集信号,如果数据包ID指向对应的对象描述表ODT,它描述了数据采集元素(变量)包含在数据包剩余的7个字节的数据中。
ODTs是通过协议命令进行初始化和修改的(见章节‘命令的描述’)。
对象结构:
信号范围内的参数:
PID的含义:
命令返回或事件信号的格式如下:
ERR:
命令返回/错误代码。
CTR:
CRO中最后一条命令收到的命令计数器
CRM的数据长度代码必须是8。
未使用的数据字节,在命令描述中标有“忽略”,可能代表任意值。
数据采集信号的格式如下:
PID=n;DTO包含一个数据采集信号对应于对象描述表ODTn(详见章节‘命令的描述’)
DTO的数据长度代码可设置为实际大小。
7.3数据采集机构
主设备可以从一个从设备中初始化数据采集,从设备将DAQ-DTOs中定义的数据送回。
组织的数据元素如下:
位于ECU内存中的数据元素,被分配给一个称为对象描述表ODT的列表中。
表中包含地址,地址扩展和个元素的字节长度。
ODT可以有多达7个元素指针。
在这ODT中定义的每个元素的内容必须被转换成DAQ信号DTO以送到主设备中。
为了节省ECU中的内存资源,地址的扩展和长度都是可选的。
该元素必须由ECU一贯的采样。
如果一个ECU不支持一个元素的大小超过1字节,主设备需要将多数据对象分割为单一字节。
在这种情况下,ECU必须保证在ODT中所有元素的一致性。
PID是分配给ODT的数目(0= 通常许多ODT被定义在从设备中的数据采集: CCP允许DAQ列表一个数字的安装,它可以同时起作用。 每个DAQ列表DTO的采样和传输都是由ECU中的个别事件引发的。 详见START_STOP命令的说明。 当一个DAQ列表被触发,所有或一个ODT(根据ECU的执行情况)的数据都以一致的方式采样。 ECU可能需要一些时间在总线上发送取样的DTO信息。 当一个新的周期循环在前一个循环的传输完成之前被触发,ECU有两种可能的反应: 1.前一周期的传输被跳过。 优点: 有一些DAQ列表的ODT丢失而且此工具可以向用户反应这一情况。 问题: 如果这些缺陷发生的频繁,会有一些信号根本没有被测量到。 2.新一循环的传输被跳过。 优点: 收到的采样总是完成的,而且产生的采集扫面线减少。 问题: 如果是事件触发的采样,工具没有能力检查采集率的准确性。 此外,ECU可能发送一个“DAQ处理器超负荷”事件信号来通知主设备。 ECU必须小心不要因为这一额外的消息溢出另一个周期。 当定义ECU中的测量元件时,开发者必须注意以保证采样数据可以通过CAN传输。 所描述的对于过载的反应机制,不应该在标准工况下起作用。 一个经典的方法来建立一个ODT应该是: 1.清除ECU中的当前列表并且让ECU通过发送命令GEL_DAQ_SIZE来为一个DAQ列表分配内存。 在GEL_DAQ_SIZE命令之后,ECU报告了当前DAQ列表中的ODT可用的内存。 2.在一个循环中的发送 设置数据采集参数以及DAQ列表数目,ODT数目,ODT中的元素数目 写下数据采集参数包括元素大小,扩展地址,直至ODT完成的32位基地址并且重复这一程序作进一步ODT。 为了初始化DAQ-DTO的传输,发出了一个START_STOP命令。 8版本机制 CCP2.1版介绍了一个版本管理机制,以减少版本不相容性的影响。 以下是方针应用: 主要的协议版本号码: 主要协议的版本好吗在0到255之间变动。 如果现存的用于基本内存传输和数据采集功能的命令,与以前定义的版本有很大的不同,那么就需要对这一号码做些改变。 这意味着,非选择性命令在同一个主要协议版本号的非向后兼容方式里必须是不变的。 次要协议的版本号: 次要协议的版本号是从0到9.如果协议中增加了或删除了一个选择性命令,那么就必须对这号码做些变动。 9版本兼容性 为了确保主设备与从设备间最低的兼容性,以下方针适用: 1.如果主协议版本号不相等,则主设备与从设备间的通讯就不可能完成。 2.主设备必须至少有跟从设备相同或更高的协议版本(主要和次要协议版本号)。 从设备只要求支持一个协议版本。 3.为了确保一个完全的ASAP1,一个CCP要求主设备和从设备必须至少支持所有非选择性命令。 10 命令代码列表 以下是可选择命令,如果ECU不支持DAQ: GET_DAQ_SIZE,SET_DAQ_PTR,WRITE_DAQ,START_STOP。 如果用到SELECT_CAL_PAGE命令,则需要GET_ACTIVE_CAL_PAGE。 11令返回代码列表 如果对协议命令非同步的发生错误,CCP的从设备也可以通过发送错误代码作为事件代码(封包ID0xFE),来直接调用相应的错误处理。 错误的分类 : 详情见章节“错误处理”。 12命令的描述 这一章节讲述了所有命令以及它们的参数和期望的返回信息,也包括每个命令对应的一个示例。 12.1连接 命令标签CONNECT CRO中数据的结构 这个命令为主-从命令协议,建立一个与选择的从站间连续逻辑的点对点连接。 直到另一个站点被选中,以下所有的命令协议都唯一的指向这一站点。 一个对另一个站点的CONNECT命令将临时断开活动站点(见断开连接)。 CONNECT命令对于一个已经连接的站点是被认可的。 一个从设备不会对任何命令做出回应,除非被一个优先的连接命令带有正确的站点地址标记过。 该站点地址按照从小到大字节顺序,被指定为一个数(Intel格式,低字节优先) 以下是预计的返回信息(连接或返回DTO: ) 示例 主设备向从设备发送一个带有站点地址0x0200的CONNECTCRO。 命令计数器目前是0x45: 从设备返回一个包含认可(0x00)的DTO和CRO的CTR: 12.2交换站点标识 命令标签EXCHANGE_ID CRO中的数据结构 CCP的主从站点交换ID用于自动回话配置。 这也可能包括基于从站点返回ID(即插即用)的数据采集安装文件的自动分配。 以下是预计的返回信息(返回的DTO的内容): 从设备自动的设置内存传输地址0(MTA0)到CCP主设备可能用UPLOAD随后上传的请求ID中。 另见SET_MTA和UOPLOAD命令的说明。 下述的资源的可利用性掩码/为了精简的资源保护状态掩码格式仅仅被称为资源掩码。 资源可用性: 如果bit=TRUE指定的资源或功能可用。 资源保护: 如果bit=TRUE指定的资源或功能被保护,以防未授权的访问(需解锁)。 示例 主设备发送一个EXCHANGE_IDCRO到从设备。 命令计数器CTR目前是0x23: 从设备返回一个包含确认接收的DTO(0x00),CRO的CTR,从地址的长度和数据格式: 从ID的长度是4字节,数据格式是第二类编码类型。 资源的可用性掩码是0x03,资源保护状态掩码是0x03.数据可以利用UPLOAD在从设备中提取。 12.3GetSeedforKey 命令标签GET_SEED CRO中的数据结构 详见用资源掩码的描述EXCHANGE_ID。 一个GET_SEED命令只能调用一个资源或功能。 如果需要调用更多资源,GET_SEED命令必须和下述UNLOCK命令一起多次执行。 返回的‘seed’数据用于seed&key算法来计算解锁需要授权访问功能的‘key’(见下面的‘解锁保护’)。 以下是预计的返回信息(返回DTO的内容): 如果保护状态=FALSE,不需要UNLOCK来解锁有用的功能。 示例 主设备发送一个GET_SEEDCRO到从设备。 命令计数器目前是0x23.任务是数据采集: 从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,保护状态和‘seed’数据: 保护状态是TRUE(0x01),seed数据是0x14,0x15,0x16,0x17。 12.4解锁保护 命令标签UNLOCK CRO中数据的结构 利用一个由‘seed’计算出的‘key’来解锁从设备的安全保护(如果合适)。 见上述seed&key。 以下是预期的返回信息(返回的DTO的内容): 详见用于资源掩码描述的EXCHANGE_ID。 示例 主设备发送一个UNLOCKCRO到从设备。 命令计数器CTR目前是0x23,并且运用了GET_SEED得来的key: 从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,以及授权状态: 授权状态是0x02,仅有数据采集解锁。 12.5设置内存转移地址 命令标签SET_MTA CRO中的数据结构 这个指令将初始化一个基础指针(32bit+扩展)用于以下所有的内存传输。 该地址扩展是依靠从控制器组织,并且可以辨认一个可切换记忆库或一个内存段。 MTA数(操作)是用来识别不同的传输地址位置(指针)。 MTA0是被DNLOAD,UPLOAD,DNLOAD_6,SELECT_CAL_PAGE,CLEAR_MEMORY,PROGRAM和PROGRAM_6命令。 MTA1用于MOVE密令。 见‘MOVE’命令。 以下是预期的返回信息(返回的DTO的内容): 示例 主设备发送一个SET_MTACRO到从设备。 命令计数器目前是0x23,MTA0数为0,地址扩展0x02并且基地址是0x34002000: 从设备返回包含确认接收(0x00)的DTO和CRO的CTR: 12.6数据下载 命令标签DNLOAD CRO的数据结构 在CRO中包含的指定长度(大小)的数据块,将被复制到内存中,在当前内存传输地址(MTA0)开始。 MTA0指针将随‘size’的值后递增。 以下是预期的返回信息(返回的DTO的内容): 示例 主设备发送一个DNLOADCRO到从设备。 命令计数器CTR目前是0x23,数据大小是0x05,传输的数据是0x10,0x11,0x12,0x13,0x14: 从设备回答了一个包含确认收到(0x00)的DTO,CRO的CTR,记忆传输扩展地址0x02以及(增加的)目前的MTA0 在执行这个命令之前,MTA0是0x34002000并且增加了5。 12.76字节数据下载 命令标签DNLOAD_6 CRO中的数据结构 包含在CRO中的固定长度6字节的数据模块将被复制到内存中,在目前的内存传输地址(MTA0)启动。 MTA0指针增加的值被设置为6。 以下是预期返回的信息(返回的DTO的内容): 示例 主设备发送一个DNLOAD_6CRO到从设备。 命令计数器CTR目前是0x25,数据大小是0x05,将要传输的数据是0x10,0x11,0x12,0x13,0x14,0x15: 从设备返回一个包含确认收到(0x00)的DTO,CRO的CTR,内存传输扩展地址0x02和(增加的)目前的MTA0 在执行这一命令之前,MTA0是0x34002000,滞后增加了6。 12.8数据上传 命令标签UPLOAD CRO中的数据格式 从目前MTA0启动的指定长度的数据模块,将被复制到相应的DTO数据库中。 MTA0指针的位置增加值被设置为‘size’。 以下是预期返回的信息(返回的DTO的内容): 示例 主设备发送一个UOLOADCRO到从设备。 命令计数器CTR目前是0x23,数据大小是0x04: 从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR以及要求的数据字节: DTO中没有报告新的MTA0地址。 12.9简短上传 命令标签SHORT_UP CRO中数据的结构 在源地址启动的指定长度的数据模块,将被复制到对应的DTO数据库中。 MTA0指针保持不变。 以下是预期返回的信息(返回的DTO中的内容): 示例 主设备发送一个SHORT_UPCRO到从设备。 命令计数器CRT目前是0x23,数据大小是0x04,源地址是0x12345678: 从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR和要求的数据字节: 12.10选择标定数据页面 命令标签SELECT_CAL_PAGE CRO中的数据结构 这个命令的功能依赖于ECU的执行。 先前用于启动标定数据页面的初始化的MYTA0指针,是由这个命令的当前活动页面选择的。 以下是预期返回的信息(返回的DTO的内容): 示例 主设备首先发送一个SET_MTACRO然后是一个SELECT_CAL_PAGECRO到从设备。 命令计数器目前是0x23。 从设备返回一个包含确认接收(0x00)的DTO并且CRO的CTR: 利用ECU的两个内存模块来标定,SET_MTA和SELECT_CAL_PAGE命令可以被用于来自主设备的‘紧急事件中断’,这就可以将从设备带入一个‘安全状态’,是用SET_MTA命令和立刻用SELECT_CAL_PAGE执行改变来准备这两个内存模块的改变。 12.11获取DAQ列表的大小 命令标签GET_DAQ_SIZE CRO中数据的结构 返回指定的DAQ列表的大小,作为可用对象描述列表(ODTs)的号码并且清除目前的列表。 如果指定列表数不可用,将返回size=0。 DAQ列表初始化而且这个列表的数据采集停止。 一个单独的CAN标识器被指派到一个DAQ列表,来配置多个ECU数据采集。 这一特征是可选择性的。 如果给定的标识器不可用,将返回一个错误代码。 29小块CAN标识器是由许多重要小块成套标记的。 以下是预期的返回信息(返回的DTO内容): 一个DAQ列表指定的ODT的PID是由下式决定的: PID=FirstPIDofDAQList+ODTnumber 示例 主设备发送一个GET_DAQ_SIZECRO到从设备。 命令计数器CTR目前是0x23,DAQ列表号码是0x03ID是0x01020304。 从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR,第一个PID=0x08列表大小是0x10(10个ODT有多达7个元素) 12.12设置DAQ列表指针 命令标签SET_DAQ_PTR CRO中数据的结构 初始化DAQ列表指针以便随后写入DAQ列表。 详见‘数据采集信息组织’。 以下是预期返回的信息(返回DTO的内容): 示例 主设备发送一个SET_DAQ_PTRCRO到从设备。 命令计数器CTR目前是0x23,DAQ列表号是0x03,ODT号码是0x05,元素号码地址是0x02。 从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR: 下一个命令WRITE_DAQ是用来设置选定的ODT中的数据元素。 12.31写DAQ列表入口 命令标签WRITE_DAQ CRO中数据的结构 写一个到DAQ列表的入口(单独DAQ元素的描述)是由DAQ列表指针(见SET_DAQ_PTR)定义的。 接下来的DAQ元素大小被定义为: 1字节,2字节(单字型),4字节(长整型/浮动型)。 一个ECU可能不支持每一个元素单独地址扩展,以及2或4字节元素大小。 主设备负责监视ECU的限度。 限度可以再从设备描述文件中被定义。 (例如.ASAP2)。 从设备必须负一个DAQ元素的所有字节数符合传输的规定。 以下是预期返回的信息(返回的DTO的内容): 示例 主设备发送一个WRITE_DAQCRO到从设备。 命令计数器目前是0x23,DAQ元素大小是0x02字节,扩展地址是0x01,32位地址是0x02004200。 从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR: 12.13启动/停止数据传输 命令标签START_STOP CRO中的数据结构 这个命令是用来启动或停止数据采集,或为一个指定的DAQ列表同步启动作准备。 LastODTnumber明确指定了这个DAQ列表中的哪个ODTs(从0到最后一个ODT号)需要传输。 EventChannelNo.明确指定了可以很有效控制数据传输定时的信号源种类。 为了可以降低期望的传输速率,可能会向事件通道发送prescaler请求。 预标定器的值要素必须是大于或等于一的。 Mode参数被定义如下: 0x00停止指定的DAQ列表,0x01启动指定的列表,0x02准备DAQ列表用于同步启动。 启动/停止模式参数=0x02(准备启动数据传输)用提供的参数配置DAQ列表但并不启动指定列表的数据采集。 这参数用于所有配置的DAQ列表的同步启动。 为了防止从设备无法完成数据采集的同步启动,从设备会在这一参数是TRUE(不是0)时启动数据采集。 ECU指定的事件通道和DAQ列表属性会在从设备说明(ASAP2)中有描述。 以下是预期返回的信息(返回的DTO的内容): 示例 主设备发送一个START_STOPCRO到从设备。 命令计数器CTR目前是0x23,启动/停止字节是0x01(开始),DAQ列表号是0x03,要传送的封包号是0x07。 ECU外壳通过预标定器为1(Motorola格式)使用事件通道0x02。 从设备返回一个包含确认接收(0x00)的DTO,CRO的CTR: 12.15断开连接 命令标签DISCONNECT CRO中的数据结构 断开从设备连接。 断开可以是临时的,将从设备设置为‘离线’状态或者用参数0x01中断标定事件。 停止活动时所有状态信息失效,并将从设备重置为保护状态。 一个临时的断开连接并没有停止DAQ信息的传输。 MTA的值、DAQ的建立、活动状态和保护状态并不受临时断开连接的影响而且保持不变。 如果ECU支持恢复特征,而且恢复部分由SET_SESSION_STATUS命令设置
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CAN 标定 协议
![提示](https://static.bdocx.com/images/bang_tan.gif)