1 引言
金華市秋濱污水處理廠是浙江省2002年7月投入運(yùn)行的重點(diǎn)工程。配套設(shè)施金龍灣提升泵站于2005年1月建成,距離廠區(qū)約7公里。秋濱污水處理廠位于城市西郊,而金龍灣提升泵站位于城市中心,如果鋪設(shè)光纜,不僅投資大,而且施工也很麻煩,如果采用無線通訊,安全性和可靠性也不是很高,考慮到金華市自來水總公司已有防火墻(秋濱污水處理廠已采用vpn接入防火墻),且金龍灣提升泵站采用的modicon compact系列plc自帶modbus端口,所以采用modbus opc server獲取泵站的實(shí)時(shí)運(yùn)行數(shù)據(jù),撥號(hào)接入adsl寬帶,二次vpn撥號(hào)接入自來水總公司防火墻,秋濱污水處理廠中控室的上位機(jī)則利用opc接口監(jiān)控泵站運(yùn)行。
2 安全專用虛擬網(wǎng)絡(luò)vpn的實(shí)現(xiàn)
2.1 vpn簡(jiǎn)介
即virtual private network,是利用ip網(wǎng)絡(luò)來傳輸私有信息而形成的邏輯網(wǎng)絡(luò),向用戶提供高安全性且比專線價(jià)格低廉的資源共享和互連服務(wù)。它具有同客戶原有的私有網(wǎng)絡(luò)相同的安全性、優(yōu)先級(jí)特性、易管理性和穩(wěn)定性。它可以滿足客戶對(duì)原企業(yè)內(nèi)部局域網(wǎng)與遠(yuǎn)程辦公室、移動(dòng)用戶間無縫連接的要求,將網(wǎng)絡(luò)連接擴(kuò)展到客戶、供貨商、合作者和關(guān)鍵用戶以形成外部網(wǎng)(extranet),來降低商業(yè)運(yùn)作開支和提升服務(wù)質(zhì)量(包括速度、簡(jiǎn)便性和保密性上的提升)。實(shí)施vpn時(shí),較多使用的隧道協(xié)議包括二層隧道協(xié)議mpls、l2tp和三層隧道協(xié)議ipsec等,常見vpn有:mpls vpn、vpdn、ipsecvpn等。
由于vpn是在internet上臨時(shí)建立的安全專用虛擬網(wǎng)絡(luò),節(jié)省了租用專線的費(fèi)用,在運(yùn)行的資金支出上,除了購(gòu)買vpn設(shè)備,所付出的僅僅是向當(dāng)?shù)氐膇sp支付一定的上網(wǎng)費(fèi)用,這就是vpn價(jià)格低廉的原因。
2.2 自來水總公司防火墻配置
自來水總公司采用華為3com 100f防火墻,一條10m光纖接入internet,固定ip地址;決定采用l2tp協(xié)議的ipsec vpn,部分配置如下:
sysname quidway
#
l2tp enable //使能l2tp
dvpn service enable //使能vpn服務(wù)
#
local-user abcde
//創(chuàng)建移動(dòng)用戶帳號(hào)和密碼
password simple abcde
service-type ppp
#
interface virtual-template4
//建立用于提升泵站vpn的虛擬端口4
ppp authentication-mode pap
//設(shè)置認(rèn)證模式
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
//設(shè)置優(yōu)先級(jí)
#
l2tp-group 5
undo tunnel authentication
//取消通道認(rèn)證
mandatory-lcp //lcp自協(xié)商
allow l2tp virtual-template 4 remote jhwsjlw
//接受網(wǎng)絡(luò)標(biāo)識(shí)為jhwsjlw的計(jì)算機(jī)(即提升泵站計(jì)算機(jī))的l2tp請(qǐng)求,并綁定到虛擬端口4
#
2.3 創(chuàng)建vpn連接
金龍灣提升泵站電腦采用的是win2000sp4操作系統(tǒng),自帶vpn撥號(hào)功能,使用方法如下:(xp系統(tǒng)中設(shè)置方法類似)
(1) 在注冊(cè)表中添加以下子項(xiàng)后并重新啟動(dòng)
hkey_local_machine\system\currentcontrolsetservices\rasman\parameters
"prohibitipsec"=dword:00000001
(2) “網(wǎng)絡(luò)和撥號(hào)連接”——“新建連接”——“通過internet連接到專用網(wǎng)絡(luò)(v)”——“首先撥此初始連接”(選擇adsl撥號(hào)程序)——“主機(jī)名或ip地址”(輸入防火墻ip),鍵入vpn連接名稱后就可以了。
(3) 創(chuàng)建完成后,還需要設(shè)置虛擬連接,選擇該連接——“屬性”:
●常規(guī)欄中設(shè)置撥號(hào)和重?fù)苓x項(xiàng);
●安全欄中選擇“高級(jí)”后,點(diǎn)擊“設(shè)置”按鈕進(jìn)入“高級(jí)安全設(shè)置”;
●“數(shù)據(jù)加密”選項(xiàng)選擇“可選加密”(因?yàn)榉阑饓χ袥]有使用加密),并將“不加密的密碼(pap)(u)”打勾;
●網(wǎng)絡(luò)欄設(shè)置:選 l2tp ipsec vpn。
(4) 通過該方法創(chuàng)建的vpn連接不能訪問外網(wǎng),這很大程度上保證了數(shù)據(jù)和電腦的安全。
2.4 vpn的優(yōu)點(diǎn)
通過vpn使動(dòng)態(tài)撥號(hào)的電腦獲得局域網(wǎng)的固定ip,既保證了數(shù)據(jù)傳輸?shù)陌踩院涂煽啃?,還節(jié)約了成本,配合pcanywhere等軟件實(shí)現(xiàn)遠(yuǎn)程維護(hù),給維護(hù)工作帶來了很大的方便。
3 過程控制接口opc
3.1 opc簡(jiǎn)介
即ole for process control,它的出現(xiàn)為基于windows的應(yīng)用程序和現(xiàn)場(chǎng)過程控制應(yīng)用建立了橋梁。在過去,為了存取現(xiàn)場(chǎng)設(shè)備的數(shù)據(jù)信息,每一個(gè)應(yīng)用軟件開發(fā)商都需要編寫專用的接口函數(shù)。由于現(xiàn)場(chǎng)設(shè)備的種類繁多,且產(chǎn)品的不斷升級(jí),往往給用戶和軟件開發(fā)商帶來了巨大的工作負(fù)擔(dān)。通常這樣也不能滿足工作的實(shí)際需要,系統(tǒng)集成商和開發(fā)商急切需要一種具有高效性、可靠性、開放性、可互操作性的即插即用的設(shè)備驅(qū)動(dòng)程序。在這種情況下,opc標(biāo)準(zhǔn)應(yīng)運(yùn)而生。opc標(biāo)準(zhǔn)以微軟公司的ole技術(shù)為基礎(chǔ),它的制定是通過提供一套標(biāo)準(zhǔn)的ole/com接口完成的,總而言之,opc是作為工業(yè)標(biāo)準(zhǔn)定義的特殊的com接口。
com是component object model的縮寫,是所有ole機(jī)制的基礎(chǔ)。com是一種為了實(shí)現(xiàn)與編程語言無關(guān)的對(duì)象而制定的標(biāo)準(zhǔn),這種標(biāo)準(zhǔn)可以使兩個(gè)應(yīng)用程序通過對(duì)象化接口通訊,而不需要知道對(duì)方是如何創(chuàng)建的。在windows nt4.0操作系統(tǒng)下,com規(guī)范擴(kuò)展到可訪問本機(jī)以外的其它對(duì)象,一個(gè)應(yīng)用程序所使用的對(duì)象可分布在網(wǎng)絡(luò)上,com的這個(gè)擴(kuò)展被稱為dcom(distributed com)。
通過dcom技術(shù)和opc標(biāo)準(zhǔn),完全可以創(chuàng)建一個(gè)開放的、可互操作的控制系統(tǒng)軟件。opc規(guī)范了接口函數(shù),不管現(xiàn)場(chǎng)設(shè)備以何種形式存在,客戶都以統(tǒng)一的方式去訪問,從而保證軟件對(duì)客戶的透明性,使得用戶完全從低層的開發(fā)中脫離出來,提高了系統(tǒng)的開放性和可互操作性,通常在系統(tǒng)設(shè)計(jì)中采用ole自動(dòng)化標(biāo)準(zhǔn)接口。
3.2 dcom配置
在opc客戶端與opc服務(wù)器連接時(shí),需要由opc服務(wù)器的計(jì)算機(jī)對(duì)opc客戶應(yīng)用程序的計(jì)算機(jī)進(jìn)行身份驗(yàn)證。如果雙方的計(jì)算機(jī)同時(shí)隸屬于計(jì)算機(jī)域時(shí),身份驗(yàn)證可以由域控制器進(jìn)行,但是現(xiàn)狀是運(yùn)行在自動(dòng)控制系統(tǒng)的控制計(jì)算機(jī)大多數(shù)并沒有隸屬于計(jì)算機(jī)域,而是運(yùn)行在工作組(workgroup)中。按照windows的安全機(jī)制,對(duì)于不隸屬于計(jì)算機(jī)域的另外的計(jì)算機(jī)上用戶,一般無法進(jìn)行身份驗(yàn)證。但是唯一的例外是:如果在二臺(tái)計(jì)算機(jī)上存在用戶名和密碼都相同的用戶,可以互相進(jìn)行身份驗(yàn)證。所以需要在opc服務(wù)器和opc客戶端計(jì)算機(jī)上添加具有相同用戶名(比如:opc-user)和相同密碼(比如:password)的用戶,并且都以該用戶身份登陸。
完成后在“開始”-“運(yùn)行”中輸入dcomcnfg進(jìn)入dcom安全機(jī)制設(shè)置:
(1) 首先啟用分布式com。(服務(wù)器和客戶端都需要設(shè)置)
其它設(shè)置詳見附表。
(2) 如果opc服務(wù)器使用的是winxpsp2操作系統(tǒng),還需要對(duì)防火墻進(jìn)行設(shè)置。
即:例外欄中添加名稱為dcom的tcp135端口;并解除對(duì)opc server和opcenum程序的阻止。opc客戶端計(jì)算機(jī)無需其它設(shè)置。
3.3 opc客戶端的開發(fā)
秋濱污水處理廠中控室上位機(jī)使用的組態(tài)軟件是intouch8.0,自帶opclink,但是在使用過程中發(fā)現(xiàn)opclink存在一個(gè)很大的問題:無法枚舉遠(yuǎn)程opc server!以我廠為例,提升泵站電腦的ip是192.168.40.2,污水處理廠中控室電腦的ip是192.168.2.2,使用vb編寫的客戶端可以正常枚舉遠(yuǎn)程opc server,但是使用opclink時(shí),只要輸入節(jié)點(diǎn)名,一點(diǎn)擊“瀏覽”按鈕,程序就無響應(yīng),fsgateway也是如此,所以決定用vb自行開發(fā)opc客戶端,利用dde與intouch互相通信。
dde是由微軟開發(fā)的一個(gè)通訊協(xié)議,它允許windows下的應(yīng)用程序之間互相傳遞數(shù)據(jù),服務(wù)器應(yīng)用程序響應(yīng)客戶端應(yīng)用程序的數(shù)據(jù)請(qǐng)求并發(fā)送相應(yīng)數(shù)據(jù),很多的應(yīng)用程序(比如:excel,vb等)都既可以作為dde服務(wù)器,也可以作為dde客戶端。
考慮到需要采集的數(shù)據(jù)比較多,利用vb自帶的label等控件實(shí)現(xiàn)dde的通信效率不高,且代碼數(shù)量較大,所以自行開發(fā)了dde server的動(dòng)態(tài)鏈接庫(kù),機(jī)制比較復(fù)雜,這里不再詳細(xì)敘述,有興趣的朋友可以與我聯(lián)系。
一般opc服務(wù)器供應(yīng)商都會(huì)提供vbclient代碼,所以有關(guān)連接opc服務(wù)器,添加opc組等代碼這里不在敘述,在opc客戶端開發(fā)中,有以下問題需要注意:
(1) 由于opc標(biāo)簽的數(shù)量比較多,應(yīng)該使用一次性添加所有標(biāo)簽,示例如下:(“[]”內(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)
//異步寫入多個(gè)opc標(biāo)簽
(3) 為了方便調(diào)試和維護(hù),可以采用listview控件列出所有opc標(biāo)簽名稱、數(shù)值和質(zhì)量標(biāo)簽,而此時(shí)opc組已經(jīng)采用訂閱方式采集數(shù)據(jù),為了保證寫入listview的效率,避免受到datachange事件的影響,可以采用以下方法:
dim withevents callbackgroup as opcgroup
//當(dāng)listview寫入完成后
set callbackgroup = myopcgroup
之后采用callbackgroup的datachange事件就可以了。
(4) 還有一個(gè)很重要的問題,由于采用訂閱方式采集數(shù)據(jù),一旦vpn連接異常斷開,opc客戶端并沒有相應(yīng)通知,還認(rèn)為是通訊正常!比較好的解決辦法是:在plc中設(shè)置一個(gè)位,其值定時(shí)在0和1之間跳變(一般為1秒),程序只要監(jiān)視該值就可以了。dde相關(guān)部分這里不再敘述。
4 結(jié)束語
隨著城市建設(shè)的發(fā)展,污水處理廠提升泵站的數(shù)量越來越多,且大多分布在城市各地由于各種原因,很難鋪設(shè)光纜到污水處理廠區(qū)。與污水處理廠的通訊通常采用無線方式,而無線通訊比較容易受到干擾,數(shù)據(jù)的安全也不能保障,gprs等方式不能提供大數(shù)據(jù)量的穩(wěn)定傳輸。在這種情況下,采用vpn+opc的方式是一個(gè)較為理想的選擇,vpn具有價(jià)格低廉、安全、穩(wěn)定且容易管理等優(yōu)點(diǎn);opc則可以提供高速的數(shù)據(jù)傳輸性能、具有分布式com的安全管理機(jī)制、并且開發(fā)也簡(jiǎn)單,結(jié)合兩者開發(fā)的應(yīng)用程序,不僅代碼數(shù)量少、而且可以遠(yuǎn)程維護(hù),非常適合類似情況的用戶使用。項(xiàng)目現(xiàn)正常運(yùn)行于金華市秋濱污水處理廠中控室。