您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > ISO15031协议9种模式详解
15031-5中描述的关于OBD输出信息的9种模式1,请求动力系当前数据2,请求冻结帧数据3,请求排放相关的动力系诊断故障码4,清除/复位排放相关的诊断信息5,请求氧传感器监测测试结果6,请求非连续监测系统OBD测试结果7,请求连续监测系统OBD测试结果8,请求车载系统,测试或者部件9,读取车辆和标定识别号在CAN通讯中的使用1.请求动力系的当前数据1)第一步:在请求具体PID之前,应该发一些探测该ECU支持哪些PID的指令:描述十六进制数值SID01用来查询在$00~$20之间支持PID的PID00用来查询在$21~$40之间支持PID的PID20用来查询在$41~$60之间支持PID的PID40用来查询在$61~$80之间支持PID的PID60用来查询在$81~$A0之间支持PID的PID80用来查询在$A1~$C0之间支持PID的PIDA0回应:如果发送的消息为-$020100FFFFFFFFFF描述十六进制数值#2:SID01#3:PID00#4:PID$01~08SupportedBF表示支持01,03~08#5:PID$09~10SupportedBF表示支持09,0B~10#6:PID$11~08SupportedA8表示支持11,13,15#7:PID$09~20Supported91表示支持19,1C,20在请求01~20段到底支持哪些PID时,回应消息中分了4个字节来描述支持,每个字节正好描述8个PID的支持情况,如:在#4描述的是第一个8个PID,如果BF(Hex)就是10111111(Bin)1表示支持,0表示不支持,MSB对应的01,LSB对应着08,可知01,03~08是支持的,而02不支持。在请求21~40,41~60等其他段同理。2)第二步在第一步之后就可以请求支持的PID了。在一个请求消息帧中,最大可以请求6个PID,通常情况下,请求的数据可能来自不同的ECU,如果用物理寻址分别请求不方便,不如功能寻址,直接从不同的ECU中拉取数据。在返回消息中,可以根据在PID后面的数据是占ByteA,还是ByteA+B来断句,翻译出返回的数据,也可以一个请求消息中只有一个PID,但这样需要6条CAN消息去请求,6条接收。2.请求冻结帧数据在请求冻结帧数据时,依然需要知道请求的冻结帧中支持的PID,然后再去在该冻结帧中请求数据,请求支持的数据的格式:参数名Hex数值请求冻结帧服务SID02PID#1(如00,10,20等)XX帧序号Frame#XXPID#2XX帧序号Frame#XXPID#3XX帧序号Frame#XX可以只请求PID#1,不需要把8个字节都填满,每帧CAN消息因此最大只能请求3个CAN。请求支持数据的消息帧的响应格式:参数名Hex数值请求数据的响应SID42第一个支持的PID部分00帧序号XXDataA:supportedPIDsXXDataB:supportedPIDsXXDataC:supportedPIDsXXDataD:supportedPIDsXX…………第N个支持的PID部分80DataA:supportedPIDsXXDataB:supportedPIDsXXDataC:supportedPIDsXXDataD:supportedPIDsXX具体支持哪些PID的算法和$01(SID)一样。在知道冻结帧支持哪些PID后就可以请求数据了。但是首先还是应该去请求引发冻结帧的DTC。此步骤在请求冻结帧数据之前必须进行,否则有可能请求不到数据,请求DTC的PID是$02。描述Hex数值请求动力系冻结帧服务SID02请求故障码DTC02帧序号Frame#XX回应消息:描述Hex数值请求动力系冻结帧服务正响应SID42请求故障码服务PID02帧序号Frame#XXDTC高字节DTC低字节XXXX在请求故障码后,可以请求冻结帧数据。描述Hex数值请求冻结帧数据服务SID02PID:EngineSpeed0C帧序号Frame#00PID:EngineCoolantTemp05帧序号Frame#00…………回应消息:描述Hex数值请求冻结帧数据积极响应42PID:EngineSpeed0C帧序号00高字节EngineSpeed(2080Rpm)低字节EngineSpeed(2080Rpm)2080PID:EngineCoolantTemp04帧序号00EngineCoolantTemp:0℃28…………如果在ECU中没有储存冻结帧,那么在请求故障码的那部会返回0000这样的故障码。3.请求动力系相关的故障码(即PXXXX)请求动力系故障码的SID为$03回应消息:描述Hex数值与排放相关的故障码返回正响应SID43在ECU中储存的DTC数量03DTC高字节P0143DTC低字节P01430143DTC高字节P0196DTC低字节P01960196DTC高字节P02CDDTC低字节P02CD02CD4.清除/重置和排放相关的故障信息服务SID为$04正响应是$445.请求氧传感器监测测试结果6.请求非连续监测系统OBD测试结果这项服务的目的是获得某些部件/系统的车载诊断结果,比如催化器诊断和蒸发系统监测测试结果。厂家负责对不同的系统和部件分配一个测试ID(TID)和部件ID(CID)。最后一次测试结果会被保存到得到了新的结果可以替代,中间既使多次熄火也不会丢失这些信息。测试结果通过TID来请求,每条测试结果代表一个TID/CID组合。测试结果是一个无符号的正数。每条测试结果只有一个限值,既可能是上限,也可能是下限。如果上下限值都要被输出的话,它们必须分作两条输出。这项服务也可以用于输出模式5中氧传感器的测试结果。模式6中输出的信息也是某个部件或系统的监测结果。每条信息对应一个测试标示(TestID),信息中也包含测试值、最大值和最小值。模式6同模式5有以下不同:模式6中的TID由厂家定义,只需要遵循15031–5中定义的格式输出即可。不同的厂家可能使用不同的TID定义,因此必须了解相应的定义才能解读。模式6中一个TID可能有多个测试结果,每个测试结果对应不同的指标,通过CID来区分。模式6中的测试结果只能是正数,多是一个无单位的指标。模式6中每条结果(TID/CID)只能指明一个边界值,比如如果想输出某个测试结果以及其正常值的最大和最小两个边界,那么必须通过两条信息分别输出。首先要请求支持哪些OBDMID。参数名Hex数值请求OBD监测服务的SID06OBD-MIDXXOBD-MIDXXOBD-MIDXX…………以上的MID为$00,$20等等。参数名Hex数值请求OBD监测服务的正响应SID461st支持的OBDMIDDataA支持的MIDsDataB支持的MIDsDataC支持的MIDsDataD支持的MIDsXXXXXXXX…………Nst支持的OBDMIDDataA支持的MIDsDataB支持的MIDsDataC支持的MIDsDataD支持的MIDsXXXXXXXX…………查询过支持的MID后,可以进行该项服务。参数名Hex数值请求OBD监测服务SID06所需要监测的MIDXX响应:参数名Hex数值请求OBD监测服务的正响应SID46OBDMIDS/M定义的TIDDASIDTestValue高字节XXXXXXXXTestValue低字节MinTestLimmit高字节MinTestLimmit低字节MaxTestLimmit高字节MaxTestLimmit低字节XXXXXXXXXX…………OBDMIDS/M定义的TIDDASIDTestValue高字节TestValue低字节MinTestLimmit高字节MinTestLimmit低字节MaxTestLimmit高字节MaxTestLimmit低字节XXXXXXXXXXXXXXXXXX表:标准化的测试ID描述范围(Hex)描述00ISO/SAEreservedISO/SAE保留01Leantorichsensorthresholdvoltage(constant)从稀到浓传感器阀值电压(常数)02Leantorichsensorthresholdvoltage(constant)从浓到稀传感器阀值电压(常数)03Lowsensorvoltageforswitchtimecalculation(constant)进行切换时间计算的传感器低电压(常数)04Highsensorvoltageforswitchtimecalculation(constant)进行切换时间计算的传感器高电压(常数)05Richtoleansensorswitchtime(calculated)从浓到稀传感器的切换时间(计算值)06Leantorichsensorswitchtime(calculated)从稀到浓传感器的切换时间(计算值)07Minimumsensorvoltagefortestcycle(calculated)测试循环中的最小传感器电压(计算值)08Maximumsensorvoltagefortestcycle(calculated)测试循环中的最大传感器电压(计算值)09Timebetweensensortransitions(calculated)传感器切换之间的时间(计算值)0ASensorperiod(calculated)传感器周期(计算值)0B最后10个驾驶循环中的EWMA(指数加权滑动平均)失火次数(计算值,取整)一般EWMW计算:0,1*(当前失火次数)+0,9*(之前的失火次数平均值)(以前失火次数均值)初值=0注:ECU内部计算的寄存器必须使用并保持高于1的精度来计算$0B和$0C以避免取整误差.如果不是这样的话,这些寄存器在失火停止之后就再也无法计算回到0.这些计算必须在高精度的寄存器中,向最近整数取整的结果输出到$0B和$0C.High_Precision_EWMA_Misfire_Countscurrent=Rounded[(0,1)*High_Precision_Misfire_Countscurrent+(0,9)*High_Precision_EWMA_Misfire_Countsprevious]其中:取整运算为向最近的整数取整.高精度的数值(小数位)不输出,仅为内部计算使用.这个测试ID应该通过OBD监测ID$A2—$AD和换算ID$24来输出.0CMisfirecountsforlast/currentdrivingcycles(calculated,roundedtoanintegervalue)上一个/当前驾驶循环中的失火次数(计算值,取整)0D-0FReservedforfuturestandardization为未来的标准化保留表:厂家定义测试ID描述范围(Hex)描述80-FEManufacturerDefinedTestIDrange—ThisparameterisanidentifierforthetestperformedwithintheOn-BoardDiagnosticMonitor.厂家定义的测试ID范围—这个参数是一个在车载诊断检测功能中进行的测试的标识号.FFISO/SAEreservedISO/SAE保留第一步:请求支持的OBDMID第二部:请求当前的动力系诊断数据(SID$01,PID$01)第三步:请求OBD监测系统的监测信息。描述Hex数值请求监测系统监测信息服务的SID06OBDMID:01-氧传感器部分-传感器101响应:描述Hex数值OBD监测测试结果积极响应46OBDMID:OxygenB1-Sensor-1标准TID:01UnitAndScalingID:VTestValue高位:TestValue低位:0,365V01010A0BB0MinTestLimit高位:MinTestLimit低位:0,365VMaxTestLimit高位:MaxTestLimit低位:0,365V0BB00BB0OBDMID:OxygenB1-Sensor-1标准T
本文标题:ISO15031协议9种模式详解
链接地址:https://www.777doc.com/doc-4652348 .html