//License
/***
* Java Modbus Library (jamod)
* Copyright (c) 2002-2004, jamod development team
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* Neither the name of the author nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS
* IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
***/
package net.wimpi.modbus;
/**
* Interface defining all constants related to the
* Modbus protocol.
*
* @author Dieter Wimberger
* @version 1.2rc2 (14/04/2014)
*/
public interface Modbus {
/**
* JVM flag for debug mode. Can be set passing the system property
* net.wimpi.modbus.debug=false|true (-D flag to the jvm).
*/
public static final boolean debug = "true".equals(System.getProperty("net.wimpi.modbus.debug"));
/**
* Defines the class 0 function code
* for <tt>read multiple registers</tt>.
*/
public static final int READ_MULTIPLE_REGISTERS = 3;
/**
* Defines the class 0 function code
* for <tt>write multiple registers</tt>.
*/
public static final int WRITE_MULTIPLE_REGISTERS = 16;
/**
* Defines the class 1 function code
* for <tt>read coils</tt>.
*/
public static final int READ_COILS = 1;
/**
* Defines a class 1 function code
* for <tt>read input discretes</tt>.
*/
public static final int READ_INPUT_DISCRETES = 2;
/**
* Defines a class 1 function code
* for <tt>read input registers</tt>.
*/
public static final int READ_INPUT_REGISTERS = 4;
/**
* Defines a class 1 function code
* for <tt>write coil</tt>.
*/
public static final int WRITE_COIL = 5;
/**
* Defines a standard function code
* for <tt>write multiple coils</tt>.
*/
public static final int WRITE_MULTIPLE_COILS = 15;
/**
* Defines a class 1 function code
* for <tt>write single register</tt>.
*/
public static final int WRITE_SINGLE_REGISTER = 6;
/**
* Defines the byte representation of the coil state <b>on</b>.
*/
public static final int COIL_ON = (byte) 255;
/**
* Defines the byte representation of the coil state <b>pos</b>.
*/
public static final int COIL_OFF = 0;
/**
* Defines the word representation of the coil state <b>on</b>.
*/
public static final byte[] COIL_ON_BYTES = {(byte) COIL_ON, (byte) COIL_OFF};
/**
* Defines the word representation of the coil state <b>pos</b>.
*/
public static final byte[] COIL_OFF_BYTES = {(byte) COIL_OFF, (byte) COIL_OFF};
/**
* Defines the maximum number of bits in multiple read/write
* of input discretes or coils (<b>2000</b>).
*/
public static final int MAX_BITS = 2000;
/**
* Defines the Modbus slave exception offset that is added to the
* function code, to flag an exception.
*/
public static final int EXCEPTION_OFFSET = 128; //the last valid function code is 127
/**
* Defines the Modbus slave exception type <tt>illegal function</tt>.
* This exception code is returned if the slave:
* <ul>
* <li>does not implement the function code <b>or</b></li>
* <li>is not in a state that allows it to process the function</li>
* </ul>
*/
public static final int ILLEGAL_FUNCTION_EXCEPTION = 1;
/**
* Defines the Modbus slave exception type <tt>illegal data address</tt>.
* This exception code is returned if the reference:
* <ul>
* <li>does not exist on the slave <b>or</b></li>
* <li>the combination of reference and length exceeds the bounds
* of the existing registers.
* </li>
* </ul>
*/
public static final int ILLEGAL_ADDRESS_EXCEPTION = 2;
/**
* Defines the Modbus slave exception type <tt>illegal data value</tt>.
* This exception code indicates a fault in the structure of the data values
* of a complex request, such as an incorrect implied length.<br>
* <b>This code does not indicate a problem with application specific validity
* of the value.</b>
*/
public static final int ILLEGAL_VALUE_EXCEPTION = 3;
/**
* Defines the default port number of Modbus
* (=<tt>502</tt>).
*/
public static final int DEFAULT_PORT = 502;
/**
* Defines the maximum message length in bytes
* (=<tt>256</tt>).
*/
public static final int MAX_MESSAGE_LENGTH = 256;
/**
* Defines the default transaction identifier (=<tt>0</tt>).
*/
public static final int DEFAULT_TRANSACTION_ID = 0;
/**
* Defines the default protocol identifier (=<tt>0</tt>).
*/
public static final int DEFAULT_PROTOCOL_ID = 0;
/**
* Defines the default unit identifier (=<tt>0</tt>).
*/
public static final int DEFAULT_UNIT_ID = 0;
/**
* Defines the default setting for validity checking
* in transactions (=<tt>true</tt>).
*/
public static final boolean DEFAULT_VALIDITYCHECK = true;
/**
* Defines the default setting for I/O operation timeouts
* in milliseconds (=<tt>3000</tt>).
*/
public static final int DEFAULT_TIMEOUT = 3000;
/**
* Defines the default reconnecting setting for
* transactions (=<tt>false</tt>).
*/
public static final boolean DEFAULT_RECONNECTING = false;
/**
* Defines the default amount of retires for opening
* a connection (=<tt>3</tt>).
*/
public static final int DEFAULT_RETRIES = 3;
/**
* Defines the default number of msec to delay before transmission
* (=<tt>50</tt>).
*/
public static final int DEFAULT_TRANSMIT_DELAY = 0;
/**
* Defines the maximum value of the transaction identifier.
*/
public static final int MAX_TRANSACTION_ID = (Short.MAX_VALUE * 2) - 1;
/**
* Defines the serial encoding "ASCII".
*/
public static final String SERIAL_ENCODING_ASCII = "ascii";
/**
* Defines the serial encoding "RTU".
*/
public static final String SERIAL_ENCODING_RTU = "rtu";
/**
* Defines the serial encoding "BIN".
*/
public static final String SERIAL_ENCODING_BIN = "bin";
/**
* Defines the default serial encoding (ASCII).
*/
public static final String DEFAULT_SERIAL_ENCODING = SERIAL_ENCODING_ASCII;
}//class Modbus