打印

请教modbus通讯协议关于设备地址的问题

[复制链接]
2590|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qcmc|  楼主 | 2010-3-23 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教各位高手,在MODBUS通讯协议中,ASCII传输方式的消息帧中地址域包含的是两个字符(ASCII)。但是我看到一些例子,设备地址是用的两位16进制的数表示的,比如说1号设备的地址就是01。但是用两位16进制的数表示的是一个ascii字符啊,是否和协议规定的不一样,请问该怎么理解?

相关帖子

沙发
lpf336| | 2010-3-24 08:58 | 只看该作者
ASCII vs RTU example:

Using the same example shown above to request registers 40108 to 40110 from slave address 17.

    11 03 00 6B 00 03

The complete ASCII request is made by first adding the message delimiting characters.     A colon is added to the start of the message, the LRC, carriage return and line feed are added to the end:

  : 1 1  0 3  0 0  6 B  0 0  0 3  7 E  CR LF

Each character is now treated as an ASCII character and replaced with it's hex value to give the final message.

  3A 3131 3033 3030 3642 3030 3033 3745 0D 0A

This Modbus ASCII request size is 17 bytes (170 bits)

...............

The equivalent Modbus RTU message would be:

  11 03 00 6B 00 03 76 87

This Modbus RTU request size is 8 bytes (80 bits)

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
qcmc + 1
板凳
tjcao| | 2010-3-24 08:59 | 只看该作者
Modbus中有两种传输方式,一个是ASCII另外一个RTU,你所说的16进制数表示地址的方式就是RTU方式。可参考附件内容。

Modbus_Cn.pdf

156.79 KB

使用特权

评论回复
地板
qcmc|  楼主 | 2010-3-24 09:34 | 只看该作者
感谢感谢,我明白了ascii传输的意思了,但是还有有个问题。。。
     看到别人的代码只有 : 1 1  0 3  0 0  6 B  0 0  0 3  7 E  CR LF这一帧,请问是怎么么转化成的asii码呢?难道是自动转化的吗?

使用特权

评论回复
5
qcmc|  楼主 | 2010-3-24 09:40 | 只看该作者
我的意思是:
    ascii传输方式,03功能码,比如说主机发送的 : 1 1  0 3  0 0  6 B  0 0  0 3  7 E  CR LF这一帧,通过什么硬件或者是软件把它转化为 3A 3131 3033 3030 3642 3030 3033 3745 0D 0A 这些ascii码的?这些转化过程看了很多网上找的modbus协议上都没有提到。。。请教请教。。。

使用特权

评论回复
6
lpf336| | 2010-3-24 09:47 | 只看该作者
: 1 1  0 3  0 0  6 B  0 0  0 3  7 E  CR LF 是字符显示
3A 3131 3033 3030 3642 3030 3033 3745 0D 0A 是对于的十六进制数

使用特权

评论回复
7
lpf336| | 2010-3-24 09:50 | 只看该作者
本帖最后由 lpf336 于 2010-3-24 09:51 编辑

字符 :的ascii码十六进制是 0x3A
字符1  的ascii码十六进制是 0x31
....

使用特权

评论回复
8
qcmc|  楼主 | 2010-3-24 10:15 | 只看该作者
6# lpf336



请教。。。我明白是字符转化成了ascii码,我的意思是怎么转过来的,是人工写代码还是自动转化的或者是别的方式转化过来的呢,因为我看见上位机用vb写的代码中写的是 : 1 1  0 3  0 0  6 B  0 0  0 3  7 E  CR LF,并没有写3A 3131 3033 3030 3642 3030 3033 3745 0D 0A 。。。。

使用特权

评论回复
9
lpf336| | 2010-3-25 08:52 | 只看该作者
ASCII码英文全称America Standard Code for Information Interchange,中文意思:美国信息交换标准码。它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。适用于所有拉丁文字字母,ASCII码有7位码和8位码两种形式。ASCII码于1968年提出,用于在不同计算机硬件和软件系统中实现数据传输标准化,在大多数的小型机和全部的个人计算机都使用此码。ASCII码划分为两个集合:128个字符的标准ASCII码和附加的128个字符的扩充和ASCII码。
你搞清ASCII码是什么意思就全明白了

使用特权

评论回复
10
qcmc|  楼主 | 2010-3-26 09:15 | 只看该作者
看了程序,明白了,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

72

帖子

0

粉丝