• CANoe创建仿真工程


    写在前面

    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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    含义为:

    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);
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    含义为:

    • 定义一个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的开发脚本中使用的变量数据,例如用于控制仿真过程的参数、模型中的状态变量、测试用例中的输入和期望输出等。这些数据通常是预先定义的、静态的数据,在仿真过程中根据需要进行读取和修改。

  • 相关阅读:
    JavaEE进阶:Spring 更简单的读取和存储对象
    Redis入门完整教程:发布订阅
    Ubuntu安装搜狗输入法
    Mybatis中表之间的关联关系
    MySQL之索引及其背后的数据结构
    uni-app 实现凸起的 tabbar 底部导航栏
    python开发之个微的二次开发
    Apache-maven的安装与配置(IDEA)
    Kubernetes -- 部署k8s集群
    PointNet++论文及代码详解
  • 原文地址:https://blog.csdn.net/m0_48468018/article/details/133470171