CANOE入门到精通——CANOE系列教程记录1 第一个仿真工程

news2024/11/26 12:26:10

本系列以初学者角度记录学习CANOE,以《CANoe开发从入门到精通》参考学习,CANoe16 demo版就可以进行学习

概念

CANoe是一种用于开发、测试和分析汽车电子系统的软件工具。它通过在不同层次上模拟汽车电子系统中的不同部件,如ECU、总线和传感器,来评估系统的功能和性能。CANoe也提供了一个环境,用于实验室和车辆之间的交互操作和信息传输,以及对调试信息的记录和分析。
CANoe主要用于以下汽车电子系统的开发和测试:
1 通信系统:CAN、LIN、FlexRay、Ethernet等
2 电子控制单元(ECU) 开发与测试
3 传感器和执行器的功能开发与测试
4 汽车网络安全性开发
5 功能安全性开发
6 车载娱乐系统开发与测试
大部分围绕这三部分:分析 、仿真和诊断。
为什么需要CANoe呢?
CANoe是一种极其重要的汽车电子系统开发工具,因为它允许开发人员在车辆生产之前测试和评估电子系统,从而减少成本和时间,同时提高产品质量和安全性。CANoe还提供强大的数据记录和分析功能,使开发人员可以更快速和精确地识别和解决错误和故障。此外,CANoe还支持多种通信协议和硬件接口,使得开发人员可以灵活地适应不同的汽车电子系统。

软件安装

CANoe下载
在这里插入图片描述
进入注册后,邮箱会收到CANoe的下载链接和demo Lisence
在这里插入图片描述
1、解压安装

我安装时,系统出现 提示disablemsi is enabled。只需将DisableMSI的值设置为 0 即可完成。

解决方法

2、注意安装路径默认是C盘
3、安装Activation key,vector已经通过邮箱发送给你。

创建第一个仿真工程

完成功能:使用一个开关按钮控制LED亮灭。
双击打开
在这里插入图片描述
在这里插入图片描述

1、创建单通道CAN总线仿真工程

在这里插入图片描述
出现界面
在这里插入图片描述
ctrl+S 保存,在一个文件夹FirstDemo,工程名:FirstDemo.cfg

在这里插入图片描述

2、新建CAN数据库

单击点击 Tools
在这里插入图片描述
弹出
在这里插入图片描述

2.1 添加报文

创建Database,并命名:FirstDemo.dbc,保存前面说的文件夹中
在这里插入图片描述
在这里插入图片描述
添加报文message
在这里插入图片描述
在这里插入图片描述

2.2添加信号

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
创建message和signals后,将signals下的bsSwitch拖到Msg1中
在这里插入图片描述
以上数据库已经创建完成。

2.3将Database add project 中

右键 将FirstDemo.dbc
在这里插入图片描述

3、定义系统变量

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建两个环境变量(按钮开关状态和灯状态),环境变量的Namespace都为MyNamespace下。

4、创建仿真面板,panel

两个仿真面板:按钮和LED,模拟实物。

4.1 创建 light panel

在这里插入图片描述
LIGHT panel,保存到工程
在这里插入图片描述

在toolbox,找到LED Contrl 拖到编辑框中
在这里插入图片描述
对象说明
在这里插入图片描述

点击LED 配置LED属性
在这里插入图片描述
关于配置 Symbol
以拖拽形式进行配置
在这里插入图片描述

如果没有系统变量
在这里插入图片描述

4.2创建 switch panel

在这里插入图片描述

同样的方法创建 SWITCH panel
在这里插入图片描述

在这里插入图片描述

5、创建网络节点

右键点击 CAN总线
在这里插入图片描述
Insert Network Node,插入两个网络节点。

5.1 设置网络节点,

在这里插入图片描述
修改Tile
在这里插入图片描述

在这里插入图片描述

5.2 添加 CAPL 程序

双击ECU,为SWITCH和LIGHT ECU创建CAPL程序。
在这里插入图片描述

在这里插入图片描述
代码:

//Switch.can
/*@!Encoding:936*/
on sysvar sysvar::MyNamespace::svSwitch
{
  message Msg1 msg;
  msg.bsSwitch = sysGetVariableInt(sysvar::MyNamespace::svSwitch);
  output(msg);
}

//Light.can
/*@!Encoding:936*/

on preStart
{
  write("关注 小昭debug");
}
on message Msg1
{
   SysSetVariableInt(sysvar::MyNamespace::svLight,this.bsSwitch);
}

compile

在这里插入图片描述

6 工程运行仿真

在这里插入图片描述
显示Trace
在这里插入图片描述

右键打开按钮,灯亮,Trace显示报文信息。
在这里插入图片描述
待更新,敬请期待。

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

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

相关文章

自动化运维工具Ansible之playbook剧本

目录 一、playbook 1、playbook简述 2、playbook剧本格式 3、playbook组成部分 4、playbook启动及检测 5、playbook模块实战实例1 6、vars模块实战实例2 7、when模块实战实例3 8、with_items循环模块实战实例4 9、template模块实战实例5 10、tags模块实战实例6 一、…

VM中kali虚拟机创建docker部署WebGoat

这里选择在docker中配置(因为方便) 首先下载docker sudo apt-get install docker.io 然后从Docker Hub下载WebGoat 8.0 的docker镜像 使用命令 docker pull webgoat/webgoat-8.0 完成后查看现在kali虚拟机中的docker镜像列表 输入命令 docker images …

0704一阶线性微分方程-微分方程

文章目录 1 线性方程1.1 定义1.2 解法(常数变易法)1.3 例题 2伯努利方程3 简单变量替换解方程结语 1 线性方程 1.1 定义 一阶微分方程:形式上能化成 d y d x P ( x ) y Q ( x ) \frac{dy}{dx}P(x)yQ(x) dxdy​P(x)yQ(x)的方程,…

树莓派CSI摄像头使用python调用opencv库函数进行运动检测识别

目录 一、完成摄像头的调用 二、利用python调用opencv库函数对图像进行处理 2.1 图像处理大体流程 2.2 opencv调用函数的参数以及含义 2.2.1 ret, img cap.read() 读取帧图像 2.2.2 cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) 灰度图像 2.2.3 gray_diff_img cv2.absdiff(g…

详解子网划分练习题(32道)

目录 1 子网划分概念: 2 划分方法: 子网划分方法:段,块,数的计算三步。 段就是确定ip地址段中既有网络地址,又有主机地址的那一段是四段中的那一段? 块就确定上一步中确定的那一段中的主机…

【Linux】网络配置详细步骤及其相关基础知识介绍

一、Linux网络配置步骤 1、登录root账户 进行网络配置需要使用root权限,因此需要先登录root用户 2、输入ip addr查看网络信息 只有一个本机地址127.0.0.1,因为Linux操作系统的网卡开关还没有打开。 3、输入cd /etc/sysconfig/network-scripts/进入目录…

R语言 | 列表

目录 一、建立列表 1.1 建立列表对象——对象元素不含名称 1.2 建立列表对象——对象元素含名称 1.3 处理列表内对象的元素名称 1.4 获得列表的对象元素个数 二、获取列表内对象的元素内容 2.1 使用"$"符号取得列表对象的元素内容 2.2 使用"[[ ]]"符…

关于GeoServer发布服务时数据源设置的避坑指南

题外话 时光任然,一年一度的五一劳动节已然来到。作为疫情之后迎来的第一个五一,不知道各位小伙伴们怎么度过这个劳动节呢?是决定去另一个城市,观察体验一下不一样的风景,或者去旅游,给自己放假。昨天被123…

three.js进阶之动画系统

我曾在three.js进阶之骨骼绑定文章中提到了AnimationMixer、AnimationAction等内容,其实这些应该属于Three.js的动画系统,本文就系统的介绍一下动画系统(Animation System)。 前言 一般情况下,我们很少会使用three.j…

【学习视频】阅读开源工业软件和工业智能实战上线B站

图片来源:https://metrology.news/a-i-for-smarter-factories-the-world-of-industrial-artificial-intelligence/ 为了帮助大家做好工业软件以及用人工智能解决工业领域现实问题,我在B站上开了两个视频系列,一个是“一起来读开源工业软件”…

STM32 基础知识入门 (C语言基础巩固)

1、在不改变其他位的值的状况下,对某几个位进行设值 这个场景在单片机开发中经常使用,方法就是先对需要设置的位用&操作符进行清零操作, 然后用|操作符设值。 比如我要改变 GPIOA 的 CRL 寄存器 bit6(第 6 位)的…

MiNiGPT4安装记录

装conda wget https://repo.anaconda.com/archive/Anaconda3-5.3.0-Linux-x86_64.sh chmod x Anaconda3-5.3.0-Linux-x86_64.sh ./Anaconda3-5.3.0-Linux-x86_64.sh export PATH~/anaconda3/bin:$PATH # 或者写到环境保护变量 # 不会弄看这吧 https://blog.csdn.net/wyf2017/a…

fork()创建进程原理

目录 一、写时复制技术写时复制的优点:vfork()和fork() 二、fork()原理初步再理解下页表与多进程在内存中的图像创建进程和创建线程的区别 三、fork()的具体过程 一、写时复制技术 fork()生成子进程时,只是把虚拟地址拷贝给子进程,也就是父进…

( 字符串) 205. 同构字符串 ——【Leetcode每日一题】

❓205. 同构字符串 难度:简单 给定两个字符串 s 和 t ,判断它们是否是同构的。 如果 s 中的字符可以按某种映射关系替换得到 t ,那么这两个字符串是同构的。 每个出现的字符都应当映射到另一个字符,同时不改变字符的顺序。不同…

网络基础:socket套接字

文章目录 1. 前导知识1.1 源MAC地址和目的MAC地址1.2 源IP地址和目的IP地址1.3 MAC地址和IP地址的配合1.4 源端口号和目的端口号1.5 Socket1.6 UCP协议和TCP协议1.7 网络字节序高低位高低地址大端和小端网络字节序常用转换函数 2. socket 网络编程2.1 socket 常见接口创建套接字…

ChatGPT最好用的连接-自动写文案-代码算法最佳选择

ChatGPT最好用的连接-自动写文案-代码算法最佳选择 最近测试了很多国内分享的ChatGPT,很多都是限制最多写200文字,超过200个文字就不显示了。或者有的写出的文章逻辑性不对,写的算法不能正常运行。 经过多天的搜索测试,最终确定…

某电商客户数据价值分析项目

目录 一、项目意义 二、项目流程 三、项目内容 1、导入数据 2、数据预处理 3、单变量分析 4、聚类分析—Kmeans算法 一、项目意义 客户价值分析就是一个客户分群问题,以客户为中心,从客户需求出发,搞清楚客户需要什么,他们…

Linux进程通信:进程组 会话

1. 进程组 (1)概念:一个或多个进程的集合,也称为“作业”。 (2)父进程创建子进程时,默认属于同一个进程组。进程组ID为组长进程ID。 (3)进程组中只要有一个进程存在&a…

unity中的Line Renderer

介绍 unity中的Line Renderer 方法 首先,Line Renderer 是 Unity 引擎中的一个组件,它可以生成直线、曲线等形状,并且在场景中呈现。通常情况下,Line Renderer 被用来实现轨迹、路径、线框渲染以及射线可视化等功能。 在使用 …

imx6ull开发板环境配置 - libusb、libudev、eudev交叉编译

目录 零、前言 一、libusb交叉编译 1.0 前言 1.1 交叉编译 二、usbutils交叉编译 2.0 前言 2.1 交叉编译 三、libudev交叉编译 3.0 前言 3.1 交叉编译 3.2 错误处理-没找到usbutils 3.3 错误处理-没找到pci.ids (pci.ids not found) 3.3.0 前…