From 560985f421189fde3963b8c5af7d7ee1312f125b Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期六, 16 九月 2023 14:32:25 +0800 Subject: [PATCH] 换另外一个modbus库 --- service/plc.go | 54 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 30 insertions(+), 24 deletions(-) diff --git a/service/plc.go b/service/plc.go index 48292b2..aaa58f2 100644 --- a/service/plc.go +++ b/service/plc.go @@ -6,6 +6,7 @@ "apsClient/model" "apsClient/pkg/logx" "apsClient/pkg/plc" + "apsClient/pkg/plc/modbusx" "apsClient/pkg/plccom" "encoding/binary" "errors" @@ -85,20 +86,21 @@ if plcConfig.Method == constvar.PlcMethodModbusTCP { ipAddr = fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port) - conn, err := plc.GetModbusConnection(ipAddr) - if err != nil { - logx.Errorf("plc write failed, 杩炴帴plc澶辫触: %v", err.Error()) - plcConfig.CurrentErr = err - return PlcWrite(plcConfig, fieldType, position, value) - } - - result, err := plc.WriteHoldingRegister(conn, startAddress, value) + //conn, err := plc.GetModbusConnection(ipAddr) + //if err != nil { + // logx.Errorf("plc write failed, 杩炴帴plc澶辫触: %v", err.Error()) + // plcConfig.CurrentErr = err + // return PlcWrite(plcConfig, fieldType, position, value) + //} + // + //result, err := plc.WriteHoldingRegister(conn, startAddress, value) + err = modbusx.Write(ipAddr, uint16(startAddress), value) if err != nil { logx.Errorf("plc write failed, address: %v, value: %v, err: %v", startAddress, value, err.Error()) plcConfig.CurrentErr = err return PlcWrite(plcConfig, fieldType, position, value) } - logx.Infof("plc write ok, address: %v, value: %v, result: %v", startAddress, value, result) + logx.Infof("plc write ok, address: %v, value: %v", startAddress, value) } else if plcConfig.Method == constvar.PlcMethodSerial { ipAddr = conf.Conf.Services.Serial if ipAddr == "" { @@ -116,24 +118,27 @@ ) if plcConfig.CurrentTryTimes > plcConfig.MaxTryTimes { + logx.Errorf("plc write try time beyond max try times, err: %v", plcConfig.CurrentErr) return plcConfig.CurrentErr } plcConfig.CurrentTryTimes++ if plcConfig.Method == constvar.PlcMethodModbusTCP { ipAddr = fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port) - conn, err := plc.GetModbusConnection(ipAddr) - if err != nil { - logx.Errorf("plc write failed, 杩炴帴plc澶辫触: %v", err.Error()) - plcConfig.CurrentErr = err - return PlcWriteDirect(plcConfig, address, value) - } - result, err := plc.WriteHoldingRegister(conn, address, value) + //conn, err := plc.GetModbusConnection(ipAddr) + //if err != nil { + // logx.Errorf("plc write failed, 杩炴帴plc澶辫触: %v", err.Error()) + // plcConfig.CurrentErr = err + // return PlcWriteDirect(plcConfig, address, value) + //} + //result, err := plc.WriteHoldingRegister(conn, address, value) + + err = modbusx.Write(ipAddr, uint16(address), value) if err != nil { logx.Errorf("plc write failed, address: %v, value: %v, err: %v", address, value, err.Error()) plcConfig.CurrentErr = err return PlcWriteDirect(plcConfig, address, value) } - logx.Infof("plc write ok, address: %v, value: %v, result: %v", address, value, result) + logx.Infof("plc write ok, address: %v, value: %v", address, value) } else if plcConfig.Method == constvar.PlcMethodSerial { ipAddr = conf.Conf.Services.Serial if ipAddr == "" { @@ -151,18 +156,19 @@ ) if plcConfig.CurrentTryTimes > plcConfig.MaxTryTimes { - logx.Errorf("plc read try time beyond max try times, err:%v", plcConfig.CurrentErr) + logx.Errorf("plc read try time beyond max try times, err: %v", plcConfig.CurrentErr) return nil, plcConfig.CurrentErr } plcConfig.CurrentTryTimes++ if plcConfig.Method == constvar.PlcMethodModbusTCP { ipAddr = fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port) - conn, err := plc.GetModbusConnection(ipAddr) - if err != nil { - plcConfig.CurrentErr = err - return PlcReadDirect(plcConfig, address, dataLength, valueType) - } - value, err := plc.ReadHoldingRegister(conn, address, dataLength) + //conn, err := plc.GetModbusConnection(ipAddr) + //if err != nil { + // plcConfig.CurrentErr = err + // return PlcReadDirect(plcConfig, address, dataLength, valueType) + //} + //value, err := plc.ReadHoldingRegister(conn, address, dataLength) + value, err := modbusx.Read(ipAddr, uint16(address), uint16(dataLength)) if err != nil { plcConfig.CurrentErr = err return PlcReadDirect(plcConfig, address, dataLength, valueType) -- Gitblit v1.8.0