using IMCS.CCS.Common.Redis;
using IMCS.CCS.DeviceProtocol;
using IMCS.CCS.Entitys;
using IMCS.CCS.Model.vo;
using IMCS.CCS.Services;
using IMCS_CCS.Utils;
using IMCS_CCS.Utils.DeviceProtocol;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using S7.Net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
namespace IMCS.CCS.Service.Impl
{
///
/// 任务调度服务
///
public class TaskJobService : ITaskJobService
{
private readonly IRedisService _redisService;
private readonly IDeviceService _deviceService;
private readonly IApiRequestService _apiRequestService;
private readonly ITaskCallbackService _taskCallbackService;
private readonly ICcsTagValueService _ccsTagValueService;
private string ecsUrlContext;
private string LOG_TITLE_OPCUA = "OPCUA采集";
private string LOG_TITLE_S7 = "S7采集";
private string LOG_TITLE_CALLBACK = "回调任务";
private string LOG_TITLE_DEVICE = "设备监控";
public IConfiguration Configuration { get; }
public TaskJobService(IRedisService redisService,
ITaskCallbackService taskCallbackService,
IDeviceService deviceService,
IApiRequestService apiRequestService,
ICcsTagValueService ccsTagValueService,
IConfiguration configuration)
{
_redisService = redisService;
_taskCallbackService = taskCallbackService;
_deviceService = deviceService;
_apiRequestService = apiRequestService;
_ccsTagValueService = ccsTagValueService;
Configuration = configuration;
ecsUrlContext = Configuration.GetConnectionString("ecsUrlContext");
}
///
/// 采集数据OPCUA
///
///
public async Task DataCollectOPCUAJob()
{
try
{
List deviceList = _deviceService.GetDeviceList();
deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.OPCUA.ToString())).ToList();
foreach (Device device in deviceList)
{
List tagValues = new List();
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>(data);
}
if (tagValues != null && tagValues.Count > 0)
{
List changTagValues = new List();
DeviceOPCUat deviceOPCUat = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
if (!deviceOPCUat.IsConnection)
{
device.State = false;
await _deviceService.UpdateDevice(device);
Log.Instance.WriteLogAdd("OpcUA采集异常,连不上设备", LOG_TITLE_OPCUA);
return "采集失败,连不上设备";
}
else
{
List addresses = new List();
foreach (CcsTagValue tagValue in tagValues)
{
addresses.Add(tagValue.Address);
}
List values = deviceOPCUat.OpcUa_Read(addresses);
for (int i = 0; i < tagValues.Count; i++)
{
CcsTagValue tagValueData = (CcsTagValue)tagValues[i];
if (!tagValueData.TagValue.Equals(values[i]))
{
tagValueData.TagValue = values[i];
tagValueData.UpdateTime = DateTime.Now;
changTagValues.Add(tagValueData);
Log.Instance.WriteLogAdd("OpcUA采集,Ip:" + tagValueData.Ip + " 地址:" + tagValueData.Address + ",值:" + tagValueData.TagValue + ",发生变化", LOG_TITLE_OPCUA);
//有变化更新数据库
await _ccsTagValueService.Update(tagValueData);
}
}
deviceOPCUat.OpcUa_Close();
//值有变化,重新设置一次redis
if (changTagValues != null && changTagValues.Count > 0)
{
await _redisService.Database.StringSetAsync(redis_key, JsonConvert.SerializeObject(tagValues));
}
}
}
else
{
Log.Instance.WriteLogAdd("OpcUA采集异常,没有采集数据===", LOG_TITLE_OPCUA);
return "没有采集数据";
}
}
return "采集成功";
}
catch (Exception ex)
{
Log.Instance.WriteLogAdd("OpcUA采集异常===>>" + ex.Message, LOG_TITLE_OPCUA);
return "采集失败";
}
}
///
/// 采集数据S7
///
///
public async Task DataCollectS7Job()
{
try
{
List deviceList = _deviceService.GetDeviceList();
deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.S7_1500.ToString())).ToList();
foreach (Device device in deviceList)
{
List tagValues = new List();
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>(data);
}
if (tagValues != null && tagValues.Count > 0)
{
tagValues = JsonConvert.DeserializeObject>(data);
List changTagValues = new List();
Plc s7 = DevicePlcS7.S7(device.ServerUrl, ProtocalTypeEnum.S7_1500.ToString());
if (s7.IsConnected != true)
{
device.State = false;
await _deviceService.UpdateDevice(device);
s7.Close();
Log.Instance.WriteLogAdd("S7采集异常,plc连不上", LOG_TITLE_S7);
return "采集失败,plc连不上";
}
else
{
foreach (CcsTagValue tagValueData in tagValues)
{
string Address = ToolUtils.AddressConvertDBW(tagValueData.Address);
var operateResult = ((ushort)s7.Read(Address)).ConvertToShort();
if (!tagValueData.TagValue.Equals(operateResult))
{
tagValueData.TagValue = operateResult.ToString();
tagValueData.UpdateTime = DateTime.Now;
changTagValues.Add(tagValueData);
Log.Instance.WriteLogAdd("S7采集,Ip:" + tagValueData.Ip + " 地址:" + tagValueData.Address + ",值:" + tagValueData.TagValue + ",发生变化", LOG_TITLE_S7);
//有变化更新数据库
await _ccsTagValueService.Update(tagValueData);
}
Thread.Sleep(50);
}
s7.Close();
//值有变化,重新设置一次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 "采集失败";
}
}
///
/// 采集数据FANUC
///
///
public async Task DataCollectFanucJob()
{
try
{
List deviceList = _deviceService.GetDeviceList();
deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString())).ToList();
foreach (Device device in deviceList)
{
List tagValues = new List();
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>(data);
}
if (tagValues != null && tagValues.Count > 0)
{
tagValues = JsonConvert.DeserializeObject>(data);
List changTagValues = new List();
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 "采集失败";
}
}
///
/// 机床启动,上传程序回调任务
///
///
public async Task CallbackJob1()
{
List list = await _taskCallbackService.GetAllList();
list = list.Where(x => x.OperateType.Equals(ActionTypeEnum.StartNCProgram.ToString())
|| x.OperateType.Equals(ActionTypeEnum.UploadFile.ToString())).ToList();
string message = "";
try
{
foreach (TaskCallback task in list)
{
DateTime currentTime = DateTime.Now;
if (currentTime.Subtract(task.CreateTime).TotalMinutes > 10)
{
CallBackRequestData requestData = new CallBackRequestData();
requestData.taskId = long.Parse(task.TaskId);
requestData.taskNodeId = long.Parse(task.TaskNodeId);
var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
if (result.IsSuccess)
{
task.State = false;
task.UpdateTime = DateTime.Now;
await _taskCallbackService.Update(task);
message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:"+ result.Message + ";";
Log.Instance.WriteLogAdd( message, LOG_TITLE_CALLBACK);
}
else
{
message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
}
}
}
return string.IsNullOrEmpty(message) ? "无回调任务" : message;
}
catch (Exception ex)
{
Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
return "回调异常" + ex.Message;
}
}
///
/// 柔性产线,伺服回调任务
///
///
public async Task CallbackJob2()
{
List taskList = await _taskCallbackService.GetAllList();
//在线设备
List deviceList = _deviceService.GetDeviceList();
taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.GetFlexibleWire.ToString())
|| x.OperateType.Equals(ActionTypeEnum.SendFlexibleWire.ToString())
|| x.OperateType.Equals(ActionTypeEnum.MoveRobotPosition.ToString())
|| x.OperateType.Equals(ActionTypeEnum.GetServoStacker.ToString())
|| x.OperateType.Equals(ActionTypeEnum.SendServoStacker.ToString())).ToList();
List list = new List();
foreach (Device device in deviceList)
{
foreach (TaskCallback task in taskList)
{
if (task.IP.Equals(device.Ip))
{
list.Add(task);
}
}
}
string message = "";
try
{
foreach (TaskCallback task in list)
{
DateTime currentTime = DateTime.Now;
CcsTagValue tagValueQuery = new CcsTagValue();
tagValueQuery.Ip = task.IP;
tagValueQuery.Address = task.Address;
List tagValues = _ccsTagValueService.GetList(tagValueQuery);
CcsTagValue tagValue = null;
if (tagValues != null && tagValues.Count > 0)
{
tagValue = tagValues[0];
}
else
{
message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
continue;
}
if (tagValue.TagValue.Equals(task.CallbackValue))
{
CallBackRequestData requestData = new CallBackRequestData();
requestData.taskId = long.Parse(task.TaskId);
requestData.taskNodeId = long.Parse(task.TaskNodeId);
var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
if (result.IsSuccess)
{
task.State = false;
task.UpdateTime = DateTime.Now;
await _taskCallbackService.Update(task);
message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
}
else
{
message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
}
}
else if (!string.IsNullOrEmpty(task.CallbackValue2) && tagValue.TagValue.Equals(task.CallbackValue2))
{
CallBackRequestData requestData = new CallBackRequestData();
requestData.taskId = long.Parse(task.TaskId);
requestData.taskNodeId = long.Parse(task.TaskNodeId);
requestData.code = "0";
requestData.msg = "操作失败";
var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
if (result.IsSuccess)
{
task.State = false;
task.UpdateTime = DateTime.Now;
await _taskCallbackService.Update(task);
message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
}
else
{
message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
}
}
else if (!string.IsNullOrEmpty(task.CallbackValue3))
{
CcsTagValue tagValueQuery3 = new CcsTagValue();
tagValueQuery.Ip = task.IP;
tagValueQuery.Address = task.Address3;
List tagValues3 = _ccsTagValueService.GetList(tagValueQuery);
if (tagValues3 != null && tagValues3.Count > 0)
{
CcsTagValue tagValue3 = tagValues3[0];
if (tagValue3.TagValue.Equals(task.CallbackValue3))
{
CallBackRequestData requestData = new CallBackRequestData();
requestData.taskId = long.Parse(task.TaskId);
requestData.taskNodeId = long.Parse(task.TaskNodeId);
requestData.code = "0";
requestData.msg = "操作失败";
var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
if (result.IsSuccess)
{
task.State = false;
task.UpdateTime = DateTime.Now;
await _taskCallbackService.Update(task);
message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + message + ",请求结果:" + result.Message + ";";
Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
}
else
{
message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
}
}
}
}
}
return string.IsNullOrEmpty(message) ? "无回调任务" : message;
}
catch (Exception ex)
{
Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
return "回调异常" + ex.Message;
}
}
///
/// 打标机回调任务
///
///
public async Task CallbackJob3()
{
List taskList = await _taskCallbackService.GetAllList();
//在线设备
List deviceList = _deviceService.GetDeviceList();
taskList = taskList.Where(x => x.OperateType.Equals(ActionTypeEnum.StartLabelMachine.ToString())).ToList();
List list = new List();
foreach (Device device in deviceList)
{
foreach (TaskCallback task in taskList)
{
if (task.IP.Equals(device.Ip))
{
list.Add(task);
}
}
}
string message = "";
try
{
foreach (TaskCallback task in list)
{
DateTime currentTime = DateTime.Now;
CcsTagValue tagValueQuery = new CcsTagValue();
tagValueQuery.Ip = task.IP;
tagValueQuery.Address = task.Address;
List tagValues = _ccsTagValueService.GetList(tagValueQuery);
CcsTagValue tagValueQuery3 = new CcsTagValue();
tagValueQuery3.Ip = task.IP;
tagValueQuery3.Address = task.Address3;
List tagValues3 = _ccsTagValueService.GetList(tagValueQuery3);
CcsTagValue tagValue = null;
CcsTagValue tagValue3 = null;
if (tagValues != null && tagValues.Count > 0 && tagValues3 != null && tagValues3.Count > 0)
{
tagValue = tagValues[0];
tagValue3 = tagValues3[0];
}
else
{
message = message + JsonConvert.SerializeObject(task) + ",此节点没配置;";
Log.Instance.WriteLogAdd("回调异常,此节点没配置" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
continue;
}
if (tagValue.TagValue.Equals(task.CallbackValue))
{
CallBackRequestData requestData = new CallBackRequestData();
requestData.taskId = long.Parse(task.TaskId);
requestData.taskNodeId = long.Parse(task.TaskNodeId);
var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
if (result.IsSuccess)
{
task.State = false;
task.UpdateTime = DateTime.Now;
await _taskCallbackService.Update(task);
message = task.OperateName + "==>taskId:" + task.TaskId + ",taskNodeId:" + task.TaskNodeId + ",请求结果:" + result.Message + ";";
Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
}
else
{
message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
}
}
else if (!string.IsNullOrEmpty(task.CallbackValue2) && tagValue.TagValue.Equals(task.CallbackValue2))
{
CallBackRequestData requestData = new CallBackRequestData();
requestData.taskId = long.Parse(task.TaskId);
requestData.taskNodeId = long.Parse(task.TaskNodeId);
requestData.code = "0";
requestData.msg = "操作失败";
var result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, ecsUrlContext, requestData, null);
if (result.IsSuccess)
{
task.State = false;
task.UpdateTime = DateTime.Now;
await _taskCallbackService.Update(task);
message = message + result.Message + ";";
Log.Instance.WriteLogAdd(message, LOG_TITLE_CALLBACK);
}
else
{
message = message + JsonConvert.SerializeObject(task) + ",请求失败! WebApi 返回结果" + ";";
Log.Instance.WriteLogAdd("回调异常,请求接口失败" + JsonConvert.SerializeObject(task), LOG_TITLE_CALLBACK);
}
}
}
return string.IsNullOrEmpty(message) ? "无回调任务" : message;
}
catch (Exception ex)
{
Log.Instance.WriteLogAdd("回调异常===>>" + ex.Message, LOG_TITLE_CALLBACK);
return "回调异常" + ex.Message;
}
}
///
/// 监控设备状态
///
///
public async Task DeviceStatusJob()
{
try
{
string message = "";
List devices = _deviceService.GetDeviceAllList();
//ftp不监控
devices = devices.Where(x => !x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).ToList();
foreach (Device device in devices)
{
if (device.ProtocolType.Equals(ProtocalTypeEnum.S7_1500.ToString()))
{
try
{
Plc s7 = DevicePlcS7.S7(device.ServerUrl, ProtocalTypeEnum.S7_1500.ToString());
if (s7.IsConnected != true)
{
device.State = false;
await _deviceService.UpdateDevice(device);
s7.Close();
Log.Instance.WriteLogAdd("plc连接失败,或已离线", LOG_TITLE_DEVICE);
message = message + ",plc连接失败,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
continue;
}
else
{
device.State = true;
await _deviceService.UpdateDevice(device);
s7.Close();
Log.Instance.WriteLogAdd("plc连接失败,或已离线", LOG_TITLE_DEVICE);
message = message + ",plc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
continue;
}
}
catch (Exception s7ex)
{
device.State = false;
await _deviceService.UpdateDevice(device);
Log.Instance.WriteLogAdd("plc连接失败,或已离线", LOG_TITLE_DEVICE);
message = message + ",plc连接失败,plc连不上" + s7ex.Message + ",ip:" + device.Ip + ",协议类型:" + device.ProtocolType;
}
}
else if (device.ProtocolType.Equals(ProtocalTypeEnum.OPCUA.ToString()))
{
try
{
DeviceOPCUat deviceOPCUat = new DeviceOPCUat(device.ServerUrl, device.UserName, device.Password);
if (!deviceOPCUat.IsConnection)
{
device.State = false;
await _deviceService.UpdateDevice(device);
Log.Instance.WriteLogAdd("OPCUA连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
message = message + ",OPCUA连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
continue;
}
else
{
device.State = true;
await _deviceService.UpdateDevice(device);
deviceOPCUat.disConnect();
Log.Instance.WriteLogAdd("OPCUA连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_DEVICE);
continue;
}
}
catch (Exception opcex)
{
device.State = false;
await _deviceService.UpdateDevice(device);
Log.Instance.WriteLogAdd("OPCUA连接异常,或以离线" + opcex.Message + ",ip:" + device.Ip + ", 协议类型: " + device.ProtocolType, LOG_TITLE_DEVICE);
continue;
}
}
else if (device.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString()))
{
try
{
int ret = Fanuc.cnc_allclibhndl3(device.ServerUrl, Convert.ToUInt16(device.Port), 2, out Fanuc.h);
if (ret != Fanuc.EW_OK)
{
device.State = false;
await _deviceService.UpdateDevice(device);
Log.Instance.WriteLogAdd("Fanuc连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
message = message + ",Fanuc连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
continue;
}
else
{
device.State = true;
await _deviceService.UpdateDevice(device);
Log.Instance.WriteLogAdd("Fanuc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_DEVICE);
continue;
}
}
catch (Exception opcex)
{
device.State = false;
await _deviceService.UpdateDevice(device);
Log.Instance.WriteLogAdd("Fanuc连接异常,或以离线" + opcex.Message + ",ip:" + device.Ip + ", 协议类型: " + device.ProtocolType, LOG_TITLE_DEVICE);
continue;
}
}
}
return message;
}
catch (Exception ex)
{
Log.Instance.WriteLogAdd("设备连接异常,或以离线" + ex.Message, LOG_TITLE_DEVICE);
return "设备连接异常,或以离线" + ex.Message;
}
}
///
/// fanuc根据类型获取值
///
///
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;
}
}
}