0

modbus シミュレーターへの接続は確立されていますが、シミュレーターからレジスター値を読み取ってコンソールに書き込もうとしていますが、できません。このコードは、modbus シミュレーターへの接続を正常に作成しますが、レジスター値を読み取る構文、つまりレジスター値を要求し、同じことについて応答しますが、レジスター値をフェッチできません。

以下は私が試したコードです。

package com.jamodapp;

import java.net.InetAddress;

import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.io.ModbusTCPTransaction;
import net.wimpi.modbus.msg.ReadInputDiscretesResponse;
import net.wimpi.modbus.msg.ReadMultipleRegistersRequest;
import net.wimpi.modbus.msg.ReadMultipleRegistersResponse;
import net.wimpi.modbus.net.TCPMasterConnection;

public class Connection 
{
    static int repeat = 1;
    static TCPMasterConnection con = null;    
    static InetAddress addr = null;        
    static int port = Modbus.DEFAULT_PORT;// 502 
    static ModbusTCPTransaction trans = null; // the transaction
    static ReadMultipleRegistersRequest req = null; // the request
    static ReadMultipleRegistersResponse res = null; // the response

        public static void main(String [] args) throws Exception 
        {
            addr = InetAddress.getByName("127.0.0.1");
            con = new TCPMasterConnection(addr);
            con.setPort(port);
            try 
            {
                con.connect ();
            } catch (Exception e) {

                System.out.println("Sorry could not establish the  connection");
            }
            if(con.isConnected())
            {
                System.out.println("Connection is establish");
            }
         // Prepare the request
            ReadMultipleRegistersRequest req=new ReadMultipleRegistersRequest();
            req.getHexMessage();

            req = new ReadMultipleRegistersRequest( );
            // Prepare the transaction
            trans = new ModbusTCPTransaction(con);
            trans.setRequest(req);

            // Execute the transaction repeat times
            trans.execute();
            res = (ReadMultipleRegistersResponse) trans.getResponse();
            int [] registers = new int[10] ;
            int k = 0;
            {
            int repeat = 0;
            do {
            ModbusTCPTransaction trans = null;

            {
            ReadInputDiscretesResponse res = (ReadInputDiscretesResponse) trans.getResponse();
            System.out.println("Digital Inputs Status=" + res.getDiscretes().toString());
            k++;
            } while (k < repeat);

            //TCPMasterConnection con = null;
            //6. Close the connection
            //con.close();


            {
            registers[9] = res.getWordCount();
            System.out.println(res.getWordCount());

            // Close the Modbus connection
                con.close();       

            }
            }

}
4

0 に答える 0