【DBC专题】-2-CAN Signal信号的Multiplexor多路复用在DBC中实现
目录
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)。
1有关“多路复用”概念
DBC数据库中的标准“多路复用器”概念。在一条消息中,一个信号正好可以承载multiplexor value,这就是multiplexor signal。在“Message–Signal”对话框中设置。这涉及在“Multiplexor Type”框中选择“Multiplexor Signal type”(见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)
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 将创建Value tables的添加到Multiplexor Signal类型的信号
以Message消息Test_ID_212中Package_Num为例。选中Package_Num并鼠标右键,在其上下文中选择“Edit mapped Signal…”(见图2-5) 。或者双击Test_ID_212下的Package_Num信号,也有同样的效果。
在弹出“Message Signal ‘Test_ID_212::Package_Num’”对话框中,选择“Signal”子选项卡,在“Value Table:”处选择刚刚新建的Value tables “Package_Num_Value”(见图2-6)。
在弹出“Message Signal ‘Test_ID_212::Package_Num’”对话框中,选择“Definition”子选项卡,在“Multiplexortype”处选择“Multiplexor Signal”(见图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信号,也有同样的效果。
在弹出“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.4 在Message中调整Signal信号的位置
“【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC”一文中第5.2章的讲述了如何调整Signal信号的位置,这里不再重复的叙述。
Signal信号位置调整完整后,在Message—>Layout中显示效果见下图2-10、图2-11、图2-12。
3 Consistency check一致性检查
“【DBC专题】-1-如何使用CANdb++ Editor创建并制作一个DBC”一文中第10章讲述了如何进行一致性检查,这里不再重复的叙述(见图3-1)。
自此信号的多路复用就完成了。
4 结尾
【DBC专题】-2-CAN Signal信号的Multiplexor多路复用在DBC中实现相关推荐
- 【DBC专题】-4-DBC文件中的Signal信号字节顺序Motorola和Intel介绍
目录 0 引言 1 小端(Intel)编码格式 1.1 Signal信号不跨字节 1.2 Signal信号跨字节 2 大端(Motorola)编码格式 2.1 Signal信号不跨字节 2.2 Sig ...
- 【DBC专题】-7-在DBC中创建一个Signal Group信号组
目录 1 创建Signal Group信号组 2 创建Signal Group信号组前后DBC内容的差异 3 结尾 关键字: CANdb++ Editor CAN Signal SG=Signal ...
- 【DBC专题】-5-DBC文件格式解析
目录 0 DBC文件中"符号字符串"命名要求 1 DBC文件的标头 2 Bit Timing波特率定义 3 Node节点定义 4 Value Table值表定义 5 Message ...
- CAN DBC解析自动生成C 信号 API代码
众所周知,Python的脚本解析最近非常流行,Python入门是非常友好的,如果有C语言基础,一周基本就入门了. 一直想写一下DBC自动生成代码的小工具,正好借助小工具的编写,学习一下Python. ...
- golang signal 信号简介
目录 1.1. 基本概念 1.2. Go 对信号的处理 1.2.1. Go 程序对信号的默认行为 1.2.2. 改变信号的默认行为 1.2.3. SIGPIPE 1.2.4. cgo 注意事项 1.3 ...
- 组合键 发送指定信号_Django signal 信号机制的使用
Django中提供了"信号调度",用于在框架执行操作时解耦,当某些动作发生的时候,系统会根据信号定义的函数执行相应的操作 一.Django中内置的 signal 类型主要包含以下几 ...
- python signal模块作用_如何理解python中信号Signal?
信号signal 是python进程间进行信号发送的一种机制,其原理是操作系统对进程的控制,是一种程序中断一个进程一旦接收到信号就会打断原来的程序执行流程来处理信号. 那么singanl到底有什么用呢 ...
- iOS Mach异常和signal信号
摘要: 本着探究下iOS Crash捕获的目的,学习了下Crash捕获相关的Mach异常和signal信号处理,记录下相关内容,并提供对应的测试示例代码.Mach为XNU的微内核,Mach异常为最底层 ...
- signal信号详解
signal信号详解本文引用其它网站. 信号机制是进程之间相互传递消息的一种方法,信号全称为软中断信号,也有人称作软中断.从它的命名可以看出,它的实质和使用很象中断.所以,信号可以说是进程控制的一部分 ...
最新文章
- 送一款巧克力式绝美键盘!真香!
- Linux 内核同步(二):自旋锁(Spinlock)
- 用Unity盖房子(一):《勇者斗恶龙:建造者2》游戏功能的猜想
- python json.load_python 读写json文件(dump, load),以及对json格式的数据处理(dumps, loads)...
- 在vue中methods互相调用的方法
- Springboot2学习博客
- mcq 队列_MCQ | 基础知识 免费和开源软件| 套装3
- LeetCode -- Sort List
- caffe数据集——LMDB
- 面试题 MySQL的慢查询、如何监控、如何排查?
- 项目管理的七个工作法则
- python索引取值_Python 从列表中取值和取索引的方法
- 【Unity】超级坦克大战(十三)闯关流程:关卡界面逻辑
- Navicat for mysql 在WIN10下导入SQL不成功解决办法
- 阿里云的PolarDB要开源了?这个数据库到底强在哪?
- ROS基础(13)——机器人建模之运动仿真
- CSS实现文字动画效果【每日一题】
- antd design 引用样式不生效问题
- flutter 解耦框架BLoC在网络请求中的应用
- 不可思议的大公司组织结构图