使用IOT-Tree整合复杂计算模型(含AI模型),并对接现场设备优化控制(节能提效)技能方案

news/2025/9/26 17:59:59/文章来源:https://www.cnblogs.com/ljbguanli/p/19110958

使用IOT-Tree整合复杂计算模型(含AI模型),并对接现场设备优化控制(节能提效)技能方案

IOT-Tree Server是个开源物联网软件,可以作为组态软件成为自动化系统的上位软件。她提供了接入、数据组织管理、控制逻辑和人机交互多个方面的功能。

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

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

IOT-Tree消息流功能是在规整接入各种设备数据之后,提供的功能块组合部署支持(直观快速),凭借她你可以在大部分场合快速实现数据的处理——存储、转换、发送等。

本文基于IOT-Tree的消息流功能,探讨分析如何对接各种麻烦模型,并充分发挥IOT-Tree的优势,使之应用于自动化控制现场。以达到能耗节省、设备运行效率提升和设备运行寿命延长等效果

如果你是某个行业的专业人员,对设备优化及相关模型有自己的研究成果,如何飞快应用这些成果到实际的设备中,IOT-Tree应该是一个很好的选择

1 方案整体框架

如上整体框架图,IOT-Tree可以运行在一台PC(或边缘设备)上,并且一般的模型软件也可以同时运行其中,由此组成了系统基础部署框架。系统内部作用许可划分为三部分:数据收集、模型调用、优化控制输出,他们分别有如下作用。

1.1 数据收集

首先,IOT-Tree可以对接现场这边的PLC,传感器等目标,进行实时数据收集,这可以直接为模型的运行提供基础输入数据。同时,IOT-Tree还可能调用外部资源,如数据库、其他模型接口等内容。

IOT-Tree本身的基础功能,如果还不熟悉,可以参考IOT-Tree开源程序自带文档或我写的其他文章,此部分内容,本文就不展开介绍了,你可以参考如下内容:就是数据收集相关内容

https://gitcode.com/jasonzhu8888/iot-tree

https://github.com/bambooww/iot-tree

机房自动化监控手把手分享给你 - 2 温湿度传感器的对接

机房自动化监控手把手分享给你 - 3 漏水传感器的对接

机房自动化监控手把手分享给你 - 4 空调设备对接

机房自动化监控手把手分享给你 - 5 电流监测模块对接

机房自动化监控手把手分享给你 - 6 UPS设备对接

1.2 对接(调用)模型软件并提供实时数据

IOT-Tree获取现场实时数据之后,接下来就允许把这些数据给予给模型程序。模型程序根据现场素材输入进行内在的专业计算分析,并输出优化参数结果返回给IOT-Tree。详细内容,请参考下面的内容。

1.3 优化控制输出

IOT-Tree获取模型输出之后,可以通过PLC对接接口,把结果(优化参数)提供给现场的PLC程序。以此优化控制,达到节能提效的目标。

以上过程,都必须经过精心设计,保证PLC控制的安全、可靠和可控运行。相关内容请参考本文后续内容。

2 模型输入帮助

在数据收集部分,IOT-Tree通过接入-设备驱动-及树状组织,最终把现场的实时数据都转换为统一的标签Tag形式。如下所示:

这些实时运行标签数据,很明显是工业优化模型最重要的内容基础。有了基础标签内容,那么接下来就是如何把这些数据提供给模型,并获得模型返回了。

2.1 IOT-Tree调用模型方式分析

2.1.1 定时调用

这是最通用的做法,整个过程由定时器触发,每次触发时,先获取要求的标签数据,打包成模型需要的格式,然后调用模型等待返回结果即可。

2.1.2 条件触发

根据标签资料中的特定标签Tag内容作为条件,当满足触发条件时才触发调用过程。

以上两种调用方式,在IOT-Tree消息流中都有对应节点支持,只需要简单设置几分钟即可完成。

2.2 模型调用方法(IOT-Tree如何调用模型)

有了触发条件之后,接下来就可以具体分析当满足触发条件之后,IOT-Tree如何调用模型了。这个就需要看模型的具体实现方式了。

2.2.1 IOT-Tree内部模型实现

你可以启用Java方式达成你的困难计算模型,并且实现支持模型调用的若干消息流节点。接着打包成标准的Java Webapp配置部署到IOT-Tree运行框架中,使得模型和IOT-Tree成为一个整体并且运行在一个独立的程序中。这样在消息流中,你就行很方便地拉取相关节点完成配置过程。

很适用的,并且与IOT-Tree紧密结合,最终现场只需要部署一套脚本。对于需要大量复制的现场来说比较适合。就是这种方式对于不是特别复杂的模型

缺点是你需要深入理解IOT-Tree消息流机制,并能进行二次开发适配整体框架。

2.2.2 IOT-Tree使用HTTP方式调用外部模型

如果模型的实现是异构体系,直接进行IOT-Tree适配几乎不可能,那么比较理想的调用方式是使用HTTP方式。由模型运行的独立进程提供HTTP方式的web调用接口(RESTFul Api),然后在IOT-Tree中使用消息流支持的HTTP Client节点进行调用。

这是本文最推荐的一种方式,行使得模型和IOT-Tree之间轻耦合,模型的建立完全自主且只需要支持Web调用接口即可。这种方式对于当前AI大模型来说,应该是唯一选择了(个人观点,你倘若有更好的思路可以评论批评)。

更具体一点,建议每次调用时,由IOT-Tree消息流节点获取需要的标签数据,并打包成JSON数据格式,然后通过POST方式调用相关的模型Web Api提交资料,如果模型运行成功,则返回JSON格式的数据给HTTP Client节点。

2.2.3 IOT-Tree使用进程调用外部模型

若是一个模型比较简单,并且和IOT-Tree运行在同一台机器中,如模型只是使用了Python完成了一个算法,并且没有给出Web方式的调用接口,那么允许利用IOT-Tree的进程调用支持节点“执行系统命令”实现。

如果模型算法需的输入参数很多,建议在消息流中获取标签数据打包成特定的数据格式(如JSON)之后,先把这些数据写入到临时文件中,然后调用算法程序并把临时文件路径作为进程启动命令参数。此时,你的模型算法程序得支撑文件路径作为输入参数。

通过当然,模型结束时,也能够把结果写入文件中,后续IOT-Tree消息流通过此文件获取返回结果。

3 模型输出支持

不管使用哪种方式调用模型,最终模型正常运行返回结果之后,IOT-Tree得把输出结果反馈到现场的控制器(如PLC)中。本文就以PLC作为例子做详细说明。

当前工业现场绝大多数控制都使用成熟可靠的PLC作为控制核心,假设要做模型适配,则得做一些控制流程的改进。关键原则如下:

1 改动尽可能小,保证原有应用的安全,尽量减少升级时间,保证生产影响最小化

2 一定要考虑调用整合模型失效时的相关处理逻辑,确保现场控制绝对安全

那么IOT-Tree获取模型结果之后,如何把结果提交给现场的PLC控制器呢,大致有如下方式:

3.1 IOT-Tree主动修改PLC内部特定的参数

此方式前提是,PLC程序为了模型调优专门设定几个内部参数地址,用来接收调优参数。此种方式适合比较现代的PLC设备(这些设备一般支持以太网接口,并且有专有的驱动可以直接拥护内部地址写入)。

PLC内部控制循环增加相关调优参数的读取和处理。

3.2 IOT-Tree被动方式被PLC调用

此方式要求IOT-Tree模拟成一个现场设备并提供方便的标准工业接口作为PLC的一个输入。

很多工业场合,由于PLC比较老旧(没有提供以太网接口),无法直接通过特定的内部地址和IOT-Tree进行交互,并且PLC接口也有限,只能利用一些简单数字接口获取数据(如RS485),此时也需要IOT-Tree能够模拟成一个轻松的设备进行对接。

此时,可以使用IOT-Tree消息流中的Modbus Slave节点,把IOT-Tree对外模拟成一个标准Modbus设备,这个设备内部提供几个调优参数作为数据项提供给PLC。

本部分内容请参考相关文章:

使用IOT-Tree消息流Modbus Slave节点,实现Modbus设备的模拟

4 如何保证PLC控制程序与模型整合优化之后的可靠和安全

安全可靠是工业领域各种体系的基本要求。可以说如果做不到安全可靠,再好的模型都无法直接应用到现有的控制系统中,这是一个关键需求,直接决定了系统实施的成败。

本部分内容,以此为主题在不同层面做专门做相关分析和实施策略。

4.1 PLC程序改进保证安全可靠策略

为了能够支持模型调参优化支持,PLC程序应该做如下改进工作:

4.1.1 PLC改进尽可能便捷

在大部分PLC控制优化场合,需要调整控制参数很少,比如从节能角度只需调整控制目标温度、目标压力或目标转速等参数。这些参数的微小调整,就可能马上产生电能或燃气的节省。而PLC控制逻辑加入这些调整参数所需要的程序改动非常少。

由此,建议PLC的改进尽可能限定在这个范围里面,这样不仅可以极大降低风险,并且现场设备停机也允许限制在很短的时间内。

4.1.2 PLC程序本身要保证安全

依据加入了外部调整参数支持之后,PLC工具必须做如下防护:

1 保证外部调整参数在实用的安全范围内

PLC程序改进引入外部给予的调整参数时,必须对参数有效性或安全值范围做判断,如果外部写入异常数据或超出安全范围,则必须忽略,并且应该认为此时外部程序失效,进而进入外部调优程序失效状态中。

2 必须有外部调整参数的软件失效的判断

PLC内部除了方便的提供外部调整参数之外,还必须有判断外部调优程序失效的能力,有如下建立策略。

  • 无效的。外部调优程序失效状态中。就是当IOT-Tree提供被动方式数据——如模拟一个Modbus设备时,内部必须提供一个调用计数数据。该计数数据可以保证PLC每次调用获取有效值的时候都不相同,PLC软件可以很容易判断多次调用之间这个计数是否变化,如果超过特定时间发现这个值没有变化,则可以认为外部调优脚本失效。此时不管读取到什么数据,都认为
  • 当IOT-Tree主动提交数据到PLC时,也应该同时给出这个计数数据,PLC获取数据时内部也做相同判断。
  • PLC程序还应该做个内部时间计数,当超过规定的时间发现计数值没有变化,也要进入外部调优程序失效状态中。这样当IOT-Tree程序停止运行或通信中断,也可以保证安全。

3 外部程序失效应对措施

当PLC进入外部调优程序失效状态时,可以产生报警,并进入程序改进前的固定参数运行状态(自动恢复到没有调优时的运行状态)。

借助以上措施,可以保证IOT-Tree和模型程序不管出现什么异常情况,都能保证现场设备的安全运行。

4.2 IOT-Tree输出模型结果反馈到PLC安全应对措施

需要考虑因素。就是IOT-Tree和模型程序不管如何部署,如何与PLC对接,都必须考虑自身失效的情况。代码异常、网络通信异常、设备供电异常等不可控因素和可控的维护测试得都

事实上,有了上面PLC应用应对措施,安全可靠方面已经有了基本的兜底。

IOT-Tree配置和模型方面只需要考虑有效内容和配合PLC的调用计数变化的可靠。

事实上,利用以上安全可靠应对措施,整个系统结构为未来模型的持续改进和优化提供了一个很好的基础。有了PLC的安全兜底,IOT-Tree和模型程序可以随时停止、维护升级或手工做一些现场调参测试,整体并不会影响设备的安全运行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916946.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单独

单独Q2的季度工作总结: 重点工作任务(含项目) 重点工作任务完成情况 "目标设定说明: 目标设定要符合SMART原则(Specific具体的、Measurable可衡量的、Attainable可达到的、Ralevant相关的、Time-based有时间…

为什么应该测试无JavaScript的页面体验

本文探讨了JavaScript可能失效的各种场景(如网络问题、浏览器扩展限制等),介绍了渐进增强的实践方法,并说明了当页面必须依赖JavaScript时的优雅降级方案。通过具体代码示例展示如何构建更具韧性和可访问性的网站。…

完整教程:UE5小游戏开发 - 武士决斗

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

经典三层架构项目(3-tier architecture)中应用依赖倒置原则(DIP)的理性权衡

经典三层架构项目(3-tier architecture)中应用依赖倒置原则(DIP)的理性权衡1 DIP核心思想与三层架构概述 依赖倒置原则(Dependency Inversion Principle,DIP)作为SOLID原则中的重要组成部分,其核心主张是高层模…

网站开发费入什么科目个人简介html代码简单

前言 JavaScript 的核心 ECMAScript 描述了该语言的语法和基本对象; DOM 描述了处理网页内容的方法和接口; BOM 描述了与浏览器进行交互的方法和接口。 ECMAScript、DOM 和 BOM 尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一…

PolarFire SOC Auto Update 和 IAP 文档阅读(三) AUTO UPDATE

PolarFire SOC Auto Update 和 IAP 文档阅读(三) AUTO UPDATE 文档来自:PolarFire FPGA and PolarFire SoC FPGA Programming User GuidePolarFire SOC Auto Update 和 IAP 文档阅读一 - 所长 - 博客园 PolarFire SO…

前台部分数据不显示

去数据库查了下,数据都存在,很完整,原因就在前台。 查出来的数据量很大,删除部分数据后,前台正常显示了,应该就是数据量太多,序列化的时候出问题了。 查了下,JsonConvert.SerializeObject 没有“字数”限制,但…

指针定义以及二维数组内存地址(java/c++/python)

一、指针是什么? 指针是一个存储内存地址的变量,它指向(引用)内存中的另一个数据(变量、数组、对象等)。通过指针可以直接访问或修改它所指向的内存中的数据,这使得指针成为直接操作内存的重要工具。 简单说:指…

一款不错的PDF工具,吾爱出品 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

解码数据结构线性表之顺序表

顺序表的本质与核心特性 顺序表的定义 顺序表是 “用一组内存地址连续的内存单元依次存储线性表数据元素的存储结构”,其核心是 “逻辑顺序与物理顺序完全一致”—— 即线性表中第i个元素(逻辑上),必然存储在与第i…

中电金信:源启数据集成平台全新升级,实现便捷与性能双飞跃

源启数据集成平台作为源启数据资产平台的重要组成部分,专注于实现跨源数据的高效汇聚与迁移,提供一站式数据集成服务。平台适用于银行、保险、证券、能源、制造等行业,能够实现对多源异构数据从采集、转换到写入的全…

Jupyter NoteBook / Jupyter Lab的安装与使用

Jupyter Lab是Jupyter NoteBook的下一代产品,这两个产品都是基于浏览器的代码编写、运行及文档编辑的交互式环境。Jupyter Lab是Jupyter NoteBook的下一代产品,这两个产品都是基于浏览器的代码编写、运行及文档编辑的…

完整教程:科技的温情——挽救鼠鼠/兔兔的生命

完整教程:科技的温情——挽救鼠鼠/兔兔的生命

易基因:Nat Rev Drug Discov/IF101.8:何川团队顶刊综述RNA修饰系统作为疾病治疗靶点的研究进展

近日,芝加哥大学华人科学家何川教授团队在国际顶刊《Nature Reviews Drug Discovery》(IF=101.8) 发表题为 “RNA modification systems as therapeutic targets” 的综述文章,全景式阐述了 RNA 修饰系统作为治疗靶点…

国产适配 + AI 一键生成!亿图图示 14.5 全平台绘图指南:260 种图表 + Visio 兼容,开发者 / 办公党速藏

作为开发者、产品经理或办公人士,你是否常陷入 “绘图工具跨平台不兼容”“手动画流程图耗时久”“国产系统适配难” 的困境?亿图图示 14.5 凭借 “全平台覆盖 + AI 效率升级 + 国产生态兼容” 的三重优势,直接破解…

关闭Cadence Allegro Design Entry CIS(OrCAD Capture)的Start Page

自从更新17.4补丁到某个版本,以前的用命令关闭起始页或者修改.ini文件的方法不管用了。看到启动时命令窗口里加载了一堆脚本,找到它们在D:\Cadence\SPB_17.4\tools\capture\tclscripts\capAutoLoad\路径下。由于我不…

Mini L-CTF 2025 WP

s1gn1n ida打开发现存在花指令在这里我一开始犯了一个错误我把jz和jnz进行nop没有nop C7 解释下为什么C7也要nop,因为把前面的跳转nop留下单独一条C7,CPU会继续往下读取字节,形成一个完整的指令。后面的正常的代码会…

美食网站开发与设计任务书国外移动端网站模板

近日,在 2022 云栖大会龙蜥峰会 eBPF & Linux 稳定性专场上,来自 eBPF 技术探索 SIG Maintainer 、浙江大学的郑昱笙分享了《eunomia-bpf:eBPF 轻量级开发框架》技术演讲,以下为本次演讲内容: 大家好!…

电子商务网站建设案例wordpress更改作者信息

我们上一章简单先了解了ribbonx的基本内容,以及使用举例实现自己修改ribbox的内容,本章紧接上一章,先讲解一下ribbonx的button控件。 在功能区的按钮中,可以使用内置图像或提供自已的图像,可以指定大按钮或者更小的形式,添加少量的代码甚至可以同时提供标签。此外,可以利…

K8S APIServer压力高,导致控制器Leader续约失败而重启问题

K8S APIServer压力高,导致控制器Leader续约失败而重启问题 下图是控制器Leader成功续约的日志。 这中间续约卡住了,没有成功续约的日志。从最后一次成功续约日志到重启日志,中间有2分半钟(21:07:22-23:10:03). …