|
@@ -56,6 +56,10 @@ namespace IMCS.CCS.Service.Impl
|
|
|
|
|
|
private string LOG_TITLE_OPCUA = "OPCUA采集";
|
|
|
|
|
|
+ private string LOG_TITLE_FUNC = "发那科采集";
|
|
|
+
|
|
|
+ private string LOG_TITLE_HEIDEHAIN = "海德汉采集";
|
|
|
+
|
|
|
private string LOG_TITLE_S7 = "S7采集";
|
|
|
|
|
|
private string LOG_TITLE_CALLBACK = "回调任务";
|
|
@@ -205,6 +209,8 @@ namespace IMCS.CCS.Service.Impl
|
|
|
opcUaReq.Type = OpcUaActionTypeEnum.Write.ToString();
|
|
|
await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
|
|
|
}
|
|
|
+ //存储采集数据
|
|
|
+ CollectDataLog.Instance.WriteLogAdd(data, LOG_TITLE_OPCUA);
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -309,6 +315,8 @@ namespace IMCS.CCS.Service.Impl
|
|
|
{
|
|
|
await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
|
|
|
}
|
|
|
+ //存储采集数据
|
|
|
+ CollectDataLog.Instance.WriteLogAdd(data, LOG_TITLE_S7);
|
|
|
}
|
|
|
|
|
|
}
|
|
@@ -334,69 +342,20 @@ namespace IMCS.CCS.Service.Impl
|
|
|
deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString()) && x.State).ToList();
|
|
|
foreach (Device device in deviceList)
|
|
|
{
|
|
|
- List<CcsTagValue> tagValues = new List<CcsTagValue>();
|
|
|
- string redis_key = "IMCS_CCS:" + 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);
|
|
|
- }
|
|
|
+ string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
|
|
|
+ //调用发那科接口
|
|
|
+ var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=All", null, null);
|
|
|
|
|
|
- if (tagValues != null && tagValues.Count > 0)
|
|
|
+ if (Result.IsSuccess)
|
|
|
{
|
|
|
- tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
|
|
|
- List<CcsTagValue> changTagValues = new List<CcsTagValue>();
|
|
|
- string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
|
|
|
- //调用发那科是否连接接口
|
|
|
- var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=Connect", null, null);
|
|
|
-
|
|
|
- if (!Result.IsSuccess || Result.Message != "0")
|
|
|
- {
|
|
|
- device.State = false;
|
|
|
- await _deviceService.UpdateDevice(device);
|
|
|
- Log.Instance.WriteLogAdd("FANUC采集异常,FANUC连不上", LOG_TITLE_S7);
|
|
|
- return "采集失败,FANUC连不上";
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- //调用发那科采集接口
|
|
|
- Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=All", null, null);
|
|
|
- ResponseFanucData fanucData = JsonConvert.DeserializeObject<ResponseFanucData>(Result.Message);
|
|
|
- foreach (CcsTagValue tagValueData in tagValues)
|
|
|
- {
|
|
|
- string operateResult = GetFanucValue(fanucData, tagValueData.Address);
|
|
|
- if (tagValueData.TagValue != 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));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
+ string redis_key = "IMCS_CCS:" + device.Ip + ":" + device.ProtocolType;
|
|
|
+ //采集数据放入缓存
|
|
|
+ await _redisService.Database.StringSetAsync(redis_key, Result.Message);
|
|
|
+ //存储采集数据
|
|
|
+ CollectDataLog.Instance.WriteLogAdd(Result.Message, LOG_TITLE_FUNC);
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
return "FANUC采集成功";
|
|
|
}
|
|
@@ -407,6 +366,43 @@ namespace IMCS.CCS.Service.Impl
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 采集数据HEIDEHAIN
|
|
|
+ /// </summary>
|
|
|
+ /// <returns></returns>
|
|
|
+ public async Task<string> DataCollectHeidehainJob()
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ List<Device> deviceList = await getDeviceList();
|
|
|
+ deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.HEIDEHAIN.ToString()) && x.State).ToList();
|
|
|
+ foreach (Device device in deviceList)
|
|
|
+ {
|
|
|
+ RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
+ hdhReq.ServerUrl = device.ServerUrl;
|
|
|
+ hdhReq.MachineName = device.UserName;
|
|
|
+ hdhReq.Type = "Collect";
|
|
|
+ //调用海德汉采集接口
|
|
|
+ var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
|
|
|
+ {
|
|
|
+ string redis_key = "IMCS_CCS:" + device.Ip + ":" + device.ProtocolType;
|
|
|
+ //采集数据放入缓存
|
|
|
+ await _redisService.Database.StringSetAsync(redis_key, Result.Message);
|
|
|
+ //存储采集数据
|
|
|
+ CollectDataLog.Instance.WriteLogAdd(Result.Message, LOG_TITLE_HEIDEHAIN);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ return "HEIDEHAIN采集成功";
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd("HEIDEHAIN采集异常===>>" + ex.Message, LOG_TITLE_S7);
|
|
|
+ return "HEIDEHAIN采集失败";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// 上传程序回调任务
|
|
|
/// </summary>
|