From 72721bf221e6f90fb830bf28133c7588e30e1d30 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 26 十月 2023 17:41:19 +0800 Subject: [PATCH] fix --- service/plc.go | 16 +++++++++++++--- 1 files changed, 13 insertions(+), 3 deletions(-) diff --git a/service/plc.go b/service/plc.go index a0240ab..183cb00 100644 --- a/service/plc.go +++ b/service/plc.go @@ -97,7 +97,9 @@ if len(value) == 2 { val = binary.BigEndian.Uint16(value) } else if len(value) == 4 { - val = binary.BigEndian.Uint32(value) + low16Val := uint32(binary.BigEndian.Uint16(value[:2])) + high16 := uint32(binary.BigEndian.Uint16(value[2:])) << 16 + val = low16Val + high16 } else { logx.Errorf("plc read get an unknown int value: %v, address:%v", value, address) return nil, errors.New(fmt.Sprintf("unknown int value锛�%v", value)) @@ -118,13 +120,21 @@ func ReadHoldingRegister(ipAddr string, address, length int) ([]byte, error) { if conf.Conf.PLC.Package == constvar.PlcPackageApache { - return apacheplc4x.ReadHoldingRegister(ipAddr, address, length) + newLength := length / 2 + if newLength == 0 { + newLength = 1 + } + return apacheplc4x.ReadHoldingRegister(ipAddr, address, newLength) } else if conf.Conf.PLC.Package == constvar.PlcPackageApacheLongConnection { conn, err := plc.GetModbusConnection(ipAddr) if err != nil { return nil, err } - return plc.ReadHoldingRegister(conn, address, length) + newLength := length / 2 + if newLength == 0 { + newLength = 1 + } + return plc.ReadHoldingRegister(conn, address, newLength) } else { return modbusx.Read(ipAddr, uint16(address), uint16(length)) } -- Gitblit v1.8.0