基于IEC61499开放自动化PLC数据储存方案
1.为什么要存储PLC数据
存储PLC数据的根本目的是将短暂的、实时的控制信号转化为长期的、可追溯的、可分析的数字资产,从而驱动生产效率提升、质量改善、成本降低和决策优化。如下是几种常见应用场景:
- 生产过程监控与可视化
- 质量追溯与工艺改进
- 设备维护与健康管理
- 性能分析与优化决策
- 故障诊断与还原
- 数据集成与信息化
2.当前已有存储PLC数据的方式
PLC本来是一种资源受限的设备,基本不会把数据存储在PLC上面,都是通过把PLC数据采集后进行存储,基本的技术架构如下:
通过IOT网关设备对接PLC协议,根据需要把采集到的数据存储到关系数据库、时序数据库、实时数据库、对象存储等。这样的方式虽然满足了业务应用,但是需要额外添加一个IOT网关设备,增加项目成本。增加了数据传输链路,会增加故障风险。
- 当前已有尝试解决方案:
比如增加PLC性能把数据直接存储在PLC,比如西门子某些型号的PLC支持数据本地存储。但这会增加PLC本身成本,且并不是所有厂商都支持这种方式。
3.基于IEC61499存储PLC数据
IEC61499是符合开放自动化特征的,给用户开放了更大的自主操作空间。可以采用如下的技术架构:
通过IEC61499的IDE编写数据存储功能块部署在PLC上,实际数据存储到外部的数据存储服务上,如:关系数据库(mysql、sqlserver等)、时序数据库(influxdb等)、实时数据库(leveldb等)、对象存储(minio等)。这样的好处是可以节省IOT网关,减少出现故障的概率。
从技术架构图大家也在疑惑为啥不在当前已有PLC编程IDE上编写功能块来实现当前这种技术方案?这个问题我自己也思考过,发现当前PLC的IDE和运行时都是比较封闭的,没有给用户开放更多权限。所以就出现了开放自动化,给用户更多的操作权限。基于此,就开发了open61499。open61499是基于IEC61499标准打造的工业编程平台,支持不限于PLC程序编写、DCS业务逻辑编写、机器人程序编写等应用。它的编程方式多样化,既支持IEC61131-3的梯形图、结构化文本,又支持IEC61499的简单功能块、基础功能块、子应用、复合功能块,还支持Lua脚本语言、C/C++高级语言。它的数据交换灵活化,既支持标准网络通信(tcp、udp),又支持常用总线通信(modbus、ethercat、profinet),还支持opcua和用户自定义总线适配。open61499 IDE既可以云端部署,也可以本地部署;open61499运行时支持的操作系统有Linux、Windows,支持的处理器有x86、arm。可以在open61499平台轻松实现前面描述的基于IEC61499开放自动化PLC数据存储方案。这也是自主研发的重要性!