如何在项目中添加CAPL程序
玫瑰柒
|
2019.12.31
|
0
+关注

在前面我们创建了MotorSpeed工程,现在我们来讲如何给它添加CAPL程序。

1. 创建节点

按照前面讲的添加节点的方法给该工程添加三个节点:Motor、Door、Display。如图1所示效果。

图1 添加网络节点完成效果图

2. 创建*.can文件

鼠标右键单击需要添加CAPL程序的节点,选择Edit,会创建一个新的CAPL程序。在弹出窗口中选择要保存的路径并命名文件名称,CAPL程序文件的后缀名为.can。过程如图2。使用该方法,分别为节点Motor、Door、Display创建三个CAPL程序Motor.can、Door.can、Display.can并保存在文件夹nodes中。

图2 编辑节点的CAPL程序

3. 创建CAPL程序

(1)创建节点Motor的CAPL程序

节点Motor的主要功能:马达开关动作时,将对应的报文MotorState中信号OnOff更新;同时处理马达开关与马达速度的逻辑关系。马达运行时,马达速度允许更新,马达关闭时,马达速度自动设置为0。以下为完成该功能的程序代码。

includes

{

}

variables

{

}

on sysvar sysvar::Motor::MotorStateSwitch

{

$MotorState::OnOff=@this;

if(@this)

$MotorState::MotorSpeed=@sysvar::Motor::MotorSpeedEntry;

else

$MotorState::MotorSpeed=0;

}

on sysvar sysvar::Motor::MotorSpeedEntry

{

if(@sysvar::Motor::MotorStateSwitch)

{

$MotorState::MotorSpeed=@this;

}

}

(2)创建节点Door的CAPL程序

节点Door主要功能是发送周期报文DoorState,本例子中面板的车门开关控件已与报文的信号(Door_L和Door_R)关联,因此信号的更新会由CANoe自行处理,不需要在CAPL程序中添加任何代码。

(3)创建节点Display的CAPL程序

节点Display主要功能是对接收过来的报文MotorState和DoorState进行处理,并显示在Display面板上。因此,节点Display只需处理 on message MotorState和on message DoorState事件。

以下为节点Display完整的CAPL代码(display.can)

includes

{

}

variables

{

}

on message MotorState

{

if(this.dir==RX)

{

@sysvar::Motor::MotorspeedDspMeter=this.MotorSpeed/1000;

}

}

on message DoorState

{

{

if (this.dir==RX)

@EnvDoorState=this.Door_L+this.Door_R*2;

}

}

通过上面的创建节点及添加CAPL程序过程,你学会了吗?

精选留言
延伸阅读
2020.11.20
2413阅读
更多报告干货
写留言
2260
阅读
收藏
回到顶部