|
@@ -235,6 +235,89 @@ namespace IMCS.CCS.Service.Impl
|
|
|
return "采集失败";
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 采集数据FANUC
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<string> DataCollectFanucJob()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ List<Device> deviceList = _deviceService.GetDeviceList();
|
|
|
+ deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString())).ToList();
|
|
|
+ foreach (Device device in deviceList)
|
|
|
+ {
|
|
|
+ List<CcsTagValue> tagValues = new List<CcsTagValue>();
|
|
|
+ string redis_key = device.Ip + ":" + device.ProtocolType;
|
|
|
+ var data = await _redisService.Database.StringGetAsync(redis_key);
|
|
|
+ if (data.IsNullOrEmpty)
|
|
|
+ {
|
|
|
+ CcsTagValue tagQuery = new CcsTagValue();
|
|
|
+ tagQuery.ProtocolType = device.ProtocolType;
|
|
|
+ tagQuery.Ip = device.Ip;
|
|
|
+ tagValues = _ccsTagValueService.GetList(tagQuery);
|
|
|
+ //首次设置redis
|
|
|
+ if (tagValues != null && tagValues.Count > 0)
|
|
|
+ {
|
|
|
+ await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (tagValues != null && tagValues.Count > 0)
|
|
|
+ {
|
|
|
+ tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
|
|
|
+ List<CcsTagValue> changTagValues = new List<CcsTagValue>();
|
|
|
+
|
|
|
+ DeviceFanuc fanuc = new DeviceFanuc(device.Ip, device.Port);
|
|
|
+
|
|
|
+
|
|
|
+ if (fanuc.h <= 0)
|
|
|
+ {
|
|
|
+ device.State = false;
|
|
|
+ await _deviceService.UpdateDevice(device);
|
|
|
+ Log.Instance.WriteLogAdd("FANUC采集异常,FANUC连不上", LOG_TITLE_S7);
|
|
|
+ return "采集失败,FANUC连不上";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ foreach (CcsTagValue tagValueData in tagValues)
|
|
|
+ {
|
|
|
+ string operateResult = GetFanucValue(fanuc, tagValueData.TagValue);
|
|
|
+ if (!tagValueData.TagValue.Equals(operateResult))
|
|
|
+ {
|
|
|
+ tagValueData.TagValue = operateResult.ToString();
|
|
|
+ tagValueData.UpdateTime = DateTime.Now;
|
|
|
+ changTagValues.Add(tagValueData);
|
|
|
+ Log.Instance.WriteLogAdd("FANUC采集,Ip:" + tagValueData.Ip + " 地址:" + tagValueData.Address + ",值:" + tagValueData.TagValue + ",发生变化", LOG_TITLE_S7);
|
|
|
+ //有变化更新数据库
|
|
|
+ await _ccsTagValueService.Update(tagValueData);
|
|
|
+ }
|
|
|
+ Thread.Sleep(50);
|
|
|
+ }
|
|
|
+
|
|
|
+ //值有变化,重新设置一次redis
|
|
|
+ if (changTagValues != null && changTagValues.Count > 0)
|
|
|
+ {
|
|
|
+ await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return "采集成功";
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd("S7采集异常===>>" + ex.Message, LOG_TITLE_S7);
|
|
|
+ return "采集失败";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 机床启动,上传程序回调任务
|
|
|
/// </summary>
|
|
@@ -645,5 +728,27 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// fanuc根据类型获取值
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ private string GetFanucValue(DeviceFanuc fanuc,string tagValue)
|
|
|
+ {
|
|
|
+ string value = "";
|
|
|
+ if (tagValue.Equals(FanucAddressEnum.MainProg.ToString()))
|
|
|
+ {
|
|
|
+ value = fanuc.MainProg();
|
|
|
+ }else if (tagValue.Equals(FanucAddressEnum.Status.ToString()))
|
|
|
+ {
|
|
|
+ value = fanuc.Status();
|
|
|
+ }
|
|
|
+ else if (tagValue.Equals(FanucAddressEnum.PowerOnTime.ToString()))
|
|
|
+ {
|
|
|
+ value = fanuc.PowerOnTime();
|
|
|
+ }
|
|
|
+ return value;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|