使用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和模型程序可以随时停止、维护升级或手工做一些现场调参测试,整体并不会影响设备的安全运行。