【DBC专题】-2-CAN Signal信号的Multiplexor多路复用在DBC中实现

29 篇文章 129 订阅
14 篇文章 276 订阅

目录

0 关键字/术语描述

1有关“多路复用”概念

2 创建Message中“信号多路复用”

2.1 给Multiplexor Signal类型的信号创建合适的Value tables

2.2 将创建Value tables的添加到Multiplexor Signal类型的信号

2.3 配置Message中的其它Multiplexed Signal类型的信号

2.4 在Message中调整Signal信号的位置

3 Consistency check一致性检查

4 结尾


 

在“【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC”一文中,我们已经掌握了DBC的创建,下面我们来介绍DBC中存在的另一种应用“Signals信号的多路复用”。

 

推荐阅读(单击下方文字即可跳转至对应博文):

1、【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC

2、【DBC专题】-3-利用CANdb++ Editor在DBC文件添加帧CAN_ID和信号CAN_Signal

3、【DBC专题】-4-DBC文件中的Signal信号字节顺序Motorola和Intel介绍

4、【DBC专题】-5-DBC文件格式解析

5、【DBC专题】-6-Signal信号字节顺序Motorola_LSB/MSB/Sequential/Backward,Intel_Standard/Sequential等6类格式详解

 

0 关键字/术语描述

Multiplexing

通过信号复用,可以根据复用值在消息中的相同数据字节上传输不同的信号。包含多路复用值的信号称为Multiplexor Signal(模式信号)。根据多路复用值发送的信号称为Multiplexed(与模式有关)Signals(在此示例中为Signal_S1,...,Signal_S6)。

在MDC标准多路复用器概念中,要一起发送的多路复用信号必须每个都合并到一个Multiplex Group中(例如,示例中的Signal_S1和Signal_S2)。

 

举例:

如果多路复用值等于0,则发送信号Signal_S1和Signal_S2;如果等于1,则信号Signal_S3和Signal_S4; 如果等于2,则发送信号Signal_S5和Signal_S6(见图0-1)。

图0-1

 

1有关“多路复用”概念

 

DBC数据库中的标准“多路复用器”概念。在一条消息中,一个信号正好可以承载multiplexor value,这就是multiplexor signal。在“Message–Signal”对话框中设置。这涉及在“Multiplexor Type”框中选择“Multiplexor Signal type”(见1-1)。

图1-1

 

Multiplexor type

  • Signal

        信号没有多路复用

  • Multiplexor Signal (short: Multiplexor)多路复用信号(简称:多路复用)

        此消息的其他信号复用到其值的信号

  • Multiplexed Signal多路信号

        仅当复用信号的值与多路复用值一致时,才发送的一种信号。

 

然后,消息中具有“Multiplexor Signal type”的所有信号都取决于multiplexor signal的值。 在“Multiplex Value”输入框中设置特定值。

 

注意:

a)每条消息的multiplexor signals的数量只有一个;

b)信号可以是multiplexor signal或multiplexed signal,但不能同时是两者。

 

2 创建Message中“信号多路复用”

假设Message中的Test_ID_212存在以下信号(见图2-1):

信号Package_Num(Length:8bit);

信号Voltage_1_Value(Length:16bit)

信号Voltage_2_Value(Length:16bit)

信号Voltage_3_Value(Length:16bit)

信号Voltage_4_Value(Length:16bit)

信号Voltage_5_Value(Length:16bit)

信号Voltage_6_Value(Length:16bit)

图2-1

 

Message的Test_ID_212新建参照 “【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC”一文。当Package_Num = 0,后面的信号表示Voltage_1_Value,Voltage_2_Value,Voltage_3_Value;当Package_Num = 1,后面的信号表示Voltage_4_Value,Voltage_5_Value,Voltage_6_Value。

 

通过上面的信息我们可以看出:信号Package_NumMultiplexor Signal类型;信号Voltage_1_ValueVoltage_2_ValueVoltage_3_ValueVoltage_4_ValueVoltage_5_ValueVoltage_6_ValueMultiplexed Signal类型。

 

2.1 给Multiplexor Signal类型的信号创建合适的Value tables

 

【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC”一文中第7章的讲述了如何创建Value tables,这里不再重复的叙述。

 

在“Value Table‘New_Value_Table_5’”对话框下的Definition子选项卡(见图2-2)中,定义创建的Value Tables的符号名称和备注。在Value Descriptions子选项卡(见图2-3)中,枚举出信号所有可能出现的值,并添加描述(下图中表示,当信号值等于0x0时,用No.1代替显示;当信号值等于0x1时,用No.2代替显示;)。单击“确定”按钮,完成值描述编辑(见图2-4)。

图2-2

 

图2-3

 

图2-4

 

2.2 将创建Value tables的添加到Multiplexor Signal类型的信号

 

以Message消息Test_ID_212中Package_Num为例。选中Package_Num并鼠标右键,在其上下文中选择“Edit mapped Signal…”(见图2-5) 。或者双击Test_ID_212下的Package_Num信号,也有同样的效果

图2-5

 

在弹出“Message Signal ‘Test_ID_212::Package_Num’”对话框中,选择“Signal”子选项卡,在“Value Table:”处选择刚刚新建的Value tables “Package_Num_Value”(见图2-6)。

图2-6

 

在弹出“Message Signal ‘Test_ID_212::Package_Num’”对话框中,选择“Definition”子选项卡,在“Multiplexortype”处选择“Multiplexor Signal”(见图2-7)。

图2-7

 

2.3 配置Message中的其它Multiplexed Signal类型的信号

以Message消息Test_ID_212中Voltage_1_Value为例。选中Voltage_1_Value并鼠标右键,在其上下文中选择“Edit mapped Signal…”(见图2-8) 。或者双击Test_ID_212下的Voltage_1_Value信号,也有同样的效果

图2-8

 

在弹出“Message Signal ‘Test_ID_212::Voltage_1_Value’”对话框中,选择“Definition”子选项卡,在“Multiplexortype”处选择“Multiplexed Signal”;在“Multiplex Value”处填“0x0”(见图2-9)。按照此方法依次配置信号Voltage_2_Value、Voltage_3_Value、Voltage_4_Value、Voltage_5_Value、Voltage_6_Value。

注意:配置其它信号时唯一的差异是:

信号Voltage_2_Value的“Multiplex Value”处填“0x0”;

信号Voltage_3_Value的“Multiplex Value”处填“0x0”;

信号Voltage_4_Value的“Multiplex Value”处填“0x1”;

信号Voltage_5_Value的“Multiplex Value”处填“0x1”;

信号Voltage_6_Value的“Multiplex Value”处填“0x1”;

 

图2-9

 

2.4 在Message中调整Signal信号的位置

【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC”一文中第5.2章的讲述了如何调整Signal信号的位置,这里不再重复的叙述。

 

Signal信号位置调整完整后,在Message—>Layout中显示效果见下图2-10、图2-11、图2-12。

图2-10

 

 

图2-11

 

图2-12

 

3 Consistency check一致性检查

【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC”一文中第10章讲述了如何进行一致性检查,这里不再重复的叙述(见图3-1)。

 

图3-1

 

自此信号的多路复用就完成了。

4 结尾

  • 22
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
在CAN(Controller Area Network)通讯,要增加信号,首先需要具备一定的硬件条件和通讯协议的支持。下面是一种常见的方法: 1. 配置硬件:将信号源连接到CAN控制器的输入引脚上,并确保信号的电压和电流满足CAN控制器的输入要求。 2. 定义信号:在CAN dbc文件,定义新的信号。可以指定信号的名称、长度、单位、数据类型等信息。根据具体的需求,可以选择有符号整数、无符号整数、浮点数等不同的数据类型。 3. 分配信号:将定义的信号分配给适当的消息。确保信号和消息之间的关系是正确的,以便能够在传输过程正确解析和处理数据。 4. 配置节点:对相关节点进行配置,使其可以接收和发送新增的信号。设置节点的CAN ID和相关参数,确保节点能够正确接收和解析CAN消息。 5. 更新网络:在整个CAN网络更新dbc文件和配置信息,以确保所有节点都能够正确识别新增加的信号。 6. 进行测试:在实际应用,进行测试,验证新增的信号在CAN网络的传输和解析是否正常。例如,可以通过发送模拟数据,然后检查接收端是否正确接收并解析出新增的信号。 需要注意的是,增加信号可能会对CAN网络的带宽和数据传输造成一定的影响,因此在设计阶段应考虑到网络的可扩展性和数据的实时性。同时,还需要根据具体的应用需求进行合理的信号定义和配置,以确保CAN网络的稳定性和可靠性。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

汽车电子助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值