DBC中一种特殊的特殊的Signal—多路复用Signal

前言:

DBC设计中一般设计Signal时其实存在三种类型,如下图所示:

**1)步骤1,鼠标单击展开Message,选中底下的Signal

**2)步骤2,弹出dialog中选择 map signal 

61b003b09e5148168aadfcf747aca5d2.png

**3)得到以下菜单,在Defintion中

7339382cca334eac8245971b4f101592.png

 可以看到,选项Multiplexortype存在三个选项:

**1)Signal   ,这是最常见的一种类型,一般默认也是选择Signal

**2)Multiplexor Signal

**3)Multiplexed Signal

2和3都是复合复用类型,故先要理解以下三个问题

1:) 什么是复合复用类型?

2:) 复合复用类型又是干什么的?
3:) 两种复合复用的关系?

1:) 什么是复合复用类型?

复合复用类型:这种概念有点像C中的共用体的标准,就是可以定义不同的变量(对应的dbc中的是signal),存放于同一内存变量中。

只不过c使用公用体是为了减少RAM内存的使用,而signal的复用则是为了减少总线负债率。

2:) 分清楚Multiplexor Signal和Multiplexed Signal的区别和联系

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

将人话Multiplexed就是一种标记,可以理解为一组信号组的标号,我们设置一个信号就叫做:Signal_Multiplexor

我自己给这段信号设置了一个ValueTable:添加后效果如下图 :

 然后依次设置以下四个信号:

G1_Signal_1_Multiplexed

G1_Signal_2_Multiplexed

G2_Signal_1_Multiplexed

G2_Signal_1_Multiplexed

加上Signal_Multiplexor一共5个signal,为了方便理解,字节排序方式统一设定为Inter格式,起始位统一设定为inter stand格式。

格式解释,G1/G2是表示分组,后面是信号名,信号名相同的信号表示是同一组复用信号,最后的字符是表示信号是复用信号

第二步:新建一个Message名称New_Message_1,并把所有的信号添加进去。

第三步:点击EditMapingSignal,设置起始位,和信号长度

G1_Signal_1_Multiplexed与G1_Signal_2_Multiplexed是一组,起始位,信号长度必须不存在冲突。

G2_Signal_1_Multiplexed与G2_Signal_2_Multiplexed是一组,起始位,信号长度必须不存在冲突。

最后我们在Meaasge的layout界面看看结果:

注意标注地点,存在三种 选择下拉列表:

1)NO Mul****:指无复合复用类型。CANdb++也是默认选择此类型,此界面下,只能看到Signal_Multiplexor信号

2)Group1:内包含的信号:如下图

3)Group2,如下图:

总结和几点改进意见:

**1)一般情况下:需要Multiplexor标注组别的信号先发送,本例子中,采取的是bit7,先发送,显然是不合理的,建议将Multiplexor_Signal信号放置在Byte0的bit6和bit7位更合适。

2**)复用信号的ValueTable是不能复用的,必须为每个Signal添加一个合适的ValueTable

**3)大家可以尝试选择一组信号,然后任意拖动,也可以改变任意一个signal的长度

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值