您现在所在的是:

西门子SIEMENS

回帖:14个,阅读:2205 [上一页] [1] [2] [下一页]
494
2829065211
文章数:19
年度积分:50
历史总积分:494
注册时间:2018/4/2
发站内信
发表于:2018/4/12 15:50:54
#0楼
用的西门子PLC200SMART,用的ModBus从站协议,
494
2829065211
文章数:19
年度积分:50
历史总积分:494
注册时间:2018/4/2
发站内信
发表于:2018/4/12 15:51:51
#1楼
用串口助手发送01 0F 00 00 00 08 01 01 3F 55可以让Q0.0置位,但是发什么指令能让Q1.0置位啊!!!急急急!!!


其中:
01:从站地址,指的就是PLC站地址
0F:功能码,用来写多路位变量的功能码
00:预写的寄存器起始地址高8位
00:预写的寄存器起始地址低8位
00:预写的寄存器个数的高8位
08:预写的寄存器个数的低8位
01:预写寄存器数据的字节计数,8个位变量组成一个字节,所以为01
01:预写的寄存器数据内容,最低位为1,即就是给Q0.0置位
3F:CRC校验的低8位
55:CRC校验的高8位

上述,如果只是对一个Q区的位进行置位、复位操作的话,也可以用05功能码,命令如下:
01 05 00 00 FF 00 8C 3A

解释如下:
01:地址码
05:功能码
00 00:寄存器地址
FF:对位变量置位的数据内容,如果复位的话则为00
00:位变量的原状态
8C 3A:CRC校验

多余说一句:

如果要对多路Q区执行写操作的话,则寄存器起始地址必须为Q0.0、Q1.0、Q2.0等开始,寄存器个数必须是8的整倍数!
5641
121111115
文章数:1421
年度积分:85
历史总积分:5641
注册时间:2015/3/16
发站内信
2018论坛分享达人
发表于:2018/4/12 16:22:03
#2楼
你是在求助还是在科普知识啊,哈哈哈。
解释如下:
01:地址码
05:功能码
00 00:寄存器地址
FF:对位变量置位的数据内容,如果复位的话则为00(这个地方的数据可以单独操作每一个输出点,01,02,04,08,10,20,40,80对应8个输出点)
00:位变量的原状态(这个地方任然是数据位,不是原状态,讲道理我感觉你这个FF和00写反了,不过你已经很不错了,加油)
8C 3A:CRC校验

多余说一句:

如果要对多路Q区执行写操作的话,则寄存器起始地址必须为Q0.0、Q1.0、Q2.0等开始,寄存器个数必须是8的整倍数!
494
2829065211
文章数:19
年度积分:50
历史总积分:494
注册时间:2018/4/2
发站内信
发表于:2018/4/12 16:38:18
#3楼
回复 #2楼 121111115
不是,可能我没有给你说清楚,Q0的所有位我都弄好了,就是到了Q1.0就不行了,可能我的地址码寄存器不正确,但是又不知道问题出在哪儿
5641
121111115
文章数:1421
年度积分:85
历史总积分:5641
注册时间:2015/3/16
发站内信
2018论坛分享达人
发表于:2018/4/12 16:54:45
#4楼
以下是引用28290652112018/4/12 16:38:18的发言:
不是,可能我没有给你说清楚,Q0的所有位我都弄好了,就是到了Q1.0就不行了,可能我的地址码寄存器不正确,但是又不知道问题出在哪儿
把寄存器地址换0001试试,注意校验算对了
[此贴子已经被作者于2018/4/12 16:55:46编辑过]
5641
121111115
文章数:1421
年度积分:85
历史总积分:5641
注册时间:2015/3/16
发站内信
2018论坛分享达人
发表于:2018/4/12 16:58:25
#5楼
以下是引用1211111152018/4/12 16:54:45的发言:
以下是引用28290652112018/4/12 16:38:18的发言:
不是,可能我没有给你说清楚,Q0的所有位我都弄好了,就是到了Q1.0就不行了,可能我的地址码寄存器不正确,但是又不知道问题出在哪儿
把寄存器地址换0001试试,注意校验算对了
[此贴子已经被作者于2018/4/12 16:55:46编辑过]
如果不行就把地址寄存器改回去,把FF00改成FFFF试试,注意校验别算错
494
2829065211
文章数:19
年度积分:50
历史总积分:494
注册时间:2018/4/2
发站内信
发表于:2018/4/12 17:04:47
#6楼
回复 #5楼 121111115
加Q聊吧,你的多少,我的648425145,论坛里面说不清清楚
1900
xiatianyun
文章数:277
年度积分:50
历史总积分:1900
注册时间:2002/6/5
发站内信
发表于:2018/4/12 17:39:20
#7楼
你要自己生成通讯数据吗?这个需要好好学学,不是简单了解就可以的。一般plc的modbus指令是对原生通讯数据的二次封装,用户只需要知道对什么地址数据进行什么操作就可以了,指令会自动转换为所需通讯数据。
如果你要实验,问题的关键还不是这些,而是如何生成检验码。
此帖发自手机工控论坛
1900
xiatianyun
文章数:277
年度积分:50
历史总积分:1900
注册时间:2002/6/5
发站内信
发表于:2018/4/12 17:46:14
#8楼
你要对DQ进行操作,dq在modbus rtu协议里不叫寄存器,应该是线圈。05号功能是对单个线圈操作,如果需要一次对多个操作应该是15号功能。
此帖发自手机工控论坛
28116
guanyumou 版主
文章数:10561
年度积分:94
历史总积分:28116
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2018/4/13 17:41:17
#9楼
以下是引用1211111152018/4/12 16:54:45的发言:
以下是引用28290652112018/4/12 16:38:18的发言:
不是,可能我没有给你说清楚,Q0的所有位我都弄好了,就是到了Q1.0就不行了,可能我的地址码寄存器不正确,但是又不知道问题出在哪儿
把寄存器地址换0001试试,注意校验算对了
[此贴子已经被作者于2018/4/12 16:55:46编辑过]
楼主问的是Q1.0的在Modbus RTU中的实际地址!
你回答的0001是Q0.1的在Modbus RTU中的实际地址
所以,回答错误!

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

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

62.4004