打印

关于单片机写modbus通讯协议

[复制链接]
12048|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qcmc|  楼主 | 2010-3-24 08:22 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
各位大虾,用单片机做modbus的话,协议定义的保持寄存器是16位的,但是如果用8位的单片机做的话,03功能码中读取的保持寄存器(16位)是是怎么对应到单片机中的数据存储器(8位)中的呢?对应关系是什么呢?

相关帖子

沙发
原野之狼| | 2010-3-24 10:02 | 只看该作者
你搞个INT型就是16位了

使用特权

评论回复
板凳
qcmc|  楼主 | 2010-3-24 11:18 | 只看该作者
我这样说吧,如果用单片机做下位机,modbus协议定义的保持寄存器的的地址是不是就是单片机的数据存储器的地址?看了协议,感觉好像不是一回事

使用特权

评论回复
地板
原野之狼| | 2010-3-24 12:16 | 只看该作者
那个地址是协议定义的一个地址

使用特权

评论回复
5
qcmc|  楼主 | 2010-3-24 12:51 | 只看该作者
比如说,我用上位机通过这个协议定义的这个地址来读单片机内的变量,这个变量是存储在8位地址的存储器内的,那请问协议定义的这个地址怎么和单片机的存储器的地址对应起来呢?


4# 原野之狼

使用特权

评论回复
6
qcmc|  楼主 | 2010-3-24 12:54 | 只看该作者
比如说,我用上位机通过这个协议定义的这个地址来读取单片机内的变量,这个变量是存储在8位地址的存储器内的,那请问协议定义的这个地址是怎么找到单片机内存储变量的地址呢?

使用特权

评论回复
7
5880527| | 2010-3-24 13:04 | 只看该作者
那个地址乘以2嘛,然后间接寻址,这样就是两个字节了,可以读00H到7FH的所有空间

使用特权

评论回复
8
LWB1986| | 2010-3-24 16:17 | 只看该作者
哎,学了单片机的基本知识,对这提问没有什么见解,就来帮你们顶一下!

使用特权

评论回复
9
winsunhy| | 2010-3-24 21:53 | 只看该作者
这个地址应该是与单片机内部存储器的地址是无关的。不知道lz明白功能码01,02里地址的意思没?如果理解了,这个应该和那个一样。

使用特权

评论回复
10
winsunhy| | 2010-3-24 22:01 | 只看该作者
那些地址是人为定义的,比如下位机有10个LED,我把它编上号,如00-09,这里的00-09就可以理解为MODBUS里的地址。例如,上位机要想读取下位机第3个LED的状态,就可以向下发送02地址。下位机看到02地址就知道上位机要读取的是第3个LED的状态。

使用特权

评论回复
11
qcmc|  楼主 | 2010-3-26 09:10 | 只看该作者
比如说,我的一个变量在单片机存储器内的0x30地址里,上位机怎么找到这个地址读取出来呢?

使用特权

评论回复
12
5880527| | 2010-3-26 09:35 | 只看该作者
10楼的做法可以解决楼主的问题,但个人认为最好还是用单片机实际地址的好,以便通用性好些。

使用特权

评论回复
13
qcmc|  楼主 | 2010-3-26 12:00 | 只看该作者
举个例子吧

读取单片机首地址40H的内容,为什么发送消息帧寄存器地址的高地位是00H和00H

使用特权

评论回复
14
qcmc|  楼主 | 2010-3-26 12:05 | 只看该作者



读取单片机首地址40H的内容,为什么发送消息帧寄存器地址的高地位是00H和00H

使用特权

评论回复
15
5880527| | 2010-3-26 12:34 | 只看该作者
哎,你随便从哪里给它抽取两字节的数字给它发送回去,触摸屏才不会知道呢。你这个就是10楼的做法,骗上面触摸屏

使用特权

评论回复
16
qcmc|  楼主 | 2010-3-26 14:22 | 只看该作者
那触摸屏要读取采集到的压力值,我总不能把温度值给它发送出去吧,呵呵

现在触摸屏要读单片机40H,41H里面的值,发送消息帧写个 00H,00H,算个什么意思?

使用特权

评论回复
17
5880527| | 2010-3-26 14:34 | 只看该作者
本帖最后由 5880527 于 2010-3-26 14:35 编辑

那人当初设计屏幕界面时屏幕上的温度显示单元地址弄成了0000H,它当然要给你发一个这样的地址过来呀,单片机上温度放在40H,41H,所以当然就要把放在40H,41H的数据发送给触摸屏了。就跟我前面说的,屏幕和单片机地址没有做成按顺序一一对应,不太好。很简单的地址关系呀,要不楼主说的是另外回事

使用特权

评论回复
18
qcmc|  楼主 | 2010-3-26 14:41 | 只看该作者
这个0000H是温度显示单元的地址吗?看了一些例子,好像不是的

使用特权

评论回复
19
5880527| | 2010-3-26 14:45 | 只看该作者
很简单,你去下载一个支持在线模拟功能的触摸屏编辑软件,编一个最简单的界面来在线模拟一下就清楚了

使用特权

评论回复
20
qcmc|  楼主 | 2010-3-26 16:51 | 只看该作者
0000H这个地址是协议定义的地址,不是单片机内部的存储数据的地址,他们之间有个对应关系

使用特权

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

本版积分规则

10

主题

72

帖子

0

粉丝