1 引言
金華市秋濱污水處理廠是浙江省2002年7月投入運行的重點工程。配套設施金龍灣提升泵站于2005年1月建成,距離廠區(qū)約7公里。秋濱污水處理廠位于城市西郊,而金龍灣提升泵站位于城市中心,如果鋪設光纜,不僅投資大,而且施工也很麻煩,如果采用無線通訊,安全性和可靠性也不是很高,考慮到金華市自來水總公司已有防火墻(秋濱污水處理廠已采用vpn接入防火墻),且金龍灣提升泵站采用的modicon compact系列plc自帶modbus端口,所以采用modbus opc server獲取泵站的實時運行數(shù)據(jù),撥號接入adsl寬帶,二次vpn撥號接入自來水總公司防火墻,秋濱污水處理廠中控室的上位機則利用opc接口監(jiān)控泵站運行。
2 安全專用虛擬網(wǎng)絡vpn的實現(xiàn)
2.1 vpn簡介
即virtual private network,是利用ip網(wǎng)絡來傳輸私有信息而形成的邏輯網(wǎng)絡,向用戶提供高安全性且比專線價格低廉的資源共享和互連服務。它具有同客戶原有的私有網(wǎng)絡相同的安全性、優(yōu)先級特性、易管理性和穩(wěn)定性。它可以滿足客戶對原企業(yè)內(nèi)部局域網(wǎng)與遠程辦公室、移動用戶間無縫連接的要求,將網(wǎng)絡連接擴展到客戶、供貨商、合作者和關鍵用戶以形成外部網(wǎng)(extranet),來降低商業(yè)運作開支和提升服務質(zhì)量(包括速度、簡便性和保密性上的提升)。實施vpn時,較多使用的隧道協(xié)議包括二層隧道協(xié)議mpls、l2tp和三層隧道協(xié)議ipsec等,常見vpn有:mpls vpn、vpdn、ipsecvpn等。
由于vpn是在internet上臨時建立的安全專用虛擬網(wǎng)絡,節(jié)省了租用專線的費用,在運行的資金支出上,除了購買vpn設備,所付出的僅僅是向當?shù)氐膇sp支付一定的上網(wǎng)費用,這就是vpn價格低廉的原因。
2.2 自來水總公司防火墻配置
自來水總公司采用華為3com 100f防火墻,一條10m光纖接入internet,固定ip地址;決定采用l2tp協(xié)議的ipsec vpn,部分配置如下:
sysname quidway
#
l2tp enable //使能l2tp
dvpn service enable //使能vpn服務
#
local-user abcde
//創(chuàng)建移動用戶帳號和密碼
password simple abcde
service-type ppp
#
interface virtual-template4
//建立用于提升泵站vpn的虛擬端口4
ppp authentication-mode pap
//設置認證模式
ip address 192.168.40.1 255.255.255.0
//指定提升泵站ip
remote address 192.168.40.2
#
add interface virtual-template4
//添加虛擬端口4
set priority 5
//設置優(yōu)先級
#
l2tp-group 5
undo tunnel authentication
//取消通道認證
mandatory-lcp //lcp自協(xié)商
allow l2tp virtual-template 4 remote jhwsjlw
//接受網(wǎng)絡標識為jhwsjlw的計算機(即提升泵站計算機)的l2tp請求,并綁定到虛擬端口4
#
2.3 創(chuàng)建vpn連接
金龍灣提升泵站電腦采用的是win2000sp4操作系統(tǒng),自帶vpn撥號功能,使用方法如下:(xp系統(tǒng)中設置方法類似)
(1) 在注冊表中添加以下子項后并重新啟動
hkey_local_machine\system\currentcontrolsetservices\rasman\parameters
"prohibitipsec"=dword:00000001
(2) “網(wǎng)絡和撥號連接”——“新建連接”——“通過internet連接到專用網(wǎng)絡(v)”——“首先撥此初始連接”(選擇adsl撥號程序)——“主機名或ip地址”(輸入防火墻ip),鍵入vpn連接名稱后就可以了。
(3) 創(chuàng)建完成后,還需要設置虛擬連接,選擇該連接——“屬性”:
●常規(guī)欄中設置撥號和重撥選項;
●安全欄中選擇“高級”后,點擊“設置”按鈕進入“高級安全設置”;
●“數(shù)據(jù)加密”選項選擇“可選加密”(因為防火墻中沒有使用加密),并將“不加密的密碼(pap)(u)”打勾;
●網(wǎng)絡欄設置:選 l2tp ipsec vpn。
(4) 通過該方法創(chuàng)建的vpn連接不能訪問外網(wǎng),這很大程度上保證了數(shù)據(jù)和電腦的安全。
2.4 vpn的優(yōu)點
通過vpn使動態(tài)撥號的電腦獲得局域網(wǎng)的固定ip,既保證了數(shù)據(jù)傳輸?shù)陌踩院涂煽啃裕€節(jié)約了成本,配合pcanywhere等軟件實現(xiàn)遠程維護,給維護工作帶來了很大的方便。
3 過程控制接口opc
3.1 opc簡介
即ole for process control,它的出現(xiàn)為基于windows的應用程序和現(xiàn)場過程控制應用建立了橋梁。在過去,為了存取現(xiàn)場設備的數(shù)據(jù)信息,每一個應用軟件開發(fā)商都需要編寫專用的接口函數(shù)。由于現(xiàn)場設備的種類繁多,且產(chǎn)品的不斷升級,往往給用戶和軟件開發(fā)商帶來了巨大的工作負擔。通常這樣也不能滿足工作的實際需要,系統(tǒng)集成商和開發(fā)商急切需要一種具有高效性、可靠性、開放性、可互操作性的即插即用的設備驅(qū)動程序。在這種情況下,opc標準應運而生。opc標準以微軟公司的ole技術為基礎,它的制定是通過提供一套標準的ole/com接口完成的,總而言之,opc是作為工業(yè)標準定義的特殊的com接口。
com是component object model的縮寫,是所有ole機制的基礎。com是一種為了實現(xiàn)與編程語言無關的對象而制定的標準,這種標準可以使兩個應用程序通過對象化接口通訊,而不需要知道對方是如何創(chuàng)建的。在windows nt4.0操作系統(tǒng)下,com規(guī)范擴展到可訪問本機以外的其它對象,一個應用程序所使用的對象可分布在網(wǎng)絡上,com的這個擴展被稱為dcom(distributed com)。
通過dcom技術和opc標準,完全可以創(chuàng)建一個開放的、可互操作的控制系統(tǒng)軟件。opc規(guī)范了接口函數(shù),不管現(xiàn)場設備以何種形式存在,客戶都以統(tǒng)一的方式去訪問,從而保證軟件對客戶的透明性,使得用戶完全從低層的開發(fā)中脫離出來,提高了系統(tǒng)的開放性和可互操作性,通常在系統(tǒng)設計中采用ole自動化標準接口。
3.2 dcom配置
在opc客戶端與opc服務器連接時,需要由opc服務器的計算機對opc客戶應用程序的計算機進行身份驗證。如果雙方的計算機同時隸屬于計算機域時,身份驗證可以由域控制器進行,但是現(xiàn)狀是運行在自動控制系統(tǒng)的控制計算機大多數(shù)并沒有隸屬于計算機域,而是運行在工作組(workgroup)中。按照windows的安全機制,對于不隸屬于計算機域的另外的計算機上用戶,一般無法進行身份驗證。但是唯一的例外是:如果在二臺計算機上存在用戶名和密碼都相同的用戶,可以互相進行身份驗證。所以需要在opc服務器和opc客戶端計算機上添加具有相同用戶名(比如:opc-user)和相同密碼(比如:password)的用戶,并且都以該用戶身份登陸。
完成后在“開始”-“運行”中輸入dcomcnfg進入dcom安全機制設置:
(1) 首先啟用分布式com。(服務器和客戶端都需要設置)
其它設置詳見附表。

(2) 如果opc服務器使用的是winxpsp2操作系統(tǒng),還需要對防火墻進行設置。
即:例外欄中添加名稱為dcom的tcp135端口;并解除對opc server和opcenum程序的阻止。opc客戶端計算機無需其它設置。
3.3 opc客戶端的開發(fā)
秋濱污水處理廠中控室上位機使用的組態(tài)軟件是intouch8.0,自帶opclink,但是在使用過程中發(fā)現(xiàn)opclink存在一個很大的問題:無法枚舉遠程opc server!以我廠為例,提升泵站電腦的ip是192.168.40.2,污水處理廠中控室電腦的ip是192.168.2.2,使用vb編寫的客戶端可以正常枚舉遠程opc server,但是使用opclink時,只要輸入節(jié)點名,一點擊“瀏覽”按鈕,程序就無響應,fsgateway也是如此,所以決定用vb自行開發(fā)opc客戶端,利用dde與intouch互相通信。
dde是由微軟開發(fā)的一個通訊協(xié)議,它允許windows下的應用程序之間互相傳遞數(shù)據(jù),服務器應用程序響應客戶端應用程序的數(shù)據(jù)請求并發(fā)送相應數(shù)據(jù),很多的應用程序(比如:excel,vb等)都既可以作為dde服務器,也可以作為dde客戶端。
考慮到需要采集的數(shù)據(jù)比較多,利用vb自帶的label等控件實現(xiàn)dde的通信效率不高,且代碼數(shù)量較大,所以自行開發(fā)了dde server的動態(tài)鏈接庫,機制比較復雜,這里不再詳細敘述,有興趣的朋友可以與我聯(lián)系。
一般opc服務器供應商都會提供vbclient代碼,所以有關連接opc服務器,添加opc組等代碼這里不在敘述,在opc客戶端開發(fā)中,有以下問題需要注意:
(1) 由于opc標簽的數(shù)量比較多,應該使用一次性添加所有標簽,示例如下:(“[]”內(nèi)參數(shù)可選,myopcgroup為添加的opc組,下同)
call myopcgroup.opcitems.additems(numitems as long, itemids() as string, clienthandles() as long, serverhandles() as long, errors() as long, [requesteddatatypes], [accesspaths])
(2) 為了提高數(shù)據(jù)傳輸?shù)男?,opc客戶端可以采用訂閱方式采集數(shù)據(jù),異步寫入,示例如下:
myopcgroup.isactive = true //激活opc組
myopcgroup.issubscribed = true
//訂閱方式采集數(shù)據(jù)
myopcgroup.asyncwrite(numitems as long, serverhandles() as long, values()
as variant, errors() as long, transactionid as long, cancelid as long)
//異步寫入多個opc標簽
(3) 為了方便調(diào)試和維護,可以采用listview控件列出所有opc標簽名稱、數(shù)值和質(zhì)量標簽,而此時opc組已經(jīng)采用訂閱方式采集數(shù)據(jù),為了保證寫入listview的效率,避免受到datachange事件的影響,可以采用以下方法:
dim withevents callbackgroup as opcgroup
//當listview寫入完成后
set callbackgroup = myopcgroup
之后采用callbackgroup的datachange事件就可以了。
(4) 還有一個很重要的問題,由于采用訂閱方式采集數(shù)據(jù),一旦vpn連接異常斷開,opc客戶端并沒有相應通知,還認為是通訊正常!比較好的解決辦法是:在plc中設置一個位,其值定時在0和1之間跳變(一般為1秒),程序只要監(jiān)視該值就可以了。dde相關部分這里不再敘述。
4 結(jié)束語
隨著城市建設的發(fā)展,污水處理廠提升泵站的數(shù)量越來越多,且大多分布在城市各地由于各種原因,很難鋪設光纜到污水處理廠區(qū)。與污水處理廠的通訊通常采用無線方式,而無線通訊比較容易受到干擾,數(shù)據(jù)的安全也不能保障,gprs等方式不能提供大數(shù)據(jù)量的穩(wěn)定傳輸。在這種情況下,采用vpn+opc的方式是一個較為理想的選擇,vpn具有價格低廉、安全、穩(wěn)定且容易管理等優(yōu)點;opc則可以提供高速的數(shù)據(jù)傳輸性能、具有分布式com的安全管理機制、并且開發(fā)也簡單,結(jié)合兩者開發(fā)的應用程序,不僅代碼數(shù)量少、而且可以遠程維護,非常適合類似情況的用戶使用。項目現(xiàn)正常運行于金華市秋濱污水處理廠中控室。