当前有很大一部分物联网软件平台有这样一个需求,需要远程对接很多个现场设备,这些现场设备非常分散------如智慧农业、智慧灌区等系统。这样的现场有很多都是通过PLC控制本地的一些设备,其中使用的比较多的PLC时西门子S7-1200 Smart。
本文就针对西门子S7-1200 Smart这个使用广泛的PLC为目标,仅仅使用一个4G/5G DTU就可以低成本的接入云端。云端配置IOT-Tree Server运行实例,并且有公网IP地址或由移动网络公司提供的虚拟VPN内网,能够被4G/5G DTU连接接入。
如果你对IOT-Tree Server不了解,可以看如下内容:
IOT-Tree Server是个开源物联网软件,可以作为组态软件成为自动化系统的上位软件。她提供了各种设备接入、数据组织管理、数据分享使用、消息流控制逻辑和人机交互多个方面的功能。当然,你也可以仅仅使用这个软件作为数据采集终端或边缘计算的软件。
这是IOT-Tree Server相关的系列文章,你可以参考其他文章更多了解IOT-Tree能给你带来的好处:
使用IOT-Tree Server通过MC协议连接三菱Q系列PLC
使用IOT-Tree Server通过FINS协议连接欧姆龙CP2E-N系列PLC
系列文章还包含IOT-Tree完成一个具体项目的过程,非常详细,如下:
1 DTU的选择和连接电路
这里的DTU都是对上支持4G/5G连接云端系统,对下通过RS485接口直接连接西门子PLC的PPI接口(9针含RS485 A B针脚)。
4G/5G DTU网络上购买成本很低,但有个细节要注意------西门子PLC S7-1200 Smart上面的PPI接口针脚定义有点特殊,除非你自己能制作转接头,建议一定要购买专用的转接头。

1.1 连接方式

除了供电,PLC只需要使用这个电缆和DTU连接即可------整个电路没有比这个更简单和更低成本的了。
2 通信原理
DTU到云端的通信建立过程如下:
1,云端建立Tcp Server并且监听某个端口(如10000),等待DTU的接入
2,每个DTU内部都配置了一个唯一ID号,通电启动之后,本地建立Tcp Client,然后向云端主动发起连接请求,连接成功建立之后,DTU Client端立刻发送自己的ID号为云端,告诉云端自己的身份。
3,云端软件获取这个ID之后,进行身份验证。如果验证失败则立刻断开连接,如果成功则保持链接。进入正常运行状态。
4,由云端程序定时运行PPI驱动程序,不断地向DTU端发起读取数据请求。下面是一次请求到应答过程:
- 4.1 云端向DTU发出PPI数据读取数据包
- 4.2 DTU手动请求数据包之后,通过RS485电缆透明转发请求数据发送给西门子PLC S7-1200 Smart
- 4.3 PLC根据请求数据包,输出应答数据,并通过RS485电缆发送到DTU
- 4.4 DTU通过4G/5G网络向云端透明转发请求到云端
- 4.5 云端程序接收到应答数据,更新内部对应的数据标签
3 在云端使用IOT-Tree Server具体配置过程
假设你已经在满足条件的云端安装配置了IOT-Tree Server运行实例。访问http://host:port/admin/进入你的项目管理主界面。接下来,你就可以配置现场DTU的接入了。
3.1 建立Tcp Server Connector
参考下图,增加Connector Provider - TcpServer

通过设定TcpServer端口、链接标识判定方式等。如此,IOT-Server就成为了一个接入服务器。
启动项目之后,TcpServer会接受到远端每个监测点的tcp链接。由此,每个现场接入都会有个对应的链接Connector。
参考下图,在tcpserver下面添加Connector。其中,conn必须设定对应DTU的接入id。

3.2 为每个链接Connector添加通道Channel和对应的驱动
参考下图,在Browser树中添加通道(含选择设备驱动),我们设备在此例子中使用Siemens PPI协议的驱动。

建立通道Channel和链接Connector之间的关联

3.3 选择添加设备,运行查看接入数据
在通道下面鼠标右键,选择添加设备。如下图:

选择New Device,在弹出窗口中填写设备信息:
Name=plc2
其他都不需要填写了,点击OK之后,通道下面就会出现对应设备节点。点击此节点,在右边主内容区域点击Properties标签,在属性Device Address行修改值为2.然后点击右上角的Apply按钮保存。如下图:

3.4 新增设备数据项(Tag)
S7-200内部数据通过不同的存储区方式进行,如输出映像寄存器区Q、输入映像寄存器I、变量存储区V等等。IOT-Tree Server对应的PPI驱动也兼容此PLC数据寻址方式。
在主内容区域点击[Tags]标签,下面的内容就是plc2设备对应的数据项列表界面。我们可以点击上方的+Add Tag按钮进行添加。
在弹出窗口中,我们填写如下内容:
Name=q0_1
Title=Q0.1
Date type=bool
R/W=Read/Write
Address=Q0.1
编辑窗口如图所示:

点击OK之后,就可以看到列表中新增了这一项。
用同样方法,你可以根据自己设备读取的需要,添加其他数据标签(含对应的PLC内部地址)。

其中,关键内容是每个Tag的Address内容,这个写法兼容西门子的PLC编程软件。另外一个对应的是值类型(Value type),可以看出输入的Address可能会限定Value type。在编写时,可以点击Address右边的"Check Address"按钮,就会自动帮你修改。
4 运行效果
在点击项目配置上方的绿色启动项目按钮------云端会启动Tcp Server并且监听接入。确保现场DTU和PLC设备都通电运行正常,链接正常之后,你就可以看到读取数据成功。此时,你可以点击选择通电,在属性中修改读取时间间隔参数:

5 更进一步
你可以在自己的项目中,新增人机交互节点(HMI),并且通过在线编辑功能进行操作界面的设计:

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

你还可以使用消息流,对接收的数据进行数据库记录保存。

你可以参考: