CANoe工程通过控件改变报文信号值的两种方法

汽车安全 2年前 (2021) admin
1,357 0 0
1、目的
在CANoe上制作面板控件,用于改变0x311报文的发送内容(车速值大小);该报文是ABS这个网络节点的发送报文,报文中的信号定义如下:
CANoe工程通过控件改变报文信号值的两种方法
2、操作方法
2.1、直接将面板控件关联上DBC中的报文信号
1、创建控件,并将控件关联上要操作的报文信号。
在控件属性的”Symbol Fliter”选择为”Signal”;在”Symbol”中选择具体要关联的报文信号(例子中即关联上0x311这个报文中表示车速值的信号;注意CANoe工程要先关联上DBC文件)。如下:
CANoe工程通过控件改变报文信号值的两种方法
2、创建节点。
在CANoe工程的”Simulation Setup”界面,右击”Node”,选择”Insert Network Node”。如下:
CANoe工程通过控件改变报文信号值的两种方法
3、将节点关联上DBC文件中的节点及添加dll文件。
右击我们前面创建的节点,选择”Configuration”,在”Common”界面下的”Network node”中设置其对应的是DBC文件中的哪个节点(例子中我们选择的是DBC中的ABS节点,注意CANoe工程中要先关联上DBC文件)。
CANoe工程通过控件改变报文信号值的两种方法
在”Components”中添加来自C:Program FilesVector CANoe 9.0Exec32的CANoeILNLVector.dll(该路径是以Win7为例)
CANoe工程通过控件改变报文信号值的两种方法
经过前面三个步骤,当我们运行工程时;ABS这个节点(我们在第3步选择关联的节点)上的发送报文就会自动按照其在DBC上定义的进行发送了;不需像接下来要介绍的那种方法再去通过CAPL编程去进行报文的发送操作。且其发送类型(周期/事件)、周期发送的时间等都完全由DBC文件中定义,即我们只需配置好DBC文件即可。此时,当我们通过控件改变关联上的报文信号时,则对应发送出来的报文也会跟着对应改变。
另外,若我们想要发送的报文处于多个DBC的节点中,则只需在”Simulation Setup”界面多创建几个网络节点(第2步的操作);再添加dll文件和对应关联上不同的DBC节点即可(第3步的操作)。
2.2、利用环境变量和CAPL编程完成
通过关联环境变量,当操作面板时对应改变该环境变量;再在CAPL编程中获取该环境变量值,赋给对应报文信号;再将报文发送出去。
1、在DBC文件上创建要用于关联的环境变量。
通过”CANdb++ Editor”软件打开DBC文件,右击”Environment variables”进行环境变量的新建;对应输入环境变量名和数据类型;设置其范围、初始值。如下:
CANoe工程通过控件改变报文信号值的两种方法
 2、创建控件,并将控件关联上要操作的环境变量。
在控件属性的”Symbol Fliter”选择为” Environment variable”;在”Symbol”中选择具体要关联的环境变量。如下:
CANoe工程通过控件改变报文信号值的两种方法
3、创建节点
在CANoe工程的”Simulation Setup”界面,右击”Node”,选择”Insert Network Node”。如下:
CANoe工程通过控件改变报文信号值的两种方法
4、在节点上新建CAPL工程
在上一步新建的节点处,点击铅笔形状的图标;输入CAPL程序名字,保存为.can后缀文件。如下:
CANoe工程通过控件改变报文信号值的两种方法
5、进行CAPL编程,进行环境变量的获取及报文发送工作
在上一步打开的CAPL编程界面,通过”@”调出我们第一步在DBC文件中定义的环境变量;将该环境变量的值赋给要对应的报文变量;并通过”output()”函数将该报文发送出去。对于报文的发送周期即是我们调用该函数的时间,一般是在CAPL程序中定义一个定时器事件来操作的。代码如下:
variables{    msTimer Timer1;}on start{    setTimer(Timer1,20);}on timer Timer1        /*定义定时器事件,进行报文发送*/{    setTimer(Timer1,20);    TxMsg_ABS1_ESP1();}void TxMsg_ABS1_ESP1(void)   /*车速信息发送,0x311,20ms周期*/{    message ABS1_ESP1 msg;      msg.ABS_ESP_VehicleSpeedVSOSig = (@VehicleSpdData)/0.05625;      msg.ABS_ESP_VehSOSigValidData = @VehicleSignelValid;        output(msg);}

3、总结

当我们需要制作面板控件进行交互时(通过操作面板去改变报文的信号值);可以直接关联上要操作的报文信号值,但注意需在创建的节点处添加上”CANoeILNLVector.dll”这个文件;也可以通过创建环境变量,并通过CAPL编程去操作实现。但比较这两种方法,前者会方便得多,避免了在DBC上对环境变量的创建及CAPL的编程。

————————————————

阅读原文,关注作者博客
版权声明:本文为CSDN博主「第55号小白鸭」的原创文章,遵循CC 4.0 BY-SA版权协议,本文已获作者转载权限。

推荐阅读

关于DTC诊断故障码的获取与清除

沃尔沃:敏捷开发中满足ISO26262的软件安全分析

近万字的NvM学习笔记

特斯拉最新的12V蓄电池有什么不同?

特斯拉最新中央计算模块(CCM)解析

关于对自动驾驶传感器的理解

特斯拉的电池管理系统 (BMS) 相比其他电动车有哪些优势?

2021款特斯拉Model Y ECU接口梳理

详解CANoe之CAPL编程

关于CAN时间同步的理解

dbc文件的格式以及创建详解

大众ID.4 X网络架构详解

学习笔记——NVM数据处理机制

学习笔记——AUTOSAR NVM基础知识

基于UDS的Bootloder详解

关于整车上下电流程的理解

一文详解CAN总线错误帧|附下载

DoIP协议介绍,资料分享!

详解车载网络 OTA系统的开发|文末附下载

一文了解汽车嵌入式AUTOSAR架构|附下载

特斯拉Autopilot系统安全研究|附dbc下载

分享不易,恳请点个【在看】

原文始发于微信公众号(汽车ECU开发):CANoe工程通过控件改变报文信号值的两种方法

版权声明:admin 发表于 2021年11月24日 上午12:18。
转载请注明:CANoe工程通过控件改变报文信号值的两种方法 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...