june2008 发表于 2009-4-17 15:10:27

问一下老师modbus中下位机的寄存器地址

各位老师,上位机在给下位机发指令要求数据的时候,modbus协议中的寄存器地址是怎么定义的,下位机中开关量的地址是一个虚拟的吗,就是定义一个表示开关量的位变量,这个变量就是那个地址,不过是由编译器临时分配的吧,那是不是我们上位机的协议中这个寄存器地址是怎么回事呢,他和下位机的这个是怎么连接的呢 。
请教一下,谢谢!

june2008 发表于 2009-4-17 15:53:47

自己顶一下啊,在线等。。。。

bpesun 发表于 2009-4-17 16:08:10

你的上位机需要实现一个modbus主协议栈。下位机是一个modbus的从协议栈,其上的寄存器地址都是在设计下位机的时候就定义好的,换句话说,你的下位机要有一个定义了各个寄存器的表格。
你的上位机根据这个表格,对寄存器进行读取或者写入操作。

june2008 发表于 2009-4-17 16:16:19

多谢楼上的解答,但这个地址不会是存在这个协议栈上的吧,可不可以就是另外的RAM上的地址甚至是FLASH上的一个地址空间,这个地址是我自己去在RAM上设置的吗,比方说有8个模拟量的输入地址从8000开始连续的8个到8007吗,然后在上位机中就可以直接调用这个地址了吗?

ba_wang_mao 发表于 2009-4-17 16:56:52

各位老师,上位机在给下位机发指令要求数据的时候,modbus协议中的寄存器地址是怎么定义的,下位机中开关量的地址是一个虚拟的吗,就是定义一个表示开关量的位变量,这个变量就是那个地址,不过是由编译器临时分配的吧,那是不是我们上位机的协议中这个寄存器地址是怎么回事呢,他和下位机的这个是怎么连接的呢 。
请教一下,谢谢!

  1、MODBUS协议中的寄存器就是你的单片机程序中的变量(只不过是分组的,DI是一组,DO是一组,AI是一组,AO是一组)
   例如:
     MODBUS 0X寄存器以“0”为打头,地址从1开始,你的单片机程序中定义一组变量DI。
      
      00001---> DI
      00002---> DI
     00003---> DI
   2、上位机同样是这个

  

june2008 发表于 2009-4-17 18:34:03

多谢了啊,困扰了我好久的一个问题了,谢谢指教。

june2008 发表于 2009-4-17 18:35:01

咱们论坛上高人和好人都很多,上了很多别的论坛了,就没见过咱们论坛的好人和高人多,哈哈!!鼓励一下再。

lovelywwei 发表于 2010-5-26 11:34:13

那确实

fish198868 发表于 2013-3-13 15:55:28

咱们论坛能人好多啊!!学习了!!
页: [1]
查看完整版本: 问一下老师modbus中下位机的寄存器地址