《K线诊断协议驱动器设计.docx》由会员分享,可在线阅读,更多相关《K线诊断协议驱动器设计.docx(9页珍藏版)》请在优知文库上搜索。
1、casek_DATA1.EN:if(k_REP=k_drvhandle.mode)if(ch=k-curmsg.datalen)k_curmsg.msgdatalen=O;k_curmsg.state=k_SID;k_SendChar(k_curmsg.sid);else(k-curmsg.msgdatalcn=O;k_curmsg.datalen=ch;k_curmsg.data=malloc(k_curmsg.datalen);k_curmsg.statc=k_SID;break;casek_SID:if(k_REP=k_drvhandle.mode)if(ch=k-curmsg.sid)
2、k-curmsg.msgdatalen+;if(k_curmsg.msgdatalcn=k_curmsg.datalen)k_curmsg.statc=k_CS;elsek_curmsg.statc=k_DATA;k_SendChar(k_curmsg.data(O|);clsek_curmsg.sid=ch;k_curmsg.msgdatalen+;if(k_curmsg.datalcn=k_curmsg.msgdatalen)k_curmsg.state=k_CS;elsebreak;casek_DATA:break;casek_CS:k_curmsg.state=k_FMT;if(k_R
3、EP=k_drvhandle.mode)clsek_curmsg.checksum=ch;k-curmsg.done=1;break;if(k_REQ=k_drvhandle.mode)&(k_FMT!=k_curmsg.state)TimerStart(k_REP_P4MS,k_TP4,0,1);2.2初始化在起先诊断服务之前,诊断仪必需对ECU进行初始化,通过ECU的响应获得ECU支持的报文头格式和定时参数,建立诊断通讯,4o初始化过程如图1所示,诊断仪发送一个25ms0、25ms*1*的WuP(WakeUpPattern),然后发送STC(StartCOmmUniCation)Reque
4、st,ECU检测出WuP并接收到正确的STCRequest后返PISTCResponse,该报文的Data字段为由两个字节构成的“关键字(KeyWord)“,指定了ECU所支持的报文头和定时参数信息,如KeyWOrd指定为0x8fea即表示在报文头中采纳附加长度信息1.en表示数据字段长度,同时采纳默认的定时参数。图1初始化过程初始化之前K线处于空闲状态,ECU禁止SCI功能并使能SCI的RXD引脚为IO模式,检测到卜.降沿时通过定时器统计RXD引脚的IO低电平的持续时间,检测到上升沿时起先统计RXD引脚的IO高电平持续时间,推断是否为有效的WuP;也可以设置SCl的波特率为200bps,推断
5、是否能接收到数据OXfo(OXK)在总线匕表现为5个0,5个1),检测出正确的WUP后,使能SCl功能,设置波特率为10400bps,等待诊断仪发送的STCReqUest,接收到恳求后返回STCRCSPonSe确定响应,建立诊断通讯。2.3定时管理ISO14230定义了4个定时参数管理字节间定时和报文间定时,诊断仪和ECU须要共同遵守这些定时约束以保证正常的诊断通讯,表2给出这4个定时参数的含义与取值区间。参数变依描述最小值(ms)最大值(ms)PlECU响应的字节间时间间隔020P2诊断仪恳求和ECU响应之间的时间间隔,或两个ECU响应之间的时间间隔2550P3ECU响应和诊断仪恳求之间的时
6、间间隔555000P4诊断仪恳求的字节间时间间隔020表2定时参数Pl和P4是报文内字节间定时,P2和P3为报文间定时。诊断仪在初始化完成后或接收到诊断响应后须要在P3时间内发送诊断恳求,否则ECU端退出诊断会话,断开诊断通讯,K线协议驱动器重启,等待诊断仪发出卜一个WuP和STCRequestoECU在接收到诊断恳求后,须要在P2时间内返回诊断响应,P2由ECU限制,通常采纳25ms的固定值,当诊断恳求报文中的Fmt字段指定目标地址为“功能地址”时,P2的取值须要用一个随机数发生器来产生,因为对于功能寻址的诊断仪恳求来说,可能多个ECU都会返回响应,假如采纳固定的P2参数的话,可能会因为多个
7、ECU竞争总线而出现总线冲突问题,P2采纳随机数,ECU不会在同一时间返回响应,从而避开了总线竞争问题3协议驱动器测试协议驱动器在Vector公司的CANoe软硬件平台上进行测试,进行基于K线的KWP2000服务测试时,将KWP2000.dll和K1.ineCP1.dll模块加入CANoe仿真环境,CANOe模拟诊断仪节点,并运用一个代理节点来实现CAN网络和K线之间的报文转发,此时CANoe运用计克机的串口,并通过串口/K线转换器与ECU相连,诊断实现框架如图2所示。图2K线诊断框架与CAN总线诊断不同的是,K线诊断须要诊断仪通过初始化过程和ECU建立诊断通讯,诊断通讯的建立如图3所示。建立诊断通讯后便可以像CAN诊断一样进行诊断服务了,这方面论文许多,在此不再赘述。图3建立诊断通讯结语本文实现的K线协议骚动器模块经过严格测试,能够高效完成K线诊断,性能和稳定性达到预期设计要求。驱动器独立于处理器和操作系统,具有应好的通用性和敏捷性,可以便利得集成到应用程序中,具有很高的好用价值和借鉴意义。