基于CANoe的CAN总线设计基础及简例Word下载.docx
- 文档编号:21445781
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:33
- 大小:1.02MB
基于CANoe的CAN总线设计基础及简例Word下载.docx
《基于CANoe的CAN总线设计基础及简例Word下载.docx》由会员分享,可在线阅读,更多相关《基于CANoe的CAN总线设计基础及简例Word下载.docx(33页珍藏版)》请在冰豆网上搜索。
图3-3完全数字仿真
第二个阶段是节点实现和半物理仿真阶段。
第一个阶段完毕后,我们能够得到一个完整的系统功能模型。
接下来,可以开发真实的控制器节点,并利用总线接口与CANoe上剩余的虚拟节点相连接,来测试真实节点的功能,如通信、纠错。
对于并行开发的节点,就可以不受其它节点开发步骤的影响。
第二阶段如图3-4所示。
图3-4半物理仿真
第三个阶段是全系统集成阶段。
开发的最终阶段将逐步把所有的虚拟节点用真实的节点来替代,此时,CANoe只是观察分析的工具了。
在这个过程中,整个系统包括各个功能节点都能详细的检查到。
由于利用功能模块取代真实的网络节点能减少错误的发生,因此通过这两种状态的切换能检查其功能的完善性。
第三阶段如图3-5所示。
图3-5完全物理网络
3.3面板的设计
面板编辑器用于创立图形面板。
在图形面板中可以在模拟测量的过程中方便地改变离散或是连续的环境变量的值。
面板编辑器既可以单独启动也可以从CANoe主程序中启动,从CANoe主程序中启动时,和主程序中关联的数据库会自动关联到面板编辑器中。
表3-1为所有控制面板的元件一览。
所有放在面板上的元件称为“控件〞。
“控件〞可分为控制元件和显示元件,控制元件〔如开关,按钮等〕用于改变环境变量的值,显示元件用于显示环境变量的值〔如报警灯等〕。
对于不同类型的环境变量有特定的元件可用,如对于离散的变量可用开关和显示灯等,对于连续的变量可用滑块,对于字符串型的环境变量可用文字输入框。
除此之外,还可以放入静态的和环境变量无关的元件,如作为背景的位图,用于说明的文字等。
所有的“控件〞〔显示和控制元件〕必须和数据库中的一个环境变量或信号相关联。
3.4CAPL编程
3.4.1CAPL简介
CANoe的通用性、易用性很大程度上是因为用户可以对CANoe进展编程。
CAPL是CANAccessProgrammingLanguage的缩写。
CAPL是一种类C语言的程序语言。
利用CAPL可以在单个的应用中对CANoe进展编程。
在网络节点的开发过程中,往往会出现其他网络节点还不可用的问题,为了模拟系统环境,这些网络节点的数据流要通过CAPL的编程来模拟,CAPL节点作为功能块插入到数据流图中。
CAPL的输入是事件发生器,CAPL可以对报文,定时器以及键盘输入做出反响,所以CANoe可以用来监控和检测特殊的问题,如CANoe可以对发布到总线的特定报文做出反响,然后可以调用户自定义的分析和测试函数。
CAPL同样也可为控制器的开发模拟总线环境,通过CAPL,对怎样的事件做出怎样的反响可以完全由用户来定义决定。
因为CANoe有两个硬件接口,通过CAPL的编程也可以实现网关的功能。
必须要注意的是,在测试设置面板中插入的CAPL块能产生报文,但是不能发布到真实总线中去,如果要向总线发布报文,必须把CAPL块插入到模拟设置面板中。
在CAPL编程中应尽量引用数据库中的报文,这样做对于提高开发效率非常有用,例如,如果要改变某条报文的优先级,只需改变数据库中这条报文的识别码,然后重新编译CAPL程序即可实现,否那么要在CAPL中去改变每个用到这条报文的地方,非常繁琐而且容易出错。
3.4.2CAPL数据类型
一、CAPL数据类型如下表所示
二、数据定义
变量定义
inti;
message0x123HiRain;
messageMotorDataVector;
三、关键字this
this代表触发事件的对象
onmessage100{
bytebyte_0;
byte_0=this.byte(0);
//将ID为100的报文的信号byte的值送变量byte_0,this指ID为100的报文
...
}
onenvVarSwitch{
intval;
val=getvalue(this);
得到环境变量Switch的值送val,this指Switch
3.4.3CAPLBroswer
3.4.3CAPL事件
1、消息事件
onmessage123//对消息123(dec)反响
onmessage0x123//对消息123(hex)反响
onmessageMotorData//对消息MotorData(符号名字)反响
onmessageCAN1.123//对CAN通道1收到消息123反响
onmessage*//对所有消息反响
onmessage100-200//对100-200间消息反响
2、键盘事件
onkey0x20//按空格键反响
onkeyF1//按F1键反响
onkeyCtrl-F12//按Ctrl+F12键反响
onkeyPageUP//按PageUp键反响
onkeyHome//按Home键反响
onkey*//按所有键反响
onkey‘a’//对按键a反响
onkey‘‘//对空格反响
3、时间事件
定时器声明
msTimermyTimer;
//将myTimer申明ms为单位的变量
timermyTimer;
//将myTimer申明s为单位的变量
定时器函数
setTimer(myTimer,20);
//将定时值设定为20ms,并启动
cancelTimer(myTimer);
//停顿定时器myTimer
定时器事件
ontimermyTimer//对myTimer设定的时间到反响
4、环境变量事件
环境变量函数
getValue()//获取环境变量的值
putValue()//设置环境变量的值
环境变量事件
onenvVarXXX
5、输出文本
WriteWindow
write函数
inth=100;
charch=‘a’;
chars100[8]=“hundred〞;
write(“Hundredasanumber:
%d,%x〞,h,h);
write(“Hundredasastring:
%s〞,s100);
write(“Thesquarerootoftwois%6.4g〞,sqrt(2.0));
3.4.4CAPL响应
1、对的报文响应
onmessage0x64
{
if(this.byte
(2)==0xFF)
write(“Thirdbyteofthemessageisinvalid〞);
onmessageMotorData
if(this.temperature.phys>
=150)
write(“Warning:
criticaltemperature〞);
2、对键盘响应
onkey‘a’{
messageMotorDatamMoDa;
mMoDa.temperature.phys=60;
mMoDa.speed.phys=4300;
output(mMoDa);
onkey‘b’{
message100m100={dlc=1};
m100.byte(0)=0x0B;
output(m100);
3、定时器处理
Variables
message0x555msg1={dlc=1};
msTimertimer1;
onstart
setTimer(timer1,100);
ontimertimer1
msg1.byte(0)=msg1.byte(0)+1;
output(msg1);
4、环境变量的处理
onenvVarevSwitch
messageMotorDatamsg;
msg.bsSwitch=getValue(this);
output(msg);
3.5CANoe数据库
在一个联网的总线系统上的所有数据和它们之间的相互关系,通常都存储在一个集中数据库中,CANoe提供一个数据库编辑器,在这里可以随意的创立和更改数据库中的信息。
由数据库编辑器创立的数据库可以被各个程序和工具调用,如图3-6所示。
数据库中的两个对象之间可以通过关联建立联系。
例如,将一个信号和一个报文关联,就可以决定在哪条报文中发送这条信号,可能的关联关系见表3-2。
表3-2数据库中可关联的对象
图3-6数据库和其他应用
下面对CANoe中的数据库中的各种对象做一下简要说明:
整车
即整车上的网络系统,可能包括一个以上的总线网络,相互之间由网关进展连接。
网络:
通常包括多个控制单元,控制单元被连接到同一个总线上,通过总线交换信息。
控制单元:
控制单元是在网络中分布的执行单元。
控制单元通过属于它的网络节点和网络交换信息。
一个控制单元可以包括多个网络节点。
环境变量也被指派到不同的控制单元。
因为控制单元在网络中不是独立的,在CANoe测试运行的时候不能改变控制单元的名称和描述。
环境变量:
CANoe提供环境变量来模拟网络节点针对功能总线做出的反响。
环境变量由系统环境中的事件和状态来描述,如外界压力,温度,开工位置等。
通过用户定义的控制面板可以随意地更改环境变量,也即改变系统环境中的状态。
在CAPL中对于环境变量变化做出反响的事件可用“onenvVar〞语句来描述。
GetValue()语句和putValue()语句用来读和写环境变量。
环境变量由以下系统参数来定义,
●符号化的名称
●数据类型,包括整型,字符串,浮点型,数据型等
●修改权,包括无限制,只读〔传感器型〕,可写〔执行元件型〕,特定控制器可读写等
●单位,机环境变量的物理单位
●最大最小值
●长度
●注释
网络节点:
网络节点是控制单元和网络交换数据的接口,控制单元通过网络节点从网络收发信息。
网络节点由以下系统参数来定义
●符号化的网络节点名称
●地址
节点组:
多个网络节点可以组成节点组,例如,网络上所有同一家制造商提供的节点可以组成一个节点组。
节点组也可用来构建网络的变种,所有车型变种都会用到的节点可以组成一个节点组,这个节点组和网络的所有变种相关联,选装的网络节点再单独和网络关联。
报文:
即在总线上传递的报文信息,由以下系统参数定义,
●符号化的报文名称
●识别位〔CANID〕,在一个网络中必须统一分配,不能重复使用
●字节数
●传递类型
●循环时间〔如果报文被周期性的发送〕
●网络节点,即发送这条报文的网络节点
●报文信号
信号:
●信号是信息的最小单元,由以下系统参数定义
●符号化信号名称
●信号长度
●格式
●数据类型
●系数,基准和物理单位。
“原始值〞是网络上传递的实际数据,“物理值〞是真实反响的物理量大小〔如速度,转速,温度等〕。
信号转换公式用于把原始值转换成物理值:
物理值=〔原始值×
系数〕+基准。
●初始值。
用物理值来定义。
●最大和最小值。
●单位。
物理量的单位。
3.6CANoe主窗口设计
CANoe主程序中包括以下窗口:
a.模拟设置窗口
模拟设置窗口中图形化显示被模拟的总线和网络节点。
在模拟设置窗口中,模拟总线用红线来表示,真实总线用黑线来表示。
它们之间通过PC卡连接在一起。
如图3-7所示。
图3-7仿真设置窗口
b.测量设置窗口
测量设置窗口中显示数据流的示意图,包括数据源,根本功能块,热点,数据承受器等。
在在线模式下CAN卡作为数据源,记录总线上的报文并把它们发到CANoe。
测量窗口下的数据流是有方向的,总是从左边的连接符号〔连到模拟设置窗口〕流向右边的评价窗口。
测量设置窗口例子如图2-6所示。
图3-8测量配置窗口
c.跟踪窗口
所有到达跟踪块的输入的数据都以文本形式在跟踪窗口中显示。
图3-9显示了跟踪窗口的一个例子。
图3-9跟踪窗口
D.图形窗口
图形窗口用来显示信号随时间的变化。
如果使用了数据库,信号的值可以直接作为物理变量显示在图形窗口上,如发动机转速可以直接以“转/分〞的单位显示。
e.写窗口
写窗口在CANoe中有两个作用:
第一,测量过程中的重要系统信息在这显示,如:
测量开场和完毕的时间,预设的波特率,记录功能的触发,测量完毕后的统计报告等。
第二,在CAPL编程中用了“write()〞语句输出的信息都在这显示。
f.数据窗口
数据窗口中显示信号的值,信号即CAN报文中的一个数据段,如发动机控制器发出的CAN报文中的某一段表示发动机转速。
如果用了数据库功能,那么在数据窗口中的数据可以以物理变量的形式显示,如发动机转速可以以“转/分〞的单位显示。
在数据窗口中被显示的信号要预先定义好。
g.统计窗口
统计窗口总可以显示总线上报文之间的平均间隔时间,也可显示每秒总线上的报文数量。
同时还可以后台统计所有活动的总线,其结果可以显示在写窗口中,也可以储存下来。
f.总线统计窗口
显示如总线负载率,峰值负载,错误帧等统计信息,如图3-10所示
图3-10总线统计窗口
第四章灯光控制系统仿真
4.1通信数据库的建立
4.1.1概述
进展CAN网络系统的开发,开发人员首先需求做的是系统功能的定义,即定义该网络系统通信对象,根据通信特点选择所需要的网络类型,以及选择网络的属性〔例如波特率〕;
同时需要考虑网络里的通信需求:
即所需要的节点数目,所需要发送报文〔Message〕的数量及ID等;
定义报文的收发节点,即每个报文是从哪个节点〔源节点〕传送至哪个节点〔目标节点〕;
每个报文所包含的具体信号〔Signal〕;
定义每个信号的数据类型和对应真实物理值之间的转换方式,以及信号在报文的数据场中的地址分配等等。
在上述定义过程中,可使用Vector公司的网络数据库工具CANdb++,创立和管理前述分布式网络定义和通信数据,能检查出概念定义的一些错误并及时改正,同时可以帮助工程设计人员对网络进展优化。
另外,在CANdb++中,还可以加上环境变量来描述外部的输入输出。
本文只进展灯光控制系统的仿真设计,不考虑其它因素,因此通信数据库比拟简单。
在CANoe中工具选择CANdb++数据库编辑器,新建一个数据库,命名为Vehicle_light。
4.1.2报文的建立
报文即网络节点发送的一帧数据信息,在CANoe中主要定义标识符和数据位,其他局部由CANoe根据CAN协议来完成。
对报文进展命名时要注意统一规X并且要便于理解,如全部以“m〞开头,代表这是“Message〞,灯光控制器发送的第一条报文为“mLight_1〞,第二条为“mLight_2〞,仪表控制器发送的第一条为“mMeter_1〞等,有的控制器在目前虽然只发一条报文,但是为了以后扩展方便,应同样加上编号。
接下来在同一网络中对信息进展标识符分配,因为在CAN通讯中标识符直接决定了报文的优先级,所以对于标识符的分配非常重要,对于比拟紧急的情况报文应具有较高的优先级。
中因本文只需要定义一条报文,所以标识就没有什么意义了,定义报文ID为0x01。
在数据库左侧树目录中选择message项,右击选择new…弹出报文定义对话框,在对话框中可以定义报文的名称、ID、帧类型等。
如图4-1所示
图4-1创立报文
4.1.3信号的建立
信号即报文中的某一段,代表某一个物理量或信号,是CANXX息传递的最小单位。
同样对于信号的命名要注意同样规X和便于理解,例如以“jinguang〞代近光灯信号,以“Bwudeng〞代表后节点雾灯信号。
对于数值量来说,所表示数值的X围和需要的精度决定了系数和基准,如转速信号,如果要准确到0.125转/分,就以0.125为系数,精度越高,表示同样X围的数据就需要占用更多的数据位。
如发动机转速,以0.125为系数,占用16位〔2个字节〕,可以表达最大为8191.875转/分的转速,如果要表示负的量,如冷却液温度等,就把需要表达的最低值定为基准,如-40,CANdb++Editor中可以自动根据基准值和参数以及信号所占的位数来计算信号的最大值和最小值。
对于开关量,只占用一位,在值定义里说明含义,如“0〞代表关,“1〞代表开。
在数据库左侧树目录中选择Singel项,右击选择new…弹出信号定义对话框,在对话框中可以定义信号的名称、位索引类型、值类型、物理单位,系数、偏移量等。
如图4-2所示
图4-2创立信号
本文定义的和灯光通讯相关的信号如表4-1所示。
表4-1定义的信号
定义好报文和信号后还要将报文和信号进展关联,报文与信号关联有多种方式,可以在定义报文时直接参加关联的信号,或在定义信号时参加关联的报文,还可以在数据库左侧树目录中直接选择一个信号按住左键拖到要关联的报文下,报文和信号进展关联时,需要确定信号在报文中的起始位置,可能值为0~63。
在CANoe中将信号和报文关联完毕后,在报文属性的Layout窗口中可以非常直观地看到信号在报文中的分布情况,如图4-3所示,一帧报文的8个字节64位以表格的形式被直观地表达出来,在这个表格中,可以看到64位的每一位各被什么信号占用,每个信号占用的位的长度和起始终止位置。
4.1.4环境变量的建立
环境变量的命名也需要注意规X和便于理解,如以“SW1〞代表开关1的控制型环境变量,“Ljinguang〞代表近光灯显示型环境变量。
这样的统一命名对于后期的使用非常有利。
在数据库左侧树目录中选择Environment项,右击选择new…弹出环境变量定义对话框,在对话框中可以环境变量的名称、值类型、最大值,最小值等。
如图4-3所示
图4-3环境变量的定义
本工程中建立的环境变量清单如表4-2所示:
表4-2定义的环境变量
4.2建立虚拟节点
对于一个和CANoe相连的真实网络来说,所有CANoe发出的报文信号都是从CANoe的CAN〔CANcaseXL〕卡发出的,但是在CANoe软件内部,不同的报文信号是由不同的虚拟节点发出来的,为了仿真灯光控制系统,需要在CANoe软件里创立各个节点。
接下来就要在CANoe的SimulationSetup窗口中构建虚拟网络,包括各个被模拟的节点。
完成纯数字仿真
SimulationSetup窗口初始界面如图4-4所示
图4-4SimulationSetup初始界面
图中的方框代表一个总线系统,红线代表虚拟的总线,黑线代表实际的总线,CANoe提供的CAN卡〔CANcaseXL〕是虚拟总线和实际总线之间的接口。
右键点击这两条线,出现如图4-5所示界面:
图4-5参加网络节点
Insertnetworknode可以在总线上参加一个网络节点;
Inserttestmodule可以在总线上参加一个测试模块;
Insertgeneratorblock可以在总线上参加一个发生器〔可以不用capl语言就可以在总线上发出想传送的信息〕;
Insertinteractivegeneratorblock可以在总线上参加一个内部发生器〔可以在用measurement监测的时候就能对设定的动作进展操作,发出信息〕;
InsertreplayblockCAN可以在总线上参加一个重放模块,只需在其中设置measurement中的log保存下来的*.asc文件进展播放,就可以立即模拟出刚刚总线上报文发送的情况;
Switchallblockstosimulation即把所有总线上的模块立即与总线相连;
Switchallblockstoreal-timemode即把所有总线上的模块立即与总线断开。
在SimulationSetup中参加以下的虚拟网络节点:
Main主控制器
Front前车灯控制器
Back后车灯控制器
虚拟节点建立设置完毕后,还要将上一章中建立的数据库和此SimulationSetup总线关联,在右侧树状图右键点击Databases,出现如图4-6所示界面:
图4-6参加数据库
点击ADD可参加数据库,如Vehicle_Light.dbc。
完成后的SimulationSetup如图4-7所示。
图4-7完成的模拟设置窗口
4.3创立面板
面板编辑器中创立的面板是人机交互的界面,通过面板可以以直观的方式让CANoe按操作者的意图发送出相应的CAN报文
4.3.1建立控制面板
在CANoe工具中选择Paneleditor,然后在面板上添加开关和灯,设计控制面板如图4-8所示:
图4-8控制面板
开关用于输入控制值,灯根据开关状态亮灭。
面板上的控件都要和相应的环境变量相关联,选择一控件右击—?
配置,翻开环境变量配置对话框如图4-9所示。
设置关联的环境变量。
对于显示灯除了和相关的显示环境变量关联外,还需要指定对应的位图,位图上有开关的不同状态的显示,设置和位图如图4-10所示。
图4-9开关型环境变量的配置
图4-10显示灯设置
完成面板设计后需要将设计的面板加到CANoe中,在CANoe中选择Panel—?
Configurepanels,翻开添加对话框,如图4-11所示。
单击add可以添加面板,display显示选择的面板,displayall显示所有面板。
图4-11添加面板
4.4CAPL编程
界面完成后,CANoe还不能根据对界面操作发出CAN报文或根据CAN报文在模拟面板作出相应反响,为了到达这一目的,还必须进展CAPL编程的工作,主控节点程序框图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 CANoe CAN 总线 设计 基础