賈玉鵬,李詩然,朱翔宇,李傳璨,王志騰
(鄭州機電工程研究所,河南 鄭州 450000)
S7-1200是德國西門子公司生產的一款將各個功能進行模塊化封裝的緊湊型工業PLC,能夠滿足工業上簡單或復雜的邏輯控制,支持HMI和網絡通信等。它的編程界面友好、編程方式簡單、系統可靠性高以及模塊式設計擴展性強等,使其在自動化控制領域的應用十分廣泛[1]。但是,該PLC的人機接口功能不完善,不能給用戶提供一個友好的人機交互界面,影響對設備運行過程的管理與監控。PC在這一方面強大而完善[2],要實現PC機管理PLC中的過程數據,需要通過通信方式將PLC產生的數據傳送給PC。
S7-1200和PC機的通信方式主要有以下3種。第一,將西門子的HMI軟件WinCC作為動態數據交換服務器,客戶應用程序通過訪問動態數據交換服務器來間接訪問PLC內的數據。然而,該方式需要安裝專門的組態軟件,受組態軟件的限制較多且擴展性較差。第二,安裝西門子OPC服務器,然后按照OPC接口協議規定編寫OPC客戶端接口,可以完成PLC與PC的數據通信。第三,調用PLC的功能塊,配置PC和PLC分別作為客戶端和服務端,同時基于TCP/IP協議進行數據通信[3]。這種通信方式簡單且靈活,但所選用的PLC需要支持以太網TCP/IP協議。本文詳細講解了PLC與PC基于TCP/IP協議的通信方式,并以此搭建機場旅客隨身行李安檢設備狀態監測系統。
本文預建成機場旅客隨身行李安檢設備狀態監測系統。狀態監測系統通過自動化采集和存儲設備的數據,依托已構建的數據倉庫,采用數據挖掘和機器學習等智能技術,完成設備狀態監測和故障診斷等功能,實時感知設備狀態,及早發現設備隱患,并快速輔助設備維修,最終達到大幅延長設備使用壽命和提高工作效率的目的[4]。
機場旅客隨身行李安檢設備狀態監測系統框架,如圖1所示。
PLC現場控制總線PROFINET是基于TCP/IP協議的100 Mb/s總線,可以對所有PROFINET網絡內的所有站點進行數據交換,包括傳感器、電機以及電機控制器等。同時,PLC支持串口通信的功能擴展,可通過串口與多功能數顯表進行通信。在PROFINET網絡內部,PLC通過自帶的網絡接口可以讀取到傳感器、電機以及電機控制器實時的工作電壓、工作時間、工作狀態以及報警信息。此外,PLC可以通過串口讀取到機場旅客隨身行李安檢設備的輸入電壓、電流以及功率等信息。PLC數據采集的硬件組成框圖如圖2所示。

圖1 監測系統的整體框架示意圖

圖2 PLC數據采集硬件組成框圖
由于PLC端在進行數據采集時,需要采集的設備數量過多,且其采集的數據類型大部分是相同的,唯一的不同是不同設備在PLC組態里的地址不同。因此,為了簡化程序,減小程序運行內存,提高CPU運行效率,可通過復用PLC的FC函數塊來進行大量數據的采集。PLC程序中數據采集FC函數塊,如圖3所示。

圖3 PLC程序中數據采集FC函數塊
設計中上位機采用普通工業PC,選取支持TCP/IP協議的PLC,為PLC與工業PC的通信提供了硬件基礎。當工業PC與PLC利用TCP/IP協議進行通信時,兩者的IP地址需要處于同一網段。
西門子S7-1200系列PLC進行TCP/IP通信時,主要調用的系統功能塊包括TCON(建立通信連接)、TSEND(通過通信連接發送數據)以及TRCV(通過通信連接接收數據)。其中,TCON用來建立連接,并進行網絡通信配置,具體的連接參數配置如圖4所示。

圖4 TCON模塊連接參數配置
圖4中,本地指的是PLC,伙伴指的是需要進行連接的工業PC。配置時,需要確保本地的IP地址與伙伴的IP地址處于同一IP段,保證物理上是聯通的。本次設置中,設置伙伴端即工業PC端為主動建立連接的一方。由TCP的基本通信原理可知,在建立TCP/IP連接時,主動建立連接的一方為客戶端。所以,本次通信配置中,PLC設置為服務端,工業PC設置為客戶端。需要說明的是,通信端口的配置需要配置通信雙方的端口,而不是只配置服務端。如圖4所示,PLC的TCON模塊連接參數配置頁面中只能進行PLC端即服務端端口的配置,而客戶端端口需要在工業PC進行軟件編制時配置。
此外,TSEND用于PLC在通信中發送數據,TRCV用于PLC在通信中接收數據。在實際過程中,無論將PLC設置為客戶端還是服務端,其軟件配置沒有差別,都是通過TCON塊建立TCP/IP連接,通過TSEND和TRCV塊進行數據的發送和接收。
在本文的通信方式中,工業PC端編寫的軟件對外建立的通信接口為網絡套接字Socket。它的編程方式根據工業PC端與PLC的連接是主動還是被動有所不同。套接字Socket在編程的過程中通過構建一個中間文件描述符來處理接口到網絡的操作,具體的網絡操作細節由操作系統完成,而不是直接訪問發送與接收包的網絡接口設備。
設計中,工業PC作為客戶端,其套接字編程接口系統函數調用的流程為Socket→bind→connect。建立連接時,工業PC端編制的對應軟件會主動向PLC發起連接請求,在3次握手完畢后,工業PC端的編制軟件與PLC成功建立連接,隨后工業PC端的編制軟件會通過調用read函數和write函數與PLC端進行數據交換。當不需要工業PC與PLC進行數據交換時,工業PC端的軟件可以通過調用close函數主動關閉與PLC的連接。
數據寫入代碼如下:

數據讀取代碼如下:

PLC與工業PC成功完成通信的前提是雙方都能準確接收、發送以及解碼特定的數據。而通信協議是用來對PLC與工業PC交互的數據進行解碼,需要進行數據交互的雙方共同遵守。本文中的通信協議如圖5所示,協議中定義了所傳遞數據的數據類型和所傳遞數據的含義。同時,通信協議中定義了通信雙方的IP地址、端口號以及信息發送和接收的時序,以保證能夠順利將信息數據通過網絡傳輸到指定的位置。
從圖5可以看出,PLC與工業PC通信的指令長度固定為23個字符。其中,起始符為2位、結束符為2位,PLC地址為1位,數據長度為1位,且數據內容固定不發生變化。功能碼為1位int型,數據內容會根據不同的器件發生變化。設備狀態碼為16位int型數據,內部包含設備的工作時間、工作狀態、故障狀態、工作電壓、工作電流以及溫度等數據。

圖5 通信協議格式
搭建通信測試環境如下:PLC包含1塊CPU、1塊擴展I/O模塊、2塊串口通信模塊以及1塊工業交換機模塊;IP地址為192.168.8.180;網絡端口設置為2000。工業PC機選用的是研祥工控機,PC的操作系統為Windows 10。測試過程中將工業PC的IP地址設置為192.168.8.110,隨身行李安檢設備狀態監測系統軟件端口配置為2000。為了監控網絡連接和數據交換,直接在隨身行李安檢設備狀態監測系統軟件中將傳遞的數據打印出來。工業PC主動建立連接、工業PC接收到來自PLC的數據以及工業PC向PLC發送數據,分別如圖6、圖7及圖8所示。

圖6 工業PC主動建立連接

圖7 工業PC接收到來自PLC的數據

圖8 工業PC向PLC發送數據
在前期積累的大量設備異常數據的基礎上,依靠機器學習和三支決策等智能信息技術,由工業PC智能分析PLC端采集的數據,并在可視化界面展示設備的運行狀態。此外,設備三維可視化安全態勢感知、故障診斷、故障報警以及維修保養等功能,可輔助現場維保人員及管理者及早預防設備隱患,優化維修決策,延長設備的使用壽命,提高工作效率。可視化界面如圖9所示。同時,PC端的數據上傳至移動端,由移動端分析各用戶提供給設備的檢測數據和異常信息。存在報警信息時,維修人員需上報報警信息和維修結果,并在維修后將維修內容和經驗上傳至系統形成閉環,從而逐步完善故障診斷模型,提高診斷和預測的精度。

圖9 可視化分析系統界面
PLC與工業PC通過以太網基于TCP/IP協議的通信方式具有簡單靈活等優點。本文基于該通信方式搭建了機場旅客隨身行李安檢設備狀態監測系統,實現了對接入系統的機場安檢設備進行狀態監測、報警信息、剩余壽命預測、健康評估、保養管理、巡檢管理以及維修管理等,實時感知設備狀態,及早發現設備隱患,快速輔助設備維修,制定應急措施,最終達到大幅延長使用壽命和提高工作效率的目的。