zhangqian
2023-09-07 d4272e1b692515af9c47799a658e395703d13555
api/v1/task.go
@@ -11,7 +11,6 @@
   "apsClient/pkg/convertx"
   "apsClient/pkg/ecode"
   "apsClient/pkg/logx"
   "apsClient/pkg/plc"
   "apsClient/service"
   "apsClient/service/plc_address"
   "errors"
@@ -266,27 +265,24 @@
   if plcConfig.CurrentTryTimes > plcConfig.MaxTryTimes {
      return plcConfig.CurrentErr
   }
   conn, err := plc.GetModbusConnection(fmt.Sprintf("%s:%v", plcConfig.Address, plcConfig.Port))
   if err != nil {
      return errors.New(fmt.Sprintf("连接plc失败: %v", err.Error()))
   }
   if plcConfig.CurrentTryTimes == 0 {
      logx.Info("----------------开始下发工艺参数-----------------")
   }
   var failedNumbers int
   for k, v := range paramsMap {
      if address, ok := plc_address.Get(k); ok {
         result, err := plc.WriteHoldingRegister(conn, address, v)
         if err != nil {
            plcConfig.CurrentErr = err
            failedNumbers++
            logx.Errorf("plc write err:%v, address: %v, key: %v value: %v", err.Error(), address, k, v)
         } else {
            delete(paramsMap, k)
            logx.Infof("plc write ok: key: %v, value: %v, result: %v", k, v, result)
         }
      } else {
      address, ok := plc_address.Get(k)
      if !ok {
         logx.Errorf("miss param address, k:%v, v:%v", k, v)
         continue
      }
      err := service.PlcWriteDirect(plcConfig, address, v)
      if err != nil {
         plcConfig.CurrentErr = err
         failedNumbers++
         logx.Errorf("plc write err:%v, address: %v, key: %v value: %v", err.Error(), address, k, v)
      } else {
         delete(paramsMap, k)
         logx.Infof("plc write ok: key: %v, value: %v", k, v)
      }
   }
   if failedNumbers >= 1 { //写入plc失败, 重试