李 程,趙國新,樊雨軒
(上?;ぱ芯吭河邢薰?,上海 200062)
PKS 系統是霍尼韋爾公司推出的基于批處理、過程控制、SCADA 應用的開放的混合控制系統,作為霍尼韋爾公司旗下一套成熟的DCS 過程控制系統,與業內其他控制系統一樣,包含所必須的各種通訊協議,并且開放了OPC(OLE for process control)接口,具有極強的兼容性,可以滿足各式各樣的通訊需求。集成商和用戶可以依據其內嵌的程序對通訊進行組態,達成與其他軟件的數據交流?,F存在一套高分子量聚乙烯粉料PKS 生產控制裝置,其需讀取第三方設備數據,并向所在市的市應急管理局內部網絡提供關鍵參數,保證安全生產。本文介紹了PKS 系統作為服務器與作為客戶端的第三方設備以Modbus RTU 和OPC兩種通訊協議進行通訊所需的軟硬件配置。

表1 部分功能碼說明表Table 1 Partial function code description table
OPC 是用于過程控制的OLE(object linking and embedding),基于OLE、COM(部分對象模型)和DCOM(分布式部分對象模型)技術,是一種運用廣泛的工業標準,由超220 家成員的國際組織OPC 基金會管理,常見于各類過程控制與自動化系統中。OPC 最大的特點就是它包含一整套的接口,對象屬性以及數據集成方法,這給用戶在實際的工業自動化控制中帶來了很大的便利;另外,OPC 采用了用戶權限訪問控制、數據加密技術、防火墻隔離技術和病毒預防技術,大大提高了數據的安全性和保密性[1]。
OPC 采用客戶端/服務器模式,即Client-Server(C/S)結構,服務器Server 負責數據的管理,客戶端Client 負責用戶交互。客戶端與服務器通過由交換機構建的局域網相連,客戶端接收用戶的請求后主動向服務器發出請求指令,再由服務器進行被動地響應,對數據庫進行查詢或其它操作后將反饋發送至客戶端,客戶端再將數據進行處理后呈現給用戶。對一個服務器來說,能對應多個客戶端;同理,單個客戶端也可以連接多個服務器。這種模式交互性強、響應速度快、存取數據安全,善于處理大批量數據。
OPC 基金會推出了統一構架UA(Unified Architecture)支持分布式系統間的OPC 通訊,其包含DA(數據訪問)、HAD(歷史數據訪問)、A&E(報警通知)。UA 框架將OPC 通訊的數據獲取方式進行了統一,減少了用戶調用數據次數;其還支持復雜的數據結構,提供了可擴展的元數據模型;其提供基于不同編程平臺的開發包,不僅支持Windows 系統,還支持Linux 和嵌入式設備;UA 框架還使用公共密鑰體系(PKI)和X509v3 證書等安全技術,定義了一套完善的安全機制[2]。
Modbus 是工業領域內作為業界標準的一類串行通訊協議。Modbus 一次通訊其發送和接收的數據包由若干幀組成,協議定義了這些幀的意義,控制器按照協議解釋這些幀數據來實現通訊[3]。Modbus 細分ASCII、RTU、TCP 等協議,其中Modbus RTU 是一種基于Modbus 協議被廣泛運用于工業監控領域的通訊協議,使用RS-232、RS-422、RS-485串行口(Serial)或Ethernet 設備進行通訊,得到業內控制軟件的廣泛支持。
Modbus RTU 使用主/從技術在設備間進行通訊,即Master/Slave 架構。在通訊節點中,只有一個節點作為Master 節點,其余節點作為Slave 節點,每個Slave 節點必須有唯一的地址。通常只有被指定為Master 節點的節點可以發送包含地址的指令,而所有Slave 節點都會收到指令,但只有對應地址的Slave 節點會執行并回應指令,Master 節點和各Slave 節點交替發送信號,即半雙工通訊。
Modbus RTU 有著嚴格的通訊格式,以16 進制進行表達,每個主機Master 和從機Slave 發送的通訊信息幀都遵循以下格式:地址碼 功能碼 數據區 校驗。地址碼:第一個字節,8Bit,代表從機Slave 在通訊節點中的地址ID,從1 到247(F7H),每個從機Slave 的地址碼必須唯一。功能碼:第二個字節,8Bit,為要求從機Slave 執行的命令。數據區:隨功能碼的不同而改變格式,N*8Bit,主機Master和從機Slave 對于同一個功能碼的格式不同,以03H 功能碼為例,數據幀格式表見表2。校驗:最后兩個字節,16Bit,采用CRC(循環冗余檢測)標準進行校驗。在同樣波特率下,可比ASCII 方式傳送更多的數據[4]。

表2 主機Master和從機Slave03H功能碼數據幀格式表Table 2 Master and slave slave03H function code data frame format table

表3 常見錯誤碼表Table 3 Common error codes table
CRC 碼由發送設備計算,接收信息的設備再重新計算接收到信息的CRC 碼,比較計算得到的CRC 碼是否與接收到的相符,如果兩者不相符,則表明出錯[5]。地址錯誤或Modbus CRC 校驗錯誤的話從機Slave 不會返回信息幀,其他錯誤從機Slave 會返回錯誤碼,錯誤數據幀的格式如下:地址碼 功能碼 錯誤碼 校驗。錯誤數據幀中的功能碼最高位置位,即在原本功能碼上增加80H。錯誤碼:第三個字節,不同錯誤碼代表不同的錯誤類型,方便調試人員查詢錯誤原因。
OPC 通訊所需硬件較為簡單,只需PKS 服務器與交換機通過網線相連,通過交換機再與第三方服務器進行連接。為保證帶寬及通訊速率,所用網線均采用超五類網線。
Modbus RTU 通訊所需硬件較為復雜,需要使用串口服務器對所有第三方設備的通訊信號進行分類匯總,故PKS服務器通過網線與交換機和串口服務器相連。以本套控制系統為例,采用16 口MOXA NPort 5630-16 型號串口服務器,最多支持16 套第三方設備接入。而串口服務器與第三方設備采用2 線RS-485 進行連接,使用RS-485 專用通訊雙絞線,MOXA NPort 5630-16 型號串口服務器的16 個通道統一使用RJ45 插座,RS-485 通訊線的正負端分別接RJ45 插頭的6 號引腳和5 號引腳。在通訊正常的情況下,串口服務器正面正在使用的串口所對應的Tx 和Rx 指示燈將周期性閃爍,閃爍周期取決于該串口所有信號的最短讀取周期;如若Tx 和Rx 指示燈常亮,請檢查引腳接線。
一般來說,進行OPC 通訊前需對服務端Server 和客戶端Client 安裝相應軟件并進行DCOM 配置。由于PKS 系統作為服務端Server 自帶完善的OPC 系統設置,無需額外安裝軟件或配置DCOM,故只需對客戶端Client 進行設置。
首先,客戶端Client 所使用的計算機賬號名和密碼需與PKS 服務器管理員賬號相同。然后,需要安裝OPC Core Components Redistributable 和OPC Core Components 2.00 SDK。在確保軟件安裝完成后改變網口設置,設為靜態IP地址,將客戶端Client 的網段設為PKS 服務器所用的網段,并且保證IP 地址未沖突。
在計算機組件服務界面中,找到“組件服務”菜單下的“計算機”中“我的電腦”,在“我的電腦”的屬性窗口“默認屬性”欄下啟用分布式COM 服務并將默認身份驗證級別調至連接,默認模擬級別為標識;在“默認協議”欄下,選擇默認的協議為面向連接的TCP/IP;在“COM 安全”欄下,將“訪問權限”和“啟動和激活權限”的限制和默認值進行設置,添加所需的用戶和權限(一般為Everyone、Administrator 和Anonymous Logon)。在組態服務界面的“我的電腦”下面找到“DCOM 配置”和“OpcEnum”,在“OpcEnum”屬性窗口的“常規”欄取消身份驗證級別,“位置”欄中選擇在此計算機上運行應用程序,在“安全”欄中各項權限中添加用戶和權限(和“我的電腦”的“COM安全”欄內添加的用戶一致)。
然后,進行本地安全策略的配置。在本地安全策略界面中,“網絡訪問:本地賬戶的共享和安全模型”策略改為經典,“網絡訪問:將Everyone 權限應用于匿名用戶”策略改稱為啟動;最后,是防火墻的配置。將所有的OPC Client和OpcEnum 程序添加至例外程序,然后把對應的TCP/IP端口添加至例外端口。

圖1 硬件示意圖Fig.1 Hardware schematic diagram

圖2 客戶端Client配置流程圖Fig.2 Client configuration flowchart

圖3 PKS系統SCADA通道監控界面Fig.3 SCADA Channel monitoring interface of PKS system
在客戶端計算機上啟動所需使用的OPC 客戶端軟件,輸入PKS 服務器的計算機IP 地址,然后Prog ID 選擇“HWHsc.OPCServer”后進行連接,連接成功后在項目Item中選擇ASSET 下特定組中的指定點point,根據點的后綴顯示有關該點的不同數據。
Configuration Studio是PKS系統自帶的一體化組態軟件,使用其內嵌的SCADA Control 建立SCADA 點對來自第三方設備的通訊信號進行分類和顯示。在瀏覽器中輸入MOXA串口服務器的默認IP 地址,進入串口服務器配置界面,在網絡設置Network Settings 中修改串口服務器的IP 地址,讓其IP 地址與PKS 服務器的IP 地址處于同一網段;在串口設置Serial Setting 中,對用到的串口進行設置,修改波特率、數據位、停止位、校驗類型、流控制方式,是否使用FIFO 存儲器、物理接口類型。在操作設定Operating Setting中,修改操作模式Operation mode 為TCP Server,并記錄本地TCP 端口號Local TCP port。
建立通道channel,在Build Channels 界面新建一個項目Item,該項目新建時選擇使用Modbus 協議。打開新建的項目Item,在端口“Port”標簽頁中,修改端口類型“Port Type”為終端服務器“Terminal Server”,協議“protocol”內選擇“Modbus RTU”,終端服務器TCP 主機名“Terminal Server TCP Host Name”內填入串口服務器的IP 地址,終端服務器端口編號“Terminal Server TCP Port No.”中輸入被分配的串口服務器端口號。
建立控制器controller,在Build Controllers 界面新建一個項目Item,該項目新建時選擇使用Modbus 協議。分配Modbus 地址ID 至PLC Station ID,然后在Data Table 內選擇數據寄存器類型(一般為保持寄存器Holding Register)。
建立點point,在Build Points 界面新建一個項目Item,該項目新建時選擇使用點類型。在Main 欄中分配點類別Asset,不同類型的點組態內容不一致,根據需求組態。保持寄存器的Modbus 地址從40001 開始,由于在controller中控制器組態里Data Table 中已經選擇了Holding Register,在點組態中Address(格式為:控制器controller 名稱 數據地址 數據類型或數據位)內的“數據地址”從0001 開始,數字量點最后采用數據位(0 ~15,共16 位)來進一步確定數據地址,模擬量點最后采用數據類型來定義數據,如無格式轉換采用0、32 位浮點數使用IEEEFP(高低位互換,輸入的數據地址需+1)或REAL 等。
選中組態好的channel、controller 和point 進行下載,而后可以在Experion Station 的CONFIGURE 菜單System Hardware 條目中SCADA Controllers 按鈕進入SCADA 通道監控界面,點擊Name 列中的控制器名或Channel 列中的通道名可詳細查看通訊情況并做更改(如啟??刂破骰蛲ǖ溃?。
所采用OPC 和Modbus RTU 通訊的PKS 控制系統已經正常運行了半年,期間如火炬、焚燒爐、乙烯制冷裝置等第三方設備運行正常,PKS 系統通過Modbus RTU 通訊協議正常讀取第三方設備數據,并通過OPC 接口向所在市的市應急管理局內部網絡提供關鍵參數,系統丟包率極低,用戶反饋良好。