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协议,将预测出的磨损程度发送到服务器。
- 管理人员登录服务器,根据磨床的磨损程度安排计划性维修和更换。
磨床振动监测的具体流程如下:
- 在磨床上的滚珠丝杠上加装三轴加速度传感器,用于测量的滚珠丝杠的振动数据。
- 树莓派采集加速度传感器的振动数据,通过HTTP或MQTT以PPMP协议格式发送给网关。
- 网关收到磨床的加速度数据后,根据训练好的模型进行分析。分析结果以 PPMP 消息的形式通过 HTTP/MQTT 发送到后台服务器。
- 后台服务器可以是各种支持 PPMP 协议解析的服务器。如 Unide 或 CONTACT Elements for IoT。
- 管理人员登录该服务器,根据分析结果安排维修计划。
磨床发送到网关的加速度测量消息的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)
推荐阅读:
更多物联网,边缘计算相关技术干货请关注我的专栏物联网前沿技术观察
申请加入物联网技术研讨大佬微信群,请加微信号:iot1999。