zhuhao %!s(int64=3) %!d(string=hai) anos
pai
achega
c9813d6e6f

+ 12 - 6
IMCS_CCS/Entitys/CcsTagValue.cs

@@ -22,10 +22,7 @@ namespace IMCS.CCS.Entitys
         public string TagValue { get; set; }
 
         [Column("type")] 
-        public string Type { get; set; }
-  
-        [Column("Type")] 
-        public string TaskNodeId { get; set; }
+        public string Type { get; set; } 
  
         [Column("unit")]
         public string Unit { get; set; } 
@@ -50,6 +47,15 @@ namespace IMCS.CCS.Entitys
 
         [Column("update_time")]
         public DateTime UpdateTime { get; set; }
-    } 
-  
+    }
+
+    /// <summary>
+    /// s7读取类型
+    /// </summary>
+    public enum TagValueReadTypeEnum
+    {
+        BOOL,
+        SHORT,
+        String, 
+    }
 }

+ 2 - 2
IMCS_CCS/Entitys/TaskCallback.cs

@@ -58,10 +58,10 @@ namespace IMCS.CCS.Entitys
         public bool State { get; set; }
 
         [Column("create_time")]
-        public DateTime CreateTime { get; set; }
+        public DateTime CreateTime { get; set; } = DateTime.Now;
 
         [Column("update_time")]
-        public DateTime UpdateTime { get; set; }
+        public DateTime UpdateTime { get; set; } = DateTime.Now;
 
         [Column("description")]
         public string Description { get; set; }

+ 72 - 0
IMCS_CCS/Model/vo/ResponseFanucData.cs

@@ -0,0 +1,72 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace IMCS_CCS.Model.vo
+{
+    public class ResponseFanucData
+    {
+        public string MainProg { get; set; }
+
+        public string CurProg
+        { get; set; }
+        public string Status
+        { get; set; }
+        public string Mode
+        { get; set; }
+        public string EMG
+        { get; set; }
+        public string ActFeed
+        { get; set; }
+        public string ActSpindle
+        { get; set; }
+        public string ServoLoadX
+        { get; set; }
+        public string ServoLoadY
+        { get; set; }
+        public string ServoLoadZ
+        { get; set; }
+        public string PowerOnTime
+        { get; set; }
+
+        public string AccumulateCuttingTime
+        { get; set; }
+        public string CuttingTimePerCycle
+        { get; set; }
+        public string WorkTime
+        { get; set; }
+        public string Part_Count
+        { get; set; }
+        public string IsAlarm
+        { get; set; }
+        public List<AlmInfo> AlmMsg
+        { get; set; }
+        public string ToolNo
+        { get; set; }
+        public string ToolLife
+        { get; set; }
+    }
+
+    public class AlmInfo
+    {
+        public string no { get; set; }
+        public string msg { get; set; }
+
+    }
+
+    public class NcInfo
+    {
+        public string no { get; set; }
+        public string lentgh { get; set; }
+        public string comment { get; set; }
+
+    }
+
+    public enum FanucAddressEnum
+    {
+        MainProg,
+        Status,
+        PowerOnTime
+    }
+}

+ 44 - 29
IMCS_CCS/Service/Impl/HttpRequestService.cs

@@ -10,7 +10,9 @@ using System;
 using S7.Net;
 using IMCS_CCS.Utils;
 using Newtonsoft.Json;
-using IMCS_CCS.Utils.DeviceProtocol; 
+using IMCS_CCS.Utils.DeviceProtocol;
+using HslCommunication.Profinet.Siemens;
+using HslCommunication;
 
 namespace IMCS.CCS.Services
 {
@@ -1062,25 +1064,30 @@ namespace IMCS.CCS.Services
                 List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
                 CcsAction actionInfo = actions[0];
 
-                Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
-                if (s7.IsConnected != true)
+                SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
+                OperateResult ConnectionResult = s7.ConnectServer();
+                if (!ConnectionResult.IsSuccess)
                 {
-                    s7.Close();
+                    s7.ConnectClose();
                     Log.Instance.WriteLogAdd(ActionTypeEnum.StartCleanMachine + "启动故障===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
                     EnumHelper.GetDescription(ActionTypeEnum.StartCleanMachine));
                     responseData.result = "false";
                     return responseData;
                 }
 
-                string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
-                s7.Write(Address1, true);
+                //string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
+                s7.Write(actionInfo.Address, true);
+                //s7.Write(Address1, true);
                 Thread.Sleep(SLEEP_TIME);
-
-                string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
-                s7.Write(Address2, true);
+                s7.Write(actionInfo.Address, false);
                 Thread.Sleep(SLEEP_TIME);
-                s7.Write(Address2, false);
-                s7.Close();
+                //string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
+                //s7.Write(Address2, true);
+                s7.Write(actionInfo.Address2, true);
+                Thread.Sleep(SLEEP_TIME);
+                s7.Write(actionInfo.Address2, false);
+                //s7.Write(Address2, false); 
+                s7.ConnectClose();
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCleanMachine.ToString(),
@@ -1236,10 +1243,11 @@ namespace IMCS.CCS.Services
                 List<CcsAction> actions = _ccsActionService.GetList(actionQuery);
                 CcsAction actionInfo = actions[0];
 
-                Plc s7 = DevicePlcS7.S7(req.url, ProtocalTypeEnum.S7_1500.ToString());
-                if (s7.IsConnected != true)
+                SiemensS7Net s7 = DevicePlcS7.SiemensS7(req.url);
+                OperateResult ConnectionResult = s7.ConnectServer();
+                if (!ConnectionResult.IsSuccess)
                 {
-                    s7.Close();
+                    s7.ConnectClose();
                     Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标异常===>>" + "PLC连接不上" + JsonConvert.SerializeObject(req),
                     EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
                     responseData.result = "false";
@@ -1249,11 +1257,22 @@ namespace IMCS.CCS.Services
                 //条件判断 
                 if (!string.IsNullOrEmpty(actionInfo.CheckAddress))
                 {
-                    string CheckAddress = ToolUtils.AddressConvertDBW(actionInfo.CheckAddress);
-                    var operateResult = ((ushort)s7.Read(CheckAddress)).ConvertToShort();
-                    if (actionInfo.CheckType ? (operateResult.ToString() == actionInfo.CheckValue) : (operateResult.ToString() != actionInfo.CheckValue))
+                    var operateResult = s7.ReadInt16(actionInfo.CheckAddress);
+                    if (actionInfo.CheckType ? (operateResult.Content.ToString() == actionInfo.CheckValue) : (operateResult.Content.ToString() != actionInfo.CheckValue))
                     {
-                        s7.Close();
+                        s7.ConnectClose();
+                        Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "机器人报警===>>" + JsonConvert.SerializeObject(req),
+                        EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
+                        responseData.result = "false";
+                        return responseData;
+                    }
+                }
+                if (!string.IsNullOrEmpty(actionInfo.CheckAddress2))
+                {
+                    var operateResult = s7.ReadInt16(actionInfo.CheckAddress2);
+                    if (actionInfo.CheckType2 ? (operateResult.Content.ToString() == actionInfo.CheckValue2) : (operateResult.Content.ToString() != actionInfo.CheckValue2))
+                    {
+                        s7.ConnectClose();
                         Log.Instance.WriteLogAdd(ActionTypeEnum.StartCoordinateMeasuringMachine + "启动三坐标未就绪===>>" + JsonConvert.SerializeObject(req),
                         EnumHelper.GetDescription(ActionTypeEnum.StartCoordinateMeasuringMachine));
                         responseData.result = "false";
@@ -1262,24 +1281,19 @@ namespace IMCS.CCS.Services
                 }
 
                 string Address1 = ToolUtils.AddressConvertDBW(actionInfo.Address);
-                string[] sArray = Address1.Split('.');
-                s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]), ToolUtils.ReturnBtyesWtitString(req.data.workId, 40));
 
+                s7.Write(actionInfo.Address, ToolUtils.ReturnBtyesWtitString(req.data.workId, 40));
                 Thread.Sleep(SLEEP_TIME);
 
-                sArray = actionInfo.Address2.Split('.');
-                string Address2 = ToolUtils.AddressConvertDBW(actionInfo.Address2);
-                s7.WriteBytes(DataType.DataBlock, Convert.ToInt16(sArray[0].Substring(2)), Convert.ToInt16(sArray[1]), ToolUtils.ReturnBtyesWtitString(req.data.workType, 20));
-
+                s7.Write(actionInfo.Address2, ToolUtils.ReturnBtyesWtitString(req.data.workType, 20));
                 short n = 1;
-                sArray = actionInfo.Address3.Split('.');
-                string Address3 = ToolUtils.AddressConvertDBW(actionInfo.Address3);
-                s7.Write(Address3, n);
+
+                s7.Write(actionInfo.Address3, n);
                 Thread.Sleep(SLEEP_TIME);
 
                 n = 0;
-                s7.Write(Address3, n);
-                s7.Close();
+                s7.Write(actionInfo.Address3, n);
+                s7.ConnectClose();
 
                 //插入回调
                 TaskCallback taskCallbackData = new TaskCallback(req.url, ActionTypeEnum.StartCoordinateMeasuringMachine.ToString(),
@@ -1754,4 +1768,5 @@ namespace IMCS.CCS.Services
         }
 
     }
+ 
 }

+ 28 - 11
IMCS_CCS/Service/Impl/TaskJobService.cs

@@ -1,4 +1,6 @@
-using IMCS.CCS.Common.Redis;
+using HslCommunication;
+using HslCommunication.Profinet.Siemens;
+using IMCS.CCS.Common.Redis;
 using IMCS.CCS.DeviceProtocol;
 using IMCS.CCS.Entitys;
 using IMCS.CCS.Model.vo;
@@ -126,7 +128,7 @@ namespace IMCS.CCS.Service.Impl
                             for (int i = 0; i < tagValues.Count; i++)
                             {
                                 CcsTagValue tagValueData = (CcsTagValue)tagValues[i];
-                                if (!tagValueData.TagValue.Equals(values[i]))
+                                if (tagValueData.TagValue != values[i])
                                 {
                                     tagValueData.TagValue = values[i];
                                     tagValueData.UpdateTime = DateTime.Now;
@@ -197,13 +199,14 @@ namespace IMCS.CCS.Service.Impl
                         List<CcsTagValue> changTagValues = new List<CcsTagValue>();
 
 
-                        Plc s7 = DevicePlcS7.S7(device.ServerUrl, ProtocalTypeEnum.S7_1500.ToString());
-
-                        if (s7.IsConnected != true)
+                        //Plc s7 = DevicePlcS7.S7(device.ServerUrl, ProtocalTypeEnum.S7_1500.ToString());
+                        SiemensS7Net s7 = DevicePlcS7.SiemensS7(device.ServerUrl);
+                        OperateResult ConnectionResult = s7.ConnectServer();
+                        if (!ConnectionResult.IsSuccess)
                         {
                             device.State = false;
                             await _deviceService.UpdateDevice(device);
-                            s7.Close();
+                            s7.ConnectClose();
                             Log.Instance.WriteLogAdd("S7采集异常,plc连不上", LOG_TITLE_S7);
                             return "采集失败,plc连不上";
                         }
@@ -211,9 +214,23 @@ namespace IMCS.CCS.Service.Impl
                         {
                             foreach (CcsTagValue tagValueData in tagValues)
                             {
-                                string Address = ToolUtils.AddressConvertDBW(tagValueData.Address);
-                                var operateResult = ((ushort)s7.Read(Address)).ConvertToShort();
-                                if (!tagValueData.TagValue.Equals(operateResult))
+                                //string Address = ToolUtils.AddressConvertDBW(tagValueData.Address);
+                                //var operateResult = ((ushort)s7.Read(Address)).ConvertToShort();
+                                string operateResult = "";
+                                if (tagValueData.Type.Equals(TagValueReadTypeEnum.BOOL.ToString()))
+                                {
+                                    operateResult = s7.ReadBool(tagValueData.Address).Content.ToString();
+                                }
+                                else if (tagValueData.Type.Equals(TagValueReadTypeEnum.SHORT.ToString()))
+                                {
+                                    operateResult = s7.ReadInt16(tagValueData.Address).Content.ToString();
+                                }
+                                else if (tagValueData.Type.Equals(TagValueReadTypeEnum.String.ToString()))
+                                {
+                                    operateResult = s7.ReadString(tagValueData.Address).Content.ToString();
+                                }
+
+                                if (!string.IsNullOrEmpty(operateResult) && tagValueData.TagValue != operateResult)
                                 {
                                     tagValueData.TagValue = operateResult.ToString();
                                     tagValueData.UpdateTime = DateTime.Now;
@@ -224,7 +241,7 @@ namespace IMCS.CCS.Service.Impl
                                 }
                                 Thread.Sleep(50);
                             }
-                            s7.Close();
+                            s7.ConnectClose();
                             //值有变化,重新设置一次redis
                             if (changTagValues != null && changTagValues.Count > 0)
                             {
@@ -298,7 +315,7 @@ namespace IMCS.CCS.Service.Impl
                             foreach (CcsTagValue tagValueData in tagValues)
                             {
                                 string operateResult = GetFanucValue(fanucData, tagValueData.TagValue);
-                                if (!tagValueData.TagValue.Equals(operateResult))
+                                if (tagValueData.TagValue != operateResult)
                                 {
                                     tagValueData.TagValue = operateResult.ToString();
                                     tagValueData.UpdateTime = DateTime.Now;

+ 15 - 3
IMCS_CCS/Utils/DeviceProtocol/DevicePlcS7.cs

@@ -1,4 +1,6 @@
-using S7.Net; 
+using HslCommunication.Profinet.Siemens;
+using S7.Net;
+using System;
 
 namespace IMCS.CCS.DeviceProtocol
 {
@@ -22,11 +24,21 @@ namespace IMCS.CCS.DeviceProtocol
             {
                 s7Plc = new Plc(CpuType.S7300, ip, 0, 1);
             }
-             
+            s7Plc.Open();
             return s7Plc;
 
         }
-         
+
+        public static SiemensS7Net SiemensS7(string ip, int port = 102)
+        {
+
+            SiemensS7Net SiemensS7Net = new SiemensS7Net(SiemensPLCS.S1200, ip) { ConnectTimeOut = 5000 };
+            SiemensS7Net.ConnectionId = Guid.NewGuid().ToString();
+
+            return SiemensS7Net;
+
+        }
+
     }
 
 }