CANoe创建仿真工程

CANoe创建仿真工程

    • 写在前面
    • 仿真工程的创建
      • 创建工程
      • 添加CAN数据库
      • 添加系统变量
      • 创建面板
      • 创建网络节点
      • 为节点添加代码
      • 工程运行测试
      • 总结

写在前面

Canoe的安装不是特别方便,我是参加了松勤的培训课程,不仅需要安装软件还需要安装驱动,刚刚学习的小伙伴可以去某宝看下是否有资源。
在这里插入图片描述

仿真工程的创建

创建工程

  1. 在某盘下创建一个文件夹,命名为testpanel,在文件夹testpanel下面分别创建CANdb、Panels和Nodes
    在这里插入图片描述
  1. CANdb文件夹存储所有的CAN数据库文件,它包含了所有的CAN网络节点和信号定义。这个文件夹的意义是提供一个集中存储和管理所有CAN相关的信息的地方,便于查找和修改。
  2. Nodes文件夹存储了CAN网络节点的配置文件。这些配置文件描述了CAN网络中的所有节点,包括节点的名称、地址、通信参数等。这个文件夹的意义是用于管理和配置CAN网络节点,以便正确地进行通信。
  3. Panels文件夹存储了用户界面面板的定义文件。这些文件描述了CANoe工程中使用的面板,包括面板的布局、控件和功能等。这个文件夹的意义是用于定义和管理用户界面,以方便用户进行交互和监控CAN网络的状态。
  1. 打开CANoe,单击File->New,双击选择模板CAN 500KBaud 1ch,命名为testpanel.cfg,并保存到文件夹testpanel下
    在这里插入图片描述

CAN 500KBaud 1ch的含义
CAN表示控制器区域网络(Controller Area Network),是一种常用于车辆和工业应用中的通信协议。
500k Baud表示通信的速率为500,000位每秒,即通信传输速度为500千波特。
1ch表示仅使用一个通道进行通信,即只使用一个CAN通道进行数据传输

添加CAN数据库

  1. 添加CAN数据库
    1. 单 击 Tools 功 能 区 的 CANdb++ Editor 〔CAN 数 据 库 编 辑 器〕
    2. 在 CANdb++ Editor 界 面 中 单 击 File—>Create database 并 选 择 CANoe Template.dbc 作 为 模 板
    3. 保 存 名 字 为 testpanel.dbc 到 工 程 testpanel 下 面 的 文 件 夹 CANdb 中
      在这里插入图片描述
  2. 数据库中添加报文和信号
    2.1 在 Signals 下 面 创 建 一 个 信 号 Switch,信息如下:
    在这里插入图片描述

字段的含义:

  1. Length: 信号的位数长度,表示信号所占的二进制位数。
  2. Byte Order: 表示信号在字节流中的存储顺序。有两种选择:
  • Intel:低字节序(Little Endian),低位字节存储在低地址处。
  • Motorola:高字节序(Big Endian),高位字节存储在低地址处。
  1. Value Type: 表示信号的数据类型。有几种选择:
  • Signed:有符号整数。
  • Unsigned:无符号整数。
  • IEEE Float:单精度浮点数(32位)。
  • IEEE Double:双精度浮点数(64位)。
  1. Unit: 表示信号的单位,用于描述信号所代表的物理量的量纲。
  2. Init Value: 表示信号的初始值,默认值。
  3. Factor: 用于将原始的物理值转换为相应的信号值。可以是缩放因子、增益、系数等,用于线性转换。
  4. Offset: 用于将原始的物理值转换为相应的信号值。可以是偏移量。
  5. Minimum: 信号的最小物理值。
  6. Maximum: 信号的最大物理值。
  7. Value Table: >为信号定义值表,用于将数值映射为具体的含义,例如将某个特定值映射为状态或事件。

2.2 在 Messages 下 面 创 建 一 条 报 文 Msg1
在这里插入图片描述

字段的含义

  1. Type(类型):Type字段定义了CAN消息的类型。它有两个选项:
  • CAN Standard(标准CAN)表示使用11位的标准CAN标识符。标准CAN协议允许2^11=2048种不同的消息标识符。
  • CAN Extended(扩展CAN)表示使用29位的扩展CAN标识符。扩展CAN协议允许2^29=536,870,912种不同的消息标识符。
  1. ID(标识符):ID字段定义了CAN消息的唯一标识符。对于标准CAN,则为11位;对于扩展CAN,则为29位。CAN消息的ID用于区分不同的消息。
  2. 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中,系统变量的作用是用于表示和控制系统的状态,以及在仿真过程中进行配置和操作。系统变量通常是预定义的,可以通过设置和修改来改变系统的行为。以下是系统变量的一些常见作用:

  1. 时间控制:系统变量可以用于表示仿真时间的流逝速度和步长,以及控制仿真的开始和停止时间。
  2. 状态监测:系统变量可以用于监测和记录系统的各种状态和变量的值,如传感器输出、控制信号、系统内部状态等。
  3. 系统配置:系统变量可以用于配置系统的参数和设定,如模型、控制策略、仿真环境等。
  4. 事件触发:系统变量可以用于触发和控制系统中的事件,如传感器读取、控制器更新、动作执行等。
  5. 条件判断:系统变量可以用于进行条件判断和逻辑控制,以实现不同的仿真场景和行为。
  1. 单 击 Environment—>system Variables(系 统 变 量) 鼠 标 右 键 new ,设置两个系统变量如下:
    在这里插入图片描述

在这里插入图片描述

创建面板

  1. 创建开关面板
    ( 1 ) 单 击 ToolsPanel Designer( 面 板 设 计 器 〕
    ( 2 ) 新 建 一 个 panel, 命 名 为 SWITCH, 并 保 存 在 文 件 夹 panels 下
    ( 3 ) Panel Designer
    Toolbox—switch/Indicator
    ( 4 ) Properties 〔 属 性 〕 中 设 置 相 关 参 数
    在这里插入图片描述

  2. 创建指示灯面板
    ( 1 ) 单 击 ToolsPanel Designer( 面 板 设 计 器 〕
    ( 2 ) 新 建 一 个 panel, 命 名 为 LIGHT, 并 保 存 在 文 件 夹 panels 下
    ( 3 ) Panel Designer
    Toolbox—yLED C ontrol
    ( 4 ) Properties 〔 属 性 〕 中 设 置 相 关 参 数
    在这里插入图片描述

创建网络节点

  1. 在Can线上右击,创建两个网络节点
    在这里插入图片描述
    在这里插入图片描述
  2. 为两个网络节点指定CAN文件,并更改Title
    在这里插入图片描述

为节点添加代码

  1. 为Switch节点添加代码如下:
on sysvar MyNameSpace::svSwitch
{message Msg1 msg;msg.sSwitch = @this;output(msg);write("%d is switch",@this);
}

含义为:

  1. 当系统变量MyNameSpace::svSwitch发生变化时,执行以下代码块。
  2. 声明一个名为Msg1的消息变量,它的数据类型为message。这个消息变量用于存储发送给其他模块的消息。
  3. 将MyNameSpace::svSwitch的值赋给msg的成员变量sSwitch,也就是创建的信号。
  4. 将消息msg发送出去。
  5. 使用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和信号,在这里面板控制的是系统变量,信号接收系统变量,并通过节点传给另外一个节点。

工程运行测试

  1. Home中Simulated Bus选择Simulated模式
    在这里插入图片描述
  2. 点击start进行测试
    在这里插入图片描述
  3. 调出Light和switch面板
    在这里插入图片描述
  4. 仿真测试
    灯亮的状态
    在这里插入图片描述
    灯灭的状态
    在这里插入图片描述
  5. 使用trace查看信息
    在这里插入图片描述

总结

在Canoe当中主要包含数据,网络节点和面板。其中面板用于展示,节点用于逻辑控制,数据包含数据库中的数据和系统中设置的环境变量,适合放在candb中的数据是车辆的通信网络数据,包括CAN、LIN、FlexRay等总线数据。这些数据通常是车辆的传感器数据、控制信号数据等实时产生的数据,可以在Canoe中进行处理、分析和仿真。
而适合放在变量中的数据是Canoe的开发脚本中使用的变量数据,例如用于控制仿真过程的参数、模型中的状态变量、测试用例中的输入和期望输出等。这些数据通常是预先定义的、静态的数据,在仿真过程中根据需要进行读取和修改。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/104444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【PWN · 栈迁移】[CISCN 2019东南]PWN2

一道非常典型、适合用作学习栈迁移的题目。 前言 当存在栈溢出但是溢出字符数并不多的情况下,可以尝试在别处构造rop链,通过栈迁移到目标内存区域,执行rop链。这里不讲栈迁移原理,仅是对题目的分析,适合对栈迁移有初步…

WPF中的多重绑定

MultiBinding 将会给后端传回一个数组, 其顺序为绑定的顺序. 例如: <DataGridMargin"10"AutoGenerateColumns"False"ItemsSource"{Binding Stu}"><DataGrid.Columns><DataGridTextColumn Binding"{Binding Id}" Header…

bash一行输入,多行回显demo脚本

效果图&#xff1a; 脚本&#xff1a; #!/bin/bash # 定义一个变量&#xff0c;用来存储输入的内容 input"" # 定义一个变量&#xff0c;用来存储输入的字符 char""# 为了让read能读到空格键 IFS_store$IFS IFS# 提示内容&#xff0c;在while循环中也有&a…

three.js入门 —— 实现第一个3D案例

前言&#xff1a; three.js入门&#xff0c;根据文档实现第一个3D案例 效果图&#xff1a; 代码实现&#xff1a; const scene new THREE.Scene();//创建一个长方体几何对象Geometryconst geometry new THREE.BoxGeometry(100, 100, 100);//创建一个网络基础材质的材质对象…

机器人革命:脑洞大开的前沿机器人技术!

原创 | 文 BFT机器人 01 由生物启发的多模式移动形态机器人 在一个不断运动的世界中&#xff0c;一种新开发的名为M4&#xff08;多模式移动形态机器人&#xff09;的机器人展示了在包括滚动、飞行和行走在内的八种不同运动模式之间切换的能力。这款机器人由加州理工学院自主…

SOLIDWORKS® 2024 新功能 - 3D CAD

1、 先前版本的兼容性 • 利用您订阅的 SOLIDWORKS&#xff0c;可将您的 SOLIDWORKS 设计作品保存为旧版本&#xff0c;与使用旧版本 SOLIDWORKS 的供应商无缝协作。 • 可将零件、装配体和工程图保存为新版本前两年之内的SOLIDWORKS 版本。 优点&#xff1a; 即使其他用户正…

conda 创建虚拟环境

1.为什么要创建虚拟环境 我们在做开发或者跑论文实验可能会同时进行多个任务&#xff0c;这些任务可能会依赖于不同的python环境&#xff0c;比如有的用到3.6有的用到3.7&#xff0c;这时我们创建不同版本的python&#xff0c;放到虚拟环境中给不同的任务分别提供其所需要的版本…

Git相关知识(1)

目录 1.初识Git 1.基础知识 2.centos中下载 2.基本操作 1.创建本地仓库 2.配置本地仓库 3.版本库、工作区、暂存区 4.添加文件 5.add和commit对git文件的作用 6.修改文件 7.版本回退 8.撤销修改 9.删除文件 3.分支操作 1.HEAD与分支 2.创建分支 3.删除分支 …

基于SSM的班级事务管理系统

基于SSM的班级事务管理系统 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 前台界面 登录界面 班委界面 学生界面 管理员界面 摘要 基于SSM&#xff08;Spring、Spring…

ARM-day9作业

main.c: #include "uart.h"#include "key_it.h"int main(){char c;char *s;uart4_init(); //串口初始化//中断初始化key_it_config();key3_it_config();//完成GPIO相关初始化all_led_init();//风扇初始化fs_init();//蜂鸣器初始化fmq_init();while(1){…

矿区井下智慧用电安全监测解决方案

一、背景 矿区井下作业具有复杂的环境和较高的危险性&#xff0c;对于用电安全的要求尤为严格。传统的管理模式和监测方法往往无法实时、准确地掌握井下用电情况&#xff0c;对安全隐患的排查与预防存在一定局限性。因此&#xff0c;引入智慧用电安全监测解决方案&#xff…

黑马JVM总结(三十二)

&#xff08;1&#xff09;类加载器-线程上下文1 使用的应用程序类加载器来完成类的加载&#xff0c;不是用的启动类加载器&#xff0c;jdk在某些情况下要打破&#xff0c;双亲委派的模式&#xff0c;有时候需要调用应用程序类加载器来完成类的加载&#xff0c;否则有些类它是找…

YB4058是一款经济高效、完全集成的高输入电压单电池锂离子电池充电器

高输入电压充电器支持I2C和OVP保护 概述&#xff1a; YB4058是一款经济高效、完全集成的高输入电压单电池锂离子电池充电器。充电器使用了锂离子电池所需的CC/CV充电曲线。充电器可接受高达27V的输入电压&#xff0c;但当输入电压超过OVP时禁用阈值&#xff0c;通常为6.8V&am…

倒置边框半径卡片

效果展示 CSS 知识点 实现多曲面的思路 实现整体布局 <div class"card"><div class"img_box"></div><div class"content"><div class"price"></div></div> </div>.card {position…

Idea执行Pom.xml导入jar包提示sun.misc.BASE64Encoder jar找不到---SpringCloud工作笔记197

奇怪之前都是好好的,这个是因为,jdk的版本不对,重新打开以后自动被选择成jdk11了...记录一下 原因是从jdk9的时候,这个jar包已经被删除了,所以会报错,如果你用的是jdk自带的这个jar包就会报错,那么还可以,修改,不让他用jdk的,让他用 用org.apache.commons.codec.binary.Base64…

EMC Unity存储(VNXe) service Mode和Normal Mode的一些说明

本文介绍下EMC unity存储设备&#xff08;也包含VNXe存储设备&#xff09;的两种工作模式&#xff1a; Service mode&#xff1a;也叫做rescue mode&#xff0c;存储OS工作不正常或者有其他故障&#xff0c;就会进入这个模式&#xff0c;无法对外提供服务Normal mode&#xff…

centos / oracle Linux 常用运维命令讲解

目录 1.shell linux常用目录&#xff1a; 2.命令格式 3.man 帮助 4.提示符 5.echo输出字符串或变量值 6.date显示及设置系统的时间或日期 7.重启系统 8.关闭系统 9.登录注销 10.wget 下载文件 11.ps 查看系统的进程 12.top动态监视进程信息和系统负载等信息 13.l…

四、RocketMQ发送普通消息、批量消息和延迟消息

Producer发送普通消息的方式 1.同步发送消息 同步消息代表发送端发送消息到broker之后&#xff0c;等待消息发送结果后&#xff0c;再次发送消息 实现步骤 创建生产端&#xff0c;声明在哪个生产组注册NameServer地址构建Message实体&#xff0c;指定topic、tag、body启动…

GBJ2510-ASEMI电源控制柜专用GBJ2510

编辑&#xff1a;ll GBJ2510-ASEMI电源控制柜专用GBJ2510 型号&#xff1a;GBJ2510 品牌&#xff1a;ASEMI 封装&#xff1a;GBJ-4 恢复时间&#xff1a;&#xff1e;50ns 正向电流&#xff1a;25A 反向耐压&#xff1a;1000V 芯片个数&#xff1a;4 引脚数量&#xf…

HBase 表如何按照某表字段排序后顺序存储的方法?

首先需要明白HBase表的排序规则&#xff1a; &#xff08;1&#xff09;rowkey排序&#xff08;字典排序&#xff09;——升序 &#xff08;2&#xff09;Column排序&#xff08;字典排序&#xff09;——升序 &#xff08;3&#xff09;时间戳排序——降序 rowkey 字典序排序…