控制模块电压和电池电压是否相同?


8

控制模块电压(来自OBD模式01 PID 42)和电池电压是否相同?如果没有,它们之间是什么关系?当汽车中的电池电压最大​​为14 V时,为什么控制模块电压的最大值(来自OBD模式01 PID 42)为65.535 V?


为了澄清:您实际上是获得 65.535V作为读数,还是只是想知道为什么最大可能读数是该特定数字?
user253751'1

1
如果最大值为99.999,则说明会很清楚(5位数字,小数点在第二位之后)。65535是二进制,而99999是十进制。
user253751'1

Answers:


9

看起来问题出在输入信号上。

除非您的车辆配备了磁通电容器,否则电池两端的 65 V电压会有点高。就我所知,即使是重型卡车也无法运行该电压。

65535是最大无符号16位整数。

看一下OBD-II Wiki页面,看起来像SAE J1979的OBD-II PID使用的公式是:

( A * 256 + B ) / 1000

其中A是前两个字节,B是后两个字节。如果A和B均为255(二进制为11111111),则将获得最大可能的电压65.535 V


如果这个结果来自模拟器,那我就怪罪了。如果这是来自真实车辆的信号,我将检查ECU短路(虽然不确定)。确保轮询正确的地址,以排除可能的异常电压。

控制模块电压是提供给ECU的电压。它不是电池电压,但通常在车辆行驶时足够接近。


1
一开始不像汽车软件那样好。顺便说一句,这是一个了不起的回应。:)
种族狂热

6

我认为您所看到的只是计算机工作方式的产物。您提供的数字仅为65535,其中已插入小数。这对于计算机来说是一个特殊的数字-它是可以以16位(2字节)整数保存的最大值。简而言之,由于他们决定使用计算机变量,因此这是针对特定测量可以返回的最大值。这是编程的虚构内容-他们不希望它能够测量65伏。如果该值可以为正或负,则可能会看到最大值32,767。

您可能会看到的另一个数字是255。这是8位(单字节)无符号数字的最大值。如果该值可以为正或负,则最大值为127。


看我的答案。我想我正在尝试某些事情……
Zaid

通常12 7将是一个带符号的8位整数的最大值。
user253751'1

@immibis,您了解我-我脑海中“签名”,并在思考-128。谢谢。
JPhi1618 '16

1

发动机运转时,电压跟踪交流发电机/调压器的输出(也就是电池充电电压)。发动机不运转时,它将跟踪电池电压。

我只能推测宽电压范围的原因。交流发电机的未调节输出可能超过48V,因此它可能是有用的诊断数据。或者,可能只是数字编码的伪像,其值范围超出了必需的范围。


1
如果CMV达到65 + vdc,如何跟踪交流发电机电压?这将立即完全炸毁电池。交流发电机上大多数正在行驶的车辆读取的电压约为14vdc。超过此限制的任何东西都将成为电池。
Pᴀᴜʟsᴛᴇʀ2

@ Paulster2我更新了我的答案以解决您的问题。
kmarsh

1

控制模块电压是电池电压,减去电池与ECU之间接线中的任何电压降。65535是完整的16位寄存器。ECU可能会使用整数(计算速度更快),但会将其对OBD的计算结果转换为“浮点”或“实数”形式(可以使用小数点的数字)。

最大值不是65535、6553.5或655.35的原因是,将小数点放在左边两个位置后,它可以在整数计算级中获得最大的精度,同时在小数点左边提供足够的位置以显示所有可能的值。它实际上允许ECU以整数形式工作到3个小数位。也许对电池电压并不重要,但我认为这是原理。

可能没有人为地应用小于65535的最大值的工具,但是即使我认为这样做没有任何好处。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.