Przeglądaj źródła

添加fanuc协议

zhuhao 3 lat temu
rodzic
commit
dafdb6cd2b

+ 6 - 0
IMCS_CCS/Controllers/JobTasksController.cs

@@ -64,6 +64,12 @@ namespace IMCS.CCS.Controllers
             return await _taskJobService.DataCollectS7Job();
         }
 
+        [HttpPost("DataCollectFanucJob")]
+        public async Task<string> DataCollectFanucJob()
+        {
+            return await _taskJobService.DataCollectFanucJob();
+        }
+
         [HttpPost("DeviceStatusJob")]
         public async Task<string> DeviceStatusJob()
         {

+ 14 - 3
IMCS_CCS/Entitys/CcsTagValue.cs

@@ -1,4 +1,5 @@
-using System;
+using IMCS_CCS.Utils;
+using System;
 using System.ComponentModel.DataAnnotations;
 using System.ComponentModel.DataAnnotations.Schema; 
 
@@ -50,6 +51,16 @@ namespace IMCS.CCS.Entitys
 
         [Column("update_time")]
         public DateTime UpdateTime { get; set; }
-    } 
-  
+    }
+
+    public enum FanucAddressEnum
+    {
+        [EnumDescription("主程序")]
+        MainProg,
+        [EnumDescription("运行状态")]
+        Status,
+        [EnumDescription("开机时长")]
+        PowerOnTime, 
+    }
+
 }

+ 6 - 0
IMCS_CCS/Service/ITaskJobService.cs

@@ -43,6 +43,12 @@ namespace IMCS.CCS.Service
         /// <returns></returns>
         Task<string> DataCollectS7Job();
 
+        /// <summary>
+        /// 采集数据FANUC
+        /// </summary> 
+        /// <returns></returns>
+        Task<string> DataCollectFanucJob();
+
         /// <summary>
         /// 监控设备状态
         /// </summary>

+ 105 - 0
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -235,6 +235,89 @@ namespace IMCS.CCS.Service.Impl
                 return "采集失败";
             }
         }
+
+        /// <summary>
+        /// 采集数据FANUC
+        /// </summary> 
+        /// <returns></returns>
+        public async Task<string> DataCollectFanucJob()
+        {
+            try
+            {
+                List<Device> deviceList = _deviceService.GetDeviceList();
+                deviceList = deviceList.Where(x => x.ProtocolType.Equals(ProtocalTypeEnum.FANUC.ToString())).ToList();
+                foreach (Device device in deviceList)
+                {
+                    List<CcsTagValue> tagValues = new List<CcsTagValue>();
+                    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<List<CcsTagValue>>(data);
+                    }
+
+                    if (tagValues != null && tagValues.Count > 0)
+                    {
+                        tagValues = JsonConvert.DeserializeObject<List<CcsTagValue>>(data);
+                        List<CcsTagValue> changTagValues = new List<CcsTagValue>();
+
+                        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 "采集失败";
+            }
+        }
+
         /// <summary>
         /// 机床启动,上传程序回调任务
         /// </summary> 
@@ -645,5 +728,27 @@ namespace IMCS.CCS.Service.Impl
             }  
         }
 
+        /// <summary>
+        /// fanuc根据类型获取值
+        /// </summary> 
+        /// <returns></returns>
+        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;
+
+        }
+
     }
 }

+ 5 - 5
IMCS_CCS/obj/CCS.csproj.nuget.dgspec.json

@@ -1,17 +1,17 @@
 {
   "format": 1,
   "restore": {
-    "E:\\dev\\IMCS_CCS\\IMCS_CCS\\CCS.csproj": {}
+    "D:\\svn\\imcs_ccs_2022\\ccs\\IMCS_CCS\\CCS.csproj": {}
   },
   "projects": {
-    "E:\\dev\\IMCS_CCS\\IMCS_CCS\\CCS.csproj": {
+    "D:\\svn\\imcs_ccs_2022\\ccs\\IMCS_CCS\\CCS.csproj": {
       "version": "1.0.0",
       "restore": {
-        "projectUniqueName": "E:\\dev\\IMCS_CCS\\IMCS_CCS\\CCS.csproj",
+        "projectUniqueName": "D:\\svn\\imcs_ccs_2022\\ccs\\IMCS_CCS\\CCS.csproj",
         "projectName": "IMCS_CCS",
-        "projectPath": "E:\\dev\\IMCS_CCS\\IMCS_CCS\\CCS.csproj",
+        "projectPath": "D:\\svn\\imcs_ccs_2022\\ccs\\IMCS_CCS\\CCS.csproj",
         "packagesPath": "C:\\Users\\朱浩\\.nuget\\packages\\",
-        "outputPath": "E:\\dev\\IMCS_CCS\\IMCS_CCS\\obj\\",
+        "outputPath": "D:\\svn\\imcs_ccs_2022\\ccs\\IMCS_CCS\\obj\\",
         "projectStyle": "PackageReference",
         "fallbackFolders": [
           "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"

+ 1 - 1
IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.GeneratedMSBuildEditorConfig.editorconfig

@@ -1,3 +1,3 @@
 is_global = true
 build_property.RootNamespace = IMCS_CCS
-build_property.ProjectDir = E:\dev\IMCS_CCS\IMCS_CCS\
+build_property.ProjectDir = D:\svn\imcs_ccs_2022\ccs\IMCS_CCS\

BIN
IMCS_CCS/obj/Debug/netcoreapp3.1/CCS.assets.cache


+ 3 - 3
IMCS_CCS/obj/project.assets.json

@@ -7949,11 +7949,11 @@
   "project": {
     "version": "1.0.0",
     "restore": {
-      "projectUniqueName": "E:\\dev\\IMCS_CCS\\IMCS_CCS\\CCS.csproj",
+      "projectUniqueName": "D:\\svn\\imcs_ccs_2022\\ccs\\IMCS_CCS\\CCS.csproj",
       "projectName": "IMCS_CCS",
-      "projectPath": "E:\\dev\\IMCS_CCS\\IMCS_CCS\\CCS.csproj",
+      "projectPath": "D:\\svn\\imcs_ccs_2022\\ccs\\IMCS_CCS\\CCS.csproj",
       "packagesPath": "C:\\Users\\朱浩\\.nuget\\packages\\",
-      "outputPath": "E:\\dev\\IMCS_CCS\\IMCS_CCS\\obj\\",
+      "outputPath": "D:\\svn\\imcs_ccs_2022\\ccs\\IMCS_CCS\\obj\\",
       "projectStyle": "PackageReference",
       "fallbackFolders": [
         "C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"

+ 2 - 2
IMCS_CCS/obj/project.nuget.cache

@@ -1,8 +1,8 @@
 {
   "version": 2,
-  "dgSpecHash": "qqpyv/FkqLRnW/ws7r4njGsfdFxIWtahK1mvrxIhywM9xBv3CGUFuo4Ic6snw1NTewY+3z0W+KRPpxGQQQ3eHw==",
+  "dgSpecHash": "v3Y5Lk+M0GBVIDurJeVTODb5u+p4j2m+6ZCj+qUK6NDgPcPdIM7Romw0TJ3I19Z0Ygp+ivsub4g6R37ZzYi6dA==",
   "success": true,
-  "projectFilePath": "E:\\dev\\IMCS_CCS\\IMCS_CCS\\CCS.csproj",
+  "projectFilePath": "D:\\svn\\imcs_ccs_2022\\ccs\\IMCS_CCS\\CCS.csproj",
   "expectedPackageFiles": [
     "C:\\Users\\朱浩\\.nuget\\packages\\automapper\\10.1.1\\automapper.10.1.1.nupkg.sha512",
     "C:\\Users\\朱浩\\.nuget\\packages\\automapper.extensions.microsoft.dependencyinjection\\8.1.1\\automapper.extensions.microsoft.dependencyinjection.8.1.1.nupkg.sha512",