CANdb++数据库操作

2023-10-14 13:36
文章标签 操作 数据库 candb

本文主要是介绍CANdb++数据库操作,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CANdb++数据库操作

    • 创建工程结构文件夹
    • 新建数据库&总线描述
    • 节点设置
      • 节点创建
      • 配置Message属性
      • 信号设置
      • 节点收发信号
    • 环境变量配置
    • 一致性检验
    • 数据库工程XVehicle.dbc导入工程文件
    • 总结

创建工程结构文件夹

在文件夹X-Vehicle-1下,建立工程目录文件夹CANdb,Nodes,Panels:
在这里插入图片描述

新建数据库&总线描述

基于CAN模板新建数据库Tools-CANdb++ Editor——File——CreateDatabase——根据功能选总线模板(这里选了Vector IL Basic Template.dbc)——创建数据库工程XVehicle.dbc】
在这里插入图片描述
基于模板新建完成后,CANdb++Editor的导航区会显示网络中所有对象之间的关系,包含Networks、(ECUs、Network nodes)、(Environment variables、Messages和Signals)。
在这里插入图片描述
总线描述——Networks(配置总线名称,类型)。
在这里插入图片描述

节点设置

节点创建

  1. 创建Network Nodes节点,设置节点属性

在ECUs(电子控制单元)项下,列出了当前网络中所含的电控单元,它们之间通过网络节点(Network Nodes)实现信息的交互。通常情况下,ECU与网络节点是一一对应 的。当ECU作为网关时,一个ECU可以包含多个网络节点。在CAN数据库中,双击某 个ECU可以查看该ECU所对应的网络节点以及环境变量等信息。
需要提醒的是,在CAN数据库中并不能直接创建ECU,CANdb++会在创建网络节点——Network Nodes的同时,创建一个名称相同的ECU。
因此我们通过创建Network Nodes来创建控制面板节点,系统则自动创建panel对应的仿真节点。
Network Nodes(网络节点)是ECUs的通信接口,各ECU通过Network Nodes实现 总线上信息的发送和接收,每个Network Nodes包含对应的名称和地址。

在导航区右击Network Nodes在快捷菜单中选择新建一个名为Engine的网络节点, 并且将节点的地址设为0x1,如图所示。
在这里插入图片描述

用同样的方法,再创建一个名称为Door的节点(地址为Ox2)和一个名称为Display 的节点(地址为0x3)。
在这里插入图片描述
创建完成后,可以看到系统自动生成对应的ECU节点,分别在NetWorks和ECUs中都有展示。
在这里插入图片描述

配置Message属性

X-Vehicle-1工程中,有两种报文:DoorState,EngineState。分别创建报文并设置对应属性:

报文——Message——CAN上传播的数据Messages(报文)是总线上节点相互通信的数据。
数据库中,每个报文应包含下列属性 (本实例中所用报文均为CAN规范文档中所定义的CAN2.0A标准CAN)。 可以按下面4中分类理解记忆:
【报文结构】:Name(报文名称) CAN ID(CAN标识符) DLC(Data Length Code,数据长度) Type(传输类型) Cycle Time(周期)
【包含的内容】:Signals(信号)
【收发节点】Transmitters(发送节点) Receivers(接收节点)
【其他】: Layout(布局) Attributes(通用属性) Comment(说明)

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

信号设置

Signal(信号)是总线通信的最小单元,数据库中一个信号由下列属性组成。
【信号格式】:Name(信号名称) Length[Bits](信号长度) Byte Order(字节顺序)Value Type(数据类型) Unit(物理单位)
【值设置】Init.Value(初始值) Factor(加权)Maximum(最大值) Minimum(最小值)
【值含义说明】Value Table(数值表)
【关联哪条报文】Messages(报文)
【收发节点】Receivers(接收节点)
【其他】Attributes(通用属性) ·Value Descriptions(数值描述) ·Comment(说明)

X-Vehicle中有4个信号:引擎速度(EngineSpeed)、引擎状态(OnOff)、左车门开关状态(Door_L)和右车门开关状态(Door_R)。
在这里插入图片描述
创建EngineSpeed为例

  1. 创建信号Enginespeed(引擎速度〕,Length为15b,ByteOrder为Intel,Unit为r.p.m,ValueType为Signed,Maximum为5500,其它设置使用默认值
    在这里插入图片描述

在 Message 选 项 卡 中 单 击 Add 按 钮 将 该 信 号 关 联 到 报 文 Enginestate 中
在这里插入图片描述

将 Enginespeed 信 号 的 Startbit 〔 开 始 位 〕 设 置 为 0
在这里插入图片描述
2. 创建信号OnOff(引擎状态〕,Length为1b,ByteOrder为Intel,ValueType为Unsigned,Maximum为1,Startbit为15,Message为Enginestate’,其它设置使用默认值
3. 创建信号Door一L(左车门开关状态〕,Length为1b,ByteOrder为Intel,ValueType为Unsigned,Maximum为1,Startbit为0,Message为Doorstate’其它设置使用默认值
4. 创建信号DoorR〔右车门开关状态〕,Length为1b,ByteOrder为Intel,ValueType为Unsigned,Maximum为1,Startbit为2,Message为Doorstate’其它设置使用默认值

Signal 属性解释:

  1. Factor和Offset定义了raw value与physical value之间的关系。
    raw value是CAN报文发到 总线上的十六进制数据,
    physical value是信号所代表的物理量的值,例如,车速、转速、 温度等。
    Init.Value、Minimum和Maximum均为physical value。
    raw value 与physical value 之 间的 关系为:
    physical value=([raw value]×[Factor])+[Offset]。
  2. Byte Order
    数据库中信号Byte Order(字节顺序)分为Motorola和Intel两种数据格式(也称为大 端模式和小端模式),两种格式介绍如下:
    2.1. Motorola字节顺序也被称为大端模式,它将最高有效字节存储在内存的最低有效地址处,而最低有效字节存储在内存的最高有效地址处。这意味着在存储多字节数据时,最高有效字节先存储,然后是次高有效字节,以此类推,最低有效字节最后存储。
    2.2. Intel字节顺序也被称为小端模式,它将最低有效字节存储在内存的最低有效地址处,而最高有效字节存储在内存的最高有效地址处。这意味着在存储多字节数据时,最低有效字节先存储,然后是次低有效字节,以此类推,最高有效字节最后存储。
    大端模式和小端模式的区别在于字节的存储顺序。在同一个多字节数据类型中,大端模式和小端模式的字节顺序是相反的。例如,整数值0x12345678在大端模式下的存储顺序是0x12 0x34 0x56 0x78,而在小端模式下的存储顺序是0x78 0x56 0x34 0x12。
    不同的计算机架构可能使用不同的字节顺序。大多数计算机和操作系统(例如x86架构和Windows操作系统)使用小端模式,而一些嵌入式系统和网络协议(例如ARM架构和IP协议)使用大端模式。
    在处理跨平台数据交换时,字节顺序变得非常重要。可以使用字节序转换函数将字节顺序从一种格式转换为另一种格式,以确保数据在不同平台之间正确解释。

节点收发信号

设置网络节点的发送信号和接收信号

  1. 网络节点DisplayMappedRxSig
    〔接收信号〕:Door_L,Door_R,EngineSpeed,OnOffMappedTxSig
    〔发送信号〕:无
    在NetworkNodes右击Display,EditNode,在弹出的对话框中选择MappedRxSig,单击Add按钮,将Door_L,DoorR,EngineSpeed,OnOff添加进去
    在这里插入图片描述
  2. 网络节点Door
    MappedRxSig〔接收信号〕:EngineSpeed,OnOff
    MappedTxSig〔发送信号〕:DoorL,DoorR
  3. 网络节点Engine
    MappedRxSig〔接收信号〕:无
    MappedTxSig〔发送信号〕:EngineSpeed,OnOff

环境变量配置

ValueTable(数值表)用来文字化地指定信号或环境变量的值所代表的含义,例如,前面创建的信号OnOff,0代表Off状态,1代表On状态。
signal和Environment Variables都有这个属性。
环境变量Environment Variables
Environment Variable(环境变量)是ECU、面板和CAPL程序相连接的媒介。
例如,在CAPL程序中,通过改变或监控某一环境变量的值可以触发特定的动作,同样,环境变量的值也可以与面板上控制控件或显示控件相关联。
与系统变量相比,环境变量仅在CANdb++中定义。本实例使用的DBC模板,会自动创建两个环境变量EnvKlemmel5和EnvKlemme30,不需要可以直接删除。

环境变量配置
X-Vehicle中有1个环境变量EnvDoorState。按下图配置
在这里插入图片描述
环境变量的ValueTabe配置
Value Table数值表是用来文字化地指定信号值所代表的含义,如信号On0ff,0代表Off状态,1代表On状态

  1. 创建VtSig-Eng-Status数值表
    name:VtSig_Eng_Status
    ValueDescription:
    Ox0:Off
    0x1:On
    关联信号:On0ff

在CANdb++工具栏上,单击valueTables,右键->New
在这里插入图片描述
编辑VtSig-Eng-Status value表
在这里插入图片描述
双击编辑信号,关联value table
在这里插入图片描述
2. 创建VtSig-Door-Status数值表
name:VtSig_DoorStatus
ValueDescription:
Ox0:Close
Oxl:Open
关联信号:Door_L,Door_R
3. 创建VtEnv_Door_Status数值表
name:VtenvDoorStatus
ValueDescription:
Ox0: BothDoorClose
Oxl:LeftDoorOpen
0x2:RightDoorOpen
Ox3:BothDoorOpen
关联信号:EnvDoorState

一致性检验

如果通过一致性检验,没有告警或报错,那么就完成了数据库的设计。
在这里插入图片描述

数据库工程XVehicle.dbc导入工程文件

CAN数据库创建完成后,就可以将其导入已经创建的项目文件中。下面将该XVehicle数据库导入前面已创建的项目中。在Simulation Setup的系统视图中,右击Database 选择Import Wizard命令,在弹出的 对话框中选择XVehicle数据库,并将节点Display、Door和Engine添加到Assigned nodes 中,如图8.24所示。
在这里插入图片描述
在这里插入图片描述
发现三个仿真节点加入进来了
在这里插入图片描述

总结

在CANdb设计中,message是CAN网络中信息的基本单元,它包含了一个或多个信号。每个信号代表了一个特定的数据值,例如温度、速度等。节点可以通过接收和发送message来进行通信。

在这个过程中,信号的具体值是通过环境变量来确定的。环境变量是一组参数,可以影响信号的值。例如,可能有一个环境变量来表示温度,当发送一个带有温度信号的message时,可以根据环境变量的值来确定信号的具体温度值。

因此,节点根据环境变量来发送和接收带有信号的message,以实现适应不同环境的通信需求

这篇关于CANdb++数据库操作的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/210846

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

数据库面试必备之MySQL中的乐观锁与悲观锁

《数据库面试必备之MySQL中的乐观锁与悲观锁》:本文主要介绍数据库面试必备之MySQL中乐观锁与悲观锁的相关资料,乐观锁适用于读多写少的场景,通过版本号检查避免冲突,而悲观锁适用于写多读少且对数... 目录一、引言二、乐观锁(一)原理(二)应用场景(三)示例代码三、悲观锁(一)原理(二)应用场景(三)示例

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Oracle数据库常见字段类型大全以及超详细解析

《Oracle数据库常见字段类型大全以及超详细解析》在Oracle数据库中查询特定表的字段个数通常需要使用SQL语句来完成,:本文主要介绍Oracle数据库常见字段类型大全以及超详细解析,文中通过... 目录前言一、字符类型(Character)1、CHAR:定长字符数据类型2、VARCHAR2:变长字符数

Win11安装PostgreSQL数据库的两种方式详细步骤

《Win11安装PostgreSQL数据库的两种方式详细步骤》PostgreSQL是备受业界青睐的关系型数据库,尤其是在地理空间和移动领域,:本文主要介绍Win11安装PostgreSQL数据库的... 目录一、exe文件安装 (推荐)下载安装包1. 选择操作系统2. 跳转到EDB(PostgreSQL 的

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态