关于西门子S7-200的Modbus通信指令问题 点击:1006 | 回复:7



夜猫353

    
  • 精华:0帖
  • 求助:17帖
  • 帖子:34帖 | 151回
  • 年度积分:89
  • 历史总积分:21374
  • 注册:2012年3月10日
发表于:2012-06-19 10:08:20
楼主
Modbus指令关于Modbus指令问题,请教一下假如我要和一变频器通信,变频器的寄存器地址是2000H,在这个指令的Addr填多少啊?怎么计算的啊?还有就是不理解那么功能码问题,比如:01、02、05、15、这些功能码,在三菱里面我知道怎么输入,但是在这个指令上没有功能码的输入端啊,我不知道在哪儿填,能不能请高手解释一下,谢谢


楼主最近还看过



东山脚下-骑士军团

  • 精华:0帖
  • 求助:13帖
  • 帖子:28帖 | 1235回
  • 年度积分:0
  • 历史总积分:4415
  • 注册:2012年4月06日
发表于:2012-06-19 11:22:48
1楼

这个看看手册上有没有相关的资料

ye_w

  • 精华:23帖
  • 求助:1帖
  • 帖子:84帖 | 5217回
  • 年度积分:0
  • 历史总积分:46739
  • 注册:2002年4月17日
发表于:2012-06-19 11:46:37
2楼
有关变频器的地址对应关系,应该直接找变频器厂家。

EBN战略军团-棋影

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-06-19 14:17:48
3楼

Slave:从站地址
RW:读写标志,0为读;1为写
Addr:要读写的寄存器起始地址
Count:要读写的寄存器个数
DataPtr:缓冲区地址指针
变频器地址是2000H,换算为10进制就是8192,然后加上40001,那就是48193!
怎么说呢
40001、40002等是MODBUS的寄存器编号,而对应在BUS上实际地址就是0000H、0001H
所以在已知BUS实际地址的情况下,要换算这个实际地址对应的MODBUS编号的话
就应该把这个实际地址换算为10进制,然后用这个10进制加上40001,
当然这里是针对保持寄存器而言的!对于只读寄存器,就是加30001了
对于线圈就是加00001,对于开关量输入就是加上10001
另外一个,功能码的说明
如果你这里是写标志的话,并且你写的个数是1,那么实际你用串口监视的话,功能码不是05就是06,这个取决于你的寄存器类型是0x还是4x;如果写的个数超过1个,那么功能码就是15或者16,取决于寄存器类型是0x还是4x

如果是读标志的话 那么根据寄存器类型 就可以区分是01 02 03 04这几个功能码了
啰嗦说这么多 希望能帮到你!

夜猫353

  • 精华:0帖
  • 求助:18帖
  • 帖子:38帖 | 157回
  • 年度积分:9
  • 历史总积分:21452
  • 注册:2012年3月10日
发表于:2012-06-19 15:48:09
4楼
回复内容:
对:EBN战略军团-棋影关于Slave:从站地址RW:读写标志,0为读;1为写Addr:要读写的寄存器起始地址Count:要读写的寄存器个数DataPtr:缓冲区地址指针变频器地址是2000H,换算为10进制就是8192,然后加上40001,那就是48193!怎么说呢40001、40002等是MODBUS的寄存器编号,而对应在BUS上实际地址就是0000H、0001H所以在已知BUS实际地址的情况下,要换算这个实际地址对应的MODBUS编号的话就应该把这个实际地址换算为10进制,然后用这个10进制加上40001,当然这里是针对保持寄存器而言的!对于只读寄存器,就是加30001了对于线圈就是加00001,对于开关量输入就是加上10001另外一个,功能码的说明如果你这里是写标志的话,并且你写的个数是1,那么实际你用串口监视的话,功能码不是05就是06,这个取决于你的寄存器类型是0x还是4x;如果写的个数超过1个,那么功能码就是15或者16,取决于寄存器类型是0x还是4x如果是读标志的话 那么根据寄存器类型 就可以区分是01 02 03 04这几个功能码了啰嗦说这么多 希望能帮到你!内容的回复:

非常感谢你的回答,还有一点小问题,假如跟变频器通信,用RTU通信,字符是:02 06 20 00 00 01 CRC(效验),在三菱里面我知道怎么写,在这个指令上怎么写啊?02变频器站号,06写命令,
20 00 ,表示从站寄存器地址
00 01表示正转、请问一下,在这个指令上该怎么填啊?是不是在VW0填02,VW2填06,VW4填20,VW6填00,VW8填01,VW10里面填CRC效验,是不是这样啊?如果是这样的格式的话,我感觉这样的格式会跟上面指令格式有冲突,有重复的数据啊,如果理解错了,请帮我指正一下,谢谢

花木兰-骑士军团

  • 精华:1帖
  • 求助:17帖
  • 帖子:58帖 | 2123回
  • 年度积分:0
  • 历史总积分:3884
  • 注册:2012年2月16日
发表于:2012-06-19 16:19:46
5楼

看下手册,我也不清楚

 

 

EBN战略军团-棋影

  • [版主]
  • 精华:5帖
  • 求助:23帖
  • 帖子:748帖 | 5676回
  • 年度积分:53
  • 历史总积分:88538
  • 注册:2004年5月28日
发表于:2012-06-19 16:40:44
6楼

如上图所示!就这么填,你看了应该明白了!

统一

  • 精华:1帖
  • 求助:1帖
  • 帖子:41帖 | 2186回
  • 年度积分:0
  • 历史总积分:2880
  • 注册:2012年3月02日
发表于:2012-06-19 17:09:32
7楼

不错,学习了

 

 

 


热门招聘
相关主题

官方公众号

智造工程师