2011-07-25 63 views
4

我試圖用西門子PLC S7 200與.NET(C#或VB無關)進行接口。但是我不能建立連接。我正在使用Win7 64位機器,但似乎無法使它在32位上工作。我有兩個文件:.NET與西門子PLC的接口S7 200

Interop.OPCSiemensDAAutomation.dll Siemens_s7-200.dll

從另外一個項目,我想遷移到新系統。然而,我總是得到一個com例外。

Retrieving the COM class factory for component with CLSID {01704EBD-44B5-11D3-9C09-00105A3DD3AC} failed due to the following error: 80040154. 

我已經試過libnodave,並且似乎無法得到那個工作。有人可以給我提供一些指示(請不要在這一個XKCD幽默)到哪裏看?

我無法在此機器上安裝西門子PC-Access,稍後將嘗試在WinXP 32bit上安裝。我讀了一些關於我需要OPC服務器或機器上的東西?

請多多包涵,首次採用了PLC的接口:/

+0

對不起,我忘了說它是通過一個USB PPI電纜連接到PLC本身。我也已經嘗試使用regsvr32註冊上面列出的兩個DLL。 – Henrik

+0

您是否想要了解PLC中的數據值?讀/寫類型的東西? – jwatts1980

+0

@ jwatts1980正是!我只需要與3個值進行交互。我不知道它爲什麼這麼難......讓我想要在Arduino中挖掘出那些東西和東西的膽量:P順便說一下,如果我找到解決方案,一定會發布它。 – Henrik

回答

4

的COM異常是一個非常通用的錯誤指示COM庫本身還是一個它的依賴無法加載。我會檢查的一些東西是:

  • COM庫是否在機器上註冊?您可以使用regsvr32註冊COM DLL。
  • COM庫是否需要其他可能不在機器上的依賴關係?你可以使用dumpbin /dependents來解決這個問題。
  • 西門子PC-Access軟件是否必須安裝在機器上?你說你不能安裝它,這可能解釋了爲什麼COM庫無法加載。

不幸的是,這關於我可以提供解決您的具體問題的所有幫助。但是,我可以指出,您可以使用以下產品作爲OPC服務器,並具有與西門子S7兼容的驅動程序。這些將是使用西門子OPC服務器的替代方案。

我已經在過去使用這兩種產品,我敢肯定,我用其中的一個(我不記得是哪一個)交談西門子S7。

另外here是一個非常好的網站,提供有關在.NET中使用OPC的信息。

+0

感謝您的回覆!我實際上是在一臺裝有XP的32位計算機上(在一臺虛擬機上)啓動並運行PC-Access,因此可能是這樣。但現在的問題是,它是一個評估版本,這是不行的。他們的previos軟件使用了一些免費的圖書館(我無法猜測是什麼,因爲它只是dll)或類似的東西,而且它也有問題部署像PC-Acccess這樣的整個解決方案。所以會明確檢查你的鏈接。 – Henrik

+0

我將同上Kepware鏈接。 Kepware服務器本身是免費的......您支付驅動程序連接到某些PLC。不知道Kepware是否有任何類型的.NET API。 – jwatts1980

2

我已經研究過這種類型的事情。如果您嘗試直接訪問控制器,則可能遇到各種專有問題。自動化軟件公司往往對其協議保持非常嚴格的統治。如果它只是你所追求的數據,那麼OPC可能是最好的選擇。但是,從我發現的情況來看,這也不是免費的。 OPC基金會(opcfoundation.org)有一個.NET API,我相信這個API的價格在$ 1-2K範圍內。

+0

嗯,我真的不知道他們以前的解決方案如何工作。我會盡量深入分析它,但我似乎只能找到那些DLL。有時我希望像我正在開發的那種簡單的設備只使用標準的串行端口。 – Henrik

+0

@Henrik:如果你碰巧解決了這個問題,並考慮一下,你可以在這裏發佈你的解決方案的概述嗎?我很想知道什麼最終會爲你工作......謝謝! – jwatts1980

2

再試一次。我已成功使用libnodave與S7 200,300甚至400和400H(冗餘)。沒有C#的經驗,但它在我的linux C守護程序以及Delphi和Lazarus Windows應用程序中全天候工作(鋼廠和高爐)。如果你無法做到,那麼準備在用於S7 200的OPC服務器(Kepware,Matrikon ...)和C#中的OPC客戶端庫上花費$$$$。