您现在所在的是:

西门子SIEMENS

回帖:14个,阅读:8034 [上一页] [1] [2] [下一页]
482
YanlexqEMFYl
文章数:7
年度积分:50
历史总积分:482
注册时间:2016/9/17
发站内信
发表于:2016/9/17 22:41:14
#0楼
我在MicroWin中创建了Modubus_Init和Modbus_Slave模块,设置PLC为从站,并且设置Q0.0为1。程序下载到PLC中能够将Q0.0置为1。然后断开网线,连接PLC和上位机的COM口,我想知道怎样使上位机和PLC通讯,是要发送指令吗?这个指令和其他串口设备的指令一样吗?我发了几个指令都没有返回。望各位大侠不吝赐教,谢谢!
28116
guanyumou 版主
文章数:10561
年度积分:94
历史总积分:28116
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2016/9/17 23:00:07
#1楼
你的是S7-200还是Smart 200?是要走MODBUS RTU协议吗?这个协议是基于RS232、RS485的一种串口通信协议,有关MODBUS RTU的报文格式百度上很多的!
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
28116
guanyumou 版主
文章数:10561
年度积分:94
历史总积分:28116
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2016/9/17 23:06:49
#2楼
如果是想通过串口调试助手给PLC发命令的话,假设PLC从站地址为1的情况下,比如要对Q0.0进行置位的话,可以发如下命令:
01 0F 00 00 00 08 01 01 3F 55
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
28116
guanyumou 版主
文章数:10561
年度积分:94
历史总积分:28116
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2016/9/17 23:24:35
#3楼
如果是想通过串口调试助手给PLC发命令的话,假设PLC从站地址为1的情况下,比如要对Q0.0进行置位的话,可以发如下命令:
01 0F 00 00 00 08 01 01 3F 55

其中:
01:从站地址,指的就是PLC站地址
0F:功能码,用来写多路位变量的功能码
00:预写的寄存器起始地址高8位
00:预写的寄存器起始地址低8位
00:预写的寄存器个数的高8位
08:预写的寄存器个数的低8位
01:预写寄存器数据的字节计数,8个位变量组成一个字节,所以为01
01:预写的寄存器数据内容,最低位为1,即就是给Q0.0置位
3F:CRC校验的低8位
55:CRC校验的高8位
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
28116
guanyumou 版主
文章数:10561
年度积分:94
历史总积分:28116
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2016/9/17 23:28:48
#4楼
如果是想通过串口调试助手给PLC发命令的话,假设PLC从站地址为1的情况下,比如要对Q0.0进行置位的话,可以发如下命令:
01 0F 00 00 00 08 01 01 3F 55

其中:
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校验
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
28116
guanyumou 版主
文章数:10561
年度积分:94
历史总积分:28116
注册时间:2008/7/13
发站内信
2018论坛优秀版主
2018春节活动(三)
2017论坛优秀版主
2017国庆活动(二)
2017春节活动(三)
发表于:2016/9/17 23:30:16
#5楼
如果是想通过串口调试助手给PLC发命令的话,假设PLC从站地址为1的情况下,比如要对Q0.0进行置位的话,可以发如下命令:
01 0F 00 00 00 08 01 01 3F 55

其中:
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的整倍数!
基于各种组态软件\触摸屏\PLC\单片机\变频器Modbus TCP\RTU\ASCII通信编程服务,需要请直接
联系!腾讯扣扣149034219
28240
cfg168
文章数:17073
年度积分:54
历史总积分:28240
注册时间:2012/11/28
发站内信
2018论坛解答高手
2015论坛贡献奖
发表于:2016/9/18 0:21:43
#6楼
西门子S7-200的PLC的9针串口是RS485类型的通讯端口,而一般电脑主机里面主板提供的9针串口是RS232类型的通讯端口,两者不能直接相连,需要购买端口转换器进行转换。
482
YanlexqEMFYl
文章数:7
年度积分:50
历史总积分:482
注册时间:2016/9/17
发站内信
发表于:2016/9/18 10:26:07
#7楼
回复 #5楼 guanyumou
谢谢群主的耐心解答,令我受益匪浅。表情
4859
528工控科技
文章数:1574
年度积分:50
历史总积分:4859
注册时间:2014/1/3
发站内信
工控人谈电商
发表于:2016/9/18 10:44:43
#8楼
用05码不是更好!
gk528.com
5536
qinhya
文章数:2022
年度积分:50
历史总积分:5536
注册时间:2012/4/7
发站内信
发表于:2016/9/18 11:12:56
#9楼
版主讲的好详细!
天道酬勤!

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

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

62.4004