|
@@ -834,6 +834,8 @@ namespace IMCS.CCS.Services
|
|
|
List<Device> devices = _deviceService.GetDeviceList();
|
|
|
Device deviceFtp = devices.Where(x => x.Ip.Equals(req.url)
|
|
|
&& x.ProtocolType.Equals(ProtocalTypeEnum.FTP.ToString())).FirstOrDefault();
|
|
|
+ Device deviceOpcUA = devices.Where(x => x.Ip.Equals(req.url)
|
|
|
+ && x.ProtocolType.Equals(ProtocalTypeEnum.OPCUA.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)
|
|
@@ -847,26 +849,38 @@ namespace IMCS.CCS.Services
|
|
|
return responseData;
|
|
|
}
|
|
|
//西门子系统上传
|
|
|
- if (deviceFtp != null)
|
|
|
+ if (deviceOpcUA != null)
|
|
|
{
|
|
|
- FtpClient ftpClient = new DeviceFtp().Connect(ftpUrlContext, ftpUserContext, ftpPwdContext);
|
|
|
- ftpClient.Get(req.data.fileName, LocalPath, req.data.fileName);
|
|
|
- ftpClient.DisConnect();
|
|
|
- try
|
|
|
- {
|
|
|
- DeviceSFTP sftp = new DeviceSFTP(deviceFtp.Ip, deviceFtp.Port, deviceFtp.UserName, deviceFtp.Password);
|
|
|
- bool ifcon = sftp.Connect();
|
|
|
- if (ifcon)
|
|
|
- {
|
|
|
- sftp.Put(LocalPath + "\\" + req.data.fileName, req.data.remotePath + req.data.fileName);
|
|
|
- sftp.Disconnect();
|
|
|
- }
|
|
|
+ //FtpClient ftpClient = new DeviceFtp().Connect(ftpUrlContext, ftpUserContext, ftpPwdContext);
|
|
|
+ //ftpClient.Get(req.data.fileName, LocalPath, req.data.fileName);
|
|
|
+ //ftpClient.DisConnect();
|
|
|
+ //try
|
|
|
+ //{
|
|
|
+ // DeviceSFTP sftp = new DeviceSFTP(deviceFtp.Ip, deviceFtp.Port, deviceFtp.UserName, deviceFtp.Password);
|
|
|
+ // bool ifcon = sftp.Connect();
|
|
|
+ // if (ifcon)
|
|
|
+ // {
|
|
|
+ // sftp.Put(LocalPath + "\\" + req.data.fileName, req.data.remotePath + req.data.fileName);
|
|
|
+ // sftp.Disconnect();
|
|
|
+ // }
|
|
|
|
|
|
- }
|
|
|
- catch (Exception exscp)
|
|
|
+ //}
|
|
|
+ //catch (Exception exscp)
|
|
|
+ //{
|
|
|
+ // Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败," + exscp.Message + "," + JsonConvert.SerializeObject(req),
|
|
|
+ // EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
+ // responseData.result = "false";
|
|
|
+ // return responseData;
|
|
|
+ //}
|
|
|
+
|
|
|
+ RequestOpcUaData opcUaReq = new RequestOpcUaData();
|
|
|
+ opcUaReq.Type = OpcUaActionTypeEnum.Upload.ToString();
|
|
|
+ opcUaReq.Path = req.data.fileName;
|
|
|
+ var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
|
|
|
+ if (!Result.IsSuccess)
|
|
|
{
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,scp连接失败," + exscp.Message + "," + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.UploadFile + "上传异常,opcUA上传," + Result.Message + "," + JsonConvert.SerializeObject(req),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.UploadFile));
|
|
|
responseData.result = "false";
|
|
|
return responseData;
|
|
|
}
|
|
@@ -889,22 +903,7 @@ namespace IMCS.CCS.Services
|
|
|
}
|
|
|
|
|
|
}else if(deviceHeidenhain != null)
|
|
|
- {
|
|
|
- //RequestHeidhData hdhReq = new RequestHeidhData();
|
|
|
- //hdhReq.ServerUrl = deviceHeidenhain.ServerUrl;
|
|
|
- //hdhReq.MachineName = deviceHeidenhain.UserName;
|
|
|
- //hdhReq.Path = req.data.fileName;
|
|
|
- //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;
|
|
|
- //}
|
|
|
-
|
|
|
+ {
|
|
|
//海德汉程序上传后,同时写入编号
|
|
|
if (string.IsNullOrEmpty(req.data.fileName))
|
|
|
{
|
|
@@ -1099,78 +1098,57 @@ namespace IMCS.CCS.Services
|
|
|
//opcua启动程序
|
|
|
if (actionInfo.ProtocolType == ProtocalTypeEnum.OPCUA.ToString())
|
|
|
{
|
|
|
- RequestOpcUaData opcUaReq = new RequestOpcUaData();
|
|
|
- opcUaReq.ServerUrl = device.ServerUrl;
|
|
|
- opcUaReq.UserName = device.UserName;
|
|
|
- opcUaReq.Password = device.Password;
|
|
|
- opcUaReq.Path = actionInfo.FilePath + req.data.remotePath;
|
|
|
- opcUaReq.Type = OpcUaActionTypeEnum.Connect.ToString();
|
|
|
- var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
|
|
|
- ResponseOpcUaData responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
|
|
|
- if (Result.IsSuccess && responseOpcUaData.result)
|
|
|
+ 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;
|
|
|
+ }
|
|
|
|
|
|
- Thread.Sleep(1000);
|
|
|
- List<CcsActionAddress> CcsActionAddressChecks = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.CHECK.ToString()).ToList();
|
|
|
- if (CcsActionAddressChecks != null)
|
|
|
+ //查询条件
|
|
|
+ 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))
|
|
|
{
|
|
|
- List<string> checkAddresses = CcsActionAddressChecks.Select(t => t.Address).ToList();
|
|
|
- opcUaReq.Type = OpcUaActionTypeEnum.Read.ToString();
|
|
|
- opcUaReq.Addresses = checkAddresses;
|
|
|
- Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
|
|
|
- responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
|
|
|
- if (Result.IsSuccess && responseOpcUaData.result)
|
|
|
+ string CheckAddress = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
|
+ var operateResult = s7.ReadInt16(CheckAddress).Content.ToString();
|
|
|
+ if (actionAddress.CheckType ? operateResult.ToString().Equals(actionAddress.Value) : operateResult.ToString() != actionAddress.Value)
|
|
|
{
|
|
|
- //条件校验
|
|
|
- for (int i = 0; i < CcsActionAddressChecks.Count; i++)
|
|
|
- {
|
|
|
- CcsActionAddress checkActionAddress = CcsActionAddressChecks[i];
|
|
|
- string checkValue = responseOpcUaData.values[i];
|
|
|
- if (checkValue != checkActionAddress.Value)
|
|
|
- {
|
|
|
- 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();
|
|
|
- List<string> writeAddresses = CcsActionAddressWrites.Select(t => t.Address).ToList();
|
|
|
- List<string> writeValues = CcsActionAddressWrites.Select(t => t.Value).ToList();
|
|
|
- opcUaReq.Type = OpcUaActionTypeEnum.Write.ToString();
|
|
|
- opcUaReq.Addresses = writeAddresses;
|
|
|
- opcUaReq.Values = writeValues;
|
|
|
- /*opcUaReq.Addresses = new List<string>() { actionInfo.Address };
|
|
|
- opcUaReq.Values = new List<string>() { "True" };*/
|
|
|
- Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, opcuacUrlContext, opcUaReq, null);
|
|
|
- responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
|
|
|
- if (Result.IsSuccess && responseOpcUaData.result)
|
|
|
- {
|
|
|
- //插入回调
|
|
|
- TaskCallback taskCallbackData = new TaskCallback(actionInfo.PlcIp, ActionTypeEnum.StartNCProgram.ToString(),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
|
- await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ s7.ConnectClose();
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动程序异常===>>" + "条件不满足" + JsonConvert.SerializeObject(req),
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- return responseData;
|
|
|
+ responseData.result = "false";
|
|
|
+ return responseData;
|
|
|
+ }
|
|
|
}
|
|
|
- else
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询写入地址列表
|
|
|
+ List<CcsActionAddress> CcsActionAddressWrites = CcsActionAddresses.Where(o => o.Type == ActionAddressTypeEnum.WRITE.ToString()).ToList();
|
|
|
+ foreach (CcsActionAddress actionAddress in CcsActionAddressWrites)
|
|
|
+ {
|
|
|
+ if (!string.IsNullOrEmpty(actionAddress.Address))
|
|
|
{
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
|
|
|
- EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- responseData.result = "false";
|
|
|
- return responseData;
|
|
|
+ string Address = ToolUtils.AddressConvertDBW(actionAddress.Address);
|
|
|
+ s7.Write(actionAddress.Address, Convert.ToInt16(actionAddress.Value));
|
|
|
+ Thread.Sleep(SLEEP_TIME);
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
- {
|
|
|
- Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动异常===>>" + JsonConvert.SerializeObject(req),
|
|
|
+ s7.ConnectClose();
|
|
|
+ //插入回调
|
|
|
+ TaskCallback taskCallbackData = new TaskCallback(actionInfo.PlcIp, ActionTypeEnum.StartNCProgram.ToString(),
|
|
|
+ EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram), req.taskId, req.taskNodeId);
|
|
|
+ await _taskCallbackService.CreateOrUpdateAndCache(setCallBackValue(CcsActionAddresses, taskCallbackData));
|
|
|
+ Log.Instance.WriteLogAdd(ActionTypeEnum.StartNCProgram + "启动成功===>>" + JsonConvert.SerializeObject(req),
|
|
|
EnumHelper.GetDescription(ActionTypeEnum.StartNCProgram));
|
|
|
- responseData.result = "false";
|
|
|
- return responseData;
|
|
|
- }
|
|
|
+ return responseData;
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
}
|