当前位置: 首页 > news >正文

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

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

  • 1、目的
  • 2、操作方法
    • 2.1、直接将面板控件关联上DBC中的报文信号
    • 2.2、利用环境变量和CAPL编程完成
  • 3、总结

1、目的

        在CANoe上制作面板控件,用于改变0x311报文的发送内容(车速值大小);该报文是ABS这个网络节点的发送报文,报文中的信号定义如下:
在这里插入图片描述
        

2、操作方法

2.1、直接将面板控件关联上DBC中的报文信号

        1、创建控件,并将控件关联上要操作的报文信号。
        在控件属性的”Symbol Fliter”选择为”Signal”;在”Symbol”中选择具体要关联的报文信号(例子中即关联上0x311这个报文中表示车速值的信号;注意CANoe工程要先关联上DBC文件)。如下:
在这里插入图片描述

        2、创建节点
        在CANoe工程的”Simulation Setup”界面,右击”Node”,选择”Insert Network Node”。如下:

在这里插入图片描述

        3、将节点关联上DBC文件中的节点及添加dll文件。
        右击我们前面创建的节点,选择”Configuration”,在”Common”界面下的”Network node”中设置其对应的是DBC文件中的哪个节点(例子中我们选择的是DBC中的ABS节点,注意CANoe工程中要先关联上DBC文件)。
在这里插入图片描述
        在”Components”中添加来自C:\Program Files\Vector CANoe 9.0\Exec32的CANoeILNLVector.dll(该路径是以Win7为例)
在这里插入图片描述

        经过前面三个步骤,当我们运行工程时;ABS这个节点(我们在第3步选择关联的节点)上的发送报文就会自动按照其在DBC上定义的进行发送了;不需像接下来要介绍的那种方法再去通过CAPL编程去进行报文的发送操作。且其发送类型(周期/事件)、周期发送的时间等都完全由DBC文件中定义,即我们只需配置好DBC文件即可。此时,当我们通过控件改变关联上的报文信号时,则对应发送出来的报文也会跟着对应改变。
        另外,若我们想要发送的报文处于多个DBC的节点中,则只需在”Simulation Setup”界面多创建几个网络节点(第2步的操作);再添加dll文件和对应关联上不同的DBC节点即可(第3步的操作)。
        

2.2、利用环境变量和CAPL编程完成

        通过关联环境变量,当操作面板时对应改变该环境变量;再在CAPL编程中获取该环境变量值,赋给对应报文信号;再将报文发送出去
        1、在DBC文件上创建要用于关联的环境变量。
        通过”CANdb++ Editor”软件打开DBC文件,右击”Environment variables”进行环境变量的新建;对应输入环境变量名和数据类型;设置其范围、初始值。如下:
在这里插入图片描述

        2、创建控件,并将控件关联上要操作的环境变量。
        在控件属性的”Symbol Fliter”选择为” Environment variable”;在”Symbol”中选择具体要关联的环境变量。如下:
在这里插入图片描述

        3、创建节点
        在CANoe工程的”Simulation Setup”界面,右击”Node”,选择”Insert Network Node”。如下:

在这里插入图片描述
        4、在节点上新建CAPL工程
        在上一步新建的节点处,点击铅笔形状的图标;输入CAPL程序名字,保存为.can后缀文件。如下:

在这里插入图片描述

        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的编程

相关文章:

  • C#中对串口的操作
  • 看不见的含量
  • 诊断会话控制及保持/ECU复位(ISO14229系列之10/3E/11服务)
  • 就计算机学习问题与一名高二学生的邮件往来
  • ISO 15765-2(网络层服务)
  • 关于自动化诊断测试(CANoe.Diva的应用)
  • ISO14229之概述
  • 需求增加也要走保证金流程——CSDN外包实践(62)
  • DBC文件解析
  • Sun中国工程研究院院长王星耀:开源策略是为了挤掉微软
  • 使用DBCView编辑DBC文件过程(一)
  • 使用DBCView编辑DBC文件过程(二)
  • DBC和EXCEL相互转换
  • 中小企业需要什么样的软件服务?
  • DBC文件编辑——基于DBCVIew4.3
  • [数据结构]链表的实现在PHP中
  • Redis学习笔记 - pipline(流水线、管道)
  • SSH 免密登录
  • Vue2.0 实现互斥
  • 使用parted解决大于2T的磁盘分区
  • 小程序开发之路(一)
  • 再次简单明了总结flex布局,一看就懂...
  • 责任链模式的两种实现
  • kubernetes资源对象--ingress
  • 阿里云ACE认证学习知识点梳理
  • 我们雇佣了一只大猴子...
  • #etcd#安装时出错
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (6)添加vue-cookie
  • (JS基础)String 类型
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (Ruby)Ubuntu12.04安装Rails环境
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • .chm格式文件如何阅读
  • .NET MVC第五章、模型绑定获取表单数据
  • .Net 中Partitioner static与dynamic的性能对比
  • .net6Api后台+uniapp导出Excel
  • ?
  • @ConditionalOnProperty注解使用说明
  • [ 数据结构 - C++] AVL树原理及实现
  • [\u4e00-\u9fa5] //匹配中文字符
  • [1204 寻找子串位置] 解题报告
  • [Android] Android ActivityManager
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [C# 基础知识系列]专题十六:Linq介绍
  • [C/C++随笔] char与unsigned char区别
  • [Geek Challenge 2023] web题解
  • [Gym-102091E] How Many Groups
  • [halcon案例2] 足球场的提取和射影变换
  • [HeadFrist-HTMLCSS学习笔记][第一章Web语言:开始了解HTML]
  • [LeetCode] 196. 删除重复的电子邮箱