CANoe创建仿真工程
CANoe创建仿真工程
- 写在前面
- 仿真工程的创建
- 创建工程
- 添加CAN数据库
- 添加系统变量
- 创建面板
- 创建网络节点
- 为节点添加代码
- 工程运行测试
- 总结
写在前面
Canoe的安装不是特别方便,我是参加了松勤的培训课程,不仅需要安装软件还需要安装驱动,刚刚学习的小伙伴可以去某宝看下是否有资源。
仿真工程的创建
创建工程
- 在某盘下创建一个文件夹,命名为testpanel,在文件夹testpanel下面分别创建CANdb、Panels和Nodes
- CANdb文件夹存储所有的CAN数据库文件,它包含了所有的CAN网络节点和信号定义。这个文件夹的意义是提供一个集中存储和管理所有CAN相关的信息的地方,便于查找和修改。
- Nodes文件夹存储了CAN网络节点的配置文件。这些配置文件描述了CAN网络中的所有节点,包括节点的名称、地址、通信参数等。这个文件夹的意义是用于管理和配置CAN网络节点,以便正确地进行通信。
- Panels文件夹存储了用户界面面板的定义文件。这些文件描述了CANoe工程中使用的面板,包括面板的布局、控件和功能等。这个文件夹的意义是用于定义和管理用户界面,以方便用户进行交互和监控CAN网络的状态。
- 打开CANoe,单击File->New,双击选择模板CAN 500KBaud 1ch,命名为testpanel.cfg,并保存到文件夹testpanel下
CAN 500KBaud 1ch的含义
CAN表示控制器区域网络(Controller Area Network),是一种常用于车辆和工业应用中的通信协议。
500k Baud表示通信的速率为500,000位每秒,即通信传输速度为500千波特。
1ch表示仅使用一个通道进行通信,即只使用一个CAN通道进行数据传输
添加CAN数据库
- 添加CAN数据库
- 单 击 Tools 功 能 区 的 CANdb++ Editor 〔CAN 数 据 库 编 辑 器〕
- 在 CANdb++ Editor 界 面 中 单 击 File—>Create database 并 选 择 CANoe Template.dbc 作 为 模 板
- 保 存 名 字 为 testpanel.dbc 到 工 程 testpanel 下 面 的 文 件 夹 CANdb 中
- 数据库中添加报文和信号
2.1 在 Signals 下 面 创 建 一 个 信 号 Switch,信息如下:
字段的含义:
- Length: 信号的位数长度,表示信号所占的二进制位数。
- Byte Order: 表示信号在字节流中的存储顺序。有两种选择:
- Intel:低字节序(Little Endian),低位字节存储在低地址处。
- Motorola:高字节序(Big Endian),高位字节存储在低地址处。
- Value Type: 表示信号的数据类型。有几种选择:
- Signed:有符号整数。
- Unsigned:无符号整数。
- IEEE Float:单精度浮点数(32位)。
- IEEE Double:双精度浮点数(64位)。
- Unit: 表示信号的单位,用于描述信号所代表的物理量的量纲。
- Init Value: 表示信号的初始值,默认值。
- Factor: 用于将原始的物理值转换为相应的信号值。可以是缩放因子、增益、系数等,用于线性转换。
- Offset: 用于将原始的物理值转换为相应的信号值。可以是偏移量。
- Minimum: 信号的最小物理值。
- Maximum: 信号的最大物理值。
- Value Table: >为信号定义值表,用于将数值映射为具体的含义,例如将某个特定值映射为状态或事件。
2.2 在 Messages 下 面 创 建 一 条 报 文 Msg1
字段的含义
- Type(类型):Type字段定义了CAN消息的类型。它有两个选项:
- CAN Standard(标准CAN)表示使用11位的标准CAN标识符。标准CAN协议允许2^11=2048种不同的消息标识符。
- CAN Extended(扩展CAN)表示使用29位的扩展CAN标识符。扩展CAN协议允许2^29=536,870,912种不同的消息标识符。
- ID(标识符):ID字段定义了CAN消息的唯一标识符。对于标准CAN,则为11位;对于扩展CAN,则为29位。CAN消息的ID用于区分不同的消息。
- DLC(数据长度码):DLC字段定义了CAN消息的数据长度(以字节为单位)。它指定了CAN消息中有效数据的长度。DLC的取值范围为0到8,表示消息的有效数据可以是0到8个字节
2.3 将信号拖拽到message下面
2.4. 添加数据库到工程中
进 入 Simulation Setup 窗 口 , 单 击 Networks->CAN Networks->CAN->Databases , 右 键 add, 将 testpanel.dbc 文 件
加 入 仿 真 工 程
添加系统变量
在Canoe中,系统变量的作用是用于表示和控制系统的状态,以及在仿真过程中进行配置和操作。系统变量通常是预定义的,可以通过设置和修改来改变系统的行为。以下是系统变量的一些常见作用:
- 时间控制:系统变量可以用于表示仿真时间的流逝速度和步长,以及控制仿真的开始和停止时间。
- 状态监测:系统变量可以用于监测和记录系统的各种状态和变量的值,如传感器输出、控制信号、系统内部状态等。
- 系统配置:系统变量可以用于配置系统的参数和设定,如模型、控制策略、仿真环境等。
- 事件触发:系统变量可以用于触发和控制系统中的事件,如传感器读取、控制器更新、动作执行等。
- 条件判断:系统变量可以用于进行条件判断和逻辑控制,以实现不同的仿真场景和行为。
- 单 击 Environment—>system Variables(系 统 变 量) 鼠 标 右 键 new ,设置两个系统变量如下:
创建面板
-
创建开关面板
( 1 ) 单 击 ToolsPanel Designer( 面 板 设 计 器 〕
( 2 ) 新 建 一 个 panel, 命 名 为 SWITCH, 并 保 存 在 文 件 夹 panels 下
( 3 ) Panel DesignerToolbox—switch/Indicator
( 4 ) Properties 〔 属 性 〕 中 设 置 相 关 参 数
-
创建指示灯面板
( 1 ) 单 击 ToolsPanel Designer( 面 板 设 计 器 〕
( 2 ) 新 建 一 个 panel, 命 名 为 LIGHT, 并 保 存 在 文 件 夹 panels 下
( 3 ) Panel DesignerToolbox—yLED C ontrol
( 4 ) Properties 〔 属 性 〕 中 设 置 相 关 参 数
创建网络节点
- 在Can线上右击,创建两个网络节点
- 为两个网络节点指定CAN文件,并更改Title
为节点添加代码
- 为Switch节点添加代码如下:
on sysvar MyNameSpace::svSwitch
{message Msg1 msg;msg.sSwitch = @this;output(msg);write("%d is switch",@this);
}
含义为:
- 当系统变量MyNameSpace::svSwitch发生变化时,执行以下代码块。
- 声明一个名为Msg1的消息变量,它的数据类型为message。这个消息变量用于存储发送给其他模块的消息。
- 将MyNameSpace::svSwitch的值赋给msg的成员变量sSwitch,也就是创建的信号。
- 将消息msg发送出去。
- 使用write函数打印消息"%d is switch",其中%d将被替换为@this的值。输出结果为"@this is >switch",其中@this表示MyNameSpace::svSwitch的当前值。
2. 为light节点添加代码
on message Msg1
{@MyNameSpace::svLight = this.sSwitch;write("svLight is %d ",@MyNameSpace::svLight);
}
含义为:
- 定义一个
on message
事件,表示在收到名为Msg1
的消息时执行下面的代码。@MyNameSpace::svLight = this.sSwitch;
将this.sSwitch
的值赋给全局变量@MyNameSpace::svLight
。write("svLight is %d ",@MyNameSpace::svLight);
将@MyNameSpace::svLight
的值打印出来,使用%d
占位符表示整数类型的变量。实际打印的内容是"svLight is "
后面跟着@MyNameSpace::svLight
的值。
3. 编辑compile编译写好的代码
可以看出来整体逻辑为,DB创建message和信号,在这里面板控制的是系统变量,信号接收系统变量,并通过节点传给另外一个节点。
工程运行测试
- Home中Simulated Bus选择Simulated模式
- 点击start进行测试
- 调出Light和switch面板
- 仿真测试
灯亮的状态
灯灭的状态
- 使用trace查看信息
总结
在Canoe当中主要包含数据,网络节点和面板。其中面板用于展示,节点用于逻辑控制,数据包含数据库中的数据和系统中设置的环境变量,适合放在candb中的数据是车辆的通信网络数据,包括CAN、LIN、FlexRay等总线数据。这些数据通常是车辆的传感器数据、控制信号数据等实时产生的数据,可以在Canoe中进行处理、分析和仿真。
而适合放在变量中的数据是Canoe的开发脚本中使用的变量数据,例如用于控制仿真过程的参数、模型中的状态变量、测试用例中的输入和期望输出等。这些数据通常是预先定义的、静态的数据,在仿真过程中根据需要进行读取和修改。
相关文章:

CANoe创建仿真工程
CANoe创建仿真工程 写在前面仿真工程的创建创建工程添加CAN数据库添加系统变量创建面板创建网络节点为节点添加代码工程运行测试总结 写在前面 Canoe的安装不是特别方便,我是参加了松勤的培训课程,不仅需要安装软件还需要安装驱动,刚刚学习的…...
Scanner 输入回车跳不出循环的解决方法
题目要求: 输入一行内容包含字符串和数字,将字符串与数字分别提取。 解决方法: 可以使用两个Scanner对象,一个用来键入数据,另外一个用来对数据进行操作,以此来解决输入“回车”跳不出while循环的问题。 i…...
docker 启动 mysql 通过防火墙设置端口无法访问解决方案
1、问题描述:通过 docker compose 启动mysql服务,然而在防火墙添加了3306端口后却无法访问,但是关闭防火墙后又可以访问mysql数据库。 解决方案: 重启 docker 后解决:systemctl restart docker 如果没有解决问题则执…...

智能制造优化,RFID生产线管理系统解决方案
一、背景介绍 随着全球经济的发展,传统制造业面临着越来越高的成本和低利润的挑战,为了提升企业的整体利润率,优化管理流程成为必要的手段之一,在传统的制造企业中,生产线通常采用单件流生产模式,但这种模…...

【Mybatis】基于Mybatis插件+注解,实现敏感数据自动加解密
一、介绍 业务场景中经常会遇到诸如用户手机号,身份证号,银行卡号,邮箱,地址,密码等等信息,属于敏感信息,需要保存在数据库中。而很多公司会会要求对数据库中的此类数据进行加密存储。 敏感数据…...

【特纳斯电子】基于物联网的指纹密码锁系统设计-实物设计
资料下载链接:基于物联网的指纹密码锁系统设计-实物设计 - 电子校园网 编号: T3732205M-SW 设计简介: 本设计是基于单片机的指纹密码锁,主要实现以下功能: 1、可通过密码解锁 2、可通过云平台解锁 3、可通过指纹解…...

【牛客面试必刷TOP101】Day9.BM37 二叉搜索树的最近公共祖先和BM42 用两个栈实现队列
作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:牛客面试必刷TOP101 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!!&…...
10.12 校招 实习 内推 面经
绿*泡*泡: neituijunsir 交流裙 ,内推/实习/校招汇总表格 1、校招 | 2024届秋招,美团哪些校招岗位最缺人?(内推) 校招 | 2024届秋招,美团哪些校招岗位最缺人?(内推&…...
redis 生成流水工具类
使用redis存储流水号,代码如下: import cn.hutool.core.date.DateUtil; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Component;Component public class RedisSerialUtil {private RedisTemplate…...

BGP服务器租用腾讯云和阿里云价格对比
BGP云服务器像阿里云和腾讯云均是BGP多线网络,速度更快延迟更低,阿里云BGP服务器2核2G3M带宽优惠价格108元一年起,腾讯云BGP服务器2核2G3M带宽95元一年起,阿腾云atengyun.com分享更多云服务器配置如2核4G、4核8G、8核16G等配置价格…...

PyTorch 深度学习之多分类问题Softmax Classifier(八)
1. Revision: Diabetes dataset 2. Design 10 outputs using Sigmoid? 2.1 Output a Distribution of prediction with Softmax 2.2 Softmax Layer Example, 2.3 Loss Function-Cross Entropy Cross Entropy in Numpy Cross Entropy in PyTorch 注意交叉熵损失,最…...

抖音直播招聘小程序可以增加职位展示,提升转化率,增加曝光度
抖音直播招聘报白是指进入抖音的白名单,允许在直播间或小视频中发布招聘或找工作等关键词。否则会断播、不推流、限流。抖音已成为短视频流量最大的平台,但招聘企业数量较少。抖音招聘的优势在于职位以视频、直播方式展示,留存联系方式更加精…...

论文阅读之《Learn to see in the dark》
Learning to See in the Dark-CVPR2018 Chen ChenUIUC(伊利诺伊大学厄巴纳-香槟分校) Qifeng Chen, Jia Xu, Vladlen Koltun Intel Labs(英特尔研究院) 文章链接:https://arxiv.org/pdf/1805.01934.pdfhttps://arxiv.org/pdf/1805.01934.p…...
Docker 生成自定义镜像并使用Docker Compose部署
Docker 生成自定义镜像并使用Docker Compose部署 Docker Compose 是一个用于定义和运行多个 Docker 容器的工具,可以轻松管理复杂的应用程序。本文将介绍如何在 Docker Compose 中使用自定义 Docker 镜像,并提供了生成自定义 Docker 镜像的步骤。 步骤…...
设计模式~调停者(中介者)模式(Mediator)-21
调停者(中介者)模式(Mediator) (1)优点 (2)缺点 (3)使用场景 (4)注意事项: (5)应用实例: 代码 调停者&a…...

计算机毕业设计选什么题目好?springboot 医院门诊在线预约挂号系统
✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…...

linux中使用ps查看进程的所有线程
在 Linux 系统中,可以使用 ps 命令和 ps H 命令结合来查看进程的线程信息。ps 命令用于显示系统中当前运行的进程信息,而 ps H 命令则可以显示进程中的所有线程。 使用以下命令可以查看指定进程的所有线程信息: ps H -T <PID>将 替换…...

本、硕、博区别真的辣么大吗?
61: 发际线已经说明了一切…… Super Mario: 小学,老师告诉学生:“森林里有只老虎,已经被我关在笼子里,我会带你去那个地方,然后给你一把猎枪,告诉你猎枪怎么用,并开枪…...

[Spring] SpringMVC 简介(一)
目录 一、SpringMVC 简介 1、什么是 MVC 2、什么是 SpringMVC 3、SpringMVC 实现原理 4、SpringMVC 的特点 二、简单案例 1、引入依赖 2、在 web.xml 中配置前端控制器 DispatcherServlet 3、创建 SpringMVC 的配置文件 4、创建请求控制器 5、测试页面 6、访问不到 …...

机器学习基础之《回归与聚类算法(2)—欠拟合与过拟合》
一、背景 1、上一篇说正规方程的时候,实际情况中使用很少,主要原因它不能解决过拟合。 2、训练集上表现的好,测试集上表现不好—过拟合 二、欠拟合和过拟合 1、欠拟合 训练集:有3个训练集,告诉机器都是天鹅 机器学…...
ubuntu搭建nfs服务centos挂载访问
在Ubuntu上设置NFS服务器 在Ubuntu上,你可以使用apt包管理器来安装NFS服务器。打开终端并运行: sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享,例如/shared: sudo mkdir /shared sud…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

el-switch文字内置
el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...
质量体系的重要
质量体系是为确保产品、服务或过程质量满足规定要求,由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面: 🏛️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限,形成层级清晰的管理网络…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
C#中的CLR属性、依赖属性与附加属性
CLR属性的主要特征 封装性: 隐藏字段的实现细节 提供对字段的受控访问 访问控制: 可单独设置get/set访问器的可见性 可创建只读或只写属性 计算属性: 可以在getter中执行计算逻辑 不需要直接对应一个字段 验证逻辑: 可以…...