西门子S7-200 PLC通过霜蝉远程串口实现数据监控方案

[复制链接]
339|6
 楼主 | 2018-9-10 17:37 | 显示全部楼层 |阅读模式
西门子S7-200PLC通过霜蝉远程串口实现数据监控方案
项目中采用PLCS7-200和霜蝉远程串口,实现PLC与组态王之间的Modbus-RTU协议通信。
S7-200CPU上的通信口port0 采用指令库支持Modbus-RTU从站模式(注:指令库可在西门子提供的相关网站下载)。
一、项目中用到的产品
1、  PLC: S7-200CN
2、  DTU: SC-GL424-BP(远程串口终端,可实现远程访问PLC的串口数据,即可下载程序也可监控梯形图)
注:西门子PLC S7-200 还可以用PPI和MPI协议通过霜蝉远程串口与组态王进行通信,通信步骤与相对于modbus更简单,在这里就不做例程了。

二、编写PLC通信示例工程
图中程序参数解释:
Mode:启动/停止 modbus1=on0=off
Addrmodbus从站地址,取值范围0-247
Baud:波特率,可选1200240048009600192003840057600115200
Parity:奇偶校验位,0=无校验、1=奇校验、2=偶校验;
Delay:延时,附加字符间延时,缺省为0
MaxIQ:最大IO点数,一般可设置为128
MaxAI:最大AI通道数,视PLC的暗送秋波情况而定;
Maxhold:最大保持寄存器区;
Holdstart:保持寄存器起始区,以&VBx指定;
Deno(网络1):初始化完成标志,成功初始化后置1
Error(网络1):初始化错误代码,0为无错误码;
Done(网络2):通信时置1,无modbus通信时为0
Error(网络2):通信错误代码,0为无错误;
HoldstartMaxHold规定的时保持寄存器的区域,保持寄存器区域的范围一定不能和程序存储区的范围冲突,否者无法通信。上图中指订的保持寄存器起始区的值为1000,也可以不指定1000,只要设置好程序存储的区域就能成功通信,程序存储区的设定如下图所示:
Modbus库地址分配,点击“建立地址”自动分配就可以了。
三、控制程序编写
编写好通信程序,分配好存储区之后便可作为Modbus从站和主站进行通信了。为了测试通信情况,这里我们编写了一些额外的控制程序,如下图所示:
  
PLC各区域对应的Modbus地址分配:
  
地址范围
地址功能描述
功能码
00001-09999
数字量输出(线圈,可读可写)
0x01
10001-19999
数字量输入(触点,只可读)
0x02
30001-39999
输入数据寄存器(通常为模拟量,只可读)
0x04
40001-49999
数据保持寄存器(可读可写)
0x03
四、配置远程串口参数
配置远程串口终端与S7-200 PLC Modbus通信参数相同。
五、运行组态王Modbus-RTU
打开已经建立好的工程Modbus-RTU监控
总结:
1、  通过远程串口实现PLC远程数据监控,实现起来比较简单,对开发者来说和本地串口编程没有区别,远程串口相对于其它方式,不需要路由器公网IP,更不需要路由器端口映射,如过通过两台远程串口终端,一台串口终端接PC一台串口终端接PLC电脑不需要上网都可以实现远程数据监控下载软件等。
2、  通过两台串口终端还可以实现两台PLC或PLC与触摸屏之间的通信,两台串口组成一个虚拟的透明传输通道。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
| 2018-9-12 09:59 | 显示全部楼层
看到这篇文章,深受启发,原来PLC还可以这么玩。
 楼主 | 2018-9-13 09:41 | 显示全部楼层
scclg 发表于 2018-9-12 09:59
看到这篇文章,深受启发,原来PLC还可以这么玩。 ...

这种方式 开发远程监控项目简单多了
| 2018-9-15 19:53 | 显示全部楼层
谢谢楼主分享
 楼主 | 2018-9-17 20:06 | 显示全部楼层

谢谢支持
| 2018-9-20 23:14 | 显示全部楼层
DTU方案,早就已经有了,淘宝上一搜一大把。
 楼主 | 2018-9-25 09:21 | 显示全部楼层
nuaabob 发表于 2018-9-20 23:14
DTU方案,早就已经有了,淘宝上一搜一大把。

采用霜蝉远程串口的方式,不需要公网IP,任何一台电脑都可以实现远程数据采集控制
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

关闭

热门推荐上一条 /5 下一条

快速回复 返回顶部 返回列表