超经典CANoe综合项目工程案例_第1页
超经典CANoe综合项目工程案例_第2页
超经典CANoe综合项目工程案例_第3页
超经典CANoe综合项目工程案例_第4页
超经典CANoe综合项目工程案例_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

CANoe入门Stepbystep系列(一)基本应用

CANoe是Vector公司针对汽车电子行业总线分析工具,当前我用CANoe7.6版本进行简介,其她版本功能

基本差不多。

硬件我使用是CANcaseXL.

1,CANcu软件安装很简朴.先装驱动,再装软件八安装完毕,插卜IJSB,连接硬件,这样在捽制面板中,Vector

Hardware进行杳看

VectorHardvareConfig

FileEditToolsWindowHelp

d圣HardwareDetails

图上

1ytual8NBu$1^DeviceCANcaseXL1

B语图醒曜SHU

TypeUSB2.0

由・CANpiggy251mag(Highspeed)

Serialnumber

+■LINpiggy7269mag

Driverversion7.3.18

|+£2Application

Firmwareversion7.3.18

£iGeneralinformation

E囹LicenseCapabilitiesCAN,LIN,J1708

⑷MultipledevicemodeNO

畲ReceivelatencyFast

vectio?

通过查看信息可知,CANcaseXL中两个piggy,一种是251(高速CAN),一种是7269(LIN),此外惯

用尚有1054(低速CAN,或称容错CAN),由于CANcaseXL中只能支持两路通讯,这样piggy可以自由

组合

2,硬件连接正常,打开CANoe软件

File->NewConfiguration可以选取新建工程模版,咱们这里选取CAN_500kBaud.tcn,这样新建了波特率

为500KCAN工程,可以File->SaveConfiguration,进行保存

3,接下来就要使用CANdb++Editor工具对总线网络节点,消息,信号,进行定义了。

点击工具栏这个图标1,或开始菜单中找这个工具启动

启动后,File->CreateDatabase,选取CANTemplate.dbc,选取R录及文献名,进行保存

VectorCANdb++Editor-C:\DocusentsandSettings\Adainistrator\^®\CA...[,|fn-|fX~|

刊Fil®EditViewOptionsWindowHelp日X

;Q金囿因耳X国画国卮]司段%Bm

SW」

NetworksProtocolCommentBusType

ECUSWCANoeTestOl

《CANCANt

Environmentvariables

J-Networknodes

?Messages

Signals

<>

1Network(s)

Ready

右键Networknodes->New,进行网络节点定义,这里只需要填写Name即可,例如:Node_A

然后添力UNode_B,完毕后如下图,这样在Networknodes目录下面添加出来两个节点

VectorCAHdb++Editor-C:\DocuaentsandSettings\Adainistrator\^®\CA...[,|fD~||3^|

节点添加完毕后,卜一步添加CAN消息“右键Messages->New,这是需要定义名称,ID,DLC等信息、,如

下:

lessage*lessage_A(0x10)

然后在Transmitters页面,点击Add按钮,添加Node_A为发送节点,意思就是说,此消息,是从Node_A

节点发送出来

其实尚有•种办法就是,此时暂时不定义发送节点,然后直接以拖曳方式拖曳到发送节点上,功能上是同样

有了消息,消息里携带东西自然是信号咯,那么咱们开始创立一种信号

右键Signals->New,填写如下信息

7<——07<——07<——0

BOBOBOCRC

74——015^—823—16Intel

23—1615^-8X——0Motorola

用0和1来表达开关信号状态似乎还不是很直观,咱们可以使用on和off来表达就好了,干是View->Vdlue

Tables,右键空白处->New,犍入如下信息:

定义好了之后,还需要跟信号进行关联。右键需要关联信号->EditSignal,ValueTable中关联刚才建立那个

ValueTalbe项

Signal'S,itch_lA'

帮助

这择一种信号就完毕了,此外还需要加一种类似信号.可以点击Signal根目录,在右边选取Signal复制,及

粘贴,然后双击复制好Signal后,进行某些编辑,然后用上面办法关联Message即可迅速建立第二个信号了,

是不是很以便

继续添加第三个信号,IndicatojA,跟上面同样,但是我这个信号想放在Message第二个字节位置,怎么办?

其实很简朴,有两种办法:第一种,右键已经关联好,即在Message目录下信号,Editmappedsignal,在

弹出对话框中Startbit中填8,这样就这个信号就跑到该消息第二个字节中了。第二种办法,右键该消息->Edit

Message,在Layout页面中,拖动信号色块进行移动

■essage*Bessage_A(OxAA)

应用回|帮助

以上Message_A消息及消息下所定义已经定义完毕

如法炮制此夕【、一种消息Message_B,完毕后如下图。

VectorCANdb++Editor-C:\Docu»entsandSettings\AdBinistrator\^®\CANoeTest\CANoeTestO—13回区)

下面创立环境变埴,右键Environmentvariables

陆续把其她环境变量加好,Indicato「Access属性为Write哦,加完如下:

VectorCANdb++Editor-C:\Docu»entsandSettings\Ad>inistrator\^|Bj\CANoeTest\CAiroeTestO—13回区)

数据库定义这款基本上就0K了。保存后关闭CANdb++Editor,回到CANoe主程序中。

请在Configuration->Opt:ions->ConfigijrationSettings->ChannelUsage设立使用通讯通道,由于这

个只需要1路CAN,其她都设立为。就可以。

'Trace入Conficuration^Analysis/

点这个选项页面可浮现SimulateSetup界面

BSimulationSetup13回区I

x|

I-钞Networks

awCAYVetvorks

BWCn

星Nod”

♦Generators

mInteractiveGenerators

QReplayblocks

「:Databases

B*Channels

gCAK1

Network

CAB

CAB1

>\CAN[

右健Databases->Add,把刚刚创立好dbc给加载进来,之后再连线上右键->InsertNetworkNode

Nodes

Generators

Inter&ctiv«C«n«r^tors

Replayblocks

Databases

国CANoeTestOl

fej«Chaxmels

NetworkyCAN1

CAB

InsertNttvorkKode

InsertCAP二TestModule

Insert.NETTtstModule

InsertXMLTestModule

InsertGeneratorBlockCAN

InsertInteractiveGeneratorBlock

M<>>[\CAN/

SwitchAllBlockstoReal-Ti®eUode

成果如下:

SiaulationSetup

A

QNetworks

日播CANNetworks

SWC"

s星Nodes

qECUi

Generators

rInteractiveGenerators

aReplayblocks

Databases

&CANoeTestOl

臼MChannels

夕CAN1

EEE\CAN[

右键这个ECU模块・>Configuration,在NetworkNode选取Node_A,完毕,然后添力口Node_B

NodeConfiguration

CommonComponentsBuses

NodeSpecification

Compile

c:.]^administrator\^®\canoetest

OK

完毕后如卜图,这样dbc与CANoe关联就好了。

SxAulati.onSetup-ll_a|p<

S钟M«tvorks

fcWCABNetworks

EWCi»

Q星Md”

旦Node.A

t星Node_B

iGenerators

iInteractiv«Generators

Replayblocks

DaUbas«s

NetworkB--

®CAMoeTestOl

CAB

■ChArm«ls

CAV19CAN1

4,界面设计

网络及相应关系设立好之后,应当设计界而了,一种良好界面可以直观显示及控制各种信号。

界面设计工具备两种:一种是PanelDesigner,新界面设计工具,此外一种是PanelEditor是老界面设计工具,

无仑采用何种工具设计界面,都可以和CANoe较好兼容,没有问题。下面咱们先用第一种界面设计工具来完

毕界面设计

点击工具栏这个图标或File->OpenPanelDesigner,打开界面编辑器,界面如下:

保存一下该界面,起名为PaneLA,一种空界面上可以放置右上边若干组件。放置好之后,选中界面上组件时候,

右下侧回显示当前选中组件属性,可以更改相应大小位置等,但最重要是Symbol属性,这里要说一下,每个

界面组件也都需要与CANoe关联,否则单纯界面是没有任何意义,关联重要是信号和环境变量,在Symbol

属性SymbolFilter属性中可以进行选取,咱们这里关联是环境变量,因此选取EnvironmentVariable,然

后再点击上面Symbol属性,然后在弹出页面中选取相应关联变量

完毕后可以按同样办法设ilPaneLB,111^^SaveAs办法迅速建立同样Panel但是与环境变量关联和界面文

字需要进行微调。这样两个Panel都已完毕。也已经建立了与CANoe之间关联。

5,CAPL编程

所有前期准备工作和组装工作都已完毕,当前需要编写程序使整个系统有机运营起来。回到CANoeSimulation

Setup界面,然后•点击Node_A模块,像铅笔同样图标£],填写程序名称,这里Node_A,然后打开编程界面,

完毕如下程序。然后完毕Node_B程序。小技巧:如果背不出详细消息名称,信号名称或环境变量,可以右键

程序空白处,你会得到意外惊喜,试试看。

OK大功告成

6,运营

当前点击工具栏一口,运营程序。注意:这里表达实际网络,所有消息是发送到物理网络上,如果

只是验证程序,设立成这样就可以了同*"2」,完整运营成果如下:

JVectorCABoc.LIB-CAXocTcst01.cf<-JB

(Lil.V>e*W1«rtV»de£onficsr»t>onlind«*S«lp

I。。。口,三0a-9•

r.Panel.A_X

SaitehIA

|BuU“》|Switch2A

IcvdicatorA

“Trace-」口D

oi£电国为U厚H监810A200x•一苞〔」・田A的,

二T•

1(CUIDDirM£D«t<

0FilttrGrgp08一

0j

0OStopfilttr

Drc<plintstofilt«s

□©P«»filt«r

Drc>plintstofilt«s

0Write

icey^CoAfinnfion/

0:0001:53OMUKISUXIIIKB

就是这样,一步一步,咱们完毕了第一种完整CANoe应用工程,虽然这只是入门第一步,但整个CANoe开发

流程基本涵盖,如果能跑出上面运营成果,依然可以给咱们诸多惊喜。咱们需要这样惊喜,由于这是咱们继续

前行动力。

CANoe入门Stepbvstep系列(一)CAPL编程

CAPLCommunicationApplicationProgrammingLaguageCAPL类似丁C语言语法,因而所

有语法请参照C语言教程,这里不在这里进行详述,关于C语言,亳无疑问,一方面推荐人们看谭浩强教师书,

典型中典型,看完这本C语言应当没问题了。CAPL在CANoe中起到重要作用,她将所有某些联系起来(请

看下图)当前咱们予以上一节基本上,来着重简介CAPL编程。

CAPL语法是C语言,又有某些C++特性,this指针,事件等,对于事件理解可以学习任意一种面对对象语言,

首准C#.NET,可以参照我博客学习,固然这个似乎比CAPL自身更加难,事件也更加多,但这并不妨碍对事件

理解,其中事件类型如下图:

CAPLEvents

EventClassEventNameProcedureexecuted

oapl0006

SystemPreStartDuringinitializationofCANalyzerorCANoe

SystemStartOnpressofStartbuttonforCANalyzerorCANoe

SystemStopMeasurementOnpressofStopbuttonforCANalyzerorCANoe

CANControllerBusOffOndetectionofBusOffconditionintoolhardware

CANControllerErrorActiveOndetectionofErrorActiveconditionintoolhardware

CANControllerErrorPassiveOndetectionofErrorPassiveconditionintoolhardware

CANControllerWarningLimitOndetectionofWarningLimitconditionintoolhardware

CAN-MessageuserdefinedOnreceptionofdestgnatedmessage

TimeruserdefinedOntimeoutofdesignatedtimer

KeyboarduserdefinedkeyOnkeyboardpressofdesignatedkey

ErrorFrameErrorFrameOndetectionofeachErrorFrameintoolhardware

FunctionuserdefinedOninvocationoftheuser'sdesignatedprocedure

EnvironmentuserdefinedOnchangeindesignatedenvironmentalvariable(CANoeonly)

卜面来几种小例子协助理解

来个CANoe版本helloworld!来兴奋一小下吧。开整〜

在打开CANoe,新建个工程,在SimulationSetup中力□个Networknode,点铅笔,忘了吗,上一节刚讲过,

右健Start->New,键入如下代码

gjCAPLBrowser[ECUI.can♦

-gdit£gpi】@rOptionsVindov

幺Includefileszariables

2Variables

F.2Systen

PreStart

5Start

二PreStop

.StopMeasurenent

*,二CABController

CANNessgcs

ZSignalChange

〜SignalUpdate

%SysvarChange

)

SysvarUpdatenstart

Tmervrit©(rhollovorld!*);|

Keyboard

ErrorFrajne

、Environment

/.CallbackFunction

/.Function

R,禽dy

编年后,关闭CAPLB「owe「。运营CANoe工程,成果如下,哇塞成功咯,好有成就感啊。

VectorCAHoe.LIN-CAPL_Test.cfg•13回区)

|lEileVie”StartBodeConfigurationlindovHelp

p用卜—?6

时fritc

SourceMessage

OCAPL/•METMake:C:\DocunentsandSettings\Adttini3ti:atx)t\*AXr\CAJToeTe3t.ForVer7.6\StepByStep_2\ECUL.can

BSystemSsxxofaeasureaent04:03:12pu

■System01-0003CAN1sixiulatedbuswith500000BPS.

■System01-0003CAN2smulacedbuswith500000BPS.

■Syotcaaandaniuaciontaocor-1•

OCAFL/•METhelloworld!

\AII\System*\CAPL/.NET*\inspectWlrt«kATest/

G■要日赛把T厚W«欧扇会口•且才给口3H・

irDLC

^ConfionAnal/

000:0014OJLIMESIHNUWHT:

这个例子似乎跟CAN通讯没啥太大关系啊,好,咱们接下来再做一种例子

EICAPLBrovscr-[ECU1.car]均回又|

'Fil«Ed&UCvMipalvxOpI&VM»ffmdvwHvlp

口信Q目电)密悌3®M育博国甜

&Includefilesvariables

2Variables

message0x555msg[={dlc=l}:

E3Syrten

□,PreStart

2Start

骂PreStop

、StopMeasurement

由-jCANController

㈡CANMessages

〜SignalChange

〜SignalUpdate

,SywarChange

'SysvarUpdate

…•&Timermsel.byte(O)=OxAA.

t滴KeyboardMoutput(msgl);

遍I'IT

WErrorFrajie

:、Environment

/«CallbackFunction

/.Function

EnpiyTeviplate

运苗成果如卜,按键盘b键,将发这种CAN消息,连die是啥都不懂得同窗,推荐先学习卜CAN基本知I

识,推荐瑞萨公司《CAN入门书》,讲非常好。

VectorCAHoe.LIN-CAPL_Test.cfg•目回区)

IEileJfievStart"odeConfiscationSindov於Ip

IuHH

SourceMessage

0CAPL/.METMake:C:\DocunentsandSettingsXAdttinistratxjrX*AAr\CAWoeTestForVer7.CXStepByStep^XECUL.can

■3yocckioftiiCQOULciBcnc04;10;09pit

BSystem01-0003CAN1slxiulacedbuswith500000BPS.

■System01-0003CAN2smulacedbuswith500000BPS.

■Systenandanimationfactor=1.

■CAPL/.METhelloworld?

■SystemEndofneasurenent04:IS:48pn

■SystcaiScareofmeasurement04:15:49pn

■System01-0003CAN1sinuiatedbuswith500000BPS.

BSystea01-0003CAR2simulatedbuswith500000BPS.

11System5danimationfactor=1・

-:CAPL/・MFThellowocld1

AllASystem*XCAPL/.NET*AinspectXC«ilrt«kATest/

3M篁星赛始」,&厚«z■扇,心电口,电CJ•仪•CBlnidal•

\TXACC人Confi—sotion入Analyxii/

000:00090JUMESIHNVWHF::

运管刚刚那个例子你会发现,按一下b,只发送一条消息,但在实际应用中CAN消息都是循环持续发送,咱们

要对刚刚程序进行某些修改。完毕这样功能。程序如下:

variables

message0x400msgA={dlc=l);

mstimertimerA;

intconditionA=0;

)

onkey'a'

{

conditionA=IconditionA;

if(conditionA==1)

<

setTimer(timerAz200);

}

}

ontimertimerA

{

if(conditionA==l)

{

setTimer(timerA,200);

}

msgA.byte(O)=msgA.byte(O)-l;

output(msgA);

)

运营成果如下:按A健,Timer启动,发送消息

VectorCAloe.LIM-CAPL_Te»t.efe度回区I

•YieCode£onficur,S。nKelp

I□Q84—国Is?。/囱网・"回|$z"“bw画?电

SoucceMessage

Startofaeasuteienc09:15:02ax

01・0003CAW13iDLUlai2dt»U3W15500000BPS.

01・0003CAW23iMUlasdbU3W15500000BFS,

andanimation:acwr-1・

hellovorld!

Endo£nea?urexeac09:16:50ak

\/UI£System入CAHJ.慨丫卜1rspcek3如&入X/

,TZQOC

u・汇它潺的,*住・4卧图•・・,•;,寿.口him,

►\r—s人Connm3ion入AMIEM/

R«<4y0KUHHSIMmWHEX

接下来咱们一起来看总结一下CAPL编程要点:

CAPL编程梅[述

■CAPL是CAN总线访问编程

语言(CANAccess

启动/停止][入]

ProgrammingLanguage)

■类C语言1CAN总线5

■应用于VectorCAN工具节CAPL程序

点编程1CAN总线:

■基于事件建模的语言串口井口

IiiHHHi

。总线事件

。属性事件

。时间事件

CAPL的事件类型

事件类型事件名程序执行条件事件过程语法结构*

PreStartCANoe初始彳匕时执行•onpreStart{...}

系统事件Start测量开始时执行onstart{...}

StopMeasuremet测量结束时执行onstopMeasurentent{…}

BusOff硬件检测到BusOff时执行onhusOff{.../

CAN控制器ErrorActive硬件检测i'JErrorActive时执行onerrorActive{…}

事件ErrorPassive硬件检测到ErrorPassive时执行onerrorPassive{...}

WamingLimit硬件检测到WamingLimit时执行onwaniingLinutf...}

CAN消息事件自定义接收到指定的消息时执行onmessageMessage{…}

时间事件自定义定时时间朝过时执行ontimerTimerf...}

键盘事件自定义键值指定的键被下时执行onkeyKey{…}

错误帧事件ErrorFrame硬件每次检测到错误帧时执行onerrori'rame!.../

环境变量事件自定义指定的环境变量值改变时执行onenvVarEnvVar{…}

事件过程语法结构''列中兰色字体表示该程序的关键字:深红色字体表示用户自定义的名称:

内是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论