DCOM機制給OPC通訊帶來的麻煩及解決辦法

發(fā)布時間:2024-03-21
近期在一個項目中調(diào)試opc通訊時遇到如下現(xiàn)象,我估計也有不少的同學遇到類似現(xiàn)象。
場景如下:在一臺windows 7的計算機上安裝了某國產(chǎn)組態(tài)軟件,組態(tài)軟件以opcserver方式對外提供數(shù)據(jù),組態(tài)軟件的程序都是帶界面的程序,opcserver程序在操作系統(tǒng)中只能運行一個進程實例;同時在此計算機安裝某國外軟件的opcclient程序,用于采集組態(tài)軟件opcserver的數(shù)據(jù),opcclient程序是標準的windows 服務(wù)。
現(xiàn)象描述如下:
1)如果帶界面的opcserver軟件已經(jīng)通過當前登錄賬戶運行起來,然后opcclient以windows服務(wù)方式運行,這種情況下opcclient無法與opcserver通訊。
2)如果帶界面的opcserver軟件未先運行,opcclient以windows服務(wù)方式運行后通過system賬戶將組態(tài)軟件的opcserver運行起來,這種情況下opcclient可以與opcserver通訊。
3)如果而帶界面的opcserver軟件被windows服務(wù)方式的opcclient以system賬戶運行起來后,這時如使用其他帶界面的opcclient程序訪問此opcserver,發(fā)現(xiàn)無法通訊;
總結(jié)一下這類情況就是:
對于桌面方式運行且只允許一個實例運行的opcserver軟件,如果opcserver程序和opcclient程序都是以非system賬戶或都是以system賬戶運行,那么可以通訊;如果一個是非system賬戶;另外一個是system賬戶,那么不能通訊。
遭遇這種現(xiàn)象主要是由于opc的采用的com機制導致的,com機制這里就不說了,當opcclient運行后,就和目標opcserver進行通訊,在操作系統(tǒng)允許的空間中檢測opcserver是否存在和是否運行,如果發(fā)現(xiàn)opcserver在運行,就與opcserver通訊,如果opcserver未運行,就通知操作系統(tǒng)的com協(xié)調(diào)器將目標opcserver運行起來。在上面描述的現(xiàn)象中,如果帶界面的opcserver軟件已經(jīng)通過當前登錄賬戶運行起來,而opcclient以windows服務(wù)方式運行在system賬戶的空間,那么opcclient就未能檢測到opcserver已經(jīng)運行,于是opcclient就讓com協(xié)調(diào)器在本空間中運行opcserver,但opcserver運行時,又檢測到自己在當前登錄賬戶的空間已經(jīng)啟動了,因此就拒絕再次運行。所以就發(fā)生了windows 服務(wù)方式的opcclient和帶界面的opcserver無法通訊的問題。
如何解決此類問題呢?按照如下步驟操作一下,基本可以解決windows 服務(wù)方式的opcclient和帶界面的opcserver無法通訊的問題。
1. 運行“控制面板”下“管理工具”下的“服務(wù)”,找到windows 服務(wù)方式的opcclient。選中服務(wù)的名稱并雙擊,在彈出的面板上切換到登錄。將登錄身份修改為此賬戶,填入指定賬戶的名稱和密碼,點“確定”按鈕即可。
2. 重啟opcclient的服務(wù)。
上一個:一加6怎么分屏多任務(wù)(一加6怎么分屏小窗口手機)
下一個:膨潤土復合防水毯是什么?

肇興侗寨有哪些特色美食
第一次起訴離婚多久可以起訴第二次
供應(yīng)商給2000元紅包犯法嗎
中國茶道中的藝、修、道
怎么讓sd卡在手機上顯示,怎樣才能使內(nèi)存卡在手機里顯示
盆栽月季如何度夏
厚聲25121WF4300T4E今日行情、最新報價
單片機中斷的IE和IP寄存器
波蘭lumel互感器
CC0201JRNPO9BN220,NPO 0201 22pF ±5% 50V
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos