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