让人头疼的数据

AI开发的瓶颈中,数据通常最让人头疼,而PLC的数据更是如此。术业有专攻,即便是经验丰富的AI工程师在面对PLC进行开发时,也会受到各式各样的瓶颈所制约:

  • 数据读取不正确:PLC的数据依据变量类型不同,所占用的“位”不同,布尔型的1位足矣,而数值型的可能需要8位,也可能需要更多。因此,这些偏向于底层,诸如使用的位数、高低位、补位等问题,会在开发过程中会产生风险。例如如果一个变量将8位完全用满,但并非希望表达一个int8的数值,而是表达8个布尔型。这些对于PC的应用开发者而言无疑是一道超纲题。
  • 数据读取延迟高:以稳定著称的PLC具备至少毫秒级的循环周期,如果PLC的数据同步有500ms的延迟,而PLC的循环是5ms,那么每两次读取的数据之间就会遗漏掉99次的循环。因此,高延迟意味着数据风险的陡增。这样的暗坑,可能会带来难以预期的影响;
  • 学习成本高:对PLC的数据开发与应用,和PC上软件的开发和应用差异显著。因此,要基于PC进行基于PLC数据的AI算法开发和应用(例如基于PLC上数据进行训练的AI算法来辅助人工操作进而降本增效),既需要有PLC的知识,也要求有AI领域熟练的开发经验。然而这样的通才很少见,进而在开发时,就需要大量额外的学习成本和重复造轮子的时间。
  • 依赖成本高:因为历史原因,PLC的数据采集往往依赖于windows和一些windows上的库,这就导致了开发和应用过程中,windows服务器或工作站难以避免。如果说昂贵的windows授权成本和工作站的采购成本可以接受,那么windows与AI开发者所熟悉与乐于使用的linux/macOS系统则难以调和。
  • 颠覆开发习惯:对于习惯基于PC进行开发的工程师而言,在“内存”中定义变量、读写变量、定义变量的逻辑与循环是符合习惯的流程。而PLC则需要先从寄存器的物理位置上调用、解析,且寄存器地址是给定且不能情已修改的。这个过程对于习惯于PC开发逻辑的工程师者而言,自然要颠覆以往的开发习惯。

因此,很多场景下,AI开发者需要通过从控制系统中手工拷贝数据集,或者异步访问到数据库(很可能数据库本身也是异步的)来下载数据进行训练与开发。这种开发效率怎么可能提高呢?

解决之道——解耦,在擅长的领域中处理

术业有专攻,AI工程师使用最熟悉的环境和工具进行开发,部署在最熟悉的IT系统中。与此同时,控制系统中的程序不需要调整,也不需要由专门的上位机(工作站)来获取、应用PLC的数据,让控制系统与IT系统彼此解耦,各自做最擅长的事情,既保证弹性可扩充,也节省成本。

有什么收获?

通过解耦,对基于PLC数据开发AI有什么帮助?

对于AI开发者而言,无论是训练模型的调用还是基于模型的应用,所输入的数据均是开发者最熟悉的方式。而模型的部署也可以在其最佳的环境中部署,不必囿于操作系统的限制。

对于控制系统的工程师而言,维护好控制系统的正常作业,不必修改控制系统的程序,不变更控制系统中的组织架构。毕竟稳定是控制系统的第一要务。

对于系统的拥有者即老板而言,节省的成本意味着收益的提升,那我们来看一下如此解耦,在基于PLC数据开发AI应用中哪些地方可以降低成本:
(1)昂贵且作用有限的工作站;
(2)昂贵的windows授权或无授权带来的风险;
(3)AI开发者学习PLC通讯方法的时间成本;
(4)寻找既懂PLC又懂AI开发的通才所消耗的成本;

PLC作为控制系统的核心设备,所创造的数据与其被白白浪费,不如将这些数据转化成价值,AI应用或许是价值落地的一个重要方向。然而,AI应用往往在初期很难将结果量化预期,那么突破瓶颈,用低成本的方式开发,是一个合理的方式。而在这种方式中,解耦开发,降低成本,让专业的人做专业的事。

通过EDA工具,桥接控制系统与IT系统,让AI开发在最熟悉的环境中,用最擅长的工具来开展,迅速建立最小可执行方案,循序渐进的降本增效。