首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

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

  • 23-09-21 18:22
  • 3914
  • 12830
blog.csdn.net

目录

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_Num是Multiplexor Signal类型;信号Voltage_1_Value、Voltage_2_Value、Voltage_3_Value、Voltage_4_Value、Voltage_5_Value和Voltage_6_Value是Multiplexed 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 结尾

汽车电子助手
微信公众号
“汽车电子软件与Autosar”领域优秀创作平台
注:本文转载自blog.csdn.net的汽车电子助手的文章"https://blog.csdn.net/qfmzhu/article/details/111406108"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top