1 项目背景
最近做的工业控制项目,需要对整个工艺进行总体整合控制。现场已经有部分的环节已经有局部的控制系统。其中一个环节做过滤处理,现场有个PLC控制柜,使用西门子S7-200 Smart做本地过滤控制,型号为SR20。
整合控制项目除了要接入新安装的一些传感器数据,也需要此PLC接入,最终统一到中控计算机中。
2 PLC端接入调整
我们使用的方案是利用SR20的以太网接口,接入中控计算机网络。然后,修改里面的控制程序,增加Modbus Tcp Server的支持。然后,中控计算机使用Modbus Tcp Client进行连接。如下图,我们通过Step7-MicroWIN SMART软件导出SR20的原始程序,然后加入Modbus Tcp Server支持。下载程序之后,就支持对接了。
这里面有个坑:S7-200 Smart Modbus Tcp Server只允许一个Client和它建立连接,超过就会出问题。我在调试过程中,用了2个软件测试,老出问题把自己折腾的够呛。
3 使用IOT-Tree Server连接SR20
在我的IOT-Tree Server项目中,为连接SR20,建立一个Tcp Client连接。如下图所示。SR20的ip地址为192.168.1.10,端口502
我们新建了一个通道,并且使得此通道使用Modbus Tcp驱动,并且关联此通道到上面建立的Tcp Client 链接。如下图
我们在通道下面建立了一个sr20设备。设置设备地址1。接下来,我们需要在此设备下面添加Tag,每个tag都需要设定值类型和对应的地址。这些地址对应SR20的开关量或模拟量值。先在Step7-MicroWIN SMART查看现场S7-200 Smart CPU和扩展模块对应的点位地址,如下图:
可以看出,我们现场的cpu和一个扩展模块,以及对应的输入输出起始地址。然后我们查看西门子官方提供的“Modbus地址与CPU中数据区域地址对应关系”,如下表
功能码(十进制) | 功能描述 | RW | Addr | Count | CPU地址 |
---|---|---|---|---|---|
01 | 读数字量输出 位 | 0 | 00001-09999 | 1-1920 位 | Q0.0-1151.7 |
02 | 读数字量输入 位 | 0 | 10001-19999 | 1-1920 位 | I0.0-1151.7 |
03 | 读寄存器 字 | 0 | 40001-49999 400001-465535 | 1-120 字 | V区 |
04 | 读模拟量输入 字 | 0 | 30001-39999 | 1-120 字 | AIW0-AIW110 |
05 | 写数字量输出 单个位 | 1 | 00001-09999 | 1位 | Q0.0-Q1151.7 |
06 | 写寄存器 单个字 | 1 | 40001-49999 400001-465535 | 1个字 | V区 |
15 | 写数字量输出 多个位 | 1 | 00001-09999 | 1-1920 位 | Q0.0-1151.7 |
16 | 写寄存器 多个字 | 1 | 40001-49999 400001-465535 | 1-120 字 | V区 |
参考这个表的地址,我们添加了需要读取的对应点位数据:
为了方便使用,我们在通道filter下面针对此过滤环节,专门建立了一个监控画面——fui,这个画面可以被外面的UI使用。
最后,我们在项目根下面,建立了一个总工艺监控画面——mainui,这个画面引用了过滤系统的fui:
以上就是本次项目对接S7-200 smart SR20的过程,并且使之成为项目的一部分。感觉IOT-Tree Server还是很强大的。