CODESYS V3 ST中如何将CAN报文拼接的十六进制转十进制?
在CODESYS V3 ST中处理CANOpen报文的十六进制转十进制问题
- 你不需要额外的转换函数,
MEM.PackBytesToWord返回的raw2本身就是十进制的500。 - 核心逻辑:十六进制
01F4和十进制500是同一个数值的不同显示格式,MEM.PackBytesToWord已经完成了字节拼接,得到的Word类型变量在内存中就是对应十进制值的二进制存储。
直接使用示例
把raw2赋值给其他数值类型变量即可直接使用十进制值:
VAR decimalResult : DINT; END_VAR decimalResult := DINT(raw2); // decimalResult的值即为500
手动计算原理(供理解)
如果要验证拼接后的数值逻辑:
- 高字节
myDataFF82[0]是十六进制01,对应十进制1,左移8位得1 * 256 = 256 - 低字节
myDataFF82[1]是十六进制F4,对应十进制244 - 两者相加:
256 + 244 = 500
MEM.PackBytesToWord已经帮你完成了上述计算,所以raw2直接就是你需要的十进制值,无需额外转换。
内容的提问来源于stack exchange,提问作者deepsdog
相关产品推荐
相关产品推荐

