Summary
这项工作提出了一种基于称为消息队列遥测传输(MQTT)的消息协议,在薄膜挤出系统和监控设备之间进行数据通信的灵活方法。
Abstract
这项工作旨在通过采用基于发布者 - 订户的协议(称为消息队列遥测传输(MQTT))为聚合物处理机构建灵活的数据通信结构,该协议通过TCP / IP操作。即使使用传统设备,处理数据也可以通过互联网通信在任何地方由各种设备进行测量和记录。基于消息的协议允许灵活的通信,克服了现有服务器-客户端协议的缺点。多个设备可以订阅源设备发布的处理数据。所提出的方法便于多个发布者和订阅者之间的数据通信。这项工作已经实现了一个系统,该系统将数据从设备和附加传感器发布到消息代理。订阅者可以监视和存储代理中继的过程数据。该系统已部署并运行用于薄膜挤出生产线,以证明其有效性。
Introduction
在第四次工业革命的浪潮中,各种加工数据的采集和监控已成为重要的任务1.特别是,使用过程数据改进制造过程并建立有效的运营计划将是所有制造设施2,3的重要目标。如果可以在工厂外发出警报,或者可以及时执行预测性维护,则可以大大减少停机时间4.最近,在聚合物工艺5,6中的数据分析方面已经做出了许多努力。然而,由于难以从现有系统7获取此类数据,因此执行这些任务并不容易。控制和仪表的分层结构使数据采集和通信变得困难。
首先,不可能从具有不同制造日期的不同机器获取数据。很难实现不同机器之间的通信,因为这需要不同现场总线之间以专有格式进行互操作性。通过这种方式,通信方法和数据格式保持私密。这有助于人们轻松维护数据安全性,但使用户依赖机器制造商的服务和未来发展。最近连接到聚合物加工机器的人机界面(HMI)在内的控制计算机现在大多基于Windows,但加载了在专有开发环境中创建的软件。可以使用来自不同公司的可编程逻辑控制器(PLC)与传感器或执行器进行通信,但在许多情况下,上层监控和数据采集(SCADA)系统依赖于控制计算机8。这种做法导致许多协议,现场总线和控制系统在市场上竞争。虽然随着时间的推移,这种复杂性已经逐渐减轻,但许多类型的现场总线和协议仍在积极使用。
另一方面,控制设备和SCADA之间的通信已由开放平台通信联合架构(OPCUA)9标准化。此外,SCADA和制造执行系统(MES)之间的通信也主要通过OPCUA进行。在如此严格的层次结构中,自由提取数据以进行过程监控和分析并不容易。通常,必须从SCADA或MES10中提取数据。如前所述,这些系统是特定于供应商的,数据格式很少是开放的。因此,数据提取需要原始信息技术/运营技术(IT/OT)解决方案供应商的大量支持。这可能会阻碍用于监测和分析的数据采集。
在薄膜挤出生产线中,控制PC由SCADA系统11监控。SCADA系统由不易修改的计算机程序操作。计算机程序可能是可编辑的,但编辑非常昂贵且耗时。为了轻松监视和分析处理数据,应可从任何位置访问数据。为了监视远离现场的处理数据,计算机程序应该能够将处理数据流式传输到因特网12。此外,自由开放方法降低了数据采集13的费用。这种方法即使在无力投资商业IT解决方案的小型工厂中也可以进行数据分析14.
在本研究中,采用了基于发布者-订阅者模型的消息协议。消息队列遥测传输 (MQTT) 是一种开放且标准的协议,它支持在多个数据提供者和使用者15 之间进行消息传递。在这里,我们提出了一个系统,该系统使用MQTT为现有制造设施获取,传输和监控数据。该系统在薄膜挤出生产线上进行测试,以验证性能。来自原始控制器的数据 通过 Modbus协议传输到边缘设备。然后,数据发布到代理。与此同时,两个Raspberry Pis将测量的温度和照度发布给同一个经纪人。然后,互联网上的任何设备都可以订阅数据,然后监视和记录它,如图 1所示。这项工作中的协议显示了如何完成整个过程。
Subscription Required. Please recommend JoVE to your librarian.
Protocol
1. 代理安装
注:为了 通过 因特网监测和记录处理数据,应准备一个中继数据的计算机系统。系统应可从发布者和订阅者访问,如图 2 所示。因此,它需要具有在任何通信之前已知的公共IP地址。一个名为Eclipse Mosquitto的开放MQTT代理安装在系统13上。
- 将计算机连接到互联网,提供公共 IP 地址。在操作系统的 IP 设置中提供地址。
- 在计算机上安装代理软件,如 Eclipse Mosquitto。使用浏览器下载安装文件并执行它。
- 使用测试程序(如 MQTT 透镜)测试代理。使用浏览器下载 MQTT 镜头并进行安装。然后,确保订阅了已发布的消息。
2. 主要出版商准备
注意:此计算机 通过 TCP 上的 MQTT 将计算机数据发布到代理。遗留数据应进行解释和重新打包以发送出去。这通常可以通过RS485或以太网完成。应根据总线类型验证硬件级别的连接。挤出机通过以太网端口 通过 Modbus发送数据。
- 将计算机物理放置在计算机站点中,并将其设置为主发布者。
注意:虽然不是强制性的,但在这项工作中选择了一台工业计算机。 - 在计算机上安装 Python3。使用浏览器下载安装程序文件并执行它。
- 安装 PyModbus16。使用浏览器下载安装程序文件并执行它。
- 检查挤压控制器,HMI控制机器,并将挤出控制器连接到主发布器。
- 使用Modbus工具(如ModbusPoll或QModMaster)从机器中完全识别Modbus协议中的数据和相应地址。确保发送的机器数据显示在 Modbus 工具的相应单元格中。
- 在发布者电脑上编写从挤出控制器检索数据的 Python 代码。
注意:下面是一个代码示例:
from pyModbusTCP.client import ModbusClient
client = ModbusClient(host=“192.168.1.***”, port=***, unit_id=***)
client.open()
挤出数据 = str(client.read_holding_registers(1000, 58)) - 通过 PCIe、USB、RS232 和 RS485 合并来自其他设备的其他数据流。
注意:这很简单。获得其他数据字符串后,只需将数据添加到现有数据流中,这由以下代码完成:
拉伸数据 += 附加数据 - 安装 paho-mqtt 后导入 paho.mqtt.client by pip install paho-mqtt17 .
- 实现代码以连接数据并将其发布到代理。
注意:请参考下面的代码示例:
url=“117.xx.xxx.xx”;端口 = 1883;用户名 = “****”;密码 = “xxxxx”;主题 = “挤出机”
mqttc = mqtt.客户端()
mqttc.username_pw_set(用户名,密码)
mqttc.connect(host=url, port=port)
mqttc.loop_start()
挤出数据 = str(client.read_holding_registers(1000, 58))
Pub1= mqttc.publish(topic, ExtrusionData))
Pub1.wait_for_publish()
3. 其他发布者准备
注意:此计算机还 通过 TCP 通过 MQTT 将计算机数据发布到代理。有时,需要在主发布商上无法进行的额外测量。物联网(IoT)设备,如Raspberry Pi和Arduino可以扮演这个角色。在这项工作中,Raspberry Pi被用于温度数据和照度数据。该过程类似于协议第 2 节。
- 将树莓派放在传感器位置附近。
注意:由于布线距离有限,树莓派不能放置在离测量位置很远的地方。然而,由于挤出机附近非常热,因此需要将设备放置在距离测量位置至少1米的地方。 - 在 Raspberry Pi 上通过命令行中的以下命令安装 Python3:
sudo apt update
sudo apt install Python3 idle3 - 实现代码以获取传感器数据。传感器数据 可通过 I 2C 或 GPIO 传输。
注:有关 通过 GPIO 获取的其他温度数据,请参阅以下代码示例:
从 max6675 导入 MAX6675
cs_pin1 = 24;clock_pin1 = 25;data_pin1 = 18
cs_pin2 = 9;clock_pin2 = 11;data_pin2 = 19
单位 = “C”
热电偶1 = MAX6675(cs_pin1、clock_pin1、data_pin1、单位)
热电偶2 = MAX6675(cs_pin2、clock_pin2、data_pin2、单位)
T1 = 热电偶1.get()
T2 = 热电偶2.get() - Import paho.mqtt.client.
- 重用第 2 节中的代码以连接数据并将其发布到代理。
4. 订户设置
注意:互联网上的任何设备都可能 通过 代理接收处理数据。数据也由Python代码处理和可视化。如果开发困难,可以使用可用的应用程序,例如Google Play中的MQTT客户端和App Store中的MQT工具。由于用户界面的实现非常冗长,因此此处不介绍详细信息。另请注意,现有应用程序(如 App Store 中的 MQT 工具)可以接收数据。
- 使用设备订阅互联网。确保物理电缆连接,然后在命令行上对代理 IP 执行 ping 操作(例如,ping 117.xx.xxx.xx)。
- 根据设备和操作系统安装合适的 Python 环境。例如,在Android设备上安装Pydroid3,而不是从Google Play安装Python3。
- 导入 paho.mqtt.client 和 paho.mqtt.subscribe 以连接到代理并从中接收数据。
注意:请参考下面的代码示例:
import paho.mqtt.client as mqtt
import paho.mqtt.subscribe as subscribe
url=“117.xx.xxx.xx”;端口 = 1883;用户名 = “****”;密码 = “xxxxx”;主题 = “挤出机”
mqttc.username_pw_set(用户名、密码)
mqttc.connect(host=url, port=port)
mqttc.subscribe(topic, 0)
mqttc.loop_start()
Sub1 = subscribe.simple(topic, hostname=url)
ExtruderData = Sub1.payload.decode(“utf-8”) - 根据需要使用 PyQT5 构建用户界面。
注意:这部分非常冗长,侧重于接收数据的图形表示,而不是通信。相应的代码作为补充数据提供。 - 通过执行构建的代码在 GUI 上显示传入的数据。
5. 数据记录
注意:监控时,处理数据可以写入数据库中。在这项工作中,选择了实验室规模的数据库。数据连接到Microsoft Access文件,以便从用户计算机轻松写入和检索。此外,可以通过查询立即构建表,以分析电子表格(如Microsoft Excel)中的数据。
- 选择订阅者设备以记录数据。
- 通过在命令行上执行“pip install pyodbc”来导入 pyodbc,以便 Python 代码访问数据库,如图 318 所示。
- 通过Python代码向数据库发送查询,用于记录处理数据。有关该方法,请参阅 图 3 中的 Python 代码。
- 将查询发送到数据库以检索记录的数据。
注意:下面给出了数据检索的代码示例:
import pyodbc
x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
conn_str = (
r'DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=C:\Users\data_analysis\db1.accdb;'
)
cnxn = pyodbc.connect(conn_str)
crsr = cnxn.cursor()
对于 crsr.tables(tableType='TABLE') 中的table_info):
print(table_info.table_name)
sql = “”“\
从Process_Condition中选择 *
"""
crsr = cnxn.execute(sql)
对于 crsr 中的行:
RetrievedData = pd.read_sql(sql, cnxn)
crsr.close()
cnxn.close()
6. 部署
注意:如果所有设备都可以连接到互联网,则设置很简单。但是,为了保护计算机端数据,发布者只能位于 Intranet 中。在这种情况下,代理可以是互联网的网关。为此,代理应配备两个以太网适配器,其中一个适配器必须具有公共 IP 地址。开发完所有项目后,应将代码部署到每个设备上,如图 4 所示。有线或无线连接模式并不重要,但必须加以保护,以便每个设备都能够访问代理。这意味着出于安全目的,代理可以充当 Intranet 和 Internet 之间边界上的网关。当然,即使所有设备都暴露在互联网上,从通信的角度来看也没有问题。
- 通过以太网将挤出控制器、主发布者和其他发布者连接到 Intranet 端口。
- 将代理的一个以太网端口连接到内部网,另一个连接到因特网。
- 通过对所有用户重复步骤 4.1 将订阅者连接到 Internet。
7. 执行
注意:为了测试整个系统,我们启动了挤出生产线,并运行了所有Python代码和Mosquitto。
- 开始挤出过程。在机器的HMI上,设置温度并通过触摸HMI屏幕上的按钮打开加热器。一旦达到所需的温度,开始旋转螺杆以挤出聚合物熔体。
- 打开所有计算机,通过命令“net start mosquitto”在代理设备上启动代理软件,然后运行Python代码以根据需要监视和记录处理数据。
注意:步骤 7.1 和步骤 7.2 的顺序可以颠倒。只需在命令行上键入“python3 xxxxx.py”,然后按 Enter 即可执行 Python 代码。将此命令添加到启动程序中,以避免每次设备重新启动时都键入该命令。
Subscription Required. Please recommend JoVE to your librarian.
Representative Results
已经发现,HMI中显示的数据和Raspberry Pis测量的数据在订户中进行了监控和记录,如图 5所示。如视频所示,处理数据被记录到数据库中。
图 1:使用 MQTT 协议的数据传输概述。 代理将消息从发布者中继到订阅者。此图中的发布者是主发布者和附加发布者(Raspberry Pi)。主发布者直接连接到挤出机以接收数据。只要网络容量允许,订户数量就不会受到限制。订阅者可以将数据重新发布到其他订阅者,以将其记录在 Microsoft Access 等数据库中。 请点击此处查看此图的大图。
图 2:薄膜挤出生产线中按出版物、经纪和订阅划分的数据流。 处理数据由左上角框中表示的物理系统发布。对于订阅者,基于PyQt5编写创建图形用户界面的Python代码,以在屏幕上显示接收到的数据。 请点击此处查看此图的大图。
图 3: 通过 ODBC 将订阅的数据记录到 MS Access 文件中。 为了建立与Microsoft Access的连接,使用了ODBC。使用pyodbc的Python代码是为连接编写的,它允许通过传输用户生成的查询来记录和分析。 请点击此处查看此图的大图。
图 4:整个系统的部署。 建筑物 2 中的代理设备需要两个以太网端口,一个连接到 Intranet,另一个连接到 Internet。出于安全考虑,发布者连接到 Intranet,而订阅者连接到 Internet。代理需要公共 IP 地址才能在校园外访问。因此,互联网上的任何设备都可以订阅已发布的数据。 请点击此处查看此图的大图。
图 5:在操作薄膜挤出生产线时运行数据监控系统。 部署整个系统后,可以在挤出操作期间(右下角)监控加工数据。HMI(右上)中显示的数据在外部发布。启动代理后,应执行发布者和订阅者设备中的代码。然后,数据流按计划在系统中开始。使用进料数据,可以监控和显示薄膜挤出生产线(左下角)。 请点击此处查看此图的大图。
补充数据。请点击此处下载此文件。
Subscription Required. Please recommend JoVE to your librarian.
Discussion
通过遵循所提出的协议,可以监控和记录处理数据,而无需昂贵的IT解决方案,如MES。物联网技术可以更容易地从传统机器获取和交付数据。已经证明,基于消息的协议MQTT成功地充当了聚合物加工生产线的数据通信平台。此外,可以灵活地测量和传输其他数据。这部作品中雇用的其他出版商是Raspberry Pis。值得注意的是,通过将它们安装在工业Raspberry Pi外壳中,可以进一步保护它们,以确保在恶劣条件下的稳健运行。订阅者可以是任何操作系统的任何位置的任何设备。订阅者设备只能通过选择要订阅的主题来接收必要的数据。这项工作表明,MQTT与物联网设备一起可以毫不费力地对聚合物加工生产线进行数据监控。现代工业通信架构倾向于偏离普渡模型等金字塔架构,所提出的方法也表明这一趋势是合理的。
通过使用Python实现软件,代码可以重用于各种平台19。因此,具有不同平台的设备可以参与发布和订阅处理数据。此外,通过导入几个预构建的代码(如PyModbus,pyodbc,paho.mqtt和PyQT5),可以减少大量的编码负载。由于关于MQTT的开发简单明了,因此调试没有太大的困难。但是,将处理数据从旧控制器引入发布者设备需要花费大量精力。如果数据格式和协议不清楚,则应仔细分析数据包。此外,应检查网络安全问题,以防止不必要的数据泄露。
拥有许多机器的大型工厂可能仍然需要传统的基于MES的数据采集,可能使用OPCUA通信。在这种情况下,可以对IT系统进行投资而不会有太大的风险。然而,对于预算紧张的小工厂来说,拟议的模型是一个有前途的替代方案20。因此,MES和物联网预计将在相当长的一段时间内共存和发展。除了注塑成型和挤出等聚合物工艺外,这种方法还可以应用于任何需要数据通信的制造工艺。
Subscription Required. Please recommend JoVE to your librarian.
Disclosures
作者声明没有利益冲突。
Acknowledgments
这项研究得到了首尔科技大学(Seoul Tech)资助的研究计划的支持。
Materials
Name | Company | Catalog Number | Comments |
Edge Device | Adavantech | UNO 420 | Intel Atom E3815 Fanless |
Film Extrusion Machine | EM Korea | Not Available | For production of 450 mm film |
Pydroid | IIEC | Not Available | Android Devices |
Python3 | Python Software Foundataion | Not Available | Windows, Linux |
Raspberry Pi 4 | CanaKit | Not Available | Standard Kit |
References
- Shafiq, S. I., Szczerbicki, E., Sanin, C. Proposition of the methodology for Data Acquisition, Analysis and Visualization in support of Industry 4.0. Procedia Computer Science. 159, 1976-1985 (2019).
- Dilda, V., et al. Manufacturing: Analytics unleashes productivity and profitability. McKinsey & Company. , https://www.mckinsey.com/business-functions/operations/our-insights/manufacturing-analytics-unleashes-productivity-and-profitability (2017).
- Ismail, A., Truong, H. L., Kastner, W. Manufacturing process data analysis pipelines: A requirements analysis and survey. Journal of Big Data. 6, 1 (2019).
- Nwanya, S. C., Udofia, J. I., Ajayi, O. O. Optimization of machine downtime in the plastic manufacturing. Cogent Engineering. 4 (1), 1335444 (2017).
- Zhou, T., Song, Z., Sundmacher, K. Big data creates new opportunities for materials research: A review on methods and applications of machine learning for materials design. Engineering. 5 (6), 1017-1026 (2019).
- Rousopoulou, V., Nizamis, A., Thanasis, V., Ioannidis, D., Tzovaras, D. Predictive maintenance for injection molding machines enabled by cognitive analytics for Industry 4.0. Frontiers in Artificial Intelligence. 3, 578152 (2020).
- Mamo, F. T., Sikora, A., Rathfelder, C. Legacy to Industry 4.0: A Profibus Sniffer. Journal of Physics: Conference Series. 870, 012002 (2017).
- Figueroa-Lorenzo, S., Añorga, J., Arrizabalaga, S. A role-based access control model in Modbus SCADA systems. A centralized model approach. Sensors. 19 (20), 4455 (2019).
- Schleipen, M., Gilani, S. -S., Bischoff, T., Pfrommer, J. OPC UA & Industrie 4.0 - Enabling technology with high diversity and variability. Procedia CIRP. 57, 315-320 (2016).
- Nițulescu, I. -V., Korodi, A. Supervisory control and data Acquisition approach in node-RED: Application and discussions. IoT. 1, 76-91 (2020).
- Perez-Lopez, E.
SCADA systems in the industrial automation. Tecnología en Marcha. 28 (4), 3-14 (2015). - Andersen, D. L., Ashbrook, C. S. A., Karlborg, N. B. Significance of big data analytics and the internet of things (IoT) aspects in industrial development, governance and sustainability. International Journal of Intelligent Networks. 1, 107-111 (2020).
- Kashyap, M., Sharma, V., Gupta, N. Taking MQTT and NodeMcu to IOT: Communication in Internet of Things. Procedia Computer Science. 132, 1611-1618 (2018).
- Connet, J. Mythbusting the MES. Systema. , Available from: https://www.systema.com/blog/mythbusting-the-mes (2021).
- Yeh, C. -S., Chen, S. -L., Li, I. -C. Implementation of MQTT protocol based network architecture for smart factory. Proceedings of the Institution of Mechanical Engineers, Part B: Journal of Engineering Manufacture. 235 (13), 2132-2142 (2021).
- Parian, C., Guldimann, T., Bhatia, S. Fooling the master: Exploiting weaknesses in the Modbus protocol. Procedia Computer Science. 171, 2453-2458 (2020).
- Mishra, B., Kertesz, A. The use of MQTT in M2M and IoT systems: A survey. IEEE Access. 8, 201071-201086 (2020).
- pyodbc 4.0.34. , Available from: https://pypi.org/project/pyodbc/ (2021).
- Ayer, V., Miguez, S., Toby, B. Why scientists should learn to program in Python. Powder Diffraction. 29 (2), 48-64 (2014).
- Boyes, H., Hallaq, B., Cunningham, J., Watson, T. The industrial internet of things (IIoT): An analysis framework. Computers in Industry. 101, 1-12 (2018).