Go (golang) 中的模拟总线协议容错实现
go modbus()()=========Go 语言中对 Modbus 协议的容错、快速故障处理实现。支持的功能-----------------位操作: * 读取离散输入 * 读取继电器 * 写入单个继电器 * 写入多个继电器 16 位操作: * 读取输入寄存器 * 读取保持寄存器 * 写入单个寄存器 * 写入多个寄存器 * 读写多个寄存器 * 遮罩写入寄存器 * 读取 FIFO 队列 支持的格式----------------- * TCP * 串口 (RTU、ASCII) 使用方法----------------- 基本使用: ```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)
高级使用: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)
暂无开放 Issues,或尚未同步最近议题。