在我们前面建立的仿真工程Communication中,如果我们给Switch和Indicator两个节点添加相应的通信代码,我们就可以完成两个节点的通信仿真,并最终进行运行测试了。现在我们来进行这一最后任务。
1. 添加代码
(1)添加Switch代码
双击Switch节点,打开CAPL Browser浏览框,拖曳Value Objiects→On sysvar<sysvar>到代码行,并写出如下代码:
on sysvar sysvar::namespace::sv_Switch{
//声明一个CAN报文变量,用于报文发送
Message Msg1 msg;
//读取当前系统变量sv_Switch的值,并赋值给报文的信号bsSwitch
Msg.bsSwitch=SysGetVariableInt(sysvar::namespace::sv_ 55Switch);
//将报文输出到总线上
output (msg);
代码添加如图1所示。
图1 Switch网络节点添加代码完成图
这段代码使得节点Switch根据系统变量sv_Switch的变化,修改bsSwitch信号值,并将更新的报文发送到总线上。单击Compile(F9),完成编译,并退出CAPL Browser。
(2)添加Indicator代码
双击Indicator节点,打开对应的CAPL程序文件Indicator.can。在CAPL Browser浏览框,拖曳CAN→On message<new Message >到代码行,并写出如下图的代码,并按F9进行编译,操作结果如图2所示。
图2 Indicator节点网络节点添加代码及编译结果
这段代码将在Indicator节点中处理收到的CAN报文Msg1,根据报文中信号bsSwitch修改系统变量sv_Indicator的值,从而实现LCD显示中数值的变化。
2. 工程运行测试
首先打开创建的两个仿真面板Switch.xvp和Indicator.xvp,分别按下添加按钮,将面板添加到工程。调出Write窗口,在主界面上按Start按钮,可以在Write窗口看到程序执行时的系统信息输出,如图3所示。
图3 Communication 仿真工程系统信息
用鼠标左右交替点击Switch面板上的开关,开关状态反复变换,而Indicator面板上的LCD数字显示则0、1跟随变化。说明程序实现了报文的通信。如图4所示。
图4 Communication 仿真工程结果指示
在操作Switch开关的同时,可以看到总线上报文信号的变化,如图5所示。也可以通过其他窗口查看其他信息和事件。
以上介绍了如何添加程序代码和如何运行仿真工程,并通过仿真结果检查程序的正确性,也能根据结果看看是否达到了仿真的目的。麻雀虽小,五脏俱全,通过这一个简单的仿真工程,一窥全部,你就可以建立属于自己的更为强大的仿真工程。