裴忠誠 ,陳洪駿 ,葉 樺
(1.東南大學 自動化學院,南京 210096;2.蘇州經貿職業技術學院 機電與信息技術學院,蘇州215009)
遠程通信和監控技術是通過各種通信手段收集并處理遠端監控設備的多元信息,以便實時了解設備的運行情況以及對設備進行統一管理的一種技術。為了幫助自動化設備企業進一步縮短設備故障診斷時間,提高設備維護效率,改進設備制造質量,降低去現場修改PLC程序的人員費用[1]。本項目設計了一種基于歐姆龍PLC的工業監控網絡系統,該系統現場設備使用歐姆龍CP1H型號PLC,其核心技術之一就是對Host Link FINS協議解析和使用。通過對PLC通信指令進行解析,基于通信協議定制相關監控指令和操作指令來實現監控軟件與PLC的遠程通信以及遠程程序下載上傳[2]。維護人員只需連接至網絡,即可通過監控軟件在線監視PLC的程序運行情況,從而降低運營成本。
整個監控系統分成2個部分:現場設備和監控軟件,如圖1所示?,F場的PLC負責設備的控制和信息采集;信號發射器通過串口和PLC相接,用于實現PLC設備與監控軟件的遠程通訊,實時監測PLC設備的運行狀態以及實現程序的遠程修改和升級[3];服務器主要作為數據通信與數據處理部分,主要為客戶端軟件提供它所需的數據源,同時將來自客戶端軟件的遠程控制指令實時轉發給目標PLC設備;客戶端部分則主要提供數據監控與分析、程序升級、客戶信息查詢、設備位置管理等功能[5]。

圖1 監控系統結構圖Fig.1 Monitor and control system structure
CP1H型號PLC設備沒有配置網絡拓展模塊,無法直接和服務器通信。需要在PLC側開發信號發射器,使PLC設備能與監控軟件進行數據通信。發射器模塊具有串口數據轉WIFI發送、串口數據轉以太網發送和串口數據轉GPRS發送3種功能,根據PLC設備所在現場的不同環境,選擇不同的工作模式。
底層PLC部分選用的是歐姆龍公司較新的一款PLC CP1H,是一種能夠實現高速處理、高功能的程序一體化型PLC,處理速度可達到以往CP1M2A設備的10倍;豐富的高速計數器功能,多樣的脈沖控制,各種組件如串口、USB等使其連接相容性大大提高;可用于CJ拓展系列的高單元功能,靈活性比較高[4]。它能夠支持較新的Host Link FINS傳輸協議,通過串口直接與信號發射器相連,負責數據收發,并且能自動校驗,通過通信鏈路進行檢測。
PC監控軟件主要負責數據的采集、處理、實時顯示、警報和PLC程序的遠程下載、調試,從而實現對PLC的實時狀態進行監控等[6]。這個功能方便監控人員查詢PLC設備的參數數據狀態,及時發現故障點,以及進行參數配置和遠程指令控制操作。
監控軟件包括客戶端和服務器2部分,服務器分別與客戶端和PLC設備通信。服務器對接收到2邊的指令進行處理和轉發,實現設備和終端通信,并且將數據存儲到數據庫中,為客戶端提供數據源。客戶端部分主要是收發指令,并且對數據進行處理,顯示出監控狀態。MFC中的各種類構成了一個應用程序框架,在此基礎上建立Windows應用程序,是一種相對SDK來說更為簡單的方法[9]??蛻舳瞬捎肕FC技術設計監控所需的界面,后臺進行指令傳送、解析、數據接收和處理,并且將需要的數據在軟件界面上顯示,方便工程人員監控。當工程人員需要調試時,可以將監控程序關閉,切換到調試狀態,系統打開PC上的CX-ONE軟件,進行修改、測試,并且能夠遠程上傳下載程序。
Host Link協議是歐姆龍公司產品的一種常用通信協議,通過Host Link協議,PLC可以和開發軟件相互之間進行串口通信。Host Link FINS協議采用的是問答式的通信方式,主機(Host computer)沒有向PLC發送任何指令時,PLC設備除了內部程序執行發送數據指令,是不會通過串口對外發送數據。當通信鏈路為通的狀態,主機向連接的PLC發送一條指令,PLC必須返回對應的一條指令。PLC接收到主機發送的指令之后,首先進行指令校驗(FCS),沒有問題,取出FINS的指令部分,轉換成ASCII碼執行相關操作,執行結束后將返回給主機的指令重新進行校驗,發送給主機,完成一次通信過程。
Host Link FINS協議是基于Host Link協議的FINS通信協議。主機發送數據幀中,由Host Link數據幀頭、FINS發送指令數據、Host Link FCS校驗碼、Host Link幀尾組成,在PLC的返回數據幀中,由Host Link數據幀頭、FINS返回指令數據、Host Link FCS校驗碼、Host Link幀尾組成。
圖2和圖3是Host Link FINS發送指令和應答指令的數據幀格式。

圖2 Host Link FINS發送指令Fig.2 Host Link FINS send command

圖3 Host Link FINS應答指令Fig.3 Host Link FINS reply command
@:在PLC的Host Link FINS數據幀中,是以ASCII碼‘@’為開頭;
Unit No.:單元號,對應PLC內置串口或串行通訊單元設置的Host Link單元號;
Header code:在PC主機直連PLC的情況下,頭代碼為FA;
ICF:為信息控制域,用于標明指令和響應,當FINS指令依賴網絡就用80,如果是直連就用00;
RSV:為系統保留,設定為00;
GCT:為網關允許數目;
DNA:為目的網絡號;
DA1:為目的節點號;
DA2:為目的單元號;
SNA:為源網絡號;
SA1:為源節點號;
SA2:為源單元號;
SID:為服務和響應的標識號,可任意設置,指令和響應對應相同;
MRC和SRC:分別為FINS指令的主指令和從指令;
FCS:用于標明所操作的數據地址、范圍等,在響應幀中前2個字節MRES和SRES構成響應碼,用來診斷錯誤信息。
2.2.1 FINS數據幀格式
上面的Host Link FINS指令中,包含了FINS指令。FINS指令的數據幀格式如圖4和圖5所示。

圖4 FINS發送指令Fig.4 FINS send command

圖5 FINS應答指令Fig.5 FINS reply command
指令開頭2字節是指令碼,這里0102說明是讀存儲區的指令,82是變量分類,根據指令碼的不同而含義不同,當指令碼是讀數據指令時,那么這個字節的意義就是確定數據區,82表示DM存儲區。接著為數據區的起始地址(3個字節),字數(2個字節)。
2.2.2 FCS校驗碼
數據幀中Host Link結束符前面是FCS校驗碼。校驗采用異或校驗方式,將FCS字段之前的所有字段逐一進行異或,最終得到的就是FCS校驗碼,接收端在收到指令的時候,就要用這個FCS校驗碼去驗證這條指令是否正確。如表1所示為FCS校驗碼計算。

表1 FCS校驗碼計算Tab.1 FCS code calcutation
[A]FCS校驗碼采用的是逐位異或,如表中第3列和上一行第5列的值進行異或,異或值為第5行,依次異或,XXXXXXXX為最終異或結果。
2.2.3 PLC數據區設計
Host Link FINS協議具有一定字節數量的數據頭和尾。傳輸的數據連續字數越長,傳輸的效率越高,接收一個比特位時需要接收最短數據包長度為43字節,傳輸效率只有2.3%,當傳輸連續50字數據時,傳輸效率有54%,當連續傳輸200個字的時候,傳輸效率高達82.6%,所以為了能夠高效地傳輸有效數據,PLC的內存區最好取連續區域,表2列出PLC中內部劃分的幾種常用IO區。
為了能夠增加傳輸效率,可以將待傳輸數據發送到一個連續的內存區域中,比如是D區,這樣可以通過比較簡單的指令完成一系列的數據通信。在有限的串口傳輸速度下,這是一種比較好的提高傳輸效率的方法[7-8]。
如圖6、圖7所示為監控軟件指令發送(PLC設備接收)和接收(PLC設備返回指令)的通信指令的流程。用MFC軟件編寫出簡易的串口通信軟件,MFC主要做的是根據輸入的指令計算出FCS校驗碼,然后生成一條完整的指令發送到PLC中。在數據返回部分,采用多線程技術和基于MFC的消息處理機制,當有數據接收時,系統捕獲到這一消息,觸發串口接收事件,然后從接收緩沖區讀取數據,并且存放在隊列中,當數據讀取完畢時,設置數據處理事件,系統捕獲到這一事件后,在數據處理線程中繼續從隊列中讀取數據并且進行解析處理,事件處理線程開始FCS校驗指令,取出所需要的數據。這種采用多線程的方式更加高效利用CPU執行能力,加快了數據讀取處理能力[9]。

圖7 指令接收流程圖Fig.7 Flow chart of reply command
在通信之前要先進行初始化,設置傳輸波特率,數據傳輸格式,要根據PLC中的設置來確定監控軟件的這些串口通信參數[10]。
MFC支持MSComm插件,可以進行簡易串口收發數據[11]。如圖8所示為讀取數據的通信界面。

圖8 監控軟件測試界面Fig.8 Monitor and control software testing interface
圖8中為數據要求從D20000起50個字的數據,在接收數據框中便顯示接收到的數據。從監控軟件界面上發送和接收的數據來看,整個監控過程中能夠正確地發送需要的指令,以及接收到從底層PLC返回來的所有需要的數據,監控功能完成。
基于Host Link FINS協議的串口通信方式具有較強的數據傳輸能力和傳輸效率,其問答模式大大提高了這種方式下數據傳輸的可靠性。本文以歐姆龍公司CP1H型號的PLC為應用背景,設計了基于Host Link Fins協議的PLC設備遠程監控系統。信號發射器的設計實現了PLC串口數據在網絡中的傳輸;基于MFC開發的通信軟件則實現了監控軟件與PLC的遠程通信功能,能夠對PLC進行遠程監控與管理。現場測試和運行結果表明,該系統運行穩定可靠,PLC通信性能較高,具有很好的實用價值。
[1] 侯瑞春,丁香乾,陶冶,等.制造物聯及相關技術架構研究[J].計算機集成制造系統,2014,20(1):11-20.
[2] 郭永勇,潘存海,李軍鋒,等.WinCC監控系統中OPC通信及數據處理方法[J].制造業自動化,2014,36(2):98-100.
[3] 謝揚球,吳宏棟.微成形制造中的上下位機通信設計及實現[J].制造業自動化,2013,35(1):71-72,84.
[4] 樊銳,宋曉亮.通過DP通訊改變6RA70裝置參數設定在鋁冷軋機上的應用[J].制造業自動化,2014,36(3):141-145,156.
[5] 蘇寶平.基于無線通信的軌道車防溜智能監控系統設計[J].制造業自動化,2014,36(3):46-49.
[6] 黃大偉.LabVIEW與S7-200 PLC PPI協議通訊的設計與實現[J].自動化與儀器儀表,2013(4):94-95,99.
[7] 段潤群,謝云山.上位機軟件與S7-1200 PLC的OPC通信研究[J].自動化與儀器儀表,2014(5):13-15,19.
[8] 蘇虎平,沈三民,劉文怡,等.基于冗余CAN總線的實時通信系統設計[J].自動化與儀表,2013,28(1):26-29,55.
[9] 孫鑫.VC++深入詳解[M].北京:電子工業出版社,2012.
[10]劉艷平,李化南,趙連環,等.基于ARM的FreeModbus通信協議的實現[J].自動化與儀表,2013,28(5):22-26.
[11]李敏.基于PPI協議的PLC通信控制設計[J].自動化與儀器儀表,2013(2):66-68. ■