西门子 s7-200与变频器MODBUS通讯编程的问题

16进制30和16进制36如何通过modbus通讯变成06的?
2024-12-04 19:30:17
推荐回答(4个)
回答1:

MODBUS协议有两种规则,ACSII和RTU。RTU方式对于数据的传送效率要高于ACSII方式。
假设传送一个10进制数值36,
ACSII方式是将这个数值理解为字符串'36',即一个字符'3'和一个字符'6',需要占用两个字节,而根据ACSII码表,字符'3'对应16#33,字符'6'对应16#36,所以,在串口底层传送的两个字节为16#33和16#36;
而RTU方式就是直接传送了,10#36根据BIN编码,就是16#24,需要占用一个字节,所以,在串口底层传送的一个字节为16#24;
以上就是MODBUS协议两种规则ACSII和RTU的一个区别。
-------------
若你用的方式确实是RTU方式,但为什么存在类似ACSII的编码方式呢?那是因为你所面对的MODBUS从站的内核程序就是这么开发的,没办法,你只能适应它。

回答2:

ASCII码知道吗?
'30''36'对应06,不是转换,30还是00110000,只是代表0这个字符。

回答3:

16进制30 就是 0 ,给VB14
16进制36 就是 6,给VB15
所以收到的字符串就是06

回答4:

你用的是美国标准码