【问题标题】:Interfacing .NET with Siemens PLC S7 200.NET 与 Siemens PLC S7 200 的接口
【发布时间】:2011-10-12 16:55:08
【问题描述】:

我正在尝试将 .NET(C# 或 VB 无关紧要)与 Siemens PLC S7 200 连接。但是我无法建立连接。我正在使用 Win7 64 位机器,但似乎也无法让它在 32 位上运行。我有两个文件:

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 幽默)去哪里看?

我无法在这台机器上安装 Siemens PC-Access,稍后将在 WinXP 32bit 上尝试。我读到一些关于我需要 OPC 服务器或机器上的东西?

请多多包涵,第一次接触PLC:/

【问题讨论】:

  • 对不起,我忘了说它是通过 USB PPI 电缆连接到 PLC 本身。我也已经尝试使用 regsvr32 注册上面列出的两个 DLL。
  • 您是否要获取 PLC 中的数据值?读/写类型的东西?
  • @jwatts1980 没错!我只需要与 3 个值进行交互。我不知道为什么它会这么难......让我想撕掉那个东西的胆量和Arduino中的东西:P顺便说一句,当我找到解决方案时一定会发布它。
  • 我有新信息!结果我的客户希望我使用 Simenens PC Access 软件。它包括 Simatic OPC 服务器。而且该系统实际上正在创建一个虚拟 COM 端口供我访问,因此我不必自己通过 OPC 或访问 PLC。下一个问题是 ****(对不起我的表达,我已经厌倦了)如何通过 COM 与 plc 交谈。我可以轻松连接到 COM 端口等,但我无法从 PLC 获得响应。我的猜测是他们背后有一些特殊的编程。只有一种方法可以找出答案,我一定会报告我的发现。

标签: c# .net vb.net hardware plc


【解决方案1】:

COM 异常是一个相当普遍的错误,表示无法加载 COM 库本身或其依赖项。我会检查的一些事情是:

  • COM 库是否已在机器上注册?您可以使用regsvr32 注册COM dll。
  • COM 库是否需要机器上可能没有的其他依赖项?您可以使用dumpbin /dependents 来解决这个问题。
  • 是否必须在机器上安装 Siemens PC-Access 软件?你说你无法安装它,这可能解释了为什么无法加载 COM 库。

很遗憾,我在解决您的具体问题时可以提供的所有帮助。但是,我可以指出,您可以使用以下产品作为 OPC 服务器并具有与 Siemens S7 兼容的驱动程序。这些将是使用 Siemens OPC 服务器的替代方案。

我过去使用过这两种产品,我很确定我使用过其中一种(我不记得是哪一种)来与 Siemens S7 通话了。

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

【讨论】:

  • 感谢您的回复!实际上,我在一台装有 XP(在 VM 中)的 32 位机器上启动并运行了 PC-Access,所以可能就是这样。但问题是现在它是一个评估版本,这是不行的。他们的 previos 软件使用了一些免费库(我猜不出它是什么,因为它只是 dll)或类似的东西,而且部署像 PC-Acccess 这样的整个解决方案也会出现问题。所以一定会检查你的链接。
  • 我将使用 Kepware 链接。 Kepware 服务器本身是免费的……您需要为连接某些 PLC 的驱动程序付费。不确定 Kepware 是否有任何类型的 .NET API。
【解决方案2】:

我以前研究过做这种事情。如果您尝试直接访问控制器,您可能会遇到各种专有问题。自动化软件公司倾向于对其协议保持非常严格的控制。如果它只是您所追求的数据,那么 OPC 可能是最好的方法。但是,据我发现,这也不是免费的。 OPC 基金会 (opcfoundation.org) 有一个 .NET API,我相信它的价格在 1 到 2000 美元之间。

【讨论】:

  • 嗯,我真的很想知道他们以前的解决方案是如何工作的。我将尝试深入分析它,但我似乎只能找到那些 DLL。有时我希望我正在开发的这种简单设备只使用标准串行端口。
  • @Henrik:如果你碰巧解决了这个问题,并考虑一下,你能在这里发布你的解决方案的概述吗?我很想知道最终对你有用的东西......谢谢!
【解决方案3】:

再试一次。我已经成功地将 libnodave 与 S7 200、300 甚至 400 和 400H(冗余的)一起使用。没有使用 C# 的经验,但它可以在我的 linux C 守护程序以及 Delphi 和 Lazarus Windows 应用程序中 24/7(钢厂和高炉)工作。如果你做不到,那么准备在 S7 200(Kepware、Matrikon...)的 OPC 服务器和 C# 中的 OPC 客户端库上花费 $$$。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-10-05
    • 1970-01-01
    • 2017-04-04
    • 2020-02-01
    • 2017-03-13
    • 2015-12-13
    • 2013-09-11
    • 2021-02-15
    相关资源
    最近更新 更多