ImageVerifierCode 换一换
格式:DOC , 页数:14 ,大小:101.54KB ,
资源ID:5133621      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/5133621.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(线诊断协议驱动器设计.doc)为本站上传会员【精****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

线诊断协议驱动器设计.doc

1、K线诊断协议驱动器设计 Time:2023-03-22 11:49:41  Author:  Source:中电网 关键字:K线诊断,汽车电子控制单元,协议驱动器 分享到: 引言: 随着汽车电子控制单元功能的增长及升级换代的需要,诊断功能已经成为ECU不可或缺的重要组成部分,因此,进一步研究诊断协议及其实现非常必要。基于K线的ISO14230和基于CAN总线的ISO15765是业内广泛采用的两种诊断标准【1】,K线是ISO9141定义的诊断通信总线,ISO14230在ISO9141的基础上将K线电压扩展到24V,并扩展了诊断服务。相比较于CAN总线,K线诊断既能满足规定,又能节

2、约成本,在国产车上得到大规模应用。不同于CAN总线有专门的协议驱动器,用户直接进行应用程序的编写而不用管理底层的通信,K线没有专门的协议驱动器,一般要在SCI模块的基础上用软件实现其底层通信管理,笔者为某国产车设计了一款带K线诊断功能的车身控制模块,结合ISO14230规范,一方面分析K线诊断协议驱动器的功能,然后介绍协议驱动器的关键设计技术,最后用CANoe进行测试。 1 协议驱动器功能 ISO14230-1定义了K线物理层协议,ISO14230-2定义了数据链路层协议,ISO14230-3定义了应用层协议【2】,其与OSI模型相应关系如表1所示。 OSI模型 K线诊断协议

3、 应用层 ISO14230-3 表述层 N/A 会话层 N/A 传输层 N/A 网络层 N/A 数据链路层 ISO14230-2 物理层 ISO14230-1 表1 ISO14230与OSI模型的相应关系 物理层定义了逻辑位与物理电平的相应关系,同时定义了信号位的上升时间和下降时间,数据链路层协议定义了K线数据格式、诊断报文格式、定期参数及通信错误鉴定及解决机制,应用层协议定义了基于请求/响应的诊断过程及各项诊断服务。做为待诊断ECU节点,K线协议驱动器实现的重要功能涉及: 1、诊断报文的封装和发送、接受和解析,根据报文格式填充/提取SID和数据;

4、 2、通过初始化过程建立与诊断仪之间的诊断通信; 3、保持对的的帧间定期、字节间定期,检测诊断仪报文的定期错误及其它通信错误; 4、根据诊断仪的诊断请求和ECU当前状态返回相应的诊断响应,管理诊断会话; 下面结合数据链路层的协议分析及其数据结构、驱动程序的设计介绍下K线诊断协议驱动器的原理及实现。 2 协议驱动器设计 K线基于异步串行通信接口,在底层传输上采用8N1格式的SCI串行数据链路格式:8个数据位+1个停止位、无奇偶校验,由于K线在物理层上是单根线,在发送时也会触发接受中断,所以K线报文的发送和接受解析统一在SCI接受中断解决函数中以状态机的形式实现【3】

5、下面从报文收发及解析、初始化、定期管理三个方面介绍下数据链路层的实现。 2.1 报文收发及解析 K线诊断报文结构如表2所示: 报文头 数据字段 校验和 Fmt Tgt Src Len Sid Data CS 最大4个字节 最大63字节或255字节 1个字节               表2 K线诊断报文结构 K线报文由报文头、数据字段及校验和组成。报文头包含格式字节Fmt、目的地址Tgt、源地址Src和可选附加长度信息Len,Fmt指定目的地址的形式(物理地址/功能地址),当报文头中不包含可选Len字段时指定数据字段的长度;数据字段

6、涉及服务标记符Sid和数据Data,其长度由Fmt和Len决定;CS为单字节校验和。设计报文结构体如下:  typedef struct {   k_state state;   uchar fmt;   uchar tgt_addr;   uchar src_addr;   uchar datalen;   uchar sid;   uchar *data;   uchar checksum;   uchar msgdatalen;   uchar done;   }k_msg; typedef enum

7、{   k_FMT=0,   k_TGTADDR,   k_SRCADDR,   k_DATALEN,   k_SID,   k_DATA,   k_CS }k_state; 成员变量state表达当前K线通信数据是报文中的哪个组成部分,msgdatalen用于数据字段字节数的记录,done表达该报文是否发送或接受完毕,其它成员变量与报文结构组成部分一一相应。  void k_ifc_rx(void) {   k_u8 ch,SciSr1;    SciSr1=Kline_periph[SCISR1];   ch

8、Kline_periph[SCIDRL];   TimerStop(k_TP4);   switch(k_curmsg.state){   case k_FMT:     if(k_REP==k_drvhandle.mode){       if(ch==k_curmsg.fmt){         k_curmsg.state=k_TGTADDR;         k_SendChar(k_curmsg.tgt_addr);       }     }else{       k_curmsg.state=k_TGTADDR;

9、       k_curmsg.fmt=ch;     }     break;   case k_TGTADDR:     ...     break;   case k_SRCADDR:     ...     break;   case k_DATALEN:     if(k_REP==k_drvhandle.mode){       if(ch==k_curmsg.datalen){         k_curmsg.msgdatalen=0;         k_curmsg.state=k_SID;

10、         k_SendChar(k_curmsg.sid);       }     }else{       k_curmsg.msgdatalen=0;       k_curmsg.datalen=ch;       free(k_curmsg.data); k_curmsg.data=malloc(k_curmsg.datalen);       k_curmsg.state=k_SID;      }     break;   case k_SID:     if(k_REP==k_drvhandle.m

11、ode){       if(ch==k_curmsg.sid){         k_curmsg.msgdatalen++;  if(k_curmsg.msgdatalen==k_curmsg.datalen){           k_curmsg.state=k_CS;   k_SendChar(k_curmsg.checksu);         }else{           k_curmsg.state=k_DATA;         k_SendChar(k_curmsg.data[0]);         }

12、       }     }else{       k_curmsg.sid=ch;       k_curmsg.msgdatalen++; if(k_curmsg.datalen==k_curmsg.msgdatalen){         k_curmsg.state=k_CS;       }else{         k_curmsg.state=k_DATA;       }           }     break;   case k_DATA:     ...     break;  

13、 case k_CS:     k_curmsg.state=k_FMT;     if(k_REP==k_drvhandle.mode){       if(ch==k_curmsg.checksum){         k_curmsg.done=1;        }     }else{       k_curmsg.checksum=ch;       k_curmsg.done=1;      }       break;   }   if((k_REQ==k_drvhandle.mode)&&(k_FMT!=

14、k_curmsg.state)){     TimerStart(k_REP_P4MS,k_TP4,0,1);   }  }  2.2 初始化 在开始诊断服务之前,诊断仪必须对ECU进行初始化,通过ECU的响应获取ECU支持的报文头格式和定期参数,建立诊断通讯【4】。初始化过程如图1所示,诊断仪发送一个25ms ’0’、25ms’1’的WuP(WakeUp Pattern),然后发送STC(StartCommunication) Request,ECU检测出WuP并接受到对的的STC Request后返回STC Response,该报文的Data字段为由两个字节构

15、成的“关键字(Key Word)”,指定了ECU所支持的报文头和定期参数信息,如Key Word指定为0x8fea即表达在报文头中采用附加长度信息Len表达数据字段长度,同时采用默认的定期参数。 图1 初始化过程 初始化之前K线处在空闲状态,ECU严禁SCI功能并使能SCI的RXD引脚为IO模式,检测到下降沿时通过定期器记录RXD引脚的IO低电平的连续时间,检测到上升沿时开始记录RXD引脚的IO高电平连续时间,判断是否为有效的WuP;也可以设立SCI的波特率为200bps,判断是否能接受到数据0xf0(0xf0在总线上表现为5个0,5个1),检测出对的的WuP后,使能SCI功能

16、设立波特率为10400bps,等待诊断仪发送的STC Request,接受到请求后返回STC Response肯定响应,建立诊断通讯。 2.3 定期管理 ISO14230定义了4个定期参数管理字节间定期和报文间定期,诊断仪和ECU需要共同遵守这些定期约束以保证正常的诊断通讯,表2给出了这4个定期参数的含义及取值区间。 参数变量 描述 最小值(ms) 最大值(ms) P1 ECU响应的字节间时间间隔 0 20 P2 诊断仪请求和ECU响应之间的时间间隔,或两个ECU响应之间的时间间隔 25 50 P3 ECU响应和诊断仪请求之间的时间间隔 55 5

17、000 P4 诊断仪请求的字节间时间间隔 0 20 表2 定期参数 P1和P4是报文内字节间定期,P2和P3为报文间定期。诊断仪在初始化完毕后或接受到诊断响应后需要在P3时间内发送诊断请求,否则ECU端退出诊断会话,断开诊断通讯,K线协议驱动器重启,等待诊断仪发出下一个WuP和STC Request。ECU在接受到诊断请求后,需要在P2时间内返回诊断响应, P2由ECU控制,通常采用25ms的固定值,当诊断请求报文中的Fmt字段指定目的地址为“功能地址”时,P2的取值需要用一个随机数发生器来产生,由于对于功能寻址的诊断仪请求来说,也许多个ECU都会返回响应,假如采用固定的P2参

18、数的话,也许会由于多个ECU竞争总线而出现总线冲突问题,P2采用随机数,ECU不会在同一时间返回响应,从而避免了总线竞争问题。 3 协议驱动器测试 协议驱动器在Vector公司的CANoe软硬件平台上进行测试,进行基于K线的KWP2023服务测试时,将KWP2023.dll和KLineCPL.dll模块加入CANoe仿真环境,CANoe模拟诊断仪节点,并使用一个代理节点来实现CAN网络和K线之间的报文转发,此时CANoe使用计算机的串口,并通过串口/K线转换器与ECU相连,诊断实现框架如图2所示。 图2 K线诊断框架 与CAN总线诊断不同的是,K线诊断需要诊断仪通过初始化过程和ECU建立诊断通讯,诊断通讯的建立如图3所示。建立诊断通讯后便可以像CAN诊断同样进行诊断服务了,这方面论文很多,在此不再赘述。 图3 建立诊断通讯 结语 本文实现的K线协议驱动器模块通过严格测试, 可以高效完毕K线诊断,性能和稳定性达成预期设计规定。驱动器独立于解决器和操作系统,具有良好的通用性和灵活性,可以方便得集成到应用程序中,具有很高的实用价值和借鉴意义。

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服