|
@@ -41,6 +41,8 @@ namespace IMCS.CCS.Services
|
|
|
|
|
|
private string opcuacUrlContext;
|
|
|
|
|
|
+ private string hdhUrlContext;
|
|
|
+
|
|
|
private string ftpUrlContext;
|
|
|
|
|
|
private string ftpUserContext;
|
|
@@ -67,6 +69,7 @@ namespace IMCS.CCS.Services
|
|
|
Configuration = configuration;
|
|
|
fanucUrlContext = Configuration.GetConnectionString("fanucUrlContext");
|
|
|
opcuacUrlContext = Configuration.GetConnectionString("opcuacUrlContext");
|
|
|
+ hdhUrlContext = Configuration.GetConnectionString("hdhUrlContext");
|
|
|
ftpUrlContext = Configuration.GetConnectionString("FTPServer");
|
|
|
ftpUserContext = Configuration.GetConnectionString("FTPUser");
|
|
|
ftpPwdContext = Configuration.GetConnectionString("FTPPwd");
|
|
@@ -759,9 +762,10 @@ namespace IMCS.CCS.Services
|
|
|
&& x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).FirstOrDefault();
|
|
|
Device deviceFanuc = devices.Where(x => x.Ip.Equals(req.url)
|
|
|
&& x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString())).FirstOrDefault();
|
|
|
+ Device deviceHeidenhain = devices.Where(x => x.Ip.Equals(req.url)
|
|
|
+ && x.ProtocolType.Equals(ProtocalTypeEnum.HEIDEHAIN.ToString())).FirstOrDefault();
|
|
|
|
|
|
-
|
|
|
- if (deviceFtp == null && deviceFanuc == null)
|
|
|
+ if (deviceFtp == null && deviceFanuc == null && deviceHeidenhain == null)
|
|
|
{
|
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "设备已离线===>>" + JsonConvert.SerializeObject(req),
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
@@ -806,6 +810,21 @@ namespace IMCS.CCS.Services
|
|
|
return responseData;
|
|
|
}
|
|
|
|
|
|
+ }else if(deviceHeidenhain != null)
|
|
|
+ {
|
|
|
+ RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
+ hdhReq.ServerUrl = deviceHeidenhain.ServerUrl;
|
|
|
+ hdhReq.MachineName = deviceHeidenhain.UserName;
|
|
|
+ hdhReq.Type = OpcUaActionTypeEnum.Upload.ToString();
|
|
|
+ var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
|
|
|
+ ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
|
|
|
+ if (!Result.IsSuccess || !responseHeidhData.result)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
}
|
|
|
//插入回调
|
|
|
TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.UploadFile.ToString(),
|
|
@@ -876,12 +895,13 @@ namespace IMCS.CCS.Services
|
|
|
Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
|
|
|
responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
|
|
|
if (Result.IsSuccess && responseOpcUaData.result)
|
|
|
- {
|
|
|
+ {
|
|
|
//条件校验
|
|
|
- for (int i= 0;i< CcsActionAddressChecks.Count; i++) {
|
|
|
+ for (int i = 0; i < CcsActionAddressChecks.Count; i++)
|
|
|
+ {
|
|
|
CcsActionAddress checkActionAddress = CcsActionAddressChecks[i];
|
|
|
string checkValue = responseOpcUaData.values[i];
|
|
|
- if(checkValue != checkActionAddress.Value)
|
|
|
+ if (checkValue != checkActionAddress.Value)
|
|
|
{
|
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
@@ -952,6 +972,132 @@ namespace IMCS.CCS.Services
|
|
|
return responseData;
|
|
|
}
|
|
|
}
|
|
|
+ else if (actionInfo.ProtocolType == ProtocalTypeEnum.FANUC.ToString())
|
|
|
+ {
|
|
|
+ string Url = fanucUrlContext + "?ip=" + device.Ip + "&port=" + device.Port;
|
|
|
+ //调用发那科是否连接接口
|
|
|
+ var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Get, Url + "&fun=" + OpcUaActionTypeEnum.SelectNcProgram.ToString(), null, null);
|
|
|
+ if(!Result.IsSuccess || Result.Message != "0")
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
|
|
|
+ if (s7.IsConnected != true)
|
|
|
+ {
|
|
|
+ s7.Close();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ //查询条件
|
|
|
+ List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
|
|
|
+ foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
|
|
|
+ {
|
|
|
+ string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
|
+ var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
|
|
|
+ if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
|
|
|
+ {
|
|
|
+ s7.Close();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询写入地址列表
|
|
|
+ List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
|
|
|
+ foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
+ {
|
|
|
+ string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
|
+ s7.Write(Address, Convert.ToInt16(actionAddress.Value));
|
|
|
+ Thread.Sleep(SLEEP_TIME);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ s7.Close();
|
|
|
+ //插入回调
|
|
|
+ TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
|
+ await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ return responseData;
|
|
|
+
|
|
|
+ }
|
|
|
+ else if (actionInfo.ProtocolType == ProtocalTypeEnum.HEIDEHAIN.ToString())
|
|
|
+ {
|
|
|
+ RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
+ hdhReq.ServerUrl = device.ServerUrl;
|
|
|
+ hdhReq.MachineName = device.UserName;
|
|
|
+ hdhReq.Type = OpcUaActionTypeEnum.SelectNcProgram.ToString();
|
|
|
+ var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
|
|
|
+ ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
|
|
|
+ if(!Result.IsSuccess || !responseHeidhData.result)
|
|
|
+ {
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ //调用机器人plc启动海德汉程序
|
|
|
+ Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
|
|
|
+ if (s7.IsConnected != true)
|
|
|
+ {
|
|
|
+ s7.Close();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ //查询条件
|
|
|
+ List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
|
|
|
+ foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
|
|
|
+ {
|
|
|
+ string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
|
+ var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
|
|
|
+ if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
|
|
|
+ {
|
|
|
+ s7.Close();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询写入地址列表
|
|
|
+ List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
|
|
|
+ foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
+ {
|
|
|
+ string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
|
+ s7.Write(Address, Convert.ToInt16(actionAddress.Value));
|
|
|
+ Thread.Sleep(SLEEP_TIME);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ s7.Close();
|
|
|
+
|
|
|
+ //插入回调
|
|
|
+ TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
|
+ await _taskCallbackService.Create(setCallBackValue(CcsActionAddresses, taskCallbackData));
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
else
|
|
|
{
|
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
|
|
@@ -1191,9 +1337,7 @@ namespace IMCS.CCS.Services
|
|
|
{
|
|
|
if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
{
|
|
|
- string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
|
- //s7.Write(Address, Convert.ToInt16(string.IsNullOrEmpty(actionAddress.Value) ? req.data.Location : actionAddress.Value));
|
|
|
- s7.Write(actionAddress.Address, actionAddress.Value);
|
|
|
+ s7.Write(actionAddress.Address, bool.Parse(actionAddress.Value));
|
|
|
Thread.Sleep(1500);
|
|
|
}
|
|
|
}
|