Skip to content
forked from goburrow/modbus

Fault-tolerant implementation of modbus protocol in Go (golang)

License

Notifications You must be signed in to change notification settings

Curclamas/modbus

This branch is up to date with goburrow/modbus:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

606c02f · Sep 19, 2018

History

79 Commits
Apr 20, 2015
Apr 22, 2015
Oct 12, 2014
Dec 10, 2015
Apr 20, 2015
Mar 8, 2017
Apr 22, 2015
Apr 20, 2015
Oct 9, 2016
Oct 9, 2016
Feb 3, 2015
Feb 3, 2015
Feb 3, 2015
Sep 19, 2018
Apr 22, 2015
Mar 8, 2017
Mar 8, 2017
Mar 8, 2017
Mar 8, 2017

Repository files navigation

go modbus Build Status GoDoc

Fault-tolerant, fail-fast implementation of Modbus protocol in Go.

Supported functions

Bit access:

  • Read Discrete Inputs
  • Read Coils
  • Write Single Coil
  • Write Multiple Coils

16-bit access:

  • Read Input Registers
  • Read Holding Registers
  • Write Single Register
  • Write Multiple Registers
  • Read/Write Multiple Registers
  • Mask Write Register
  • Read FIFO Queue

Supported formats

  • TCP
  • Serial (RTU, ASCII)

Usage

Basic usage:

// Modbus TCP
client := modbus.TCPClient("localhost:502")
// Read input register 9
results, err := client.ReadInputRegisters(8, 1)

// Modbus RTU/ASCII
// Default configuration is 19200, 8, 1, even
client = modbus.RTUClient("/dev/ttyS0")
results, err = client.ReadCoils(2, 1)

Advanced usage:

// Modbus TCP
handler := modbus.NewTCPClientHandler("localhost:502")
handler.Timeout = 10 * time.Second
handler.SlaveId = 0xFF
handler.Logger = log.New(os.Stdout, "test: ", log.LstdFlags)
// Connect manually so that multiple requests are handled in one connection session
err := handler.Connect()
defer handler.Close()

client := modbus.NewClient(handler)
results, err := client.ReadDiscreteInputs(15, 2)
results, err = client.WriteMultipleRegisters(1, 2, []byte{0, 3, 0, 4})
results, err = client.WriteMultipleCoils(5, 10, []byte{4, 3})
// Modbus RTU/ASCII
handler := modbus.NewRTUClientHandler("/dev/ttyUSB0")
handler.BaudRate = 115200
handler.DataBits = 8
handler.Parity = "N"
handler.StopBits = 1
handler.SlaveId = 1
handler.Timeout = 5 * time.Second

err := handler.Connect()
defer handler.Close()

client := modbus.NewClient(handler)
results, err := client.ReadDiscreteInputs(15, 2)

References

About

Fault-tolerant implementation of modbus protocol in Go (golang)

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 96.3%
  • C 3.7%