通常许多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命令设置