首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >编译modbus rs232时出现错误

编译modbus rs232时出现错误
EN

Stack Overflow用户
提问于 2015-04-11 14:15:17
回答 1查看 1.1K关注 0票数 0

我是新来爪哇的。我正试着在modbus上阅读。PLC是从设备,组态良好。我的java文件无法读取modbus values.here是下面的code..given。master.init();方法出错。在这种情况下请帮帮我。

代码语言:javascript
运行
复制
package com.mod4j;
import java.io.File;
import gnu.io.SerialPort;
import com.serotonin.io.serial.SerialParameters;
import com.serotonin.*;
import com.serotonin.modbus4j.ModbusFactory;
import com.serotonin.modbus4j.ModbusMaster;
import com.serotonin.modbus4j.code.DataType;
import com.serotonin.modbus4j.code.RegisterRange;
import com.serotonin.modbus4j.exception.ModbusInitException;
import com.serotonin.modbus4j.locator.BaseLocator;
import com.serotonin.modbus4j.locator.NumericLocator;
import com.serotonin.modbus4j.msg.ReadCoilsRequest;
import com.serotonin.modbus4j.msg.ReadCoilsResponse;
import com.serotonin.modbus4j.msg.ReadDiscreteInputsRequest;
import com.serotonin.modbus4j.msg.ReadHoldingRegistersRequest;
import com.serotonin.modbus4j.msg.ReadHoldingRegistersResponse;
import com.serotonin.modbus4j.msg.ReadInputRegistersRequest;
import com.serotonin.modbus4j.msg.ReadInputRegistersResponse;
import com.serotonin.modbus4j.msg.WriteCoilRequest;
import com.serotonin.modbus4j.msg.WriteCoilResponse;
import com.serotonin.modbus4j.msg.WriteRegistersRequest;
import com.serotonin.modbus4j.msg.WriteRegistersResponse;
import gnu.io.*;

public class Modbus4JTest
{

    public static void main(String[] args) throws Exception
    {  

   try 
   {
   SerialParameters params = new SerialParameters();
   params.setCommPortId("COM1");
   params.setBaudRate(9600);
   params.setDataBits(8);
   params.setStopBits(1);
   params.setParity(0);

   ModbusFactory modbusFactory = new ModbusFactory();
   ModbusMaster master = modbusFactory.createRtuMaster(params);
   master.setTimeout(100);
   master.setRetries(3);

   byte [] RIR,RHR,RDI,RCR;
   int slaveId=1;
   int startOffset=0;
   int numberOfRegisters=10;
   int numberOfBits=10;

   try
   {
        master.init();
        while (true) 
        {
                ReadInputRegistersRequest reqRIR = new ReadInputRegistersRequest(slaveId, startOffset, numberOfRegisters);
                System.out.println("ReadInputRegistersRequest reqRIR =" +reqRIR);
                ReadInputRegistersResponse resRIR = (ReadInputRegistersResponse) master.send(reqRIR);
                RIR = resRIR.getData();
                System.out.println("InputRegisters :" + RIR);

                ReadHoldingRegistersRequest reqRHR = new ReadHoldingRegistersRequest(slaveId, startOffset, numberOfRegisters);
                ReadHoldingRegistersResponse resRHR = (ReadHoldingRegistersResponse) master.send(reqRHR);
                RHR=resRHR.getData();
                System.out.println("HoldingRegister :" + RHR);

                ReadDiscreteInputsRequest reqRDI= new ReadDiscreteInputsRequest(slaveId, startOffset, numberOfBits);
                ReadCoilsResponse resRDI = (ReadCoilsResponse) master.send(reqRDI);
                RDI=resRDI.getData();
                System.out.println("DiscreteInput :" + RDI);

                ReadCoilsRequest reqRCR = new ReadCoilsRequest(slaveId, startOffset, numberOfBits);
                ReadCoilsResponse resRCR = (ReadCoilsResponse) master.send(reqRCR);
                RCR=resRCR.getData();   
                System.out.println("CoilResponce :" + RCR);

                short[] sdata = null;
                WriteRegistersRequest reqWR = new WriteRegistersRequest(slaveId, startOffset, sdata);
                WriteRegistersResponse resWR = (WriteRegistersResponse) master.send(reqWR);

                int writeOffset = 0;
                boolean writeValue = true;
                WriteCoilRequest reqWC = new WriteCoilRequest(slaveId, writeOffset, writeValue);
                WriteCoilResponse resWC = (WriteCoilResponse) master.send(reqWC);

                Thread.sleep(1000);
             }//end while
        }//end try
       catch (Exception e) 
       {

            e.printStackTrace();
   }//end catch

  finally 
   {
       master.destroy();
   }//end finally
 }//end try
catch (Exception e)
{
    e.printStackTrace();
}//end catch

}// end main
    }//end class Modbus4JTest

这是我正在运行的java文件。

下面是我在编译后得到的错误。请建议哪里出了问题,并请在...纠正我。是否有任何分步教程或演示视频,请给我链接

ayyaz.nadaf@gmail.com

代码语言:javascript
运行
复制
Exception in thread "main" java.lang.NoClassDefFoundError:      
jssc/SerialPortException
at com.serotonin.io.serial.SerialUtils.openSerialPort(SerialUtils.java:94)
at com.serotonin.modbus4j.serial.SerialMaster.init(SerialMaster.java:58)
at com.serotonin.modbus4j.serial.rtu.RtuMaster.init(RtuMaster.java:45)
at com.mod4j.Modbus4JTest.main(Modbus4JTest.java:58)
Caused by: java.lang.ClassNotFoundException: jssc.SerialPortException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 4 more
EN

回答 1

Stack Overflow用户

发布于 2015-04-11 23:55:26

看起来你使用的是Modbus4J。它基于用于串行通信的jSSC (Java Simple Serial Connector),因此请确保在编译时找到jSSC (您可能需要单独下载它,因为您将获得一个与jSSC类相关的ClassNotFoundException )。

我不知道任何教程,但我可能建议你看看Modbus4J forum archive。这是一个简单的Modbus RTU example

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29574771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档