跳至内容
返回工具箱

LIN ID / PID

ID 转换、PID 校验与 C 实现。

正在准备工具…

ID / PID 对照

ID HEXPID HEXID HEXPID HEXID HEXPID HEXID HEXPID HEX
00801050202030F0
01C11111216131B1
0242129222E23232
030313D323A33373
04C41414246434B4
05851555252535F5
060616D626A63676
0747179727E73737
080818D828A83878
0949199929E93939
0ACA1A1A2A6A3ABA
0B8B1B5B2B2B3BFB
0C4C1C9C2CEC3C3C
0D0D1DDD2DAD3D7D
0E8E1E5E2E2E3EFE
0FCF1F1F2F6F3FBF

3C / 3D 为诊断 ID;3E / 3F 为保留 ID。

位定义

ID 占低 6 位,范围 0–63。PID 在 ID 上增加两位校验:bit 6 为 P0,bit 7 为 P1。

P0=ID0⊕ID1⊕ID2⊕ID4 P_0 = \mathrm{ID}_0 \oplus \mathrm{ID}_1 \oplus \mathrm{ID}_2 \oplus \mathrm{ID}_4

P1=¬(ID1⊕ID3⊕ID4⊕ID5) P_1 = \neg(\mathrm{ID}_1 \oplus \mathrm{ID}_3 \oplus \mathrm{ID}_4 \oplus \mathrm{ID}_5)

例:ID 0x12 → P0 = 0、P1 = 1 → PID 0x92。

特殊 ID

IDPID用途
0x3C0x3C主节点诊断请求
0x3D0x7D从节点诊断响应
0x3E / 0x3F0xFE / 0xBF保留

lin_make_pid() 输入 6 位 ID,输出 PID。lin_checksum() 输入完整 PID 和数据,详见 LIN 校验和。