【问题标题】:Writing a Java program using sockets to connect to a PLC (Programmable Logic Controller)使用套接字编写 Java 程序以连接到 PLC(可编程逻辑控制器)
【发布时间】:2012-12-18 01:02:25
【问题描述】:

我正在编写一个程序,该程序通过套接字从 PLC (Allen Bradley 1756 L63) 中获取模拟和离散数据点。到目前为止,我在创建套接字时遇到了麻烦。我的代码如下:

import java.io.*;
import java.net.*;

class PLCServer
{
    public static void main(String argv[]) throws IOException
    {
        // IP address of the ethernet card
        String ENBTIP = "192.168.10.14";
        DataInputStream socketReader = null;
        PrintStream socketWriter = null;

        try 
        {
                Socket client = new Socket(ENBTIP, 9100);
                socketReader = new DataInputStream(client.getInputStream());
                socketWriter = new PrintStream(client.getOutputStream());
            } catch (UnknownHostException e) {
                System.out.println("Error setting up socket connection");
                System.out.println("host: 192.168.10.14 port: 9100");
            } catch (IOException e) {
                System.out.println("Error setting up socket connection: " + e);
                System.out.println("host: 192.168.10.14 port: 9100");
            }
        // Debugging code
        // System.out.println(InetAddress.getByName(ENBTIP).isReachable(10000));
    }
}

当我运行程序时,我得到一个连接被拒绝的异常。

输出:

nick@ubuntu:~/Java Programs/PLC Program$ java PLCServer 
Error setting up socket connection: java.net.ConnectException: Connection refused
host: 192.168.10.14 port: 9100

谁能给我一些指导?

【问题讨论】:

  • Connection refused
  • 您的代码没有问题;无论应该在该 IP 上侦听的内容是什么:端口都没有,或者不接受来自您正在运行此代码的机器的连接。

标签: java sockets plc


【解决方案1】:

您可以先尝试“ping 192.168.10.14”,如果它有响应(应该是),然后尝试“telnet 192.168.10.14 9100”。如果它有一些响应,例如: 正在尝试 192.168.10.14... 连接到 192.168.10.14。 那么你的java代码是错误的。否则就是网络问题。

【讨论】:

  • 我找到了一个引用,其中包含 Allen Bradley 卡使用的所有 TCP 端口,当然,我使用了错误的端口。使用端口 44818 Telnet 到该 IP 有效,我的 Java 程序也有效。谢谢!
猜你喜欢
  • 2017-08-19
  • 1970-01-01
  • 2014-08-06
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多