【问题标题】:Resources to accessing a S7 Profinet PLC (1212C) from Java从 Java 访问 S7 Profinet PLC (1212C) 的资源
【发布时间】:2011-10-23 20:41:04
【问题描述】:

我在这里有一个比较特殊的问题。至少我认为这很特别,因为 Google 似乎无法为我提供我正在寻找的信息。

我最近购买了一个 S7 入门套件,其中包含一个 S7 1212C PLC。这一切都已设置并正在运行。

我想做的是编写一个与该控制器通信的 Java 程序(没有本机库)。我知道有 S7 Java Bean,但这些似乎只适用于 200/300/400 系列。是否有 Java 协议栈的任何(开源)实现,允许从 Java 访问这样的 PLC?如果不是,我真的很高兴能得到一些规范的指针,这些规范可以让我自己实现一个基本的堆栈(看起来网络上充满了高级信息,但周围似乎很少有低级的东西:-()

帮助不胜感激, 克里斯

【问题讨论】:

    标签: java plc


    【解决方案1】:

    libnodave有一个仅限beta测试器的Java版本,但我不知道是否支持1212。​​

    【讨论】:

    • 是的......我已经联系了那个人。希望尽快收到答复。目前,据我所知,该协议基于 ISO over TCP (RFC1006),我可以在 Apache Mina 项目中找到它的实现。除此之外,我已经订购了一本描述 ProfiNet Protokol 的书……希望它很快就会到货。我还要求独立于任何本机库。这应该是一个纯 Java 解决方案,它消除了相当多的商业化和昂贵的解决方案。
    • 好吧...现在我获得了更多信息。看来 Libnodave 使用 Profinet CBA 访问 PLC。 profinet 的人建议看一下基于 UDP 的 Profinet IO。不幸的是,似乎没有一个可以使用 Profinet IO 的程序示例(无论是哪种语言)。
    • 是的......与此同时,我也发现了这一点。似乎没有一个使用 Profinet IO (UDP) 的示例。我想我可能不得不购买完整的规格。
    【解决方案2】:

    为了能够关闭这个。没有纯 Java 方式来实际使用 ProfinetIO 问题是启动通信不是问题,轮询值也是可能的,但是为了启动正常的 Profinet IO 通信,我必须访问 TCP 和 UDP 下面的 IP 堆栈Java不允许。不幸的是,PLC 发送的“实时”状态信息是使用 Java 不支持的 IP 帧类型发送的。

    【讨论】:

      【解决方案3】:

      S7-1200 和 S7-1500 系列能够通过 ModbusTCP 进行通信(请参阅https://www.dmcinfo.com/latest-thinking/blog/id/8869/using-an-s7-1200-plc-as-a-modbus-tcp-slave)。

      有一个通过 ModbusTCP 进行通信的 Java 库:http://jamod.sourceforge.net(还没有尝试过)。

      也许这种组合对你有用。

      【讨论】:

      • 事实上旧的 S7-300 和 S7-400 也可以通过 CPU 端口或添加的 CP 卡通过 ModbusTCP 进行通信,但是需要获得单独的许可证才能使用此功能,因为它不包含在默认函数库中(在 S7-1200 和 S7-1500 系列中,很高兴现在默认包含此库的改进版本)。
      【解决方案4】:

      我不知道这是否对您有帮助,但我们有一个 java 库 (LGPL 3.0),它通过 TCP/IP 与 S7 设备进行本地通信。

      看看http://openscada.org

      代码本身可以在http://git.openscada.org/?p=org.openscada.atlantis.git;a=tree;f=org.openscada.da.server.dave;hb=HEAD找到

      【讨论】:

      • 谢谢你...我会看看它。我实际上手动实现了 Profinet IO 协议的一部分,但是对于实际的数据交换,我必须在协议栈上低于 TCP,这在 Java 中是不可能的,因此我放弃了它。认为这个 Profinet CBA 实现足以满足我想要使用它的目的,并且我可以看到它利用了很多我作为开发人员很容易使用的工具(JCIFS、JInterop、...)感谢您的指点 :-)
      【解决方案5】:

      查看Moka7:它是 Java 中 S7 协议的实现。

      【讨论】:

        猜你喜欢
        • 2016-06-13
        • 2017-03-13
        • 1970-01-01
        • 2016-02-28
        • 2011-04-23
        • 2012-04-27
        • 2018-10-09
        • 2011-10-12
        • 2020-12-31
        相关资源
        最近更新 更多