使用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 最终效果

相关推荐
MetrixAeroCore4 小时前
跨境漫游通信解析:全球漫游物联网卡的适配逻辑与行业应用
物联网
qingfeng154154 小时前
企业微信多账号协同管理方案:矩阵如何统一管理?
开发语言·python·自动化·企业微信
A_QXBlms4 小时前
企业微信社群SOP自动化执行引擎开发,SCRM高效运营技术实现
运维·自动化·企业微信
Mr -老鬼4 小时前
EasyClick AI全自动编程,AI IDE选型真难?
ide·人工智能·自动化·ai编程·easyclick·易点云测
柱子jason4 小时前
IOT-Tree支持[子站-中心]数据同步功能-轻松支持你的物联网平台
物联网·工业物联网·分布式系统·iot-tree
qingfeng154155 小时前
企业微信定时群发实战:API 如何实现批量消息自动发送?
java·开发语言·python·自动化·企业微信
梦想的旅途25 小时前
基于 RPA 自动化技术的私域机器人助手构建指南
microsoft·机器人·自动化·企业微信·rpa
qingfeng154155 小时前
企业微信 API 可以做什么?
java·开发语言·python·自动化·企业微信