Need help with modbus?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

goburrow
563 Stars 210 Forks Other 79 Commits 37 Opened issues

Description

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

Services available

!
?

Need anything else?

Contributors list

# 97,410
Go
golang
Shell
lru
73 commits
# 270,766
C
JavaScr...
proxy-s...
osx
2 commits
# 355,753
C
ansi-co...
Shell
HTML
1 commit
# 8,954
Symfony
applica...
php7
sed
1 commit

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: ```go // 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: ```go // 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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.