李 程,趙國新,樊雨軒
(上?;ぱ芯吭河邢薰?,上海 200062)
PKS 系統(tǒng)是霍尼韋爾公司推出的基于批處理、過程控制、SCADA 應(yīng)用的開放的混合控制系統(tǒng),作為霍尼韋爾公司旗下一套成熟的DCS 過程控制系統(tǒng),與業(yè)內(nèi)其他控制系統(tǒng)一樣,包含所必須的各種通訊協(xié)議,并且開放了OPC(OLE for process control)接口,具有極強的兼容性,可以滿足各式各樣的通訊需求。集成商和用戶可以依據(jù)其內(nèi)嵌的程序?qū)νㄓ嵾M行組態(tài),達成與其他軟件的數(shù)據(jù)交流。現(xiàn)存在一套高分子量聚乙烯粉料PKS 生產(chǎn)控制裝置,其需讀取第三方設(shè)備數(shù)據(jù),并向所在市的市應(yīng)急管理局內(nèi)部網(wǎng)絡(luò)提供關(guān)鍵參數(shù),保證安全生產(chǎn)。本文介紹了PKS 系統(tǒng)作為服務(wù)器與作為客戶端的第三方設(shè)備以Modbus RTU 和OPC兩種通訊協(xié)議進行通訊所需的軟硬件配置。
表1 部分功能碼說明表Table 1 Partial function code description table
OPC 是用于過程控制的OLE(object linking and embedding),基于OLE、COM(部分對象模型)和DCOM(分布式部分對象模型)技術(shù),是一種運用廣泛的工業(yè)標(biāo)準(zhǔn),由超220 家成員的國際組織OPC 基金會管理,常見于各類過程控制與自動化系統(tǒng)中。OPC 最大的特點就是它包含一整套的接口,對象屬性以及數(shù)據(jù)集成方法,這給用戶在實際的工業(yè)自動化控制中帶來了很大的便利;另外,OPC 采用了用戶權(quán)限訪問控制、數(shù)據(jù)加密技術(shù)、防火墻隔離技術(shù)和病毒預(yù)防技術(shù),大大提高了數(shù)據(jù)的安全性和保密性[1]。
OPC 采用客戶端/服務(wù)器模式,即Client-Server(C/S)結(jié)構(gòu),服務(wù)器Server 負(fù)責(zé)數(shù)據(jù)的管理,客戶端Client 負(fù)責(zé)用戶交互。客戶端與服務(wù)器通過由交換機構(gòu)建的局域網(wǎng)相連,客戶端接收用戶的請求后主動向服務(wù)器發(fā)出請求指令,再由服務(wù)器進行被動地響應(yīng),對數(shù)據(jù)庫進行查詢或其它操作后將反饋發(fā)送至客戶端,客戶端再將數(shù)據(jù)進行處理后呈現(xiàn)給用戶。對一個服務(wù)器來說,能對應(yīng)多個客戶端;同理,單個客戶端也可以連接多個服務(wù)器。這種模式交互性強、響應(yīng)速度快、存取數(shù)據(jù)安全,善于處理大批量數(shù)據(jù)。
OPC 基金會推出了統(tǒng)一構(gòu)架UA(Unified Architecture)支持分布式系統(tǒng)間的OPC 通訊,其包含DA(數(shù)據(jù)訪問)、HAD(歷史數(shù)據(jù)訪問)、A&E(報警通知)。UA 框架將OPC 通訊的數(shù)據(jù)獲取方式進行了統(tǒng)一,減少了用戶調(diào)用數(shù)據(jù)次數(shù);其還支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),提供了可擴展的元數(shù)據(jù)模型;其提供基于不同編程平臺的開發(fā)包,不僅支持Windows 系統(tǒng),還支持Linux 和嵌入式設(shè)備;UA 框架還使用公共密鑰體系(PKI)和X509v3 證書等安全技術(shù),定義了一套完善的安全機制[2]。
Modbus 是工業(yè)領(lǐng)域內(nèi)作為業(yè)界標(biāo)準(zhǔn)的一類串行通訊協(xié)議。Modbus 一次通訊其發(fā)送和接收的數(shù)據(jù)包由若干幀組成,協(xié)議定義了這些幀的意義,控制器按照協(xié)議解釋這些幀數(shù)據(jù)來實現(xiàn)通訊[3]。Modbus 細(xì)分ASCII、RTU、TCP 等協(xié)議,其中Modbus RTU 是一種基于Modbus 協(xié)議被廣泛運用于工業(yè)監(jiān)控領(lǐng)域的通訊協(xié)議,使用RS-232、RS-422、RS-485串行口(Serial)或Ethernet 設(shè)備進行通訊,得到業(yè)內(nèi)控制軟件的廣泛支持。
Modbus RTU 使用主/從技術(shù)在設(shè)備間進行通訊,即Master/Slave 架構(gòu)。在通訊節(jié)點中,只有一個節(jié)點作為Master 節(jié)點,其余節(jié)點作為Slave 節(jié)點,每個Slave 節(jié)點必須有唯一的地址。通常只有被指定為Master 節(jié)點的節(jié)點可以發(fā)送包含地址的指令,而所有Slave 節(jié)點都會收到指令,但只有對應(yīng)地址的Slave 節(jié)點會執(zhí)行并回應(yīng)指令,Master 節(jié)點和各Slave 節(jié)點交替發(fā)送信號,即半雙工通訊。
Modbus RTU 有著嚴(yán)格的通訊格式,以16 進制進行表達,每個主機Master 和從機Slave 發(fā)送的通訊信息幀都遵循以下格式:地址碼 功能碼 數(shù)據(jù)區(qū) 校驗。地址碼:第一個字節(jié),8Bit,代表從機Slave 在通訊節(jié)點中的地址ID,從1 到247(F7H),每個從機Slave 的地址碼必須唯一。功能碼:第二個字節(jié),8Bit,為要求從機Slave 執(zhí)行的命令。數(shù)據(jù)區(qū):隨功能碼的不同而改變格式,N*8Bit,主機Master和從機Slave 對于同一個功能碼的格式不同,以03H 功能碼為例,數(shù)據(jù)幀格式表見表2。校驗:最后兩個字節(jié),16Bit,采用CRC(循環(huán)冗余檢測)標(biāo)準(zhǔn)進行校驗。在同樣波特率下,可比ASCII 方式傳送更多的數(shù)據(jù)[4]。
表2 主機Master和從機Slave03H功能碼數(shù)據(jù)幀格式表Table 2 Master and slave slave03H function code data frame format table
表3 常見錯誤碼表Table 3 Common error codes table
CRC 碼由發(fā)送設(shè)備計算,接收信息的設(shè)備再重新計算接收到信息的CRC 碼,比較計算得到的CRC 碼是否與接收到的相符,如果兩者不相符,則表明出錯[5]。地址錯誤或Modbus CRC 校驗錯誤的話從機Slave 不會返回信息幀,其他錯誤從機Slave 會返回錯誤碼,錯誤數(shù)據(jù)幀的格式如下:地址碼 功能碼 錯誤碼 校驗。錯誤數(shù)據(jù)幀中的功能碼最高位置位,即在原本功能碼上增加80H。錯誤碼:第三個字節(jié),不同錯誤碼代表不同的錯誤類型,方便調(diào)試人員查詢錯誤原因。
OPC 通訊所需硬件較為簡單,只需PKS 服務(wù)器與交換機通過網(wǎng)線相連,通過交換機再與第三方服務(wù)器進行連接。為保證帶寬及通訊速率,所用網(wǎng)線均采用超五類網(wǎng)線。
Modbus RTU 通訊所需硬件較為復(fù)雜,需要使用串口服務(wù)器對所有第三方設(shè)備的通訊信號進行分類匯總,故PKS服務(wù)器通過網(wǎng)線與交換機和串口服務(wù)器相連。以本套控制系統(tǒng)為例,采用16 口MOXA NPort 5630-16 型號串口服務(wù)器,最多支持16 套第三方設(shè)備接入。而串口服務(wù)器與第三方設(shè)備采用2 線RS-485 進行連接,使用RS-485 專用通訊雙絞線,MOXA NPort 5630-16 型號串口服務(wù)器的16 個通道統(tǒng)一使用RJ45 插座,RS-485 通訊線的正負(fù)端分別接RJ45 插頭的6 號引腳和5 號引腳。在通訊正常的情況下,串口服務(wù)器正面正在使用的串口所對應(yīng)的Tx 和Rx 指示燈將周期性閃爍,閃爍周期取決于該串口所有信號的最短讀取周期;如若Tx 和Rx 指示燈常亮,請檢查引腳接線。
一般來說,進行OPC 通訊前需對服務(wù)端Server 和客戶端Client 安裝相應(yīng)軟件并進行DCOM 配置。由于PKS 系統(tǒng)作為服務(wù)端Server 自帶完善的OPC 系統(tǒng)設(shè)置,無需額外安裝軟件或配置DCOM,故只需對客戶端Client 進行設(shè)置。
首先,客戶端Client 所使用的計算機賬號名和密碼需與PKS 服務(wù)器管理員賬號相同。然后,需要安裝OPC Core Components Redistributable 和OPC Core Components 2.00 SDK。在確保軟件安裝完成后改變網(wǎng)口設(shè)置,設(shè)為靜態(tài)IP地址,將客戶端Client 的網(wǎng)段設(shè)為PKS 服務(wù)器所用的網(wǎng)段,并且保證IP 地址未沖突。
在計算機組件服務(wù)界面中,找到“組件服務(wù)”菜單下的“計算機”中“我的電腦”,在“我的電腦”的屬性窗口“默認(rèn)屬性”欄下啟用分布式COM 服務(wù)并將默認(rèn)身份驗證級別調(diào)至連接,默認(rèn)模擬級別為標(biāo)識;在“默認(rèn)協(xié)議”欄下,選擇默認(rèn)的協(xié)議為面向連接的TCP/IP;在“COM 安全”欄下,將“訪問權(quán)限”和“啟動和激活權(quán)限”的限制和默認(rèn)值進行設(shè)置,添加所需的用戶和權(quán)限(一般為Everyone、Administrator 和Anonymous Logon)。在組態(tài)服務(wù)界面的“我的電腦”下面找到“DCOM 配置”和“OpcEnum”,在“OpcEnum”屬性窗口的“常規(guī)”欄取消身份驗證級別,“位置”欄中選擇在此計算機上運行應(yīng)用程序,在“安全”欄中各項權(quán)限中添加用戶和權(quán)限(和“我的電腦”的“COM安全”欄內(nèi)添加的用戶一致)。
然后,進行本地安全策略的配置。在本地安全策略界面中,“網(wǎng)絡(luò)訪問:本地賬戶的共享和安全模型”策略改為經(jīng)典,“網(wǎng)絡(luò)訪問:將Everyone 權(quán)限應(yīng)用于匿名用戶”策略改稱為啟動;最后,是防火墻的配置。將所有的OPC Client和OpcEnum 程序添加至例外程序,然后把對應(yīng)的TCP/IP端口添加至例外端口。
圖1 硬件示意圖Fig.1 Hardware schematic diagram
圖2 客戶端Client配置流程圖Fig.2 Client configuration flowchart
圖3 PKS系統(tǒng)SCADA通道監(jiān)控界面Fig.3 SCADA Channel monitoring interface of PKS system
在客戶端計算機上啟動所需使用的OPC 客戶端軟件,輸入PKS 服務(wù)器的計算機IP 地址,然后Prog ID 選擇“HWHsc.OPCServer”后進行連接,連接成功后在項目Item中選擇ASSET 下特定組中的指定點point,根據(jù)點的后綴顯示有關(guān)該點的不同數(shù)據(jù)。
Configuration Studio是PKS系統(tǒng)自帶的一體化組態(tài)軟件,使用其內(nèi)嵌的SCADA Control 建立SCADA 點對來自第三方設(shè)備的通訊信號進行分類和顯示。在瀏覽器中輸入MOXA串口服務(wù)器的默認(rèn)IP 地址,進入串口服務(wù)器配置界面,在網(wǎng)絡(luò)設(shè)置Network Settings 中修改串口服務(wù)器的IP 地址,讓其IP 地址與PKS 服務(wù)器的IP 地址處于同一網(wǎng)段;在串口設(shè)置Serial Setting 中,對用到的串口進行設(shè)置,修改波特率、數(shù)據(jù)位、停止位、校驗類型、流控制方式,是否使用FIFO 存儲器、物理接口類型。在操作設(shè)定Operating Setting中,修改操作模式Operation mode 為TCP Server,并記錄本地TCP 端口號Local TCP port。
建立通道channel,在Build Channels 界面新建一個項目Item,該項目新建時選擇使用Modbus 協(xié)議。打開新建的項目Item,在端口“Port”標(biāo)簽頁中,修改端口類型“Port Type”為終端服務(wù)器“Terminal Server”,協(xié)議“protocol”內(nèi)選擇“Modbus RTU”,終端服務(wù)器TCP 主機名“Terminal Server TCP Host Name”內(nèi)填入串口服務(wù)器的IP 地址,終端服務(wù)器端口編號“Terminal Server TCP Port No.”中輸入被分配的串口服務(wù)器端口號。
建立控制器controller,在Build Controllers 界面新建一個項目Item,該項目新建時選擇使用Modbus 協(xié)議。分配Modbus 地址ID 至PLC Station ID,然后在Data Table 內(nèi)選擇數(shù)據(jù)寄存器類型(一般為保持寄存器Holding Register)。
建立點point,在Build Points 界面新建一個項目Item,該項目新建時選擇使用點類型。在Main 欄中分配點類別Asset,不同類型的點組態(tài)內(nèi)容不一致,根據(jù)需求組態(tài)。保持寄存器的Modbus 地址從40001 開始,由于在controller中控制器組態(tài)里Data Table 中已經(jīng)選擇了Holding Register,在點組態(tài)中Address(格式為:控制器controller 名稱 數(shù)據(jù)地址 數(shù)據(jù)類型或數(shù)據(jù)位)內(nèi)的“數(shù)據(jù)地址”從0001 開始,數(shù)字量點最后采用數(shù)據(jù)位(0 ~15,共16 位)來進一步確定數(shù)據(jù)地址,模擬量點最后采用數(shù)據(jù)類型來定義數(shù)據(jù),如無格式轉(zhuǎn)換采用0、32 位浮點數(shù)使用IEEEFP(高低位互換,輸入的數(shù)據(jù)地址需+1)或REAL 等。
選中組態(tài)好的channel、controller 和point 進行下載,而后可以在Experion Station 的CONFIGURE 菜單System Hardware 條目中SCADA Controllers 按鈕進入SCADA 通道監(jiān)控界面,點擊Name 列中的控制器名或Channel 列中的通道名可詳細(xì)查看通訊情況并做更改(如啟??刂破骰蛲ǖ溃?。
所采用OPC 和Modbus RTU 通訊的PKS 控制系統(tǒng)已經(jīng)正常運行了半年,期間如火炬、焚燒爐、乙烯制冷裝置等第三方設(shè)備運行正常,PKS 系統(tǒng)通過Modbus RTU 通訊協(xié)議正常讀取第三方設(shè)備數(shù)據(jù),并通過OPC 接口向所在市的市應(yīng)急管理局內(nèi)部網(wǎng)絡(luò)提供關(guān)鍵參數(shù),系統(tǒng)丟包率極低,用戶反饋良好。