|
modbus_rw
package main
import (
"fmt"
"log"
"os"
"runtime"
"github.com/goburrow/modbus"
)
var handler *modbus.RTUClientHandler
var client modbus.Client
var Modbus_DI8_DO8_SlaveId byte
func Modbus_init() int {
var rtuDevice = ""
sysType := runtime.GOOS
if sysType == "windows" {
rtuDevice = "COM1"
}
if sysType == "linux" {
rtuDevice = "/dev/ttyUSB0"
}
fmt.Printf("rtuDevice= %v \n", rtuDevice)
handler = modbus.NewRTUClientHandler(rtuDevice)
handler.BaudRate = 19200
handler.DataBits = 8
handler.Parity = "E"
handler.StopBits = 1
handler.SlaveId = 2
handler.Logger = log.New(os.Stdout, "rtu: ", log.LstdFlags)
err := handler.Connect()
if err != nil {
fmt.Printf("%v\n", err)
}
defer handler.Close()
client = modbus.NewClient(handler)
return 0
}
var Read_DO []byte
func Set_DO_Valves(Output_D byte) {
fmt.Printf("WriteMultipleCoils...... ")
results, err := client.WriteMultipleCoils(0, 8, []byte{Output_D})
if err != nil || results == nil {
fmt.Printf("%v\n", err)
}
fmt.Printf("WriteMultipleCoils results %v\n", results)
fmt.Printf("ReadCoils ...... \n")
results, err = client.ReadCoils(0, 8)
if err != nil || results == nil {
fmt.Printf("%v\n", err)
}
// fmt.Printf("ReadCoils results %v\n", results)
if results != nil {
Read_DO = results
fmt.Printf(" ReadCoils %v\n", Read_DO)
}
}
main.go
package main
import (
// "fmt"
// "os"
"time"
)
func main() {
var Output_DO byte
Output_DO = 1
Modbus_init()
Set_DO_Valves(0)
go func() {
for {
time.Sleep(time.Millisecond * 1000)
Set_DO_Valves(Output_DO)
Output_DO++
}
}()
for {
}
}
运行输出结果
rtuDevice= COM1
WriteMultipleCoils...... rtu: 2021/03/18 11:58:16 modbus: sending 02 0f 00 00 00 08 01 00 be 80
rtu: 2021/03/18 11:58:16 modbus: received 02 0f 00 00 00 08 54 3e
WriteMultipleCoils results [0 8]
ReadCoils ......
rtu: 2021/03/18 11:58:16 modbus: sending 02 01 00 00 00 08 3d ff
rtu: 2021/03/18 11:58:16 modbus: received 02 01 01 00 51 cc
ReadCoils [0]
WriteMultipleCoils...... rtu: 2021/03/18 11:58:17 modbus: sending 02 0f 00 00 00 08 01 01 7f 40
rtu: 2021/03/18 11:58:17 modbus: received 02 0f 00 00 00 08 54 3e
WriteMultipleCoils results [0 8]
ReadCoils ......
rtu: 2021/03/18 11:58:17 modbus: sending 02 01 00 00 00 08 3d ff
rtu: 2021/03/18 11:58:17 modbus: received 02 01 01 01 90 0c
ReadCoils [1]
|
|