- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
纯电动客车CAN通信上位机设计研究
介绍开发CAN通信上位机时对报文自动解析的四种规律设计方法,并依据
上位机前面板显示需求特点的不同,采纳中断法和多任务法进展CAN上位
机的编程及进展应用举例。
关键词:纯电动客车;上位机;CAN
通信CAN总线是汽车领域目前应用最广泛的现场总线之一[1],也是
纯电动客车各电气件最主要的通信方式。其通信协议是连接CAN报文与各
电气件物理参数的纽带,一般由各车厂依据实际需求制定。人工直接解析
CAN报文是一项费事又耗力的工作,而通过上位机软件解析则极大程度上
解决了此问题,提高了工作效率,缩短了工程时间。基于此,本文采纳一
种依据CAN协议自动解析报文并保存数据的方法,为纯电动客车开发上位
机软件[2-3]。
1上位机解析CAN报文的设计方法
1.1软件程序的设计流程本上位机设计是基于QtCreator4.3.1的接
口库函数ControlCAN.lib和NILabVIEW2022的接口库函数
ControlCAN.dll二次开发而成[4-5]。接口库函数的根本处理流程如
图1所示,该处理流程的底层函数构造如图2所示。软件设计过程中的根
本处理流程应依次为翻开设备→检测有无设备翻开信息特别→清空缓冲
区→复位CAN→读取CAN缓冲区帧数→读取CAN内容→关闭设备[6]。在
软件系统内,依据接口库函数二次开发的设计要求,结合纯电动客车CAN
总线数据量大的特点,为了尽可能不使上位机丢帧,程序内部应将读取
CAN报文程序[7]设为中断程序,即当收到CAN报文后,程序马上响应
中断,读取CAN报文并呈递给程序设定参数,然后将报文解析出来,这样
才能最大几率保证接收的CAN报文不丧失[8]。1.2对报文自动解析的规
律设计方法报文的自动解析过程是程序设计最重要的一环。依据CAN报文
SAEJ1939的规定[9],在纯电动客车上,从CAN总线接收到的报文数据
帧为8个字节,分别记为BYTE1……BYTE7、BYTE8,该数据均为十六进制
数。依据CAN通信协议[10],找到相应ID的报文,然后由协议中的比例
和偏置解析出相应的物理数据。本上位机的数据解析设计使用以下几种方
式。1.2.1对报文的直接处理协议规定,需要解析的字节BYTE。若比例为
x、偏置为y,则解析出的结果z为(1)假设上位机收到BMS的报文[11]
数据为{01,02,03,04,05,06,07,08},协议商定第2个字节为驾驶
员制动踏板值,比例为0.4%,偏置为0,则当前驾驶员制动踏板值解析为
(0x02)×0.4%+0=0.8%(2)1.2.2凹凸字节并行处理某ID的报文BYTE2和
BYTE1对应电机掌握器直流电压的高字节与低字节,且比例都为x、偏置
为y,则在程序中电机掌握器直流电压解析的公式为z=(BYTE2×16×
16+BYTE1)×x+y(3)假设此ID接收到的数据为{01,3F,03,04,05,06,
07,08},协议商定BYTE1为低字节,BYTE2为高字节,比例为0.1V/bit,
偏置为-1000V,则电机掌握器直流侧电压值通过十六进制转换解析为
(0x3F×16×16+0x01)×0.1-1000=612.9V(4)1.2.3单个位推断处理依
据通信协议,对报文的解析并不都是对数据的处理,还有对报文某位的推
断。例如报文中某字节的某位为1代表纯电动客车后舱门翻开,为0代表
后舱门关闭,则此时需要先采纳布尔运算,然后再推断。对某字节中单个
位的推断规律:将某字节与需要推断的位为1、其他位为0的单字节数进
展与运算。若与运算后的数据与该单字节数一样,则表示该位为1,反之
为0。设某报文为{x1,x2,x3,x4,x5,x6,x7,x8},假设需要将报文
BYTE8转换为二进制数后的最高位(第7位)进展推断。依据上段推断规章,
应在程序设计中首先应当将BYTE8与0x80(第7位为1的二进制1000000
的十六进制)进展与运算,假如运算结果为0x80,则说明BYTE8最高位bit7
为1;反之为0,伪代码如式(5)所示:if((x8&0x80)==0x80){BYTE8最高
位为1;}elseif((x8&0x80)==0x00){BYTE8最高位为0;}(5)例如,某字
节的BYTE3bit0位代表
您可能关注的文档
- 颁奖典礼活动主持词开场白.doc
- 2024年审计法务岗位职责4篇 .pdf
- 2023年人教部编版五年级语文上册一单元考试及参考答案 .pdf
- 2022年求职简历模板大全5篇 .pdf
- 小学三年级 美术上册全册备课 .pdf
- 难忘的草原之旅(汇编3篇).doc
- 八年级生物上册《生物和生物圈》重要知识点归纳 .pdf
- 建筑工程施工工艺规程2024 .pdf
- 2023-2024学年七年级下学期英语开学摸底考试卷(人教版)及答案.pdf
- Waters_e2695_Alliance_HPLC操作手册 _原创文档.pdf
- 某区纪委书记年度民主生活会“四个带头”个人对照检查材料.docx
- 某县纪委监委2024年工作总结及2025年工作计划.docx
- 某市场监督管理局2024年第四季度意识形态领域风险分析研判报告.docx
- 县委书记履行全面从严治党“第一责任人”职责情况汇报.docx
- 税务局党委书记2024年抓党建工作述职报告.docx
- 某市税务局副局长202X年第一季度“一岗双责”履行情况报告.docx
- 副县长在全县元旦春节前后安全生产和消防安全工作部署会议上的讲话.docx
- 某市委书记个人述职报告.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料1.docx
- 某县长在县委常委班子年度民主生活会个人对照检查材料.docx
文档评论(0)