zhuhao há 2 anos atrás
pai
commit
d32ba46f71

+ 2 - 2
IMCS_CCS/Entitys/CcsAction.cs

@@ -28,8 +28,8 @@ namespace IMCS.CCS.Entitys
         [Column("file_path")]
         public string FilePath { get; set; }
 
-        [Column("move_index")]
-        public string MoveIndex { get; set; }
+        [Column("plc_ip")]
+        public string PlcIp { get; set; }
 
         [Column("order_index")]
         public string OrderIndex { get; set; }

+ 2 - 1
IMCS_CCS/Model/vo/RequestOpcUaData.cs

@@ -37,7 +37,8 @@ namespace IMCS_CCS.Model.vo
         Connect,
         Write,
         Read,
-        Upload, 
+        Upload,
+        SelectNcProgram,
         StartNcProgram
     }
 }

+ 152 - 8
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -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);
                     }
                 }

+ 5 - 5
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -1357,9 +1357,9 @@ namespace IMCS.CCS.Service.Impl
                             hdhReq.MachineName = device.UserName;
                             hdhReq.Type = OpcUaActionTypeEnum.Connect.ToString();
                             var Result = await _apiRequestService.RequestAsync(RequsetModeEnum.Post, hdhUrlContext, hdhReq, null);
-                            ResponseOpcUaData responseOpcUaData = JsonConvert.DeserializeObject<ResponseOpcUaData>(Result.Message);
+                            ResponseHeidhData responseData = JsonConvert.DeserializeObject<ResponseHeidhData>(Result.Message);
 
-                            if (!Result.IsSuccess || Result.Message != "0")
+                            if (!Result.IsSuccess || !responseData.result)
                             {
                                 Device oldDevice = await _deviceService.GetDeviceById(device.Id);
                                 if (oldDevice.State)
@@ -1368,8 +1368,8 @@ namespace IMCS.CCS.Service.Impl
                                     await _deviceService.UpdateDevice(oldDevice);
                                     changeDevices.Add(oldDevice);
                                 }
-                                Log.Instance.WriteLogAdd("Fanuc连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
-                                message = message + ",Fanuc连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
+                                Log.Instance.WriteLogAdd("海德汉连接异常,或已离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_OPCUA);
+                                message = message + ",海德汉连接异常,或以离线,ip:" + device.Ip + ",协议类型:" + device.ProtocolType; ;
                                 continue;
                             }
                             else
@@ -1381,7 +1381,7 @@ namespace IMCS.CCS.Service.Impl
                                     await _deviceService.UpdateDevice(oldDevice);
                                     changeDevices.Add(oldDevice);
                                 }
-                                Log.Instance.WriteLogAdd("Fanuc连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_DEVICE);
+                                Log.Instance.WriteLogAdd("海德汉连接成功,ip:" + device.Ip + ",协议类型:" + device.ProtocolType, LOG_TITLE_DEVICE);
                                 continue;
                             }
                         }

BIN
IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS_CCS.dll


BIN
IMCS_CCS/bin/Debug/netcoreapp3.1/IMCS_CCS.pdb


+ 1 - 1
IMCS_CCS/bin/Debug/netcoreapp3.1/wwwroot/db/Projects.json

@@ -1 +1 @@
-[{"Id":"39028940-7220-465f-9ad6-830df4bda250","Name":"数据采集中心 ","Remark":"数据采集中心  测试","CreateTime":"2021-05-17T16:36:18.6736805+08:00"}]
+[{"Id":"39028940-7220-465f-9ad6-830df4bda250","Name":"数据采集中心 ","Remark":"数据采集中心  测试","CreateTime":"2021-05-17T16:36:18.6736805+08:00"},{"Id":"ae000d98-fd96-45a2-a3bc-b6bb55c2af79","Name":"回调任务","Remark":"回调任务","CreateTime":"2022-08-08T15:10:07.9579395+08:00"}]

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 1
IMCS_CCS/bin/Debug/netcoreapp3.1/wwwroot/db/Tasks.json


BIN
IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.csproj.AssemblyReference.cache


+ 1 - 1
IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.csproj.CoreCompileInputs.cache

@@ -1 +1 @@
-b81d531ee7c5b61519fb3001fc057cc450622736
+f9920f3bb6b9f8499f934ef5812a75e909151e3b

BIN
IMCS_CCS/obj/Debug/netcoreapp3.1/IMCS_CCS.dll


BIN
IMCS_CCS/obj/Debug/netcoreapp3.1/IMCS_CCS.pdb


Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff