OPCClient和OPCServer軟件在Windows上的運行方式

近段時間,遇到不少人都被OPCClient與OPCServer之間的通訊搞得頭大,通過幾次遠程協助後,總結了OPCClient和OPCServer在Windows上運行方式的恩怨,希望對各位有用。 
目前市場上的OPCClient和OPCServer軟件在Windows上的運行方式有Windows 桌面程序和Windows NT服務。本來也沒啥。但由於OPCCLient是一個廠家的軟件,而OPCServer是另外一個廠家的軟件,由於軟件的多樣性,也就導致瞭如下一些現象:
1. OPCCLient連接目標OPCServer,發現無法連接,但在OPCServer計算機上明明看見OPCServer進程已經啓動。
2. OPCCLient連接目標OPCServer,能連接,也能看見測點,但無法獲取到數據。
經過多次現場的積累後,發現此類問題多出現在OPCClient和OPCServer軟件在Windows上的運行方式不同導致的。也就是說,OPCClient和OPCServer軟件的運行方式不一樣。譬如,OPCCLient是Windows NT服務方式,而OPCServer是桌面程序方式(多是組態軟件的OPCServer都是桌面程序方式吧!!)。而當OPCCLient是Windows 桌面程序方式,OPCServer時Windows NT服務時,發現上面的現象基本不出現。這是爲什麼呢?
原因如下:
OPCClient和OPCServer都是基於DCOM的應用,DCOM的特點是OPCServer無需先運行或啓動,等待OPCCLient請求時,由操作系統在將OPCServer拽起來。這種機制的好處就是隨用隨啓。但這種機制如果處理不好吧,就會導致一些問題。當OPCCLient是Windows NT服務時,OPCServer被拽起來後,是運行在System這個系統賬戶下面的。相對於Windows的桌面用戶來說,是另外一個隔離開的空間。因此當桌面運行類型的OPCServer被Windows NT服務方式的OPCCLient拽起來後,被運行在System這個系統賬戶的空間。而如果這個OPCServer程序又做了全局唯一進程運行的限制或與數據庫只允許一個TCP連接時,上述的兩種現象基本就會出現。這就是這段時間好幾個朋友遇到的OPC通訊故障現象。
如果讓自己開發的OPC程序兼容性更好呢?
1. 當開發OPCCLient程序時,最好使用Windows桌面程序方式,這種方式可兼容OPCServer程序運行在Windows桌面程序方式和Windows NT服務方式。
2. 當開發OPCServer程序時,最好使用Windows NT服務方式,這種方式可兼容OPCClient程序運行在Windows桌面程序方式和Windows NT服務方式。
如果很不幸遇到了Windows NT服務的OPCClient去採集Windows 桌面程序的OPCServer(加上OPCServer本身的全局唯一限制),那麼你可以去Windows NT服務的管理器中將Windows NT服務的OPCClient更改爲指定的系統用戶運行,大多數情況下可以解決問題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章