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

相关文章

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

Python使用openpyxl读取Excel的操作详解

《Python使用openpyxl读取Excel的操作详解》本文介绍了使用Python的openpyxl库进行Excel文件的创建、读写、数据操作、工作簿与工作表管理,包括创建工作簿、加载工作簿、操作... 目录1 概述1.1 图示1.2 安装第三方库2 工作簿 workbook2.1 创建:Workboo

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配

JSONArray在Java中的应用操作实例

《JSONArray在Java中的应用操作实例》JSONArray是org.json库用于处理JSON数组的类,可将Java对象(Map/List)转换为JSON格式,提供增删改查等操作,适用于前后端... 目录1. jsONArray定义与功能1.1 JSONArray概念阐释1.1.1 什么是JSONA