zhangqian
2023-11-25 efec800478214f3a412f879d2b51c2968515995d
service/plc.go
@@ -45,7 +45,9 @@
   var (
      ipAddr string
   )
   defer dealErr(err)
   defer func() {
      dealErr(err)
   }()
   if plcConfig.Method == constvar.PlcMethodModbusTCP {
      ipAddr = fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port)
      err = WriteByModbusTCP(ipAddr, address, value)
@@ -81,7 +83,9 @@
   var (
      ipAddr string
   )
   defer dealErr(err)
   defer func() {
      dealErr(err)
   }()
   if plcConfig.Method == constvar.PlcMethodModbusTCP || plcConfig.Method == constvar.PlcMethodModbusRTU {
      var value []byte
      if plcConfig.Method == constvar.PlcMethodModbusTCP {
@@ -100,7 +104,16 @@
      switch valueType {
      case constvar.PlcStartAddressValueTypeString:
         return string(value), nil
      case constvar.PlcStartAddressValueTypeInt:
      case constvar.PlcStartAddressValueTypeInt32:
         if len(value) == 2 {
            val = binary.BigEndian.Uint16(value)
         } else if len(value) == 4 {
            val = binary.BigEndian.Uint32(value)
         } 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))
         }
      default:
         if len(value) == 2 {
            val = binary.BigEndian.Uint16(value)
         } else if len(value) == 4 {
@@ -112,7 +125,7 @@
            return nil, errors.New(fmt.Sprintf("unknown int value:%v", value))
         }
      }
      logx.Infof("plc read ok, address: %v, result: %v, dataLength: %v, valueLength: %v", address, val, dataLength, len(value))
      logx.Infof("plc read ok, address: %v, result: %v, dataLength: %v, value: %v", address, val, dataLength, value)
      return val, nil
   } else if plcConfig.Method == constvar.PlcMethodSerial {
      ipAddr = conf.Conf.Services.Serial