|
@@ -16,6 +16,7 @@ using Microsoft.Extensions.Configuration;
|
|
using IMCS.CCS.Service;
|
|
using IMCS.CCS.Service;
|
|
using IMCS_CCS.Model.vo;
|
|
using IMCS_CCS.Model.vo;
|
|
using FTP;
|
|
using FTP;
|
|
|
|
+using HslCommunication;
|
|
|
|
|
|
namespace IMCS.CCS.Services
|
|
namespace IMCS.CCS.Services
|
|
{
|
|
{
|
|
@@ -984,7 +985,18 @@ namespace IMCS.CCS.Services
|
|
responseData.result = "false";
|
|
responseData.result = "false";
|
|
return responseData;
|
|
return responseData;
|
|
}
|
|
}
|
|
- Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
|
|
|
|
|
|
+ //Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
|
|
|
|
+ SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
|
|
|
|
+ OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
|
+ if (!ConnectionResult.IsSuccess)
|
|
|
|
+ {
|
|
|
|
+ s7.ConnectClose();
|
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
|
+ responseData.result = "false";
|
|
|
|
+ return responseData;
|
|
|
|
+ }
|
|
|
|
+ /*
|
|
if (s7.IsConnected != true)
|
|
if (s7.IsConnected != true)
|
|
{
|
|
{
|
|
s7.Close();
|
|
s7.Close();
|
|
@@ -992,7 +1004,7 @@ namespace IMCS.CCS.Services
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
responseData.result = "false";
|
|
responseData.result = "false";
|
|
return responseData;
|
|
return responseData;
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
//查询条件
|
|
//查询条件
|
|
List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
|
|
List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
|
|
foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
|
|
foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
|
|
@@ -1000,10 +1012,10 @@ namespace IMCS.CCS.Services
|
|
if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
|
|
if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
|
|
{
|
|
{
|
|
string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
- var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
|
|
|
|
|
|
+ var operateResult = s7.ReadInt16(CheckAddress).Content.ToString();
|
|
if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
|
|
if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
|
|
{
|
|
{
|
|
- s7.Close();
|
|
|
|
|
|
+ s7.ConnectClose();
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
responseData.result = "false";
|
|
responseData.result = "false";
|
|
@@ -1019,11 +1031,11 @@ namespace IMCS.CCS.Services
|
|
if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
{
|
|
{
|
|
string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
- s7.Write(Address, Convert.ToInt16(actionAddress.Value));
|
|
|
|
|
|
+ s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
|
|
Thread.Sleep(SLEEP_TIME);
|
|
Thread.Sleep(SLEEP_TIME);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- s7.Close();
|
|
|
|
|
|
+ s7.ConnectClose();
|
|
//插入回调
|
|
//插入回调
|
|
TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
|
|
TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
@@ -1040,25 +1052,31 @@ namespace IMCS.CCS.Services
|
|
hdhReq.MachineName = device.UserName;
|
|
hdhReq.MachineName = device.UserName;
|
|
hdhReq.Path = req.data.remotePath;
|
|
hdhReq.Path = req.data.remotePath;
|
|
hdhReq.Type = OpcUaActionTypeEnum.SelectNcProgram.ToString();
|
|
hdhReq.Type = OpcUaActionTypeEnum.SelectNcProgram.ToString();
|
|
- var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
|
|
|
|
|
|
+ /*var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
|
|
ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
|
|
ResponseHeidhData responseHeidhData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
|
|
- if(!Result.IsSuccess || !responseHeidhData.result)
|
|
|
|
|
|
+ if (!Result.IsSuccess || !responseHeidhData.result)
|
|
{
|
|
{
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + JsonConvert.SerializeObject(req),
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + JsonConvert.SerializeObject(req),
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
responseData.result = "false";
|
|
responseData.result = "false";
|
|
return responseData;
|
|
return responseData;
|
|
- }
|
|
|
|
|
|
+ }*/
|
|
//调用机器人plc启动海德汉程序
|
|
//调用机器人plc启动海德汉程序
|
|
- Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
|
|
|
|
- if (s7.IsConnected != true)
|
|
|
|
|
|
+ // Plc s7 = DevicePlcS7.S7(actionInfo.PlcIp, ProtocalTypeEnum.S7_1500.ToString());
|
|
|
|
+ SiemensS7Net s7 = DevicePlcS7.SiemensS7(actionInfo.PlcIp);
|
|
|
|
+ OperateResult ConnectionResult = s7.ConnectServer();
|
|
|
|
+ if (!ConnectionResult.IsSuccess)
|
|
{
|
|
{
|
|
- s7.Close();
|
|
|
|
|
|
+ s7.ConnectClose();
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
responseData.result = "false";
|
|
responseData.result = "false";
|
|
return responseData;
|
|
return responseData;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ string CheckAddress1 = ToolUtils.AddressConvertDBW("DB200.314");
|
|
|
|
+ string operateResult1 = s7.ReadInt16(CheckAddress1).Content.ToString();
|
|
|
|
+
|
|
//查询条件
|
|
//查询条件
|
|
List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
|
|
List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
|
|
foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
|
|
foreach (CcsActionAddress actionAddress in CcsActionAddressChecks)
|
|
@@ -1066,10 +1084,10 @@ namespace IMCS.CCS.Services
|
|
if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
|
|
if (!string.IsNullOrEmpty(actionAddress.Address) && !string.IsNullOrEmpty(actionAddress.Value))
|
|
{
|
|
{
|
|
string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
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)
|
|
|
|
|
|
+ string operateResult = s7.ReadInt16(CheckAddress).Content.ToString();
|
|
|
|
+ if (actionAddress.CheckType ? operateResult.Equals(actionAddress.Value) : operateResult != actionAddress.Value)
|
|
{
|
|
{
|
|
- s7.Close();
|
|
|
|
|
|
+ s7.ConnectClose();
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
responseData.result = "false";
|
|
responseData.result = "false";
|
|
@@ -1080,23 +1098,82 @@ namespace IMCS.CCS.Services
|
|
|
|
|
|
//查询写入地址列表
|
|
//查询写入地址列表
|
|
List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
|
|
List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
|
|
- foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
|
|
|
|
|
|
+ if(CcsActionAddressWrites.Count < 2)
|
|
{
|
|
{
|
|
- if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
|
|
|
+ s7.ConnectClose();
|
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "地址错误" + JsonConvert.SerializeObject(req),
|
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
|
+ responseData.result = "false";
|
|
|
|
+ return responseData;
|
|
|
|
+ }
|
|
|
|
+ //写入程序编号
|
|
|
|
+ //s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16("0"));
|
|
|
|
+ s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16(CcsActionAddressWrites[0].Value));
|
|
|
|
+
|
|
|
|
+ CcsActionAddress CcsActionAddressWriteCheck = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_CHECK.ToString()).FirstOrDefault();
|
|
|
|
+ DateTime start_time = DateTime.Now;
|
|
|
|
+ Boolean isTimeOut = false;
|
|
|
|
+
|
|
|
|
+ while (s7.ReadInt16(CcsActionAddressWriteCheck.Address).Content.ToString().Equals("0"))
|
|
|
|
+ {
|
|
|
|
+ //等待条件满足继续下发
|
|
|
|
+ if (DateTime.Now.Subtract(start_time).TotalSeconds > 60)
|
|
{
|
|
{
|
|
- string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
|
|
- s7.Write(Address, Convert.ToInt16(actionAddress.Value));
|
|
|
|
- Thread.Sleep(SLEEP_TIME);
|
|
|
|
|
|
+ isTimeOut = true;
|
|
|
|
+ break;
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
+ s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16(CcsActionAddressWrites[0].Value));
|
|
}
|
|
}
|
|
- s7.Close();
|
|
|
|
|
|
+ //Thread.Sleep(30000);
|
|
|
|
+ if (isTimeOut)
|
|
|
|
+ {
|
|
|
|
+ s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16("0"));
|
|
|
|
+ s7.Write(CcsActionAddressWriteCheck.Address, Convert.ToInt16("0"));
|
|
|
|
+ throw new Exception("等待手动操作超时异常");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ //写入程序启动信号
|
|
|
|
+ //string StartAddress = ToolUtils.AddressConvertDBW("DB200.314");
|
|
|
|
+ //s7.Write(CcsActionAddressWrites[1].Address, Convert.ToInt16("3"));
|
|
|
|
+ //重置清零
|
|
|
|
+ //
|
|
|
|
+ Thread.Sleep(10000);
|
|
|
|
+
|
|
|
|
+ s7.Write(CcsActionAddressWrites[1].Address, Convert.ToInt16(CcsActionAddressWrites[1].Value) );
|
|
|
|
+ s7.Write(CcsActionAddressWrites[0].Address, Convert.ToInt16("0"));
|
|
|
|
+ s7.Write(CcsActionAddressWriteCheck.Address, Convert.ToInt16("0"));
|
|
|
|
+ s7.ConnectClose();
|
|
|
|
+
|
|
|
|
+ /*DateTime beginTime = DateTime.Now;
|
|
|
|
+ while (true)
|
|
|
|
+ {
|
|
|
|
+ CcsActionAddress CcsActionAddressWriteCheck = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE_CHECK.ToString()).FirstOrDefault();
|
|
|
|
+ if (CcsActionAddressWriteCheck != null)
|
|
|
|
+ {
|
|
|
|
+ string WriteCheckAddress = ToolUtils.AddressConvertDBW(CcsActionAddressWriteCheck.Address);
|
|
|
|
+ var operateResult = ((ushort)s7.Read(WriteCheckAddress)).ConvertToShort();
|
|
|
|
+ if (operateResult.ToString() == CcsActionAddressWriteCheck.Value)
|
|
|
|
+ {
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (DateTime.Now.Subtract(beginTime).TotalMinutes > 1)
|
|
|
|
+ {
|
|
|
|
+ s7.Close();
|
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "程序编号没有应用" + JsonConvert.SerializeObject(req),
|
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
|
+ responseData.result = "false";
|
|
|
|
+ return responseData;
|
|
|
|
+ }
|
|
|
|
+ }*/
|
|
|
|
|
|
//插入回调
|
|
//插入回调
|
|
TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
|
|
TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartNCProgram.ToString(),
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
|
|
await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
|
|
Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
return responseData;
|
|
return responseData;
|
|
}
|
|
}
|
|
else
|
|
else
|
|
@@ -1107,7 +1184,6 @@ namespace IMCS.CCS.Services
|
|
return responseData;
|
|
return responseData;
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
catch (Exception ex)
|
|
{
|
|
{
|