热门关键词搜索:智能照明模块CAN智能照明控制系统路灯控制器路灯无线控制系统物联网管理平台

当前位置:首页 > 新闻中心 > 常见问题

CANoe简易教程3

文章出处:巨川智能电气责任编辑:巨川智能电气查看手机网址
扫一扫!智能照明控制系统的优势?扫一扫!
人气:发表时间:2016-12-24 08:31:57【

CANoe简易教程3   来源:http://www.jckbocps.com/

配置仿真设置


打开View下的Simulation Setup,在窗口右侧的Databases上点击右键,Add...选择database\candb.dbc。如果看不到,在空白处右键,勾选System View。作为验证,打开View > Symbol Explorer,在Symbol Explorer窗口中可以看到数据库中的信号、消息、环境变量等等。

在红线上点击右键Insert Network Node,于是出现了一个ECU。在其上右键 Configuration...,将其Title更改为Meter,Network Node选择candb::METER

同样的步骤我们再新建一个Node,名字为ECM,Network Node为candb::ECM

这样,我们在仿真设置窗口的工作就已经完成了。不过,两个节点都还没有脑子,也就是节点说明(Node Specification),所以他们现在什么都不会做。

为ECU添加节点说明

所谓的节点说明,起始就是一段程序,可以使用CAPL或者.NET编写,这里我们使用CAPL。

点击ECM ECU上的铅笔按钮,它表示“编辑或新建这个ECU的节点说明文件”。现在还没有,所以CANoe为我们新建一个。将其保存在node文件夹中,命名为ecm.can。接下来程序打开了Vector CAPL Browser工具。

CAPL Browser是一个代码编辑器,我们将代码更改为下面的样子:

includes {
    // 在这里使用 #include ,可以include的文件为.can和.cin
    // 一般不用include任何东西}variables {
    // 在这块中声明和初始化全局变量
    message EngineState msg; // message 定义数据库中的消息,为其指定程序中的名字
    msTimer myTimer; // msTimer 是"毫秒定时器"
    float speed = 0;}on start {
    // CANoe仿真开始时,会运行一次这段程序
    write("Hello, world!"); // 输出到write窗口
    setTimer(myTimer, 100); // 定时器将在100ms后触发}on timer myTimer {
    // 定时器触发时,运行一次这段程序
    speed += 0.1;
    msg.Speed.phys = speed;
    output(msg);
    setTimer(this, 100); // 定时器将在100毫秒后再次触发}

参考注释看看这段程序,或者先不管它。

使用Compiler > Compile,或者工具栏中的Compile,或者快捷键F9来编译。如果一切顺利,就会在Output看到Successfully compiled字样。保存后关闭CAPL Browser。

RUN!

添加了代码之后,CANoe可以开始工作了。在工具栏上选择Simulated bus,然后使用Start > Start开始CANoe仿真。

Measurement Setup窗口,双击Graphics打开Graphics窗口。右键Add Signals...,选择EngineState下的Speed。随着时间的流逝,我们就能看到速度的变化了。不过,既然是仿真,我们想要自己控制一下发动机转速数据。这时就得用到Panel了。

Panel的使用

打开Tools > Panel Designer,窗口右侧上方有我们可以使用的控件。找到Track Bar,拖动到中间。在右侧下方更改其属性:

Tick Frequency: 0.1
Large Change: 0.5
Small Change: 0.1

然后点击Attach Environment Variable链接,选择env_speed,这样控件的值就和环境变量的值绑定在了一起。没有别的需要做的,以ecm.xvp为名将这个面板保存在panel文件夹中,关闭Panel Designer回到CANoe。

接下来点击ECM ECU的铅笔,将程序修改成这样:

includes {}variables {
    message EngineState msg;
    msTimer myTimer;}on start {
    write("Hello, world!");
    setTimer(myTimer, 100);}on timer myTimer {
    msg.Speed.phys = @env_speed; // 注意,这次EngineState中Speed的值等于环境变量env_speed的值
    output(msg);
    setTimer(this, 100);}

再次开始CANoe仿真,使用View > ecm打开我们刚刚设计的面板。拖动Track Bar,这时Graphics中Speed曲线应该随着你的控制变化了。简单来说,我们使用面板来控制环境变量,节点程序从读取环境变量,将其写入消息中发送出去。

CANdb ECU Model

教程第三部分到此,我们已经运行起来了简单的CANoe仿真。接下来就应该自学CAPL语法了,官方有一本“Programming With CAPL”值得一看,并且在网上很容易搜索到。


此文关键字:

最新产品

智能照明监控管理系统 智慧路灯监控终端
智能照明监控管理系统 智慧路灯监控终端
浙江巨川电气科技有限公司基于城市路灯、景观控制的智...
智能路灯控制器 GPRS经纬度天文钟
智能路灯控制器 GPRS经纬度天文钟
巨川电气智能路灯控制器采用计算机芯片管理:1.智能定时...
智能路灯监控终端 电缆防盗监测 电流电压读取
智能路灯监控终端 电缆防盗监测  电流电压读取
一、系统特点:智能路灯远程监控系统软件是巨川公司独...
ZigBee 无线智能路灯解决方案 无线单灯控制器
ZigBee 无线智能路灯解决方案 无线单灯控制器
ZigBee 无线智能路灯解决方案 无线单灯控制器针对日益...

同类文章排行

最新资讯文章