如何处理庞大库中的重叠信号

发布于 2025-01-18 13:40:28 字数 1050 浏览 0 评论 0 原文

拥有一个具有两个重叠信号(位置 8 和 32)的多路复用消息的 CANBUS 数据库记录,如下所示:

[A0AT]
Len=8
CycleTime=1000
Mux=_10 0,8 0Ah
Var=Signal00 unsigned 8,7 /u:°C /o:-40 /max:80 /e:Signal00
Var=Signal01 bit 15,1 /e:Signal01
Var=Signal02 unsigned 16,2
Var=Signal03 unsigned 18,2
Var=Signal04 unsigned 28,4 /e:Signal04
Var=Signal05 unsigned 24,2 /e:Signal05
Var=Signal06 unsigned 32,7 /u:°C /o:-40 /e:Signal06
Var=Signal07 unsigned 56,8 /u:°C /e:Signal07
Var=Signal08 unsigned 40,8 /u:°C /o:-40 /e:Signal08
Var=Signal09 unsigned 48,8 /u:°C /o:-40 /e:Signal09
Var=Signal10 unsigned 26,2 /e:Signal10
Var=Signal11 bit 39,1
Var=Signal12 unsigned 8,7 /u:°F /o:32
Var=Signal13 unsigned 32,7 /u:°F /o:32 /e:Signal13
Var=Signal14 unsigned 20,4 /e:Signal14

但我来自设备的消息是:

0.124000 1 1BBBBBB0x Rx d 8 0A 3E F0 FF FF FF FF 00

cantools 库的简单解码

dced_msg = db.decode_message(mesg.arbitration_id, mesg.data)

由于消息中缺少数据,

失败。有没有办法使用 cantools 库并正确解码此类消息(即用正确的值填充这些重复的信号)?

或者还有其他可以处理重叠信号的can总线通信库吗?

Have a canbus database record of multiplexed message with two overlapped signals (at position 8 and 32) like this:

[A0AT]
Len=8
CycleTime=1000
Mux=_10 0,8 0Ah
Var=Signal00 unsigned 8,7 /u:°C /o:-40 /max:80 /e:Signal00
Var=Signal01 bit 15,1 /e:Signal01
Var=Signal02 unsigned 16,2
Var=Signal03 unsigned 18,2
Var=Signal04 unsigned 28,4 /e:Signal04
Var=Signal05 unsigned 24,2 /e:Signal05
Var=Signal06 unsigned 32,7 /u:°C /o:-40 /e:Signal06
Var=Signal07 unsigned 56,8 /u:°C /e:Signal07
Var=Signal08 unsigned 40,8 /u:°C /o:-40 /e:Signal08
Var=Signal09 unsigned 48,8 /u:°C /o:-40 /e:Signal09
Var=Signal10 unsigned 26,2 /e:Signal10
Var=Signal11 bit 39,1
Var=Signal12 unsigned 8,7 /u:°F /o:32
Var=Signal13 unsigned 32,7 /u:°F /o:32 /e:Signal13
Var=Signal14 unsigned 20,4 /e:Signal14

But my message from device is:

0.124000 1 1BBBBBB0x Rx d 8 0A 3E F0 FF FF FF FF 00

Simple decoding by cantools library

dced_msg = db.decode_message(mesg.arbitration_id, mesg.data)

fails because of missing data in message.

Is there a way to use the cantools library and correctly decode such message (i.e fill these duplicated signals with correct values)?

Or is there any other can bus communication library which can handle overlapped signals?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我的黑色迷你裙 2025-01-25 13:40:28

这个问题已经在 cantools repo上提出: https:https:/// github.com/cantools/cantools/issues/205

不幸的是,该图书馆目前不支持重叠信号,并且可能永远不会。

您可以尝试使用 canmatrix 并用 can_decoder 。我还没有测试过。

This issue has already been raised on the cantools repo: https://github.com/cantools/cantools/issues/205

Unfortunately the library doesn't support overlapping signals at the moment and probably never will.

You could try to convert your .sym files to .dbc using canmatrix and decode your can signals with can_decoder. I haven't tested it though.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文