林豪 左 3 years ago
parent
commit
ffa404fa16

+ 183 - 0
Projects/永冠OPP/WCS.Service/Log/InfoLog.cs

@@ -0,0 +1,183 @@
+using Logs;
+using System.Collections.Generic;
+using WCS.Entity;
+
+namespace WCS.Service.Log
+{
+    /// <summary>
+    /// 信息日志
+    /// </summary>
+    public class InfoLog : ILogType
+    {
+        /// <summary>
+        /// 日志名称
+        /// </summary>
+        public string LogName => "Info";
+
+        /// <summary>
+        /// 信息日志
+        /// </summary>
+        public static ILogType Log { get; private set; }
+
+        /// <summary>
+        /// 日志子项集合
+        /// </summary>
+        public Dictionary<string, string> SubLogNames { get; set; }
+
+        static InfoLog()
+        {
+            if (Log == null)
+                Log = new InfoLog();
+        }
+
+        public InfoLog()
+        {
+            SubLogNames = new Dictionary<string, string>
+            {
+                ["INFO"] = "Info"
+            };
+            LogHelper.Init(this);
+        }
+
+        /// <summary>
+        /// 系统执行信息
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_INIT(string msg)
+        {
+            Log.Info(msg, "INFO_INIT");
+        }
+
+        /// <summary>
+        /// 系统执行信息
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_SRMALARM(string msg)
+        {
+            Log.Info(msg, "INFO_SRMALARM");
+        }
+
+        /// <summary>
+        /// 系统执行信息  基本检查条件不满足时记录
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_INFO(string msg)
+        {
+            Log.Info(msg, "INFO_INFO");
+        }
+
+        /// <summary>
+        /// 系统执行错误
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_ERROR(string msg)
+        {
+            Log.Error(msg, "INFO_ERROR");
+            //Console.WriteLine(msg);
+        }
+
+        /// <summary>
+        /// 系统执行警告 所有一直错误都归类为警告
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_WARN(string msg)
+        {
+            Log.Warn(msg, "INFO_WARN");
+            //Console.WriteLine(msg);
+        }
+
+        /// <summary>
+        /// 系统执行警告 所有一直错误都归类为警告,存入数据库
+        /// </summary>
+        /// <param name="msg">错误内容</param>
+        /// <param name="code">设备</param>
+        /// <param name="type">错误类型</param>
+        public static void INFO_WarnDb(string msg, string code, WCS_EXCEPTIONTYPE type)
+        {
+            Log.Warn(msg, "INFO_WARN");
+            WCS.Service.Helpers.LogHelper.AddWCS_EXCEPTION(msg, code, type.ToString());
+            WMS.TaskException(code, msg);
+        }
+
+        /// <summary>
+        /// 堆垛机写入记录
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_SRMINFO(string msg)
+        {
+            Log.Info(msg, "INFO_SRMINFO");
+        }
+
+        /// <summary>
+        /// 任务状态更新记录
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_SYTASKSTATUS(string msg)
+        {
+            Log.Info(msg, "INFO_SYTASKSTATUS");
+        }
+
+        /// <summary>
+        /// WMS请求记录
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_WMSREQUEST(string msg)
+        {
+            Log.Info(msg, "INFO_WMSREQUEST");
+        }
+
+        /// <summary>
+        /// PLC读取记录
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_PLCREADLOG(string msg)
+        {
+            Log.Info(msg, "INFO_PLCREADLOG");
+        }
+
+        /// <summary>
+        /// 计时器
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_TIMING(string msg)
+        {
+            Log.Info(msg, "INFO_TIMING");
+        }
+
+        /// <summary>
+        /// WCS异常上抛记录
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_I_WCS_GetExcTask(string msg)
+        {
+            Log.Info(msg, "INFO_UPEX");
+        }
+
+        /// <summary>
+        /// 任务创建记录
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_CREATETASKIN(string msg)
+        {
+            Log.Info(msg, "INFO_CREATETASKIN");
+        }
+
+        /// <summary>
+        /// RGV的写入记录
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_RGVINFO(string msg)
+        {
+            Log.Info(msg, "INFO_RGVINFO");
+        }
+
+        /// <summary>
+        /// AGV相关日志
+        /// </summary>
+        /// <param name="msg"></param>
+        public static void INFO_AGV(string msg)
+        {
+            Log.Info(msg, "INFO_AGV");
+        }
+    }
+}

+ 13 - 4
Projects/永冠OPP/WCS.Service/Program.cs

@@ -11,10 +11,14 @@ namespace WCS.Service
 {
     public class Program
     {
+        /// <summary>
+        /// 程序入口
+        /// </summary>
+        /// <param name="args"></param>
         public static void Main(string[] args)
         {
             bool create = false;
-            using (Mutex mt = new Mutex(true, "WCS", out create))
+            using (Mutex mt = new Mutex(true, "WCS", out create)) //互斥锁
             {
                 if (create)
                 {
@@ -29,6 +33,11 @@ namespace WCS.Service
             }
         }
 
+        /// <summary>
+        /// 创建一个主机构建器
+        /// </summary>
+        /// <param name="args"></param>
+        /// <returns></returns>
         public static IHostBuilder CreateHostBuilder(string[] args)
         {
             //是否是win平台
@@ -38,10 +47,10 @@ namespace WCS.Service
             {
                 return Host.CreateDefaultBuilder(args)
                     .UseWindowsService()//win
-                    .ConfigureWebHostDefaults(web =>
+                    .ConfigureWebHostDefaults(web => //网络访问配置
                     {
-                        web.UseUrls("http://*:8080");
-                        web.UseStartup<Startup>();
+                        web.UseUrls("http://*:8080"); //设备访问端口
+                        web.UseStartup<Startup>(); //调用启动服务
                     })
                     .ConfigureServices((hostContext, services) =>
                     {

+ 1 - 0
Projects/永冠OPP/WCS.Service/Worker.cs

@@ -41,6 +41,7 @@ namespace WCS.Service
 
             DB.SetDefaultDbContextType<WCSDB>();
 
+            //ÈÕÖ¾·¢²¼Ê¼þ
             Configs.PublishEvent += () =>
             {
                 WMS.UploadDevInfo();

+ 0 - 0
OPP WCS.sln → WCS Pedestal.sln


+ 76 - 10
WCS.Core/LogicHandler.cs

@@ -10,16 +10,39 @@ using WCS.Entity;
 
 namespace WCS.Core
 {
+    /// <summary>
+    /// 逻辑处理器
+    /// </summary>
     public abstract class LogicHandler
     {
+        /// <summary>
+        /// 停止
+        /// </summary>
         protected bool Stoped = false;
+
+        /// <summary>
+        /// 描述
+        /// </summary>
         protected string Description { get; private set; }
 
+        /// <summary>
+        /// 所有对象
+        /// </summary>
         public static List<object> AllObjects = new List<object>();
 
+        /// <summary>
+        /// 所有处理器
+        /// </summary>
         private static List<LogicHandler> Handlers = new List<LogicHandler>();
+
+        /// <summary>
+        /// 日志委托
+        /// </summary>
         public static Action<string, string, string> DbLog;
 
+        /// <summary>
+        /// 逻辑处理器
+        /// </summary>
         public LogicHandler()
         {
             var attr = this.GetType().GetCustomAttributes(false).OfType<DescriptionAttribute>().FirstOrDefault();
@@ -29,8 +52,14 @@ namespace WCS.Core
                 Description = this.GetType().Name;
         }
 
+        /// <summary>
+        /// 开始
+        /// </summary>
         public abstract void Start();
 
+        /// <summary>
+        /// 是否并行
+        /// </summary>
         public virtual bool ParallelRun
         {
             get
@@ -45,16 +74,26 @@ namespace WCS.Core
         /// <param name="milliseconds">离上次触发的间隔时间(毫秒)</param>
         public abstract void Update(double milliseconds);
 
+        /// <summary>
+        /// 停止
+        /// </summary>
         public void Stop()
         {
             Stoped = true;
         }
 
+        /// <summary>
+        /// 添加处理器
+        /// </summary>
+        /// <param name="handler">处理器</param>
         public static void AddManager(LogicHandler handler)
         {
             Handlers.Add(handler);
         }
 
+        /// <summary>
+        /// 启动所有的处理器
+        /// </summary>
         public static void StartAll()
         {
             foreach (var h in Handlers)
@@ -62,15 +101,25 @@ namespace WCS.Core
                 h.Start();
             }
             var th = new Thread(new ThreadStart(Loop));
-            th.IsBackground = true;
+            th.IsBackground = true; //前台线程即主线程关闭,立即结束该线程
             th.Start();
         }
 
+        /// <summary>
+        /// 最后一次执行结束的时间
+        /// </summary>
         private static DateTime last = DateTime.Now;
-        private static DateTime last2 = DateTime.Now;
+
+        /// <summary>
+        ///逻辑耗时
+        /// </summary>
         private static int logicTimes;
+
         public static DateTime Frame { get; private set; }
 
+        /// <summary>
+        /// 主循环体,用于PLC数据的读取与逻辑执行
+        /// </summary>
         private static void Loop()
         {
             var arr = AllObjects.OfType<WCS_DEVICE>().Where(v => v.ENABLED).SelectMany(v => v.PROTOCOLS)
@@ -82,7 +131,7 @@ namespace WCS.Core
             {
                 var dd = DateTime.Now;
                 Frame = DateTime.Now;
-                Parallel.ForEach<WCS_DATABLOCK>(arr, db =>
+                Parallel.ForEach(arr, db =>
                 {
                     try
                     {
@@ -102,6 +151,7 @@ namespace WCS.Core
                     Thread.Sleep(s);
                 total = (DateTime.Now - last).TotalMilliseconds;
                 Console.ForegroundColor = ConsoleColor.Blue;
+                //此处打印的logicTimes实际是上一个周期的业务处理时长
                 Console.WriteLine("------刷新DB块数据耗时:" + ((int)dbTimes).ToString().PadRight(4, ' ') + ";业务逻辑耗时:" + ((int)logicTimes).ToString().PadRight(4, ' ') + ";周期总耗时" + ((int)total).ToString().PadRight(4, ' ') + "");
                 Console.ResetColor();
                 last = DateTime.Now;
@@ -125,6 +175,9 @@ namespace WCS.Core
             }
         }
 
+        /// <summary>
+        /// 停止所有的处理器
+        /// </summary>
         public static void StopAll()
         {
             foreach (var h in Handlers)
@@ -138,12 +191,20 @@ namespace WCS.Core
         }
     }
 
+    /// <summary>
+    /// 逻辑处理器 泛型
+    /// </summary>
+    /// <typeparam name="T"></typeparam>
     public abstract class LogicHandler<T> : LogicHandler where T : EntityEx<WCS_DEVICE>
     {
-        private string logPath = "";
-
+        /// <summary>
+        /// 业务类集合
+        /// </summary>
         protected List<WorkInfo<T>> Works = new List<WorkInfo<T>>();
 
+        /// <summary>
+        /// TODO:?
+        /// </summary>
         private IEnumerable<T> _Objects = null;
 
         protected IEnumerable<T> Objects
@@ -167,7 +228,6 @@ namespace WCS.Core
 
         public LogicHandler()
         {
-            logPath = @"D:\WCSLog\Log\" + this.Description + @"\";
         }
 
         public void AddWork(Func<T, bool> condition, Action<T> work, bool parallel = false)
@@ -300,15 +360,18 @@ namespace WCS.Core
         protected abstract void Execute(T dev);
     }
 
+    /// <summary>
+    /// 工作处理器
+    /// </summary>
     public abstract class WorkHandler : LogicHandler
     {
-        private string logPath = "";
-
+        /// <summary>
+        /// 所有被申明的工作处理器
+        /// </summary>
         protected List<WorkInfo> Works = new List<WorkInfo>();
 
         public WorkHandler()
         {
-            logPath = @"Log\" + this.Description + @"\";
             var arr = Assembly.GetEntryAssembly().GetTypes().Where(v => v.IsSubclassOf(typeof(Work))).Where(v =>
             {
                 var attr = v.GetCustomAttribute<WorkTitleAttribute>();
@@ -326,9 +389,12 @@ namespace WCS.Core
 
         public override sealed void Start()
         {
-            //throw new NotImplementedException();
         }
 
+        /// <summary>
+        /// 执行处理中心
+        /// </summary>
+        /// <param name="milliseconds"></param>
         public override void Update(double milliseconds)
         {
             if (ParallelRun)