西門子中國授權一級總代理商?西門子伺服電機
| 更新時間 2024-12-02 08:00:00 價格 請來電詢價 西門子PLC 西門子觸摸屏 西門子伺服電機 西門子變頻器 西門子直流調速器 西門子電纜 聯系電話 13922889745 聯系手機 18475208684 聯系人 向小姐 立即詢價 |
西門子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#應用程序通信。
七、FactoryIO運行視頻
,時長01:26
八、總結
通過本系統的實現,我們可以看到現代工業自動化在技術集成和數據通信方面的強大能力。此系統不僅提高了生產線的可視化和操作便捷性,還通過gaoji的數據處理和通信技術,確保了生產過程的Zui大化效率和安全。隨著技術的進一步發展,類似的集成解決方案將在未來的工業應用中扮演越來越關鍵的角色。
此篇文章為前篇,之后是中篇(基于C#、Unity、PLC的可視化),難度會一級級上升。
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684