https://github.com/debevv/modbus
Fault-tolerant implementation of modbus protocol in Go (golang)
https://github.com/debevv/modbus
Last synced: 5 months ago
JSON representation
Fault-tolerant implementation of modbus protocol in Go (golang)
- Host: GitHub
- URL: https://github.com/debevv/modbus
- Owner: debevv
- License: bsd-3-clause
- Fork: true (goburrow/modbus)
- Created: 2018-12-20T00:16:34.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2018-12-20T00:40:06.000Z (over 7 years ago)
- Last Synced: 2025-10-20T17:49:26.787Z (8 months ago)
- Language: Go
- Homepage:
- Size: 109 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
go modbus [](https://travis-ci.org/goburrow/modbus) [](https://godoc.org/github.com/goburrow/modbus)
=========
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})
```
```go
// 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
----------
- [Modbus Specifications and Implementation Guides](http://www.modbus.org/specs.php)