需要JoVE订阅才能观看此内容。 请登录或开始免费试用

方法文章

基于MQTT的聚合物挤出过程数据通信

3.1K 次观看

DOI:

10.3791/63717

2022年7月15日

本文内容

摘要

本研究提出了一种基于消息队列遥测传输(Message Queuing Telemetry Transport,MQTT)协议的薄膜挤出系统与监控设备之间数据通信的灵活方法。

摘要

本研究旨在通过采用基于发布-订阅模式的消息队列遥测传输(Message Queuing Telemetry Transport, MQTT)协议,在TCP/IP之上构建一种适用于聚合物加工设备的灵活数据通信结构。即使使用传统设备,加工数据也可通过互联网通信由任意位置的多种设备进行测量和记录。基于消息的协议实现了灵活的通信方式,克服了现有客户端-服务器协议的局限性。多个设备可订阅由源设备发布的加工数据。该方法支持多个发布者与订阅者之间的数据通信。本研究实现了一个系统,可将来自设备及附加传感器的数据发布至消息代理(message broker)。订阅者可对代理转发的工艺数据进行监控和存储。该系统已部署并应用于一条薄膜挤出生产线,以验证其有效性。

引言

在第四次工业革命浪潮中,获取和监控各种加工数据已成为重要任务1。特别是利用工艺数据改进制造过程,并建立高效的运行计划,将成为所有制造设施的重要目标2,3。如果能够及时从工厂发出警报或实施预测性维护,则可大幅减少停机时间4。近年来,针对聚合物加工过程的数据分析已开展了大量研究工作5,6。然而,由于从现有系统中获取此类数据存在困难,开展这些工作并不容易7。控制系统与仪表的层级结构使得数据采集与通信变得复杂。

首先,无法从不同生产日期的设备上获取数据。由于需要在专有格式的不同现场总线之间实现互操作性,因此实现不同设备间的通信十分困难。这种方式使得通信方法和数据格式保持私密。虽然这有助于轻松维护数据安全,但使用户在服务和未来发展方面依赖于设备制造商。目前,连接到聚合物加工设备的现代控制计算机大多采用基于 Windows 的系统,但其运行的软件通常是在专有的开发环境中创建的。尽管可以使用不同厂商的可编程逻辑控制器(PLC)与传感器或执行器进行通信,但在许多情况下,上层的监控与数据采集(SCADA)系统仍依赖于控制计算机8。这种做法导致了大量协议、现场总线和控制系统在市场上相互竞争。尽管这种复杂性随着时间的推移已逐步缓解,但目前仍有多种现场总线和协议在广泛使用。

另一方面,控制设备与SCADA之间的通信已由开放平台通信统一架构(OPCUA)实现标准化9。此外,SCADA与制造执行系统(MES)之间的通信也主要通过OPCUA实现。在这种紧密的层级结构中,难以自由提取数据用于过程监控与分析。通常,必须从SCADA或MES中提取数据10。如前所述,这些系统具有供应商专属性,且数据格式很少开放。因此,数据提取需要原始信息技术/运营技术(IT/OT)解决方案供应商的大量支持,这可能阻碍监控与分析所需的数据获取。

在薄膜挤出生产线中,控制用PC由SCADA系统进行监控11。SCADA系统由计算机程序操作,而该程序通常难以修改。尽管该程序可能具备可编辑性,但修改过程成本高昂且耗时。为了便于远程监测和分析加工数据,这些数据应能够从任意位置访问。若需在远离现场的位置监控加工数据,计算机程序必须具备将加工数据流式传输至互联网的功能12。此外,采用开放且免费的方法可降低数据采集的成本13。该方法使得即使资金有限、无法投资商业IT解决方案的小型工厂也能够进行数据分析14

本研究采用基于发布-订阅模型的消息协议。消息队列遥测传输(MQTT)是一种开放的标准协议,可实现多个数据提供者与消费者之间的消息传递15在此,我们提出一种利用MQTT协议对现有制造设施进行数据采集、传输与监控的系统。该系统在薄膜挤出生产线上进行了测试,以验证其性能。来自原始控制器的数据被传输至边缘设备 通过 Modbus 协议。随后,数据被发布至代理服务器。与此同时,两台 Raspberry Pi 将测得的温度和照度发布至同一代理服务器。此后,互联网上的任何设备均可订阅该数据,并对其进行监控与记录,如图所示。 图1本研究中的方案展示了整个操作流程的具体实施方法。

访问受限。请登录或开始试用以查看此内容。

方案

1. 代理服务器安装

注意:用于监控和记录加工数据 通过 互联网,应准备一个用于转发数据的计算机系统。该系统需可被发布者和订阅者共同访问,如图所示 图2因此,系统需要一个在通信开始前已知的公共IP地址。系统上安装了一个名为Eclipse Mosquitto的开源MQTT代理。13.

  1. 将计算机连接到互联网,获取一个公共 IP 地址。在操作系统的 IP 设置中输入该地址。
  2. 在计算机上安装诸如 Eclipse Mosquitto 之类的代理软件。通过浏览器下载安装文件并运行安装程序。
  3. 使用 MQTT Lens 等测试程序测试代理。通过浏览器下载 MQTT Lens 并安装。然后,确认已发布的消息能够被成功订阅。

2. 主要发布者的准备

注意:该计算机发布机器数据 通过 通过 TCP 向代理服务器发送 MQTT。遗留数据应被解析并重新打包后发出,通常可通过 RS485 或以太网实现。硬件层面的连接应根据总线类型进行验证。挤出机发出数据 通过 以太网端口上的 Modbus。

  1. 在设备现场物理安置一台计算机,并将其设置为主要发布者。
    注意:尽管并非强制要求,本研究中仍选用了工业计算机。
  2. 在计算机上安装 Python3。使用浏览器下载安装程序文件并执行。
  3. 安装 PyModbus16使用浏览器下载安装程序文件并执行。
  4. 检查由人机界面(HMI)控制机器的挤出控制器,并将挤出控制器连接至主发布端。
  5. 使用 Modbus 工具(如 ModbusPoll 或 QModMaster)从设备中完整识别 Modbus 协议中的数据及其对应的地址。确保所发送的设备数据在 Modbus 工具的相应寄存器单元中正确显示。
  6. 在发布者计算机上编写一段 Python 代码,用于从挤出控制器获取数据。
    注意:以下是一个代码示例:
    from pyModbusTCP.client import ModbusClient
    client = ModbusClient(主机="192.168.1.***",端口=***,单元号=***)
    client.open()
    ExtrusionData = str(client.read_holding_registers(1000, 58))
  7. 合并来自其他设备的附加数据流 通过 PCIe、USB、RS232 和 RS485
    注意:此操作十分简单。一旦获得额外的数据字符串,只需将该数据添加到现有数据流中,可通过以下代码实现:
    挤出数据 += 附加数据
  8. 通过 pip install paho-mqtt 安装 paho-mqtt 后,导入 paho.mqtt.client17.
  9. 实现代码以连接到代理并发布数据。
    注:请参考以下代码示例:
    url="117.xx.xxx.xx";端口 = 1883;用户名 = "****";密码 = "请提供需要翻译的源文本内容。";主题 = "挤出机"
    mqttc = mqtt.Client()
    mqttc.username_pw_set(用户名, 密码)
    mqttc.connect(host=url, port=port)
    mqttc.loop_start()
    ExtrusionData = str(client.read_holding_registers(1000, 58))
    Pub1 = mqttc.publish(topic, 挤出数据)
    Pub1.wait_for_publish()

3. 额外发布者的准备工作

注意:该计算机还发布机器数据 通过 通过 TCP 将 MQTT 发送到代理。有时需要进行主发布设备无法完成的额外测量,此时可采用物联网(IoT)设备(如 Raspberry Pi 和 Arduino)来承担相应任务。在本研究中,Raspberry Pi 被用于采集温度数据和照度数据。该操作流程与第 2 节协议部分相似。

  1. 在传感器附近放置一个 Raspberry Pi。
    注意:由于布线距离有限,树莓派无法远离测量位置放置。然而,由于挤出机附近温度很高,设备需至少距离测量位置1 m以上。
  2. 在命令行中通过以下命令在 Raspberry Pi 上安装 Python3:
    sudo apt update
    sudo apt install python3 idle3
  3. 实现用于采集传感器数据的代码。传感器数据可以被传输 通过 I2C 或 GPIO
    注:有关额外的温度数据,请参考以下代码示例 通过 通用输入输出(GPIO)
    from max6675 import MAX6675
    cs_pin1 = 24;clock_pin1 = 25;data_pin1 = 18
    cs_pin2 = 9;clock_pin2 = 11;data_pin2 = 19
    单位 = "C"
    thermocouple1 = MAX6675(cs_pin1, clock_pin1, data_pin1, units)
    thermocouple2 = MAX66675(cs_pin2, clock_pin2, data_pin2, units)
    T1 = 热电偶1.get()
    T2 = thermocouple2.get()
  4. 导入 paho.mqtt.client。
  5. 重复使用第2节中的代码连接并发布数据到代理。

4. 订阅者的设置

注意:任何连接到互联网的设备均可通过代理服务器接收加工数据。via Python 代码对数据进行处理和可视化。如果开发存在困难,可使用 Google Play 上的 MQTT Client 或 App Store 中的 MQT Tool 等现有应用程序。由于用户界面的实现过程较为复杂,此处不作详细描述。另请注意,App Store 中的现有应用程序(如 MQT Tool)也可接收数据。

  1. 启动一个设备以订阅互联网。确保物理电缆连接,然后在命令行中执行对代理服务器 IP 的 ping 操作(例如,ping 117.xx.xxx.xx)。
  2. 根据设备和操作系统安装合适的 Python 环境。例如,在安卓设备上应安装 Pydroid3,而不是从 Google Play 安装 Python3。
  3. 导入 paho.mqtt.client 和 paho.mqtt.subscribe 以连接到代理服务器并从中接收数据。
    注意:请参考以下代码示例:
    import paho.mqtt.client as mqtt
    import paho.mqtt.subscribe as subscribe
    url="117.xx.xxx.xx"; port = 1883; username = "****"; password = "xxxxx"; topic = "Extruder"
    mqttc.username_pw_set(username, password)
    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")
  4. 使用 PyQT5 根据需要构建用户界面。
    注意:此部分较为复杂,侧重于对接收数据的图形化展示,而非通信本身。相应代码作为补充数据提供。
  5. 通过执行已构建的代码,在图形用户界面(GUI)上显示传入的数据。

5. 数据记录

注意:在监测过程中,加工数据可同时写入数据库。本研究选用了一个实验室规模的数据库。这些数据通过 Microsoft Access 文件进行连接,以便在用户计算机上轻松地进行数据写入和读取。此外,还可以通过查询即时建立表格,以便在 Microsoft Excel 等电子表格软件中分析数据。

  1. 选择一个订阅设备以记录数据。
  2. 执行以下命令导入 pyodbc "pip install pyodbc" 在命令行中,用于 Python 代码访问数据库,如图所示 图318.
  3. 通过 Python 代码向数据库发送查询以记录加工数据。参考以下 Python 代码 图3 该方法。
  4. 向数据库发送查询以检索已记录的数据。
    注:以下提供了一个数据检索的代码示例:
    import pyodbc
    [x for x in pyodbc.drivers() if x.startswith('Microsoft Access Driver')]
    conn_str = (
    DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};
    r'DBQ=C:\Users\data_analysis\db1.accdb;'
    )
    cnxn = pyodbc.connect(conn_str)
    crsr = cnxn.cursor()
    for table_info in crsr.tables(tableType='TABLE'):
    print(table_info.table_name)
    sql = """\
    SELECT * FROM Process_Condition
    """
    crsr = cnxn.execute(sql)
    for row in crsr:
    RetrievedData = pd.read_sql(sql, cnxn)
    crsr.close()
    cnxn.close()

6. 部署

注意:如果所有设备均可连接到互联网,则设置较为简单。然而,为了保障设备端数据的安全,发布者可仅位于内网中。在此情况下,消息代理可作为通往互联网的网关。为此,该代理需配备两个以太网适配器,其中一个必须具有公网 IP 地址。在完成所有组件的开发后,应将代码部署到各个设备上,如图4所示。连接方式(有线或无线)并不重要,但必须确保安全,使每个设备均可访问该代理。这意味着代理可在内网与互联网之间充当安全边界上的网关。当然,即使所有设备均暴露在互联网中,从通信角度来看也并无问题。

  1. 将挤出控制器、主发布者以及附加的发布者连接到内网端口 通过 以太网
  2. 将代理服务器的一个以太网端口连接到内网,另一个连接到互联网。
  3. 通过为所有订阅者重复步骤 4.1,将其连接到互联网。

7. 执行

注意:为了测试整个系统,我们启动了挤出生产线,并运行了所有 Python 代码和 Mosquitto。

  1. 启动挤出过程。在设备的HMI界面上,设置温度并通过触摸HMI屏幕上的按钮启动加热器。当达到所需温度后,启动螺杆旋转以挤出聚合物熔体。
  2. 打开所有计算机,通过命令“net start mosquitto”在代理设备上启动代理软件,然后根据需要运行Python代码以监控和记录加工数据。
    注意:步骤7.1和步骤7.2的顺序可以调换。只需在命令行中输入“python3 xxxxx.py”并按Enter键即可执行Python代码。可将此命令添加到启动程序中,以避免每次设备重启时重复输入。

访问受限。请登录或开始试用以查看此内容。

结果

研究发现,HMI 中显示的数据以及由 Raspberry Pi 测量的数据均在订阅者中被监测和记录,如图5所示。如视频中所示,处理数据已记录到数据库中。

使用MQTT、Modbus物联网连接的网络示意图:薄膜挤出、树莓派、传感器、数据库。
图1:使用MQTT协议进行数据传输的示意图。 代理服务器将消息从发布者转发至订阅者。本图中的发布者包括主发布者和附加发布者(树莓派)。主发布者直接连接至挤出机以接收数据。只要网络容量允许,订阅者的数量不受限制。订阅者可将数据重新发布给其他订阅者,以便将其记录到如Mi...

访问受限。请登录或开始试用以查看此内容。

讨论

通过遵循本方案,无需使用制造执行系统(MES)等昂贵的IT解决方案,即可对加工数据进行监控和记录。物联网(IoT)技术可更便捷地从传统设备中获取并传输数据。研究表明,基于消息的协议MQTT可成功作为聚合物加工生产线数据通信的平台。此外,其他附加数据也可灵活地同步测量和传输。本研究中使用的附加发布者为树莓派(Raspberry Pi)。值得注意的是,可通过将树莓派安装在工业级防护外壳中,进一步增强其在恶劣环境下的稳定运行能力。订阅者可以是任何位置、任何操作系统的任意设备。订阅设备可通过选择订阅主题,仅接收所需的数据。本研究证明,MQTT协议结合物联网设备能够简便地实现聚合物加工生产线的数据监控。现代工业通信架构正逐渐偏离普渡模型(Purdue model)等金字塔式结构,而本研究也表明这一发展趋势是合理的。

通过使用 Python 实现软件,该代码可被复用于多种平台19。因此,不同平台的设备均能够参与处理数据的发布与订阅。此外,通过导入多个预构建的代码库(如 PyModbus、pyodbc、paho.mqtt 和 PyQT5),可大幅减...

访问受限。请登录或开始试用以查看此内容。

披露

作者声明无利益冲突。

致谢

本研究由首尔科技大(首尔科学技术大学)资助的研究项目支持。

访问受限。请登录或开始试用以查看此内容。

材料

本文使用的材料清单
姓名公司目录编号评论
边缘设备AdavantechUNO 420Intel Atom E3815 无风扇
薄膜挤出机EM Korea不可用用于生产 450 mm 薄膜
PydroidIIEC不可用安卓设备
Python3Python 软件基金会不可用Windows, Linux
Raspberry Pi 4CanaKit不可用标准套件

参考文献

  1. 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).
  2. 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).
  3. Ismail, A., Truong, H. L., Kastner, W. Manufacturing process data analysis pipelines: A requirements analysis and survey. Journal of Big Data. 6, 1(2019).
  4. Nwanya, S. C., Udofia, J. I., Ajayi, O. O. Optimization of machine downtime in the plastic manufacturing. Cogent Engineering. 4 (1), 1335444(2017).
  5. 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).
  6. 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).
  7. Mamo, F. T., Sikora, A., Rathfelder, C. Legacy to Industry 4.0: A Profibus Sniffer. Journal of Physics: Conference Series. 870, 012002(2017).
  8. 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).
  9. 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).
  10. Nițulescu, I. -V., Korodi, A. Supervisory control and data Acquisition approach in node-RED: Application and discussions. IoT. 1, 76-91 (2020).
  11. Perez-Lopez, E. SCADA systems in the industrial automation. Tecnología en Marcha. 28 (4), 3-14 (2015).
  12. 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).
  13. Kashyap, M., Sharma, V., Gupta, N. Taking MQTT and NodeMcu to IOT: Communication in Internet of Things. Procedia Computer Science. 132, 1611-1618 (2018).
  14. Connet, J. Mythbusting the MES. Systema. , Available from: https://www.systema.com/blog/mythbusting-the-mes (2021).
  15. 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).
  16. Parian, C., Guldimann, T., Bhatia, S. Fooling the master: Exploiting weaknesses in the Modbus protocol. Procedia Computer Science. 171, 2453-2458 (2020).
  17. Mishra, B., Kertesz, A. The use of MQTT in M2M and IoT systems: A survey. IEEE Access. 8, 201071-201086 (2020).
  18. pyodbc 4.0.34. , Available from: https://pypi.org/project/pyodbc/ (2021).
  19. Ayer, V., Miguez, S., Toby, B. Why scientists should learn to program in Python. Powder Diffraction. 29 (2), 48-64 (2014).
  20. Boyes, H., Hallaq, B., Cunningham, J., Watson, T. The industrial internet of things (IIoT): An analysis framework. Computers in Industry. 101, 1-12 (2018).

访问受限。请登录或开始试用以查看此内容。

重印与许可

标签

MQTT 协议发布-订阅模式消息代理过程监控Python 自动化Modbus 通信物联网设备数据记录