您现在所在的是:

串口通信

回帖:7个,阅读:950 [上一页] [1] [下一页]
902
845090586
文章数:76
年度积分:50
历史总积分:902
注册时间:2015/6/10
发站内信
发表于:2016/1/19 17:35:05
#0楼
plc与感应加热电源modbus通讯寻址:协议里提到“MODBUS 协议的寄存器编号为从1 开始,在MODBUS 的PDU 中的,从0 开始寻址寄存器,因此编号1~16 的寄存器被寻址为0~15。在具有集成MODUBUS 功能的PLC如西门子、莫迪康等(或者具有集成MODBUS 通讯模块的PC机组态软件如“组态王”)中,工程师只需按照寄存器编号做相应的数据对应即可,由“编号”到PDU 中“地址”的转换操作已由集成的软件模块自动完成”
其中针对“寄存器编号做相应的数据对应”这一句
请问:比如读编号为17的寄存器,在modbus程序里的addr是直接写“17”的意思吗?是否还需要转换为“40017”或者别的什么?虚心求教!
13928
465010287 版主
文章数:6329
年度积分:397
历史总积分:13928
注册时间:2012/10/11
发站内信
发表于:2016/1/19 18:20:55
#1楼
是的。。。请参考MODBU的映射寄存器地址
902
845090586
文章数:76
年度积分:50
历史总积分:902
注册时间:2015/6/10
发站内信
发表于:2016/1/20 21:57:26
#2楼
回复 #1楼 465010287
你是指直接写“17”?
13928
465010287 版主
文章数:6329
年度积分:397
历史总积分:13928
注册时间:2012/10/11
发站内信
发表于:2016/1/21 18:13:46
#3楼
回复 #2楼 845090586
不是。。40017
27950
guanyumou 版主
文章数:10552
年度积分:1133
历史总积分:27950
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2016/1/24 17:26:40
#4楼
以下是引用8450905862016/1/19 17:35:05的发言:
plc与感应加热电源modbus通讯寻址:协议里提到“MODBUS 协议的寄存器编号为从1 开始,在MODBUS 的PDU 中的,从0 开始寻址寄存器,因此编号1~16 的寄存器被寻址为0~15。在具有集成MODUBUS 功能的PLC如西门子、莫迪康等(或者具有集成MODBUS 通讯模块的PC机组态软件如“组态王”)中,工程师只需按照寄存器编号做相应的数据对应即可,由“编号”到PDU 中“地址”的转换操作已由集成的软件模块自动完成”
其中针对“寄存器编号做相应的数据对应”这一句
请问:比如读编号为17的寄存器,在modbus程序里的addr是直接写“17”的意思吗?是否还需要转换为“40017”或者别的什么?虚心求教!
什么1,什么0
这么理解最好:
应该说MODBUS的地址是从16进制的0开始的,到16进制的FFFF结束;
然后MODBUS的地址的编号是从1开始的,比如离散输入寄存器就是从100001开始,到165536结束,而对应的实际地址则就是16#0000~16#FFFF;
再比如线圈就是从000001开始,到065536结束的,,而对应的实际地址则就是16#0000~16#FFFF;
其他模拟量输入、模拟量输出类似,
有人会问,那这几种寄存器的实际地址不就重复了么,别担心,它们还需要用功能码来区分的!

西门子200中填写的所谓寄存器地址,其实不是地址而是编号!

比如读编号为17的寄存器,在modbus程序里的addr是直接写“17”的意思吗?是否还需要转换为“40017”或者别的什么?虚心求教!

这个还要看是哪一类的寄存器呢,如果是具体的数字量输出,那么寄存器编号就是00017;如果是实际的数字量输入,那么编号就是10017,如果是实际的模拟量输入,那么编号就是300017,如果是实际的模拟量输出或者是内部可读写的寄存器,那么编号就是400017。
[此贴子已经被作者于2016/1/24 17:32:43编辑过]
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
27950
guanyumou 版主
文章数:10552
年度积分:1133
历史总积分:27950
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2016/1/24 17:31:46
#5楼
以下是引用8450905862016/1/19 17:35:05的发言:
plc与感应加热电源modbus通讯寻址:协议里提到“MODBUS 协议的寄存器编号为从1 开始,在MODBUS 的PDU 中的,从0 开始寻址寄存器,因此编号1~16 的寄存器被寻址为0~15。在具有集成MODUBUS 功能的PLC如西门子、莫迪康等(或者具有集成MODBUS 通讯模块的PC机组态软件如“组态王”)中,工程师只需按照寄存器编号做相应的数据对应即可,由“编号”到PDU 中“地址”的转换操作已由集成的软件模块自动完成”
其中针对“寄存器编号做相应的数据对应”这一句
请问:比如读编号为17的寄存器,在modbus程序里的addr是直接写“17”的意思吗?是否还需要转换为“40017”或者别的什么?虚心求教!
重要的事再说一遍:
100001~165536:离散输入寄存器的编号,对应读的功能码为2,其实际地址范围为16#0000~16#FFFF
000001~065536:数字量输出寄存器的编号,对应读的功能码为1,对应的写单路功能码为5,写多路功能码为15,其实际地址范围为16#0000~16#FFFF
300001~365536:只读寄存器(16位),对应读的功能码为4,其实际地址范围为16#0000~16#FFFF
400001~465536:读写寄存器(16位),对应读的功能码为3,对应的写单路功能码为6,写多路功能码为16,其实际地址范围为16#0000~16#FFFF
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
492
丶轻寒丿
文章数:30
年度积分:50
历史总积分:492
注册时间:2017/5/12
发站内信
发表于:2017/5/19 13:31:23
#6楼
回复 #5楼 guanyumou
受益匪浅!最近被这个问题困惑了很久很久了,感觉刚接触到modbus通讯的小白基本上都会搞不清楚地址怎么对应的,特别是要转换成16进制的情况到底转什么,和选用哪条指令也是很大的困惑
27950
guanyumou 版主
文章数:10552
年度积分:1133
历史总积分:27950
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2017/5/20 0:59:02
#7楼
以下是引用丶轻寒丿2017/5/19 13:31:23的发言:
受益匪浅!最近被这个问题困惑了很久很久了,感觉刚接触到modbus通讯的小白基本上都会搞不清楚地址怎么对应的,特别是要转换成16进制的情况到底转什么,和选用哪条指令也是很大的困惑
表情
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

62.4004