<sup id="x7dny"><rp id="x7dny"><big id="x7dny"></big></rp></sup>
    • <label id="x7dny"><tt id="x7dny"><tfoot id="x7dny"></tfoot></tt></label>
      <dfn id="x7dny"></dfn>
      <small id="x7dny"><rp id="x7dny"><rt id="x7dny"></rt></rp></small>
      加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國服務熱線18475208684
      公司新聞
      三維上位機監控系統--前篇:西門子PLC與FactoryIO+C#實現生產線實時監控
      發布時間: 2024-08-08 17:48 更新時間: 2024-12-02 08:00
      觀看三維上位機監控系統--前篇:西門子PLC與FactoryIO+C#實現生產線實時監控視頻

        在當前的工業自動化領域,集成gaoji監控系統已成為提高生產效率和監控設備狀態的重要手段。本文將詳細介紹一個綜合使用FactoryIO、西門子PLC、ESP32和ESP8266處理器、C#應用程序和MQTT服務器的監控系統的架構和功能。該系統利用西門子PLC與各種智能設備和軟件相結合,實現對工廠生產線的高效管理和實時數據監控。

      直觀的界面,易于搭建虛擬工廠環境:
            FactoryIO是一款專為工業自動化設計的三維仿真軟件,提供豐富的工業設備模型和直觀的界面,易于搭建虛擬工廠。它兼容多種PLC和OPC服務器,支持S7協議,實現PLC與虛擬工廠的實時通信和控制,提升工業系統的可視化和調試效率。

      系統架構
            該系統由多個部分組成,包括ESP32用于遠程顯示生產數據,ESP8266作為數據中轉站,C#應用程序用于監控PC狀態和FactoryIO的運行,MQTT服務器用于數據傳輸和通信,西門子PLC負責工業控制,所有這些部分共同構成一個完整的監控系統。


      圖片




      一、C#應用程序:監控PC的系統狀態和FactoryIO的運行狀態,并通過MQTT發送數據。

            C#應用程序運行在PC上,負責監控PC的系統狀態和FactoryIO的運行狀態,并通過MQTT發送數據給ESP32。系統狀態監控:C#應用程序使用PerformanceCounter類和ManagementObjectSearcher類獲取PC的CPU、GPU、內存、網絡等狀態。這些狀態數據包括CPU使用率、GPU使用率、內存使用情況、網絡上傳和下載速度等。FactoryIO運行狀態檢測:C#應用程序通過監控進程來檢測FactoryIO的運行狀態。如果FactoryIO正在運行,C#應用程序會將其狀態發送給ESP32。MQTT通信:C#應用程序使用MQTTnet庫連接MQTT服務器,發送系統狀態和FactoryIO的運行狀態數據。

      部分程序解析:

      圖片

      定義一個名為NetworkTrafficMonitor的類,用于監控網絡流量。類的構造函數初始化了PerformanceCounter實例,用于監控每個網絡接口的發送和接收字節數。GetNetworkTraffic方法返回當前的網絡上傳和下載速度,以KB/s為單位。


      圖片

      定義了Program類,并導入了kernel32.dll和user32.dll中的兩個函數,用于獲取和顯示/隱藏控制臺窗口的句柄。常量SW_HIDE和SW_SHOW用于控制窗口的顯示和隱藏。定義了一個靜態變量messagePart,用于跟蹤發送的消息部分。


      圖片

      Main方法是程序的入口點。首先獲取控制臺窗口句柄并隱藏控制臺窗口。然后創建并配置MQTT客戶端,連接到MQTT服務器。在成功連接和斷開連接時,輸出相應的信息。創建一個NetworkTrafficMonitor實例來監控網絡流量。設置一個定時器,每隔500毫秒發布系統狀態。Zui后,通過Task.Delay保持程序運行。


      圖片

      PublishSystemStatus方法分三部分構建系統狀態的JSON消息,每次發送其中一部分。根據messagePart變量,輪流發送每部分消息。使用MQTTnet庫的MqttApplicationMessageBuilder創建MQTT消息,并在MQTT客戶端連接時發布這些消息。發布成功后輸出日志并更新messagePart。


      圖片

      IsFactoryIORunning方法檢查名為"FactoryIO"的進程是否在運行,以確定FactoryIO的運行狀態。

      GetGPUInfo方法通過調用nvidia-smi命令行工具獲取GPU信息,包括風扇速度、溫度、功率消耗、功率限制、已使用內存、總內存和GPU利用率。

      GetDynamicCPUFrequency方法通過WMI查詢獲取當前CPU頻率。

      GetCPUUsage方法使用PerformanceCounter獲取CPU使用率。

      GetUsedMemory方法通過WMI查詢獲取當前使用的內存大小。

      GetDiskRead方法使用PerformanceCounter獲取硬盤讀取速率。

      GetProcessCount和GetThreadCount方法分別獲取當前系統中的進程數量和線程數量。

      GetUptime方法通過PerformanceCounter獲取系統的正常運行時間。


      二、MQTT服務器:位于云端,負責傳輸和中繼各部分之間的數據。

             MQTT服務器負責中繼各部分之間的數據。在本系統中,MQTT服務器位于云端,具有固定IP地址,所有設備通過MQTT協議連接到該服務器進行數據傳輸。

             數據傳輸和中繼:MQTT服務器接收來自ESP8266、ESP32和C#應用程序的數據,并將其分發給訂閱相應主題的設備。例如,ESP8266從PLC讀取的數據通過MQTT服務器發送給ESP32和C#應用程序,C#應用程序發送的系統狀態數據通過MQTT服務器發送給ESP32。

      在云服務器上部署MQTT服務器的程序及方法:


      工業數據從PLC經過MQTT協議到云端+AI的歷程之一


      三、西門子PLC:負責控制生產線設備,提供生產數據。

      1.      MHJ-PLC-Lab-Function-S71200(FC): 這段代碼展示了如何在西門子PLC1200上與FactoryIO進行通訊。

      讀取當前值并遞增:

      圖片




      PEEK函數用于讀取特定存儲區的值。area := 16#82表示讀取的是輸入(I區)數據。dbNumber := 0表示數據塊編號。byteOffset := 511表示讀取的字節偏移量。將讀取的值存儲在變量#Value中并遞增1。

      寫入遞增后的值:

      圖片

      POKE函數用于向特定存儲區寫入值。向與上一步讀取相同的存儲區寫入遞增后的#Value。

      向輸出區寫入新值:

      圖片

      area := 16#81表示輸出(Q區)數據。向指定的偏移量(1016和1020)寫入值#Value_01_DW和#Value_02_DW。

      重置特定位置的值:

      圖片

      將偏移量為511的值重置為0。目的是為了進行狀態復位或同步操作。

      同步操作和循環:

      圖片

      外層循環運行121次,內層循環運行11次,每次循環讀寫系統時間。RD_SYS_T和WR_SYS_T分別讀取和寫入系統時間,模擬同步操作。讀取偏移量為511的值并存儲在#SyncVal中。如果#SyncVal等于#CompVal,跳轉到標簽M_1。

      標簽M_1的操作:

      圖片

      將偏移量為511的值重置為0。

      這段PLC程序的功能是實現I區和Q區的讀寫操作以及控制邏輯。在I區(輸入區),程序讀取偏移量為511的當前值,將其遞增后寫回。隨后在Q區(輸出區),程序將特定值寫入偏移量1016和1020處,同時將偏移量511處的值重置為0。接著程序進入一個嵌套循環,反復讀寫系統時間,并在每次外層循環結束時讀取Q區偏移量511處的值。如果該值等于預設比較值,則跳轉到標簽M_1,重新將Q區偏移量511處的值重置為0。通過這種方式,程序實現了I區和Q區的數據讀寫及同步控制。

      接著就只需要在PLC上實現功能即可:

      圖片


      四、FactoryIO:一個3D工廠仿真軟件,用于模擬工業自動化系統和分揀流水線。

      設置西門子PLC的連接參數(使用仿真PLC的要選擇PLCSIM):

      圖片


      設置完后會自動連接:

      圖片


      設備組件:

      圖片


      以下是針對PLC程序組建的:

      圖片


      五、ESP32模塊:用于顯示來自PLC和PC的數據,使用LVGL庫創建圖形界面。

      系統啟動(2.0寸顯示屏):

      圖片


      系統暫停(2.0寸顯示屏):

      圖片


      ESP32是一個強大的微控制器,內置Wi-Fi和藍牙功能,非常適合物聯網應用。在本系統中,ESP32使用LVGL庫創建圖形界面,顯示生產數據和PC系統狀態。

      LVGL圖形界面:LVGL(LightandVersatileGraphicsLibrary)是一個開源的圖形庫,支持各種顯示屏和輸入設備。它具有高效、靈活、易于使用等特點,非常適合嵌入式系統。在本系統中,LVGL用于顯示來自PLC和PC的數據,包括生產線設備狀態、生產數據、CPU使用率、GPU使用率、內存使用情況、網絡流量等。

      Wi-Fi連接和MQTT通信:ESP32通過Wi-Fi連接到MQTT服務器,從MQTT服務器接收來自ESP8266和C#應用程序的數據,并將其顯示在圖形界面上。

      六、ESP8266模塊:連接PLC,讀取和寫入數據,通過MQTT與ESP32和C#應用程序通信。


      ESP8266是一個低成本的Wi-Fi微控制器,適合用作物聯網設備。在本系統中,ESP8266連接到西門子PLC,讀取和寫入生產數據,通過MQTT與ESP32和C#應用程序通信。




      聯系方式

      • 電  話:13922889745
      • 經理:向小姐
      • 手  機:18475208684
      • 微  信:18475208684