使用IOT-Tree Server连接西门子PLC S7-300/1200/1500

IOT-Tree Server是个开源物联网软件,可以作为组态软件成为自动化系统的上位软件。她提供了接入、数据组织管理、控制逻辑和人机交互多个方面的功能。从版本0.99开始,IOT-Tree Server新增了西门子以太网驱动,能够通过以太网的方式直接访问S7-300/1200/1500.

S7-200 smart好像也支持S7协议,估计也能直接支持(目前没有测试)。

对于更早的S7-200,建议使用RS485接口PPI协议直接访问,具体可以查看:

使用IOT-Tree Server通过PPI(RS485)连接西门子PLC S7-200

如果你对IOT-Tree Server还不熟悉可以参考如下文档:

使用开源IOT-Tree Server进行工业现场自动化控制

使用IOT-Tree Server的OPC DA Client连接组态王提取数据到云端

在此假设你对西门子PLC S7系列已经熟悉(当然用相关PLC做过一些项目就更好了)。

1 设备和环境准备

本例子以S7-1500作为测试PLC,你如果没有相关设备,可以安装西门子的仿真环境,配合NetToPLCsim软件模拟。

 具体请参考网上的相关文章.

1.1 PLC端准备

通过TIA Portal对PLC进行本地控制编程,其中PLC IP地址为:192.168.18.8,端口:102

给PLC通电,下载程序启动。

使用KEPServerEx6进行连接测试,确保PLC外部连接正常,我配置的点位信息如下:

 点击Quick Client按钮,弹出窗口查看对应节点下的数据项,确保全部都是"Good"

 

1.2 PC端IOT-Tree Server安装配置

本例子使用普通PC Windows环境安装部署IOT-Tree Server。如果你还没有安装过IOT-Tree Server,可以参考:https://github.com/bambooww/iot-tree/blob/main/web/doc/cn/doc/quick_start.mdhttps://github.com/bambooww/iot-tree/blob/main/web/doc/cn/doc/quick_start.md

 以上所有准备完成之后,接下来我们就可以使用IOT-Tree通过相关驱动对接了。

 2 IOT-Tree 端配置过程

在IOT-Tree中,新建项目和在现有项目中新增接入和设备差别不大。我本地已经建立了自动化监控项目,已经接入并配置了一些的设备。点击进入项目配置界面,我的项目内容如下:

 

2.1 新增TcpClient Connector和通道

点击左上角Connectors,在菜单中选择Tcp Client,然后在弹出的窗口中,填写如下内容:

 其中,主要内容就是PLC的IP地址和端口,点击Ok按钮,就可以看到左边新增了一个TcpClient接入。

接着我们在项目根节点鼠标右键,选择New Channel,在弹出窗口中,填写如下内容:

 

 其中,Driver点击选择Siemens TCP/IP Ethernet。这个驱动对应与西门子PLC相关协议。点击OK完成通道的添加。此时,你可以看到s7eth通道左边和其他通道不一样,左边并没有连接正方形框。这是因为基于TCP/IP的PLC每个设备都会需要自己的Tcp连接,所以和以总线方式的通道不同,此驱动下面的接入关联必须通过设备进行。因此,我们在通道下面先增加PLC设备。

 2.2 新增PLC设备并关联TcpClient

在通道s7eth节点上鼠标右键,选择New Device,在弹出窗口中填写设备信息:

Name=plc3
Model=S7-1500

 

 

其他都不需要填写了,点击OK之后,通道下面就会出现对应设备节点。此时,你会发现设备左边有个圆形连接框。

接着,鼠标点击接入c18_8的右边的小正方形不松开,拖拉线段到设备plc3左边的小圆形上方松开,系统就会建立接入到设备之间的关联,如下图:

 

从中我们可以看出,如果左边接入使用不同的以太网接入方式,也可以和相关设备进行对接。一般情况下,plc端实现的是Tcp Server,只能等待Client的接入。我们可以使用中间代理节点,代理节点可以是个client主动连接IOT-Tree Server,并在另一端使用client方式连接PLC,这样我们就可以更灵活的支持复杂的网络环境;可以看出接入和数据组织的分离,使得IOT-Tree能够更加优雅的应对各种设备和数据的接入。

点击plc3节点,在右边主内容区域点击Properties标签,我们可以修改S7 Communication Parameters相关机架和槽位参数。如下图:

 

 2.3 新增设备数据项(Tag)

S7-1500内部数据通过不同的存储区方式进行,如输出映像寄存器区Q、输入映像寄存器I、DB存储区等等。IOT-Tree Server对应的驱动也兼容此PLC数据寻址方式。

在主内容区域点击[Tags]标签,下面的内容就是plc3设备对应的数据项列表界面。我们可以点击上方的+Add Tag按钮进行添加。

在弹出窗口中,我们填写如下内容:

Name=d1
Title=d1
Date type=uint32
R/W=Read/Write
Address=DB200,DBD0

编辑窗口如图所示:

  点击OK之后,就可以看到列表中新增了这一项。

用同样方法,我们新增如下内容:

Name=d2
Title=d2
Date type=uint16
R/W=Read/Write
Address=DB200.DBW1
Name=d3
Title=d3
Date type=uint16
R/W=Read/Write
Address=DB200.W3
Name=i1_0
Title=I1.0
Date type=bool
R/W=Read Only
Address=I1.0
Name=i1_1
Title=I1.1
Date type=bool
R/W=Read/Write
Address=I1.1
Name=q0_1
Title=Q0.1
Data Type=bool
R/W=Read/Write
Address=QX0.1
Name=q0_3
Title=q0_3
Data Type=bool
R/W=Read/Write
Address=Q0.3
Name=qb2
Title=QB2
Data Type=uint8
R/W=Read/Write
Address=QB2
Name=x2_6
Title=x2_6
Data Type=bool
R/W=Read/Write
Address=DB200.X2.6

最终,我们在设备plc3下面,完成了如下数据项列表:

 

其中,关键内容是每个Tag的Address内容,这个写法兼容西门子的PLC编程软件。另外一个对应的是值类型(Value type),可以看出输入的Address可能会限定Value type。在编写时,可以点击Address右边的“Check Address"按钮,就会自动帮你修改。

我们配置的这些Tag会在IOT-Tree Server的这个项目中被使用,很明显,如果你想让上位系统和PLC内部的程序协调配合做控制,那么通过一些公共的变量定义成Tag进行互相写入读取即可。

仔细看这些数据项的定义,可以发现与OPC软件KEPServerEx很相似。实时上,IOT-Tree Server确实可以作为一个OPC软件,其不同之处就是多了更多的功能,如在线UI绘制、脚本任务运行、基于HTTP的JSON格式输出,以更方便与物联网应用。

接下来,我们就可以运行查看效果了。

3 运行效果

在确保PLC已经通电运行,点击项目配置上方的绿色启动项目按钮。

可以看到,所有的数据点都正常运行了。此时,我们可以配合KEPServerEx软件,进行写入数据并交叉查看数据变化。

如对于q0_1这个点,你可以在Write列输入1,点击右边写入按钮,可以发现PLC的Q0.1端口有输出(指示灯也同时变亮,前提是此输出没有受到你的PLC程序控制);同时查看Quick Client,可以发现q0_1的值也跟着变化了,反过来也一样。如下图:

 

4 更进一步

你可以在此项目中,新增人机交互节点(HMI),并且通过在线编辑功能进行操作界面的设计。这部分内容请参考上面推荐的连接。如,在我的项目中,在,我实现了如下监控画面:

 

 

或者,你也可以把项目中的组织节点直接输出http json格式的数据,方便其他系统调用实时数据。如你在plc3节点上鼠标右键,点击Access,在弹出窗口中可以查看输出的json格式数据,非常方便其他系统调用:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值