modbustcp-client
go.mod
require (
github.com/goburrow/modbus v0.1.0
github.com/goburrow/serial v0.1.0 // indirect
)
package main
import (
"log"
"os"
"time"
"github.com/goburrow/modbus"
)
func main() {
handler := modbus.NewTCPClientHandler("localhost:502")
handler.Timeout = 10 * time.Second
handler.SlaveId = 0 //SlaveId即modbustcp协议从0开始得第6字节称,在厂家协议中称为RTU地址无效字段,标准协议中如果是0则为广播地址
handler.Logger = log.New(os.Stdout, "test: ", log.LstdFlags)
// Connect manually so that multiple requests are handled in one connection session
err := handler.Connect()
if err != nil {
log.Fatalf("连接错误:%+v", err)
}
defer handler.Close()
// modbus.Tc
// modbus.NewClient(handler)
client := modbus.NewClient(handler)
log.Printf("客户端:%+v", client)
client.ReadHoldingRegisters(40001, 10)
res, e1 := client.ReadHoldingRegisters(40001, 2)
if e1 != nil {
log.Fatalf("E1错误:%+v", e1)
}
log.Printf("资源内容1:%+v", res)
res, _ = client.ReadHoldingRegisters(40000, 3)
log.Printf("资源内容2:%+v", res)
res, _ = client.ReadHoldingRegisters(40000, 3)
log.Printf("资源内容3:%+v", res)
res, _ = client.ReadHoldingRegisters(40000, 3)
log.Printf("资源内容4:%+v", res)
results1, err := client.ReadDiscreteInputs(15, 2)
results2, err = client.WriteMultipleRegisters(1, 2, []byte{0, 3, 0, 4})
}