林豪 左 2 years ago
parent
commit
e884f630a0
3 changed files with 116 additions and 3 deletions
  1. 17 0
      WCS.Data/Utils/Log4netHelper.cs
  2. 67 3
      WCS.Service/Quartz/WCSRunJobs.cs
  3. 32 0
      WCS.Service/log4net.config

+ 17 - 0
WCS.Data/Utils/Log4netHelper.cs

@@ -41,6 +41,23 @@ namespace WCS.Data
                 return _logger_productLog;
             }
         }
+
+        /// <summary>
+        /// 调试日志 
+        /// </summary>
+        public static ILog Logger_PLCDATALog
+        {
+            get
+            {
+                if (_logger_productLog == null)
+                {
+                    _logger_productLog = LogManager.GetLogger(Repository.Name, "App.PLCDATA");
+                }
+
+                return _logger_productLog;
+            }
+        }
+
         private static ILog _logger_Error;
         /// <summary>
         /// WMS接口日志

+ 67 - 3
WCS.Service/Quartz/WCSRunJobs.cs

@@ -1,10 +1,10 @@
 using Quartz;
-using System;
 using System.Collections.Generic;
-using System.Linq;
+using System.Threading;
 using System.Threading.Tasks;
 using WCS.Data;
 using WCS.PLC;
+using WCS.PLC.Model.Equipment;
 using WCS.Workflow;
 
 namespace WCS.Service.Quartz
@@ -30,14 +30,78 @@ namespace WCS.Service.Quartz
             ThreadHelper.TaskThread(BaseWorkflow.PutDevInfoToWMS);
             //更新PLC最后完成时间和各个设备任务数量
             ThreadHelper.TaskThread(BaseWorkflow.UpdateUnexecuteTask);
-            
+
             //执行WCS逻辑
             WCS_PLCList.ExecuteWcs_Workflow();
             //执行Agv逻辑
             ThreadHelper.TaskThread(AgvWorkflow.AgvRun);
 
             ThreadHelper.TaskThread(AgvWorkflow.AgvUpdateStatus);
+
+            ThreadHelper.TaskThread(WriteDataToLog);
             return Task.FromResult(string.Empty);
         }
+
+        private static int _writeDataToLog = 0;
+
+        public void WriteDataToLog()
+        {
+            if (Interlocked.Exchange(ref _writeDataToLog, 1) == 0)
+            {
+                Thread.Sleep(1000);
+                var list = new List<EQUIPMENTINFO>();
+                foreach (var item in Current.PlcSet)
+                {
+                    foreach (var equipmentInfo in item.WCS_EquipmentInfoSet)
+                    {
+                        list.Add(new EQUIPMENTINFO()
+                        {
+                            EQU_NO = equipmentInfo.Equ_No,
+                            EQU_PLCNAME = equipmentInfo.Equ_PlcName,
+                            //EQU_BARCODE = equipmentInfo.EQU_BARCODE,
+                            EQU_ALARAMSMSG = equipmentInfo.Equ_AlaramsMsg,
+                            EQU_NOTES = equipmentInfo.Equ_Notes,
+                            EQU_CONVSIGNALJSON =
+                            (equipmentInfo.Equ_Type == EquipmentType.conveyor.ToString()) ? equipmentInfo.EquSignal_Conv.ToJson() :
+                            (equipmentInfo.Equ_Type == EquipmentType.srm.ToString()) ? equipmentInfo.EquSignal_Srm.ToJson() : equipmentInfo.EquSignal_Rgv.ToJson(),
+
+                            EQU_BARCODE = equipmentInfo.EquSignal_Conv.BarCodeStr
+                        });
+                    }
+                }
+                Log4netHelper.Logger_PLCDATALog.InfoFormat(list.ToJson());
+                Interlocked.Exchange(ref _writeDataToLog, 0);
+            }
+        }
+    }
+
+    public class EQUIPMENTINFO
+    {
+        /// <summary>
+        /// 设备名称
+        /// </summary>
+        public string EQU_NO { get; set; }
+
+        /// <summary>
+        /// PLC名称
+        /// </summary>
+        public string EQU_PLCNAME { get; set; }
+
+        /// <summary>
+        /// 读取到的条码
+        /// </summary>
+        public string EQU_BARCODE { get; set; }
+
+        /// <summary>
+        /// 报警信息
+        /// </summary>
+        public string EQU_ALARAMSMSG { get; set; }
+
+        public string EQU_NOTES { get; set; }
+
+        /// <summary>
+        /// 设备信号集合
+        /// </summary>
+        public string EQU_CONVSIGNALJSON { get; set; }
     }
 }

+ 32 - 0
WCS.Service/log4net.config

@@ -47,6 +47,38 @@
 				<param name="LevelMax" value="INFO" />
 			</filter>
 		</appender>
+
+    <appender name="ProductLogFileAppender" type="log4net.Appender.RollingFileAppender">
+      <param name="Encoding" vaule="UTF-8"/>
+      <!--日志路径-->
+      <param name= "File" value= "bin/Debug/netcoreapp3.1/App_Log/PLCDATA/"/>
+      <!--是否是向文件中追加日志-->
+      <param name= "AppendToFile" value= "true"/>
+      <!--每天记录的日志文件个数,与maximumFileSize配合使用-->
+      <!--<maxSizeRollBackups value="10" />-->
+      <!--每个日志文件的最大大小-->
+      <!--可用的单位:KB|MB|GB-->
+      <!--<maximumFileSize value="2MB"/>-->
+      <!--每天记录的日志文件个数,与maximumFileSize配合使用-->
+      <param name= "MaxSizeRollBackups" value= "20"/>
+      <param name="MaximumFileSize" value="50MB" />
+      <!--日志文件名是否是固定不变的-->
+      <param name= "StaticLogFileName" value= "false"/>
+      <!--日志文件名格式为:2008-08-31.log-->
+      <param name= "DatePattern" value= "yyyy-MM-dd&quot;.read.log&quot;"/>
+      <!--日志根据日期滚动-->
+      <!--Composite为Size和Date的组合-->
+      <param name= "RollingStyle" value= "Composite"/>
+      <layout type="log4net.Layout.PatternLayout">
+        <!--<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n %loggername" />-->
+        <!--<conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />-->
+        <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level - 描述:%message%newline" />
+      </layout>
+      <filter type="log4net.Filter.LevelRangeFilter">
+        <param name="LevelMin" value="DEBUG" />
+        <param name="LevelMax" value="INFO" />
+      </filter>
+    </appender>
 		
 		<appender name="InfoLogFileAppender" type="log4net.Appender.RollingFileAppender">
 			<param name="Encoding" vaule="UTF-8"/>