首页 > 其他分享 >自定义CANoe工程——按键控制后备箱开关

自定义CANoe工程——按键控制后备箱开关

时间:2023-07-17 15:25:01浏览次数:52  
标签:定义 自定义 CANoe 报文 后备箱 信号 TrunkOpen

工程文件地址:C:\Users\Public\Documents\Vector\CANoe\Projects\TrunkOpen

1.新建数据库,需要有一个节点Trunk,一个报文TrunkOpen,报文上的信号为OpenOrClose。定义好这些以后不要忘了以下几点:

  • 信号要关联到它的对应报文;
  • 报文由哪个节点发送,具体在哪如下图所示;

  • 添加节点在建立数据库的时候添加,并且在Network nodes右键new添加,这样ECU处也会有显示。
  • 报文要设置定时发送在Attributes处。

GenMsgCycleTime:定义报文的发送周期

GenMsgCycleTimeFast:定义快速报文的周期

GenMsgDelay Time:定义两帧报文之间传输的最小间隔

GenMsgILSupport:指定该报文是否需要交互层的支持

GenMsgNrOfRepetition:定义事件型报文的重复周期

GenMsgSendType:定义报文的发送类型

 GenMsgStartDelay Time:指定系统开始后首帧报文的延迟发送时间

GenMsgFastOnStart:指定交互层启动后到周期报文开始发送的时间间隔

(9条消息) CANoe - 数据库常见属性说明_picoasis的博客-CSDN博客

2.面板设计

一个是control板块,里面是按钮,操纵后备箱的开关;一个是display面板,展示后备箱的开关。这里面的多帧图片都是自己做的,在画图软件中也可以做,就比如我要做个后备箱开关的图就可以找两张图,一张后备箱开着,一张后备箱关着,把他们缩放到一样大小,再复制一下关着的那张图,将他们按顺序挨着放一起,如果是两种状态,那么需要三张图,如下图

 0对应图中第二帧图,1对应图中第三帧图,这里有一点需要注意,就是第一帧图片一般用于初始状态的显示,就是工程还没开始运行时显示的状态,那么工程开始它会停在那个状态呢?

通过观察Trace

  •  可以看出首先报文首先发送的数据是0
  • 也就是说display与信号相连接收到的数据值就是0

  • 由上图可以看出第二帧图对应的值就是0
  • 所以最开始显示的是后备箱打开的图

这里又有一个问题,为什么报文首先发送的数据是0呢?

下面是信号的attributes

GenSiglnactive Value:定义信号的无效值

GenSigSendType:定义信号的发送类型

 GenSigStartValue:定义信号的初始值

NWM-WakeupAllowed:定义信号是否参与网络管理

 所以在上面紫色的地方就可以改变信号的初始值。

 总结一下:要使工程开始运行的时候显示的图片是多帧图里的第三帧有两种办法:

1)将上面的信号初始值改为1;

2)将这张图(面板display后备箱多帧图)里的状态0值改为1,状态1改为0;

我给信号OpenOrClose添加了ValueTable,有必要吗?

Value Table(数值表) 用来文字化地指定信号和环境变量的值所代表的含义。把信号的valuetable改成none了,对结果好像无影响。这个value table在CANoe 完成领导布置的任务这篇随笔中使用过,在那里面就能看出它的用途,输入和输出框显示的不是0,1这样的数字,而是他们指代的含义。同样我把系统变量的valuetable也取消了,对结果也不影响。所以可加可不加吧。

还有一个问题,我用系统变量传值和用信号传值有什么区别?我现在是将后备箱开关与系统变量绑定,那如果我这绑定的是信号有关系吗?

试验了一下,就如CANoe 完成领导布置的任务这篇随笔里一样,一个报文上有两个信号,直接信号数据传输也可以,所以用信号也可以。

那么既然用信号和系统变量都可以,这两个使用起来有什么区别呢?

目前不知道,等以后知道且我想起来再来补充(笑脸)

3.系统变量

由上面的分析大概都发现不需要它了,虽然我也定义了,也能实现。

4.CAPL

只要在Trunk节点写代码就行,代码如下

/*@!Encoding:65001*/
includes
{
  
}

variables
{
  
}

on signal TrunkOpen::TrunkState1
{
  $OpenOrClose=$TrunkOpen::TrunkState1;
}

 

这是将信号与后备箱按键绑定的代码,系统变量也试过可以成功。

这里其实也有问题,如果我的代码如下

on signal TrunkOpen::TrunkState1
{
  $TrunkOpen::OpenOrClose=$this;
}

 

那么就会出现问题,在this这里

Error 1955 at (14,28): $this only allowed in communication object signal or PDU section. Trunk.can

 

标签:定义,自定义,CANoe,报文,后备箱,信号,TrunkOpen
From: https://www.cnblogs.com/wangyihe20000719/p/17560195.html

相关文章

  • 自定义分页器模版
    【前言】当我们需要使用到非Django内置的第三方模块或者功能组件代码的时候我们一般情况下会创建一个名为utils的文件夹在该文件夹内对模块的功能进行划分项目根目录/utils/自定义文件特别注意:样式基于bootstrap,需要引入bootstrap配置【一】自定义分页器封装代码c......
  • C#添加自定义控件
    1.vs控件工具箱添加选项卡2.输入选项卡名称我这里是Emgucv3.点击选择项4.点击浏览找到Emgu.CV.Platform.NetFramework.dll这是emgucv的C#控件dll,并添加添加完成可以看到Imagebox等命名空间为Emgu.cv.UI的控件已添加5.点击确定添加完成......
  • 在自定义数据集上微调Alpaca和LLaMA
    本文将介绍使用LoRa在本地机器上微调Alpaca和LLaMA,我们将介绍在特定数据集上对AlpacaLoRa进行微调的整个过程,本文将涵盖数据处理、模型训练和使用流行的自然语言处理库(如Transformers和hugsFace)进行评估。此外还将介绍如何使用grado应用程序部署和测试模型。 https://avoi......
  • vue-day25--自定义指令总结
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>自定义指令总结</title><scriptt......
  • vue-day25--自定义指令v-fbind
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>自定义指令</title><scripttyp......
  • vue-day25--自定义指令
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metaname="viewport"content="width=device-width,initial-scale=1.0"/><title>自定义指令</title><scripttyp......
  • Nginx+Lua实现自定义WAF(一)
    安装环境:centOS71810 Step1:安装编译所依赖的软件pcre-devel:扩展的正则表达式引擎,为了使Nginx处理更复杂的正则表达式机制openssl-devel:–with-http_ssl_module使用该模块必需装openssl库,来实现http支持https协议zlib-devel:zlib库是网络通信压缩库,ngx_http_gzip_module(gzip......
  • ThreadPoolTaskExecutor自定义线程池的配置和使用
    ThreadPoolTaskExecutor自定义线程池的配置和使用线程池ThreadPoolTaskExecutor和ThreadPoolExecutor的区别ThreadPoolExecutor,这个类是JDK中的线程池类,继承自Executor,里面有一个execute()方法,用来执行线程,线程池主要提供一个线程队列,队列中保存着所有等待状态的线程,避免了创......
  • 自定义java@注解
    自定义注解主要用于抽象出重复代码,以减少枯燥无味的重复工作量举例:创建Redis分布式锁注解步骤:新建interface接口@Target(ElementType.METHOD)//描述注解使用范围@Retention(RetentionPolicy.RUNTIME)//设置注解时间范围//SOURCE源文件保留//CLASS,......
  • SpringBoot中通过自定义Jackson注解实现接口返回数据脱敏
    场景SpringBoot中整合ShardingSphere实现数据加解密/数据脱敏/数据库密文,查询明文:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/131742091上面讲的是数据库中存储密文,查询时使用明文的脱敏方式,如果是需要数据库中存储明文,而在查询时返回处理后的数据,比如身份......