Documentation
¶
Index ¶
- Constants
- type ClientConfiguration
- type Endianness
- type Error
- type ModbusClient
- func (mc *ModbusClient) Close() (err error)
- func (mc *ModbusClient) Open() (err error)
- func (mc *ModbusClient) ReadBytes(addr uint16, quantity uint16, regType RegType) (values []byte, err error)
- func (mc *ModbusClient) ReadCoil(addr uint16) (value bool, err error)
- func (mc *ModbusClient) ReadCoils(addr uint16, quantity uint16) (values []bool, err error)
- func (mc *ModbusClient) ReadDiscreteInput(addr uint16) (value bool, err error)
- func (mc *ModbusClient) ReadDiscreteInputs(addr uint16, quantity uint16) (values []bool, err error)
- func (mc *ModbusClient) ReadFloat32(addr uint16, regType RegType) (value float32, err error)
- func (mc *ModbusClient) ReadFloat32s(addr uint16, quantity uint16, regType RegType) (values []float32, err error)
- func (mc *ModbusClient) ReadFloat64(addr uint16, regType RegType) (value float64, err error)
- func (mc *ModbusClient) ReadFloat64s(addr uint16, quantity uint16, regType RegType) (values []float64, err error)
- func (mc *ModbusClient) ReadRawBytes(addr uint16, quantity uint16, regType RegType) (values []byte, err error)
- func (mc *ModbusClient) ReadRegister(addr uint16, regType RegType) (value uint16, err error)
- func (mc *ModbusClient) ReadRegisters(addr uint16, quantity uint16, regType RegType) (values []uint16, err error)
- func (mc *ModbusClient) ReadUint32(addr uint16, regType RegType) (value uint32, err error)
- func (mc *ModbusClient) ReadUint32s(addr uint16, quantity uint16, regType RegType) (values []uint32, err error)
- func (mc *ModbusClient) ReadUint64(addr uint16, regType RegType) (value uint64, err error)
- func (mc *ModbusClient) ReadUint64s(addr uint16, quantity uint16, regType RegType) (values []uint64, err error)
- func (mc *ModbusClient) SetEncoding(endianness Endianness, wordOrder WordOrder) (err error)
- func (mc *ModbusClient) SetUnitId(id uint8) (err error)
- func (mc *ModbusClient) WriteBytes(addr uint16, values []byte) (err error)
- func (mc *ModbusClient) WriteCoil(addr uint16, value bool) (err error)
- func (mc *ModbusClient) WriteCoils(addr uint16, values []bool) (err error)
- func (mc *ModbusClient) WriteFloat32(addr uint16, value float32) (err error)
- func (mc *ModbusClient) WriteFloat32s(addr uint16, values []float32) (err error)
- func (mc *ModbusClient) WriteFloat64(addr uint16, value float64) (err error)
- func (mc *ModbusClient) WriteFloat64s(addr uint16, values []float64) (err error)
- func (mc *ModbusClient) WriteRawBytes(addr uint16, values []byte) (err error)
- func (mc *ModbusClient) WriteRegister(addr uint16, value uint16) (err error)
- func (mc *ModbusClient) WriteRegisters(addr uint16, values []uint16) (err error)
- func (mc *ModbusClient) WriteUint32(addr uint16, value uint32) (err error)
- func (mc *ModbusClient) WriteUint32s(addr uint16, values []uint32) (err error)
- func (mc *ModbusClient) WriteUint64(addr uint16, value uint64) (err error)
- func (mc *ModbusClient) WriteUint64s(addr uint16, values []uint64) (err error)
- type RegType
- type WordOrder
Constants ¶
const ( PARITY_NONE uint = 0 PARITY_EVEN uint = 1 PARITY_ODD uint = 2 HOLDING_REGISTER RegType = 0 INPUT_REGISTER RegType = 1 // endianness of 16-bit registers BIG_ENDIAN Endianness = 1 LITTLE_ENDIAN Endianness = 2 // word order of 32-bit registers HIGH_WORD_FIRST WordOrder = 1 LOW_WORD_FIRST WordOrder = 2 )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ClientConfiguration ¶
type ClientConfiguration struct { // URL sets the client mode and target location in the form // <mode>://<serial device or host:port> e.g. tcp://plc:502 URL string // Speed sets the serial link speed (in bps, rtu only) Speed uint // DataBits sets the number of bits per serial character (rtu only) DataBits uint // Parity sets the serial link parity mode (rtu only) Parity uint // StopBits sets the number of serial stop bits (rtu only) StopBits uint // Timeout sets the request timeout value Timeout time.Duration // Logger provides a custom sink for log messages. // If nil, messages will be written to stdout. Logger *log.Logger }
Modbus client configuration object.
type Endianness ¶
type Endianness uint
type Error ¶
type Error string
const ( // errors ErrConfigurationError Error = "configuration error" ErrRequestTimedOut Error = "request timed out" ErrIllegalFunction Error = "illegal function" ErrIllegalDataAddress Error = "illegal data address" ErrIllegalDataValue Error = "illegal data value" ErrServerDeviceFailure Error = "server device failure" ErrAcknowledge Error = "request acknowledged" ErrServerDeviceBusy Error = "server device busy" ErrMemoryParityError Error = "memory parity error" ErrGWTargetFailedToRespond Error = "gateway target device failed to respond" ErrBadCRC Error = "bad crc" ErrShortFrame Error = "short frame" ErrProtocolError Error = "protocol error" ErrBadUnitId Error = "bad unit id" ErrBadTransactionId Error = "bad transaction id" ErrUnknownProtocolId Error = "unknown protocol identifier" ErrUnexpectedParameters Error = "unexpected parameters" )
type ModbusClient ¶
type ModbusClient struct {
// contains filtered or unexported fields
}
Modbus client object.
func NewClient ¶
func NewClient(conf *ClientConfiguration) (mc *ModbusClient, err error)
NewClient creates, configures and returns a modbus client object.
func (*ModbusClient) Close ¶
func (mc *ModbusClient) Close() (err error)
Closes the underlying transport.
func (*ModbusClient) Open ¶
func (mc *ModbusClient) Open() (err error)
Opens the underlying transport (network socket or serial line).
func (*ModbusClient) ReadBytes ¶
func (mc *ModbusClient) ReadBytes(addr uint16, quantity uint16, regType RegType) (values []byte, err error)
Reads one or multiple 16-bit registers (function code 03 or 04) as bytes. A per-register byteswap is performed if endianness is set to LITTLE_ENDIAN.
func (*ModbusClient) ReadCoil ¶
func (mc *ModbusClient) ReadCoil(addr uint16) (value bool, err error)
Reads a single coil (function code 01).
func (*ModbusClient) ReadCoils ¶
func (mc *ModbusClient) ReadCoils(addr uint16, quantity uint16) (values []bool, err error)
Reads multiple coils (function code 01).
func (*ModbusClient) ReadDiscreteInput ¶
func (mc *ModbusClient) ReadDiscreteInput(addr uint16) (value bool, err error)
Reads a single discrete input (function code 02).
func (*ModbusClient) ReadDiscreteInputs ¶
func (mc *ModbusClient) ReadDiscreteInputs(addr uint16, quantity uint16) (values []bool, err error)
Reads multiple discrete inputs (function code 02).
func (*ModbusClient) ReadFloat32 ¶
func (mc *ModbusClient) ReadFloat32(addr uint16, regType RegType) (value float32, err error)
Reads a single 32-bit float register.
func (*ModbusClient) ReadFloat32s ¶
func (mc *ModbusClient) ReadFloat32s(addr uint16, quantity uint16, regType RegType) (values []float32, err error)
Reads multiple 32-bit float registers.
func (*ModbusClient) ReadFloat64 ¶
func (mc *ModbusClient) ReadFloat64(addr uint16, regType RegType) (value float64, err error)
Reads a single 64-bit float register.
func (*ModbusClient) ReadFloat64s ¶
func (mc *ModbusClient) ReadFloat64s(addr uint16, quantity uint16, regType RegType) (values []float64, err error)
Reads multiple 64-bit float registers.
func (*ModbusClient) ReadRawBytes ¶
func (mc *ModbusClient) ReadRawBytes(addr uint16, quantity uint16, regType RegType) (values []byte, err error)
Reads one or multiple 16-bit registers (function code 03 or 04) as bytes. No byte or word reordering is performed: bytes are returned exactly as they come off the wire, allowing the caller to handle encoding/endianness/word order manually.
func (*ModbusClient) ReadRegister ¶
func (mc *ModbusClient) ReadRegister(addr uint16, regType RegType) (value uint16, err error)
Reads a single 16-bit register (function code 03 or 04).
func (*ModbusClient) ReadRegisters ¶
func (mc *ModbusClient) ReadRegisters(addr uint16, quantity uint16, regType RegType) (values []uint16, err error)
Reads multiple 16-bit registers (function code 03 or 04).
func (*ModbusClient) ReadUint32 ¶
func (mc *ModbusClient) ReadUint32(addr uint16, regType RegType) (value uint32, err error)
Reads a single 32-bit register.
func (*ModbusClient) ReadUint32s ¶
func (mc *ModbusClient) ReadUint32s(addr uint16, quantity uint16, regType RegType) (values []uint32, err error)
Reads multiple 32-bit registers.
func (*ModbusClient) ReadUint64 ¶
func (mc *ModbusClient) ReadUint64(addr uint16, regType RegType) (value uint64, err error)
Reads a single 64-bit register.
func (*ModbusClient) ReadUint64s ¶
func (mc *ModbusClient) ReadUint64s(addr uint16, quantity uint16, regType RegType) (values []uint64, err error)
Reads multiple 64-bit registers.
func (*ModbusClient) SetEncoding ¶
func (mc *ModbusClient) SetEncoding(endianness Endianness, wordOrder WordOrder) (err error)
Sets the encoding (endianness and word ordering) of subsequent requests.
func (*ModbusClient) SetUnitId ¶
func (mc *ModbusClient) SetUnitId(id uint8) (err error)
Sets the unit id of subsequent requests.
func (*ModbusClient) WriteBytes ¶
func (mc *ModbusClient) WriteBytes(addr uint16, values []byte) (err error)
Writes the given slice of bytes to 16-bit registers starting at addr. A per-register byteswap is performed if endianness is set to LITTLE_ENDIAN. Odd byte quantities are padded with a null byte to fall on 16-bit register boundaries.
func (*ModbusClient) WriteCoil ¶
func (mc *ModbusClient) WriteCoil(addr uint16, value bool) (err error)
Writes a single coil (function code 05)
func (*ModbusClient) WriteCoils ¶
func (mc *ModbusClient) WriteCoils(addr uint16, values []bool) (err error)
Writes multiple coils (function code 15)
func (*ModbusClient) WriteFloat32 ¶
func (mc *ModbusClient) WriteFloat32(addr uint16, value float32) (err error)
Writes a single 32-bit float register.
func (*ModbusClient) WriteFloat32s ¶
func (mc *ModbusClient) WriteFloat32s(addr uint16, values []float32) (err error)
Writes multiple 32-bit float registers.
func (*ModbusClient) WriteFloat64 ¶
func (mc *ModbusClient) WriteFloat64(addr uint16, value float64) (err error)
Writes a single 64-bit float register.
func (*ModbusClient) WriteFloat64s ¶
func (mc *ModbusClient) WriteFloat64s(addr uint16, values []float64) (err error)
Writes multiple 64-bit float registers.
func (*ModbusClient) WriteRawBytes ¶
func (mc *ModbusClient) WriteRawBytes(addr uint16, values []byte) (err error)
Writes the given slice of bytes to 16-bit registers starting at addr. No byte or word reordering is performed: bytes are pushed to the wire as-is, allowing the caller to handle encoding/endianness/word order manually. Odd byte quantities are padded with a null byte to fall on 16-bit register boundaries.
func (*ModbusClient) WriteRegister ¶
func (mc *ModbusClient) WriteRegister(addr uint16, value uint16) (err error)
Writes a single 16-bit register (function code 06).
func (*ModbusClient) WriteRegisters ¶
func (mc *ModbusClient) WriteRegisters(addr uint16, values []uint16) (err error)
Writes multiple 16-bit registers (function code 16).
func (*ModbusClient) WriteUint32 ¶
func (mc *ModbusClient) WriteUint32(addr uint16, value uint32) (err error)
Writes a single 32-bit register.
func (*ModbusClient) WriteUint32s ¶
func (mc *ModbusClient) WriteUint32s(addr uint16, values []uint32) (err error)
Writes multiple 32-bit registers.
func (*ModbusClient) WriteUint64 ¶
func (mc *ModbusClient) WriteUint64(addr uint16, value uint64) (err error)
Writes a single 64-bit register.
func (*ModbusClient) WriteUint64s ¶
func (mc *ModbusClient) WriteUint64s(addr uint16, values []uint64) (err error)
Writes multiple 64-bit registers.