使用IOT-Tree管理整个生产线-实际案例实现分享

本文基于我近期完成的实际项目:一个高度自动化的生产线,组合20多个工艺环节。使用IOT-Tree做了每个环节PLC接入,使用消息流配置记录每个环节的产量和自动检测结果(存入MySQL数据库中)。然后,在IOT-Tree内部增加了一个Java WebAPP,实现用户需要的管理界面。

IOT-Tree Server是个开源物联网软件,可以作为组态软件成为自动化系统的上位软件。她提供了各种设备接入、数据组织管理、数据分享使用、消息流控制逻辑和人机交互多个方面的功能。当然,你也可以仅仅使用这个软件作为数据采集终端或边缘计算的软件。

这是IOT-Tree Server相关的系列文章,你可以参考其他文章更多了解IOT-Tree能给你带来的好处:

使用IOT-Tree Server通过MC协议连接三菱Q系列PLC

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

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

系列文章还包含IOT-Tree完成一个具体项目的过程,非常详细,如下:

机房自动化监控手把手分享给你 - 10 项目完成总结

1 生产线背景

这个高度自动化的生产线,每一环节都由一个PLC控制。每个环节plc控制都不相同,需要采集不同的设备运行状态数据。

一些环节内部还带有自动化检测功能,需要记录每个生产件的测量结果。

2 现场网络

所有的PLC通过一个3层交换机接入到现场的一台工控机。工控机运行IOT-Tree Server,通过每个plc的ip地址,并通过S7 Ethernet 协议访问PLC

3 IOT-Tree对产线的接入配置

IOT-Tree基础功能请参考其他文档。本文只介绍里面采集关键的部分。

3.1 如何准确记录每个生产件的测量数据

由于IOT-Tree访问plc是基于PLC的S7协议进行,一些数据的点位更新是毫秒级(甚至可能是几十上百毫秒),要保证采集数据的可靠,PLC应该提供如下数据点:

a,测量成功状态点:此状态点在一次测量结束之后改变状态------如计数加一

b,生产件id,测量数据点

注意:以上的采集逻辑要求测量成功之后,到下一次测量开始时间间隔至少是秒级单位。如果时间间隔在几十毫秒内,则需要使用另外的数据采集方式如plc主动推送数据方式

接下来,使用消息流实现这个记录功能

3.1.1 使用标签变化触发器触发开始记录

在消息流中,添加节点"接入与设备-标签变化触发器"。这个节点可以配置监听某个PLC的测量成功状态点的变化------一旦发现变化就会触发输出消息。

双击此标签,设置对话框如下:

选择项目中的测量成功状态标签。并且使能所有有效变化作为触发条件。通过这样的设置,只需要配置的标签值发生有效变化时,就能立刻输出消息(此时,相关测量值数据点就是本次测量的有效数据),可以在后续节点读取这些值。

3.1.2 读取测量值

选择"接入与设备-标签数据读取"节点,拖拉到上面节点的右边。此节点只需要有消息输入,就会触发读取内部的标签数据。

双击节点打开对话框,内部设置需要读取的标签,并且可以对每个标签值定义一个变量名称。

如上图:此节点有消息输入时,就会读取3个标签值,然后形成json格式输出。格式如下:

复制代码
{
   flowv:3.55,
   p1:0.51,
   p2:0.33
}

连接两个消息流,效果如图:

3.1.3 记录测量值

很明显,产线测量数据使用关系数据库比较好。关于消息流中的关系数据库支持,可以参考如下文章:

使用IOT-Tree消息流实现实时数据同步:标签实时数据--关系数据库表

本文假设已经设置好了关系数据库和数据表,如下图。

我们只需要把上面的JSON数据包转换成数据库写入记录即可。

鼠标单击选中"关系数据库1",在左边弹出的模块子节点列表中选择"JSON To Table",拖拽到绘图区。

双击此节点,填写json属性成员到关系数据表的列的对应关系:

设置映射关系完成之后,连接节点如下:

自动建立数据库表:"JSON To Table 1"这个节点映射关系同时包含了关系数据库表结构,因此此节点可以支持自动建表。打开此节点详细框,点击按钮"Create Table",就可以自动在配置的关系数据库中建立对应的数据库表结构。

通过如上配置,消息流运行之后就可以自动采集产线上的测量记录。

3.1.4 性能优化

上面虽然完成了整个测量记录过程,但里面有个问题。标签触发节点在标签数据变化时涉及标签的数据更新(速度可能很快),但"JSON To Table 1"涉及关系数据库写数据(每次写入时10毫秒级别)。这样的消息流运行延迟可能会影响设备底层驱动的运行。

因此,应该在"JSON To Table 1"前面设置一个消息内存队列,使得"JSON To Table 1"节点的运行在队列的消费端(等效于异步线程)。如下图:

3.2 使用InfluxDB存储产线运行数据

本部分请参考:使用IOT-Tree消息流InfluxDB模块节点实现标签数据的时序数据库存储

4 二次开发

有了关系数据库的测量记录和产线运行时序数据,就可以使用常规的web开发。

本项目使用Java WebApp进行开发,因为IOT-Tree内嵌tomcat。因此可以直接支持webapp部署,你可以开发自己的总体软件展示界面,并且还可以无缝的整合组态,消息流等功能。

在iot-tree安装目录/web/目录下,放置你的webapp程序(假设名称为app1),然后在config.xml文件中,增加一行配置即可:

5 最终效果

相关推荐
YCOSA202513 小时前
雨晨 Windows 11 IOT 企业版 LTSC 24H2 轻装 2合1 26100.8968
windows·物联网
乐鑫科技 Espressif13 小时前
用 AI 开发 Zephyr-IoT 应用
人工智能·物联网·esp32·乐鑫科技·zephyr
壮哥_icon14 小时前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化
国科安芯15 小时前
星间光链路:AS32S601型抗辐射MCU在空间激光通信终端控制中的技术实现
服务器·网络·单片机·嵌入式硬件·物联网·安全·信息与通信
xexpertS15 小时前
分布式系统过载治理:如何通过较小服务控制请求节奏
微服务·自动化
AOwhisky15 小时前
Python 学习笔记(第十三期)——运维自动化(下·前篇):远程命令执行——paramiko基础篇
运维·python·学习·云原生·自动化·运维开发·paramiko
AOwhisky16 小时前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
慧都小妮子16 小时前
ThingsBoard PE 智慧能源:打造企业数字化能源管理平台
运维·物联网·能源·数据采集·数据可视化·thingsboard·制造业数字化
Land032917 小时前
AI网页元素变化无法自动修复?自带元素自愈的自动化解决方案
运维·人工智能·ai·自动化·rpa
振浩微433射频芯片17 小时前
工业遥控器总在关键时刻“掉链子”?——433MHz芯片方案如何破局
网络·单片机·嵌入式硬件·物联网·工业遥控