我需要将 OPC 服务器嵌入到 eclipse RCP 应用程序中,但我不知道从哪里开始。我正在使用 opcua4j 作为示例来创建服务器,但无法弄清楚如何连接到远程 PLC 设备。
我的问题是如何在给定客户端 IP 地址的情况下使用 OPC 从服务器与远程客户端通信?
Ps:关于opc ua java编程最好的教程/书是什么?
最佳答案
这可能会让您对 OPC 服务器的工作感到失望,我不太确定您知道多少,如果我转述的话,很抱歉。 OPC 服务器轮询而不是请求/回复通信方式。它轮询标签而不是设备。
检查此链接以获取 Java - OPC Deve - http://www.opcconnect.com/java.php#javacom
OPC 101
您将需要开发:
- channel
- 设备
- 变量
每个 channel 指定两件事。指定的两个方面是: 1. 物理介质(网络适配器,例如标准以太网设备或串行端口) 2. 使用的协议(protocol)(MODBUS、Allen Bradley、GE-Fanuc 等)。这意味着每个 channel 都不能在不同的介质或协议(protocol)上托管设备。
设备 该字段指定了一些内容。这些是:
- 地址。这可以是一个 IP 地址(对于以太网通过的协议(protocol)——例如 IDEC 串行封装协议(protocol)),或者是一个用于串行通信的标识号,例如 Profibus 或 Modbus ASCII/RTU。
- 驱动程序特定信息 - 这可能包括指定 CPU 型号或正在使用的 I/O 卡。这因司机而异。
变量是定义“标签”的地方。
- 标签名称
- PLC 地址。例如 M1 或 RW1 或 49075(虽然特定于驱动程序)
- 数据类型—— boolean 型、字型等。
每个标签或过程变量都有数据和元数据。这可以包括变量、上次更新、标签的健康状况等、工程单位。
最后
我实际上并没有编写自己的 OPC 服务器,但以上内容可能会有所帮助。我不确定上面的 Java SDK 提供了多少,但请考虑您的应用程序的安全性。
是否可以运行 OPC 服务器,轮询数据,然后您的应用程序与 OPC 服务器接口(interface)?这有助于避免(至少)与 OPC 混淆。您可以获得基于 Java 的 OPC 服务器,而不是在任何平台上运行,而且我相信大多数服务器都有 API,或者至少有一种方式来传递数据。
编辑
查看软件包 Pi ( http://www.osisoft.com/ )。这可能有助于解决这个问题。
关于java - 如何连接到plc并获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19796184/