關OPC通訊的問題
抓包分析吧,可以向廠家請教包的內容
如何配置OPC DCOM
本文檔根據各種不同的情況,講述如何進行OPC DCOM配置。
對於遠程訪問OPC服務器,需要在客戶和服務器計算機上都進行DCOM設置,以前我們采用的方式是: 客戶、服務器都建立一個名字、密碼相同的具有管理員權限的帳號,並分別以次登錄,在服務器端將OPC服務器的啟動方式設為交互式用戶。這種方法雖然方便,但安全性較差,不利於在實際應用中推廣。這裏提供一些較合理的解決方案。(假定都是在工作組裏)
(1) 序言
在使用了OPC技術,並有網絡數據訪問的應用係統中,不可避免地要進行OPC DCOM權限配置。
DCOM配置與windows操作係統的安全體係結合在一起,而各版本的操作係統(9x、NT、2000、XP等)的安全體現又或多或少地有所區別;同時,OPC服務器運行的方式也不盡相同(進程內、進程外、係統服務、有無界麵……);而且,不同的應用係統對安全的要求也不同。總之,要想根據具體情況盡量合理地完成OPC DCOM配置並不是一件很輕鬆的事。
本文檔根據各種不同的情況,講述如何進行OPC DCOM配置。
(2) 準備
要進行DCOM安全配置,操作者通常必須擁有客戶和服務器計算機的管理員權限。
【注意】一般情況下,DCOM通信是基於TCP/UDP的,所使用的端口不固定,很可能被一些防火牆軟件屏蔽。如果本文下述配置不成功的話,請嚐試關閉客戶和服務器計算機上的防火牆,或者以帶網絡連接的安全模式啟動係統(這時防火牆軟件一般不被自動運行)。
(3) 最簡單的情況
如果用戶對網絡安全基本上沒有要求,或者處於客戶、服務器程序開發階段,......
(4) 服務器計算機始終有用戶登錄的情況(NT/2000)
這也是實際應用中比較常見的情況,但對於以NT服務方式運行的OPC服務器不適合。設置方法如下:
? 在服務器計算機上建立一個用戶,如OPCUser,可以是管理員,也可以是一般用戶,服務器計算機在運行OPC服務器時必須以這個用戶登錄。
? 在服務器計算機上建立一個用戶組,如OPCClients。
(單一客戶情況下可以不建立,建這個組的目的是管理方便)
? 在各個OPC客戶計算機中,分別建立OPCUser用戶,口令也要與服務器上的一致,可以設為普通用戶以保證安全。
? 客戶計算機運行時不必以OPCUser登錄,比如使用ClientA登錄,就要在服務器上建立相同的用戶ClientA及相同的密碼。並在服務器計算機上將ClientA加入到OPCClients組中。ClientA在客戶和服務器計算機上都可以是普通用戶。
? 服務器端DCOM配置
運行dcomcnfg,進行如下設置:
默認屬性:
啟用DCOM;
默認身份驗證級別:連接
默認模擬級別:標識
默認安全機製:
默認訪問權限:
至少要保證OPCClients組允許訪問,也可放寬至Everyone;
默認啟動權限:至少保證允許INTERACTIVE用戶調用;
默認配置權限:一般情況下不需修改。
默認協議:保證麵向連接的TCP/IP在最上,其它可以刪除。
具體的服務器配置:
常規:身份驗證級別為默認值;
位置:在這台計算機上運行;
安全性:使用默認的訪問和啟動權限,配置權限不要修改;
身份標識:交互式用戶。
終結點:不修改。
OPCEnum程序配置:
在dcomcnfg程序的應用程序列表裏找到opcenum.exe,對其按照上麵具體服務器的配置進行設置。
? 客戶計算機的配置:
為了保證OPC數據訂閱等回調機製能正常運行,需要對客戶計算機的DCOM權限進行配置。
默認屬性、默認協議的配置和服務器端基本一致;
默認安全機製隻需要修改默認訪問權限。保證允許OPCUser訪問。也可放寬至Everyone。
【注意】
在服務器沒有用戶登錄的情況下,遠程將無法啟動OPC服務器;
對於有用戶界麵,並需要界麵交互的OPC服務器,建議(可能必須)采用這種方式。
(5) OPC服務器為後台程序的情況(NT/2000)
這種情況下,服務器計算機可以沒有用戶登錄。
做為後台程序,OPC服務器有兩種運行方式:係統服務(service)方式和普通用戶程序。
這裏隻介紹普通程序方式,係統服務方式的配置說明以後添加。
OPC服務器做為普通方式運行的後台程序,一般沒有用戶界麵。完全可以按照(1)中有界麵的方式進行配置,即設置為交互式用戶啟動。
但是(1)的配置方式限定了服務器計算機必須有用戶登錄,而且登錄用戶必須在客戶計算機上有DCOM訪問權限。所以,無界麵的後台OPC服務器可以用另一種更靈活的方式運行。
配置方法:(未明確說明的部分與(1)相同)
在服務器端按照(1)中所述建立一個OPCUser用戶,專門用來運行OPC服務器。然後在OPC服務器屬性配置中,將啟動方式改為指定用戶,注意要輸入用戶密碼。
這樣,OPC服務器計算機可以用任意用戶登錄,當客戶計算機發出連接請求時,係統負責以OPCUser的身份運行OPC服務器,如果已經運行則使用已有的OPC服務器。
【注意】還有一種啟動方式,是“啟動”用戶。即係統以發連接請求的用戶的身份啟動OPC服務器,這可能造成服務器計算機上同時運行多個OPC服務器的實例,顯然不妥。所以一般情況下不建議設置為“啟動”用戶,雖然它是缺省選項。
(6) Windows XP係統下的配置說明
在XP操作係統(SP1,不包括SP2及其以後版本)下,OPC的配置實際上和NT/2000基本一樣,這體現在OPC DCOM相關的各項配置在注冊表中的位置、名稱都是一致的。
二者隻是配置界麵不同
求OPC中COM端口的read和Write的函數釋義
在用ReadFile和WriteFile讀寫串行口時,既可以同步執行,也可以重疊(異步)執行。在同步執行時,函數直到操作完成後才返回。這意味著在同步執行時線程會被阻塞,從而導致效率下降。在重疊執行時,即使操作還未完成,調用的函數也會立即返回。費時的I/O操作在後台進行,這樣線程就可以幹別的事情。
ReadFile函數隻要在串行口輸入緩衝區中讀入指定數量的字符,就算完成操作。而WriteFile函數不但要把指定數量的字符拷入到輸出緩衝中,而且要等這些字符從串行口送出去後才算完成操作。
BOOL ReadFile(
HANDLE hFile, //文件的句柄
LPVOID lpBuffer, //用於保存讀入數據的一個緩衝區
DWORD nNumberOfBytesToRead, //要讀入的字節數
LPDWORD lpNumberOfBytesRead, //指向實際讀取字節數的指針
LPOVERLAPPED lpOverlapped
//如文件打開時指定了FILE_FLAG_OVERLAPPED,那麼必須,用這個參數引用一個特殊的結構。
//該結構定義了一次異步讀取操作。否則,應將這個參數設為NULL
);
FILE_FLAG_OVERLAPPED
文件或設備被打開或創建異步I / O。
當後續的I / O操作完成這個句柄,OVERLAPPED結構中指定的事件 將被設置為有信號狀態。
如果這個標誌被指定,該文件可用於同時讀取和寫入操作。
如果沒有指定這個標誌,然後被序列化I / O操作,即使調用讀寫函數指定一個OVERLAPPED結構。
BOOLWriteFile(
HANDLEhFile,//文件句柄
LPCVOIDlpBuffer,//數據緩存區指針
DWORDnNumberOfBytesToWrite,//你要寫的字節數
LPDWORDlpNumberOfBytesWritten,//用於保存實際寫入字節數的存儲區域的指針
LPOVERLAPPEDlpOverlapped//OVERLAPPED結構體指針
);
向大神求助,組態王 OPC SERVER 端口41190衝突
這不是組態王的問題 是opc服務器沒能做好,找艾默生opc的客服去 讓他們給補丁~
怎麼用C#往PLC某個端口寫數據
新建C#應用程序,命名為OPC Client,將OPCAutomation.dll引用,如圖。 using OPCAutomation; 2. 定義OPC的三個接口類OPCServer類、OPCGroup類和OPCItem類;