汽车CAN总线监视器windows应用软件研发概要设计文档格式.docx
- 文档编号:21698912
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:10
- 大小:463.44KB
汽车CAN总线监视器windows应用软件研发概要设计文档格式.docx
《汽车CAN总线监视器windows应用软件研发概要设计文档格式.docx》由会员分享,可在线阅读,更多相关《汽车CAN总线监视器windows应用软件研发概要设计文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
目的在于模拟ECU之间的通信,了解软硬件通信的接口,完成Windows下C#程序的开发,学会XML文档的使用。
3.2 任务概述
3.2.1 目标
本研究课题使用Windows应用软件编程环境,相应的已经完成嵌入式开发的CAN数据控制器,以及RS232通信协议来完成PC对CAN数据的信息的解析与控制。
理解CAN监视器的特殊寄存器设定值计算和CAN信息解析及图形图线的绘制,运用所学的XML和.NETWindows编程等相关知识,在VisualStudioC#2008环境下实现C#编程,深刻理解软件开发的各个过程,灵活运用统一建模语言及相关工具进行软件的分析与设计。
3.3 总体设计
3.3.1 处理流程
本系统最主要的功能为发送信息和接收信息,状态设置等活动图如图3-1:
图3-1 活动图
3.3.2 功能分配
图3-3显示了该系统的功能模块划分:
图3-3 系统功能模块图
3.4 接口设计
3.4.1 外部接口
用户界面采用VB进行编程,用户界面如图3-4:
图3-4 系统界面截图
图3-5中setting里面可以设定要使用的端口号,如果端口未连接设备则会报错,setting里面还可以设定COM速率(本实验由于使用USB所以不用设)和CAN总线的波特率。
设定完毕后点击SetSpeed&
Open打开CAN总线,Close用来关闭CAN总线,GetVersion用来获得版本信息,TimestampONTimestampOFF用来控制时间戳的打开和关闭,send是用来方便的发送一个便准测试数据帧,如果想执行其他指令可以再下面的框中输入点击AdvancedSend发送(如果发送信息为空则会报错),返回信息输出在Result中,点击Clear可以清空返回内容。
详细的执行情况可以参见第四章的测试报告。
图3-5 系统界面操作截图
3.4.2 内部接口
PC机的USB口连接FT245,正常工作模式下SJA1000通过CAN总线驱动器链接到CAN总线收发端口,自检测模式下ATmega128链接到JTAGICE。
FT245,ATmega128和SJA1000的内部接口如图3-6和图3-7:
3.5 数据结构设计
3.5.1 数据结构与程序的关系
程序中最主要的数据帧数据结构设计如下:
structTX_EFF{
unsignedlongid;
unsignedlongtimestamp;
unsignedcharflags;
unsignedcharlen;
unsignedshortdata[8];
};
其中id用于存放数据帧的ID,包括11位ID的标准数据帧和29位ID的扩展数据帧,故数据类型使用unsignedlong(32位),timestamp用于记录接收到数据的时间,时间由时钟中断提供,精确到1毫秒,本程序中记录0-60秒,超过60秒则归0,flags中的8为数据第八位(最高位)用于存放数据类型,0代表标准数据帧,1代表扩展数据帧;
第七位用于存放是否是请求数据帧,不是为0,是为1。
Len存放数据长度,数据长度为0-8,data数组用于存放数据,每一个数据大小为8位(一个字节),最多存放8个数据。
3.6 运行设计
3.6.1 运行模块的组合及运行控制
主函数循环检测指令标志位是否为1,为1则进入到程序中,首先检测指令的正确性,错误直接返回一个字符CR,正确则进行相应操作。
当有信息从FT245传送来时自动进入INT1中断,接收整条指令(以CR为结尾),本着中断中尽量少进行操作的原则,把指令存放在变量中,然后置指令标志位为1,等待主循环的检测。
如果是操作指令则进行相应的操作,如果是发送信息指令则把信息存放在发送队列中,并改变指针位置。
当SJA1000接收到信息时自动进入INT0中断,INT0中判断中断类型,如果是接收中断则接收数据存放在接收循环队列中,并改变指针位置。
TIMER0_COMP中断则是每500微秒自动进行的中断,如果检测到严重错误则会发出警报,如果发现发送队列和接收队列不为空则进行相应的发送和接收操作。
3.6.2运行时间
接收一个数据帧的时间要求在100微秒以内,发送数据帧的时间不做硬性的要求。
关于运行时间的分析测试请见第四章。
3.6.3Schemal文件
<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
xs:
schemaxmlns:
xs="
http:
//www.w3.org/2001/XMLSchema"
elementFormDefault="
qualified"
attributeFormDefault="
unqualified"
<
elementname="
ReceivedData"
<
annotation>
<
documentation>
Commentdescribingyourrootelement<
/xs:
complexType>
sequence>
ReceviedMessage"
maxOccurs="
unbounded"
minOccurs="
0"
attributename="
MessageName"
type="
string"
use="
required"
/>
MessageID"
positiveInteger"
MessageType"
default="
Standard"
optional"
simpleType>
restrictionbase="
enumerationvalue="
Extended"
restriction>
attribute>
MessageData"
<
hexBinary"
<
minLengthvalue="
<
maxLengthvalue="
64"
ACR"
32"
AMR"
BTR0"
8"
BTR1"
TimeStamp"
integer"
Time"
time"
Date"
date"
element>
schema>
3.7 出错处理设计
3.7.1 出错输出信息
每条指令返回两个字符,第一个字符代表指令正确与否,第二个字符代表指令是否执行成功,字符CR(回车)代表指令正确和执行成功,07(BELL)代表错误或执行失败(如果指令错误只会返回一个07,不会返回第二个字符)当发生严重错误时(错误的划分见3.7.2),发送信号灯和接收信号灯常亮。
3.7.2 出错处理对策
一般性的错误:
指令输入错误,指令输入间隔时间过长,在CAN总线打开的情况下设定了波特率,在CAN总线打开的情况下设定了验收代码寄存器和验收屏蔽寄存器,在CAN总线打开的情况下打开CAN总线。
在CAN总线关闭的情况下发送数据,在CAN总线关闭的情况下关闭CAN总线,在队列满的情况下接收了数据,在队列空的情况下发送了数据。
在没有设定波特率的情况下打开了CAN总线等。
这些错误只在结构体中加以记录,当接收到PC机发送来的返回寄存器状态时指令时返回状态给PC机,使用初始化指令可以清空这些状态。
严重的错误:
EI(错误报警中断),DOI(数据溢出中断),EPI(错误消极中断),ALI(仲裁丢失中断),BEI(总线错误中断),当上述标志位被置位时,通过时钟中断检测到并停止一切的发送接收工作,发送信号灯和接收信号灯常亮,等待处理。
查看错误类型可以通过执行返回寄存器状态指令,清除错误可以使用初始化指令。
3.8 安全保密设计
由于本课题研究的是嵌入式系统的开发,所以最重要的就是实时性,应该避免所有让系统瘫痪或者死等的情况。
(1)在INT0,和INT1中断中都尽量减少了操作,大多运用标志位,然后在别的函数中进行检测。
(2)接收队列中的处理,由于写回PC机比较费时间所以单独的设置了一个结构体用于存放一个数据帧,当写回数据时,先把数据写到单独的结构体中(此时指针位置改变可以存放下一条数据)然后对结构体中的数据进行移位等操作,并写回到PC机。
(3)设置了时钟中断检测发送和接收队列,这样当同时接收到或者是要发送多个数据时能够一次发送。
为了防止CAN总线未打开发送数据死等的情况,在CAN总线未打开时要发送的数据会被丢掉并返回一个错误信号。
(4)由于接收命令都需要以CR为结尾,当一条指令不以CR为结尾时便会出现死等的情况。
所以程序做了类似于看门狗的设计,每接收到指令中的一个字符时就更新变量中的时间,当两个字符的输入时间大于100毫秒时,便返回错误警报并且丢弃该指令。
(由于指令都是成条输入,所以一般不会大于100毫秒)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 CAN 总线 监视器 windows 应用软件 研发 概要 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)