中小制造型企业如何实施物联网——“通用机器语言”PPMP在工业4.0中的应用介绍

1.工业4.0落地面临的挑战

生产设备的效益,对生产过程的总效益有很大影响。

要提高设备效益,就要对设备和生产流程进行优化。

优化的基础是来自与产品相关的机器和设备的信息,例如:

  • 螺丝拧紧过程的扭矩和角度
  • 切削过程中主轴的能耗
  • 滚珠丝杠的磨损程度
  • 焊接过程的焊接温度、焊接图像

但是要采集生产设备的数据,不是那么容易的。

“书同文、车同轨”是秦始皇的丰功伟绩之一。

在工控行业,有标准化的DIN导轨。但是设备的书面语言——通讯协议,却还没有统一。光最常见的工控设备的通讯协议就有:

  • OPC DA
  • OPC UA
  • Modbus TCP/RUT
  • PLC专有协议,如西门子PPI/MPI/Profibus协议,三菱FX串口网口协议,欧姆龙HOSTLINK、FINS协议、AB DF1协议等
  • MTConnect
  • SQL Server、Access数据库
  • 自定义TCP或串口协议
  • 数控机床、机器人、运动控制器私有协议

OPC UA 统一架构虽然很好,但是还没有普及——像还没有普及的普通话。工厂里还有大量不支持OPC UA的Brownfield旧设备。强推OPC UA 普通话成本太高,难度太大。——想象一下,要是每个PLC设备都需要用OPC 服务器进行协议转换,需要付出多少成本!

2.解决之道——工控协议翻译官+通用机器语言

出国旅行,语言沟通是最大的问题。这时候,你不会傻傻的去学习世界语或者英语,而是会带一个APP帮助你翻译常用的交通、饮食、问路、出行、住宿等词语。 遇到沟通不了的事情,把APP翻译出来的文字直接给对方看。

我们在工业4.0中遇到的情况也是一样的:工厂里有很多不同的机器,使用了很多种不同的语言。许多旧机器不会说世界语(OPC-UA)。

这时候,如果要采集生产设备的数据进行绩效分析,让每个机器学会说世界语(OPC UA),成本太高难度太大。因为OPC UA这门语言太复杂了。

借鉴刚才出国旅游的例子,不要让每个机器都去学复杂的世界语,而是开发一个出国翻译官APP类似的工控协议翻译官,把不同通讯协议翻译成一种非常简单的“通用机器语言”。反正机器不需要学会高级的复杂的语法,用来谈情说爱吟诗作曲。

机器只需要像三岁小孩一样,会说简单的语言:“我发烧了,轴承温度过高”、“我的关节丝杠快磨损完了”、“现在是15:24:05,我是拧螺丝机器人#1433NDX,我正在给零件#42003922上螺丝,设定最大扭矩40牛米,实际扭矩32.7牛米”、“我饿了37分钟了,上游传送带一直没有给我传送要加工的零件”、“我是下游工业视觉检测器#IVD3021,上游工序过来的零件已经有312个检验不合格了”……

Bosch总结出归纳了许多工业4.0的成功经验和失败经验,发现对工控设备的绩效分析,工控设备“通用机器语言”只要会说这三种信息即可:

  • 测量值(measurement):来自机器的测量数据,例如特定时间点的机器温度、压力及当前生产的零件名称和批次。
  • 消息(message):由机器发送的任意消息,如告警等。
  • 工艺流程(process):特定生产流程的工艺数据。例如紧固螺丝过程的最小扭矩、最大扭矩、实际扭矩等工艺参数,或焊接过程的焊接图像、焊接温度等。

于是,Bosch主导创建了Eclipse IoT项目中的PPMP子项目,设计了生产绩效管理协议(PPMP, Production Performance Management Protocol),规定了生产设备绩效数据的格式。

PPMP协议以流行的JSON作为序列化机制,给这三种设备绩效数据设计了三种数据结构,作为应用层传输时的负载内容。

不过考虑到灵活性,PPMP并没有强制规定传输层或应用层的协议到底用什么。REST,MQTT,AMQP等协议都可以用来发送这三种数据的JSON字符串。

而Eclipse Unide项目的目标是开发PPMP协议的工控协议翻译官APP,包括客户端和服务器两部分。

有了PPMP这一“通用机器语言”,就可以把生产车间的各种协议异构的生产设备的关键数据,转换成统一的消息格式。通过HTTP/MQTT协议发送到后台物联网服务器,就可以方便的解析存储和分析,然后通过RESTful API给其他信息系统调用集成。

Unide服务器的数据也可以保存到Influxdb时间序列数据库中,然后用Grafana这一可视化Dashboard界面程序进行可视化分析。

3.PPMP消息格式说明

消息序列化机制目前采用JSON。

默认传输方式为HTTP协议,当然也可以支持MQTT等其他传输方式。

PPMP协议支持三种类型的消息载荷:

  • 测量载荷(MeasurementPayload):包含来自机器的测量值,例如特定时间点的机器温度以及当前生产的部件。
  • 消息载荷(MessagePayload):包含由机器发送的任意消息,如告警等。
  • 工艺流程载荷(ProcessPayload):由离散信息组成。例如紧固或焊接过程及其描述和分析所需的所有特征数据。

测量载荷

消息载荷

工艺流程载荷

4.设计原则

PPMP协议的设计原则:

  • 足够灵活,可通过多种协议传输;
  • 不重新造轮子,利用现有技术;
  • 能够使用相同的软件来解释数据;
  • 简单容易理解;
  • 能够覆盖足够的应用场景的功能需求。

5.应用案例介绍——磨床故障状态监测

下面举一个利用PPMP协议实现磨床故障状态监测的例子。

磨床故障状态监测

监控对象是MIKROSA磨床。它的核心部件滚珠丝杠在长期工作后磨损加剧,如不及时更换会导致磨床停机。因此需要对滚珠丝杠进行实时监测其磨损程度,根据其磨损程度及时安排维修或更换。

滚珠丝杠的磨损程度可以根据其振动模式来进行判断。因此采用LIS3DH MEMS加速度传感器采集滚珠丝杠的振动数据。

  • 滚珠丝杠磨损程度不同,振动模式也不同。
  • 通过树莓派和LIS3DH MEMS 加速度传感器采集振动数据。
  • 在不同磨损程度下采集对应的振动数据,形成训练预测模型所需的数据集。
  • 利用机器学习算法,根据上述数据集训练滚珠丝杠故障模式分类的机器学习模型。
  • 根据采集的振动数据,根据训练好的滚珠丝杠故障分类模型,在网关中预测滚珠丝杠的磨损程度。
  • 通过PPMP协议,将预测出的磨损程度发送到服务器。
  • 管理人员登录服务器,根据磨床的磨损程度安排计划性维修和更换。

磨床振动监测的具体流程如下:

  1. 在磨床上的滚珠丝杠上加装三轴加速度传感器,用于测量的滚珠丝杠的振动数据。
  2. 树莓派采集加速度传感器的振动数据,通过HTTP或MQTT以PPMP协议格式发送给网关。
  3. 网关收到磨床的加速度数据后,根据训练好的模型进行分析。分析结果以 PPMP 消息的形式通过 HTTP/MQTT 发送到后台服务器。
  4. 后台服务器可以是各种支持 PPMP 协议解析的服务器。如 Unide 或 CONTACT Elements for IoT。
  5. 管理人员登录该服务器,根据分析结果安排维修计划。

磨床发送到网关的加速度测量消息的PPMP消息:

{
  "device": {
    "deviceID": "device-001"
  },
  "measurements": [
    {
      "ts": "2017-10-04T17:17:16.025000+02:00",
      "series": {
        "$_time": [
          0
        ],
        "x": [
          -11.7744
        ],
        "y": [
          -0.941952
        ],
        "z": [
          0.470976
        ]
      }
    }
  ],
  "content-spec": "urn:spec://eclipse.org/unide/measurement-message#v2“  
}

网关发送给后台服务器的磨床磨损情况分析结果:

{
  "device": {
    "deviceID": "device-001"
  },
  "measurements": [
    {
      "result": "OK",
      "ts": "2017-10-04T17:17:16.025000+02:00",
      "series": {
        "$_time": [
          0
        ],
        "rms.x": [
          11.465432911031082
        ],
        [
          ………………
        ]
      ]
    }
  }
],
"content-spec": "urn:spec://eclipse.org/unide/  measurement-message#v2"
}

6.PPMP的Python库

最后,介绍一下PPMP的Python库。

Unide Python库用于生成、解析、校验PPMP负载消息。

Contents – Unide 0.1.0 documentation

下面是一段通过Paho mqtt发送PPMP消息的代码示例:

>>> import unide
>>> import paho.mqtt.client as mqtt
>>> client = mqtt.Client()
>>> client.connect("localhost", 1883, 60)
>>> device = unide.Device("Devive-001")
>>> measurement = device.measurement(temperature=36.7)
>>> client.publish(topic="sample", measurement)

推荐阅读:

  • 真的么?在云端计算OEE设备利用率竟然这么容易!
  • 云计算如何与工业4.0水乳交融?
  • 德国SmartfactoryKL工业4.0智能工厂demo项目
  • 赋能工业4.0智能工厂的10大模块概述

更多物联网,边缘计算相关技术干货请关注我的专栏物联网前沿技术观察
申请加入物联网技术研讨大佬微信群,请加微信号:iot1999

发表评论

邮箱地址不会被公开。 必填项已用*标注

Related Post