CANdb++数据库操作

CANdb++数据库操作

创建工程结构文件夹

在文件夹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

  1. 创建信号OnOff(引擎状态〕,Length为1b,ByteOrder为Intel,ValueType为Unsigned,Maximum为1,Startbit为15,Message为Enginestate',其它设置使用默认值

  2. 创建信号Door一L(左车门开关状态〕,Length为1b,ByteOrder为Intel,ValueType为Unsigned,Maximum为1,Startbit为0,Message为Doorstate'其它设置使用默认值

  3. 创建信号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

  1. 创建VtSig-Door-Status数值表

name:VtSig_DoorStatus

ValueDescription:

Ox0:Close

Oxl:Open

关联信号:Door_L,Door_R

  1. 创建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,以实现适应不同环境的通信需求

相关推荐
a2591748032-随心所记20 小时前
车载音频7.1.4分布
车载系统
码界奇点1 天前
基于SpringBoot与Vue3的多租户中后台管理系统设计与实现
java·spring boot·后端·spring·车载系统·毕业设计·源代码管理
码界奇点1 天前
基于Spring MVC与JdbcTemplate的图书管理系统设计与实现
java·spring·车载系统·毕业设计·mvc·源代码管理
码界奇点2 天前
基于RBAC模型的权限管理系统设计与实现
车载系统·毕业设计·源代码管理·python3.11
码界奇点2 天前
基于微服务架构的分布式量化交易系统设计与实现
分布式·微服务·架构·车载系统·毕业设计·源代码管理
码界奇点4 天前
基于Python与GitHub Actions的正方教务成绩自动推送系统设计与实现
开发语言·python·车载系统·自动化·毕业设计·github·源代码管理
码界奇点4 天前
基于Django与Vue.js的RBAC权限管理系统设计与实现
vue.js·python·车载系统·django·毕业设计·源代码管理
码界奇点4 天前
基于深度学习的人脸识别考勤系统设计与实现
人工智能·深度学习·车载系统·毕业设计·源代码管理
进击的横打8 天前
【车载开发系列】车载总线的Busoff功能需求
车载系统
码界奇点11 天前
基于Dash+FastAPI的通用中后台管理系统设计与实现
python·车载系统·毕业设计·fastapi·源代码管理·dash