Ver Fonte

新增Core模块,用于核心公共功能例如Ioc、异常处理等;优化了IMotionDriver并重构了IMotionDriverParser

Yuli há 1 semana atrás
pai
commit
f91e226557
36 ficheiros alterados com 158 adições e 178 exclusões
  1. 1 5
      SKMC.API/Client/Access/ClientAccessConverter.cs
  2. 1 1
      SKMC.API/Client/ClientCacher.cs
  3. 1 6
      SKMC.API/Client/Config/ClientException.cs
  4. 3 3
      SKMC.API/Client/UI/ClientDialogs.cs
  5. 1 0
      SKMC.API/Client/Views/BaseEditorModel.cs
  6. 1 1
      SKMC.API/Client/Views/MenuViewModel.cs
  7. 1 1
      SKMC.API/Common/Tasks/Tasks.cs
  8. 1 1
      SKMC.API/Core/Exceptions/ExceptionBase.cs
  9. 3 4
      SKMC.API/Core/Exceptions/ExceptionCacher.cs
  10. 1 1
      SKMC.API/Core/Exceptions/ExceptionConfig.cs
  11. 1 1
      SKMC.API/Core/Exceptions/ExceptionConfigStore.cs
  12. 1 1
      SKMC.API/Core/Exceptions/ExceptionShow.cs
  13. 3 3
      SKMC.API/Core/Exceptions/ExceptionWrapper.cs
  14. 1 1
      SKMC.API/Core/ObjectFactory.cs
  15. 1 3
      SKMC.API/Machine/MachineCacher.cs
  16. 1 1
      SKMC.API/Motion/Config/MotionException.cs
  17. 33 66
      SKMC.API/Motion/Control/IMotionControl.cs
  18. 0 4
      SKMC.API/Motion/Driver/IMotionDriver.cs
  19. 2 2
      SKMC.API/Motion/Driver/IMotionDriverManager.cs
  20. 12 20
      SKMC.API/Motion/Driver/IMotionDriverParser.cs
  21. 1 1
      SKMC.API/Motion/Model/AxisCnd.cs
  22. 1 1
      SKMC.API/Motion/Model/DioCnd.cs
  23. 8 8
      SKMC.API/Motion/Model/MotionAxis.cs
  24. 15 0
      SKMC.API/Motion/MotionCacher.cs
  25. 1 1
      SKMC.API/Process/Config/ProcessException.cs
  26. 1 1
      SKMC.API/Process/Model/ProcessAction.cs
  27. 23 1
      SKMC.API/Process/Model/ProcessStation.cs
  28. 8 8
      SKMC.API/Product/Material/Tray/TraySlot.cs
  29. 1 1
      SKMC.API/Recipe/Config/RecipeParamBase.cs
  30. 3 0
      SKMC.API/Recipe/Model/RecipePoint.cs
  31. 13 11
      SKMC.API/Recipe/Model/RecipePointGroup.cs
  32. 9 9
      SKMC.API/SKMC.API.csproj
  33. 1 1
      SKMC.API/Vision/IResultParser.cs
  34. 1 1
      SKMC.API/Vision/SKV0/SKVisionClientBase.cs
  35. 1 2
      SKMC.API/Vision/SKV0/SKVisionProtocol.cs
  36. 2 7
      SKMC.API/Vision/VisionException.cs

+ 1 - 5
SKMC.API/Client/Access/ClientAccessConverter.cs

@@ -1,10 +1,6 @@
-using SKMC.Api.Common;
+using SKMC.Api.Core;
 using System;
-using System.Collections.Generic;
 using System.Globalization;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
 using System.Windows;
 using System.Windows.Data;
 

+ 1 - 1
SKMC.API/Client/ClientCacher.cs

@@ -5,7 +5,7 @@ using SKMC.Api.Client.Access;
 using SKMC.Api.Client.Model;
 using SKMC.Api.Client.UI;
 using SKMC.Api.Client.Views;
-using SKMC.Api.Common.Exceptions;
+using SKMC.Api.Core.Exceptions;
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;

+ 1 - 6
SKMC.API/Client/Config/ClientException.cs

@@ -1,9 +1,4 @@
-using SKMC.Api.Common.Exceptions;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using SKMC.Api.Core.Exceptions;
 
 namespace SKMC.Api.Client.Config
 {

+ 3 - 3
SKMC.API/Client/UI/ClientDialogs.cs

@@ -1,8 +1,8 @@
 using Prism.Services.Dialogs;
 using SKMC.Api.Client.Config;
 using SKMC.Api.Client.Model;
-using SKMC.Api.Common;
-using SKMC.Api.Common.Exceptions;
+using SKMC.Api.Core;
+using SKMC.Api.Core.Exceptions;
 using System;
 using System.Windows;
 
@@ -13,7 +13,7 @@ namespace SKMC.Api.Client.UI
     /// </summary>
     public class ClientDialogs
     {
-        private readonly static CommonCacher commonCacher = ObjectFactory.Resolve<CommonCacher>();
+        private readonly static ExceptionCacher commonCacher = ObjectFactory.Resolve<ExceptionCacher>();
         private readonly static ClientCacher clientCacher = ObjectFactory.Resolve<ClientCacher>();
         public const string DefaultViewName = ClientConstants.Views_CommonException;
         public const string NoticeViewName = ClientConstants.Views_CommonNotification;

+ 1 - 0
SKMC.API/Client/Views/BaseEditorModel.cs

@@ -3,6 +3,7 @@ using Prism.Mvvm;
 using Prism.Services.Dialogs;
 using SKMC.Api.Client.UI;
 using SKMC.Api.Common;
+using SKMC.Api.Core;
 using System;
 
 namespace SKMC.Api.Client.Views

+ 1 - 1
SKMC.API/Client/Views/MenuViewModel.cs

@@ -2,7 +2,7 @@
 using Prism.Mvvm;
 using Prism.Regions;
 using SKMC.Api.Client.Access;
-using SKMC.Api.Common;
+using SKMC.Api.Core;
 
 namespace SKMC.Api.Client.Views
 {

+ 1 - 1
SKMC.API/Common/Tasks/Tasks.cs

@@ -1,4 +1,4 @@
-using SKMC.Api.Common.Exceptions;
+using SKMC.Api.Core.Exceptions;
 using SKMC.Api.Common.Logger;
 using System;
 using System.Collections.Generic;

+ 1 - 1
SKMC.API/Common/Exceptions/ExceptionBase.cs → SKMC.API/Core/Exceptions/ExceptionBase.cs

@@ -1,6 +1,6 @@
 using System;
 
-namespace SKMC.Api.Common.Exceptions
+namespace SKMC.Api.Core.Exceptions
 {
     /// <summary>
     /// 基础异常模型

+ 3 - 4
SKMC.API/Common/CommonCacher.cs → SKMC.API/Core/Exceptions/ExceptionCacher.cs

@@ -1,9 +1,8 @@
-using SKMC.Api.Common.Exceptions;
-using System.Collections.Generic;
+using System.Collections.Generic;
 
-namespace SKMC.Api.Common
+namespace SKMC.Api.Core.Exceptions
 {
-    public abstract class CommonCacher
+    public abstract class ExceptionCacher
     {
         /// <summary>
         /// 异常配置集

+ 1 - 1
SKMC.API/Common/Exceptions/ExceptionConfig.cs → SKMC.API/Core/Exceptions/ExceptionConfig.cs

@@ -1,7 +1,7 @@
 using Prism.Mvvm;
 using System;
 
-namespace SKMC.Api.Common.Exceptions
+namespace SKMC.Api.Core.Exceptions
 {
     /// <summary>
     /// 异常处理配置模型

+ 1 - 1
SKMC.API/Common/Exceptions/ExceptionConfigStore.cs → SKMC.API/Core/Exceptions/ExceptionConfigStore.cs

@@ -4,7 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
-namespace SKMC.Api.Common.Exceptions
+namespace SKMC.Api.Core.Exceptions
 {
     public abstract class ExceptionConfigStore
     {

+ 1 - 1
SKMC.API/Common/Exceptions/ExceptionShow.cs → SKMC.API/Core/Exceptions/ExceptionShow.cs

@@ -1,6 +1,6 @@
 using System;
 
-namespace SKMC.Api.Common.Exceptions
+namespace SKMC.Api.Core.Exceptions
 {
     /// <summary>
     /// 异常的UI层展示模型

+ 3 - 3
SKMC.API/Common/Exceptions/ExceptionWrapper.cs → SKMC.API/Core/Exceptions/ExceptionWrapper.cs

@@ -4,7 +4,7 @@ using SKMC.Api.Common.Logger;
 using SKMC.Api.Machine.Control;
 using System;
 
-namespace SKMC.Api.Common.Exceptions
+namespace SKMC.Api.Core.Exceptions
 {
     /// <summary>
     /// 异常包装类
@@ -13,7 +13,7 @@ namespace SKMC.Api.Common.Exceptions
     {
         private static readonly ILogger log = LogFactory.Get();
         private static readonly IMachineBoardControl machineBoardControl = ObjectFactory.Resolve<IMachineBoardControl>();
-        private static readonly CommonCacher commonCacher = ObjectFactory.Resolve<CommonCacher>();
+        private static readonly ExceptionCacher exceptionCacher = ObjectFactory.Resolve<ExceptionCacher>();
 
         public static string Throws(Exception exception, string dialogViewName = ClientConstants.Views_CommonException)
         {
@@ -21,7 +21,7 @@ namespace SKMC.Api.Common.Exceptions
             if (typeof(ExceptionBase).IsAssignableFrom(exception.GetType()))
             {
                 ExceptionBase exceptionBase = exception as ExceptionBase;
-                ExceptionConfig exceptionConfig = commonCacher.GetExceptionConfig(exceptionBase);
+                ExceptionConfig exceptionConfig = exceptionCacher.GetExceptionConfig(exceptionBase);
                 exceptionBase.Level = exceptionConfig.Level;
                 // 停机异常
                 if (exceptionConfig.Level == 4)

+ 1 - 1
SKMC.API/Common/ObjectFactory.cs → SKMC.API/Core/ObjectFactory.cs

@@ -2,7 +2,7 @@
 using System;
 using System.Collections.Generic;
 
-namespace SKMC.Api.Common
+namespace SKMC.Api.Core
 {
     /// <summary>
     /// <p>接口工厂</p>

+ 1 - 3
SKMC.API/Machine/MachineCacher.cs

@@ -1,6 +1,4 @@
-using SKMC.Api.Common.Exceptions;
-using SKMC.Api.Machine.Config;
-using System.Collections.Generic;
+using SKMC.Api.Machine.Config;
 using System.Collections.ObjectModel;
 
 namespace SKMC.Api.Machine

+ 1 - 1
SKMC.API/Motion/Config/MotionException.cs

@@ -1,4 +1,4 @@
-using SKMC.Api.Common.Exceptions;
+using SKMC.Api.Core.Exceptions;
 
 namespace SKMC.Api.Motion.Config
 {

+ 33 - 66
SKMC.API/Motion/Control/IMotionControl.cs

@@ -18,6 +18,12 @@ namespace SKMC.Api.Motion.Control
         /// <param name="value"></param>
         void Set(string key, int value);
 
+        /// <summary>
+        /// 设置流程站点Id,绑定流程站点的中断点
+        /// </summary>
+        /// <param name="stationId"></param>
+        void SetStationId(int stationId);
+
         /// <summary>
         /// 获取参数
         /// </summary>
@@ -29,13 +35,13 @@ namespace SKMC.Api.Motion.Control
         /// 控制使能, true: motion控制有效,  false: motion控制无效
         /// 运动过程中如有电机抛出MotionException, 该控制使能自动失效
         /// </summary>
-        void Enable(bool enabled = true);
+        //void Enable(bool enabled = true);
 
         /// <summary>
         /// 控制使能是否有效
         /// </summary>
         /// <returns></returns>
-        bool IsEnable();
+        //bool IsEnable();
 
         /// <summary>
         /// 开启所有电机使能
@@ -92,10 +98,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="axisCode">电机码</param>
         /// <param name="waiting">是否等待(!注意:目前此参数设置为false无效)</param>
         /// <param name="safeCnd">安全条件, 回零中如果不满足该安全条件立即停止并报警</param>
-        /// <param name="onSuccess"></param>
         /// <param name="onTimeout"></param>
         /// <param name="timeout">超时时间(毫秒)</param>
-        void Home(string axisCode, bool waiting = true, Func<bool> safeCnd = null, Action onSuccess = null, Action onTimeout = null, int timeout = 60000);
+        void Home(string axisCode, bool waiting = true, Func<bool> safeCnd = null, Action onTimeout = null, int timeout = 60000);
 
         /// <summary>
         /// 指定轴快速回零, 该轴必须是闭环电机, 如果是开环电机则降级为普通的HomeAxis回零
@@ -107,11 +112,10 @@ namespace SKMC.Api.Motion.Control
         /// <param name="stateCheck">状态判断, 这里指Ecat总线连接状态以及上一次回零后Ecat总线是否正常</param>
         /// <param name="waiting">是否等待(!注意:目前此参数设置为false无效)</param>
         /// <param name="safeCnd">安全条件, 回零中如果不满足该安全条件立即停止并报警</param>
-        /// <param name="onSuccess"></param>
         /// <param name="onTimeout"></param>
         /// <param name="timeout">超时时间(毫秒)</param>
         void HomeFast(string axisCode, string speedCode, bool stateCheck, bool waiting = true,
-            Func<bool> safeCnd = null, Action onSuccess = null, Action onTimeout = null, int timeout = 60000);
+            Func<bool> safeCnd = null, Action onTimeout = null, int timeout = 60000);
 
         /// <summary>
         /// 指定轴反向回零.
@@ -122,11 +126,10 @@ namespace SKMC.Api.Motion.Control
         /// <param name="maxPos">限位位置相对原点的位置, 单位mm, 推荐在限位位置设置点位并从点位获取</param>
         /// <param name="waiting">是否等待</param>
         /// <param name="safeCnd">安全条件, 回零中如果不满足该安全条件立即停止并报警</param>
-        /// <param name="onSuccess"></param>
         /// <param name="onTimeout"></param>
         /// <param name="timeout">超时时间(毫秒)</param>
         void HomeReverse(string axisCode, short homeMode, double maxPos, bool waiting = true,
-            Func<bool> safeCnd = null, Action onSuccess = null, Action onTimeout = null, int timeout = 60000);
+            Func<bool> safeCnd = null, Action onTimeout = null, int timeout = 60000);
 
         /// <summary>
         /// 判断绑定某个点位的电机(一个或多个)是否在该点位附近。需同时满足negativeOffset与PositiveOffset的位置限定后返回true.
@@ -149,10 +152,8 @@ namespace SKMC.Api.Motion.Control
         /// <param name="speedRound">电机每秒旋转圈数</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void MoveRound(string pointCode, double speedRound, bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void MoveRound(string pointCode, double speedRound, bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的(多个)电机以指定速度运动到点位码
@@ -161,10 +162,8 @@ namespace SKMC.Api.Motion.Control
         /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void MovePoint(string pointCode, string speedCode = null, bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void MovePoint(string pointCode, string speedCode = null, bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的(多个)电机以指定速度运动到点位码
@@ -173,10 +172,8 @@ namespace SKMC.Api.Motion.Control
         /// <param name="recipeSpeed">速度对象, null表示使用该点配置的默认速度</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void MovePoint(RecipePoint recipePoint, RecipeSpeed recipeSpeed = null, bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void MovePoint(RecipePoint recipePoint, RecipeSpeed recipeSpeed = null, bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的(多个)电机以指定速度运动到点位码
@@ -185,10 +182,8 @@ namespace SKMC.Api.Motion.Control
         /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void MovePoint(RecipePoint recipePoint, string speedCode = null, bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void MovePoint(RecipePoint recipePoint, string speedCode = null, bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的(多个)电机以指定速度运动到点位码并能叠加指定偏移量
@@ -198,10 +193,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void MovePointFix(string pointCode, double[] posOffsets, string speedCode = null, bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void MovePointFix(string pointCode, double[] posOffsets, string speedCode = null,
+            bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的(多个)电机以指定速度运动到点位码,并能叠加指定偏移量
@@ -211,10 +205,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void MovePointFix(RecipePoint recipePoint, double[] posOffsets, string speedCode = null, bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void MovePointFix(RecipePoint recipePoint, double[] posOffsets, string speedCode = null,
+            bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的(多个)电机以指定速度运动到点位码,并能叠加指定偏移量
@@ -224,10 +217,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="recipeSpeed">速度对象, null表示使用该点配置的默认速度</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void MovePointFix(RecipePoint recipePoint, double[] posOffsets, RecipeSpeed recipeSpeed = null, bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void MovePointFix(RecipePoint recipePoint, double[] posOffsets, RecipeSpeed recipeSpeed = null,
+            bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的指定单个电机以指定速度运动到点位码
@@ -237,11 +229,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
         void MovePointOne(string pointCode, string axisCode, string speedCode = null,
-            bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+            bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的指定单个电机以指定速度运动到点位码
@@ -251,11 +241,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
         void MovePointOne(RecipePoint recipePoint, string axisCode, string speedCode = null,
-            bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+            bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的指定单个电机以指定速度运动到点位码
@@ -265,11 +253,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="recipeSpeed">速度对象, null表示使用该点配置的默认速度</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
         void MovePointOne(RecipePoint recipePoint, string axisCode, RecipeSpeed recipeSpeed = null,
-            bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+            bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的指定单个电机以指定速度运动到点位码,并能叠加指定偏移量
@@ -280,11 +266,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
         void MovePointOneFix(string pointCode, double fixset, string axisCode, string speedCode = null,
-            bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+            bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的指定单个电机以指定速度运动到点位码,并能叠加指定偏移量
@@ -295,11 +279,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="recipeSpeed">速度对象, null表示使用该点配置的默认速度</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
         void MovePointOneFix(RecipePoint recipePoint, double fixset, string axisCode, RecipeSpeed recipeSpeed = null,
-            bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+            bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 让绑定点位码的指定单个电机以指定速度运动到点位码,并能叠加指定偏移量
@@ -310,11 +292,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="speedCode">速度码, null表示使用该点配置的默认速度码</param>
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
         void MovePointOneFix(RecipePoint recipePoint, double fixset, string axisCode, string speedCode = null,
-            bool waiting = true, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+            bool waiting = true, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 聚合多个点位码并同时运动
@@ -323,11 +303,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
         /// <param name="sync">是否同步到达,false: 使用recipeSpeed的速度,true:以recipeSpeed为基准,调整各点位速度</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
         void MovePoints(List<RecipePoint> recipePoints, RecipeSpeed recipeSpeed,
-            bool waiting = true, double inRange = -1, bool sync = false,
-            Action onSuccess = null, Action onTimeout = null);
+            bool waiting = true, double inRange = -1, bool sync = false, Action onTimeout = null);
 
         /// <summary>
         /// 聚合多个点位码并同时运动
@@ -337,11 +315,9 @@ namespace SKMC.Api.Motion.Control
         /// <param name="waiting">是否等待到位, 默认为true</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
         /// <param name="sync">是否同步到达,false: 使用各自的点位中的速度,true:以speedCode为基准,调整各点位速度</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
         void MovePoints(string[] pointCodes, string speedCode = null,
-            bool waiting = true, double inRange = -1, bool sync = false,
-            Action onSuccess = null, Action onTimeout = null);
+            bool waiting = true, double inRange = -1, bool sync = false, Action onTimeout = null);
 
         /// <summary>
         /// 等待电机运动到位
@@ -349,10 +325,8 @@ namespace SKMC.Api.Motion.Control
         /// <param name="axisCode">电机码</param>
         /// <param name="timeout">超时时间</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void WaitAxis(string axisCode, int timeout = 10000, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void WaitAxis(string axisCode, int timeout = 10000, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 等待电机运动到位
@@ -360,10 +334,8 @@ namespace SKMC.Api.Motion.Control
         /// <param name="motionAxis">电机对象</param>
         /// <param name="timeout">超时时间</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void WaitAxis(MotionAxis motionAxis, int timeout = 10000, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void WaitAxis(MotionAxis motionAxis, int timeout = 10000, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 等待点位上所有电机到位
@@ -371,10 +343,8 @@ namespace SKMC.Api.Motion.Control
         /// <param name="pointCode">点位码</param>
         /// <param name="timeout">超时时间</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void WaitPoint(string pointCode, int timeout = 10000, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void WaitPoint(string pointCode, int timeout = 10000, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 等待点位上所有电机到位
@@ -382,11 +352,8 @@ namespace SKMC.Api.Motion.Control
         /// <param name="recipePoint">点位对象</param>
         /// <param name="timeout">超时时间</param>
         /// <param name="inRange">整定范围, 单位毫米或者步距</param>
-        /// <param name="safeCnd">安全条件, 运动中如果不满足该安全条件立即停止并报警</param>
-        /// <param name="onSuccess">运动完成后的回调动作</param>
         /// <param name="onTimeout">超时未完成的回调动作</param>
-        void WaitPoint(RecipePoint recipePoint, int timeout = 10000, double inRange = -1,
-            Action onSuccess = null, Action onTimeout = null);
+        void WaitPoint(RecipePoint recipePoint, int timeout = 10000, double inRange = -1, Action onTimeout = null);
 
         /// <summary>
         /// 等待电机组所有电机到位

+ 0 - 4
SKMC.API/Motion/Driver/IMotionDriver.cs

@@ -8,10 +8,6 @@ namespace SKMC.Api.Motion.Driver
     /// </summary>
     public interface IMotionDriver
     {
-        /// <summary>
-        /// 运动控制数据解析器接口
-        /// </summary>
-        IMotionDriverParser MotionDriverParser { get; set; }
 
         /// <summary>
         /// 获取型号

+ 2 - 2
SKMC.API/Motion/Driver/IMotionDriverManager.cs

@@ -7,11 +7,11 @@ namespace SKMC.Api.Motion.Driver
     public interface IMotionDriverManager
     {
         /// <summary>
-        /// 创建控制卡对象
+        /// 创建控制卡驱动对象、控制卡驱动解析对象
         /// </summary>
         /// <param name="driverName"></param>
         /// <returns></returns>
-        IMotionDriver Create(string driverName);
+        (IMotionDriver, IMotionDriverParser) Create(string driverName);
 
         /// <summary>
         /// 创建控制卡高级接口

+ 12 - 20
SKMC.API/Motion/Driver/IMotionDriverParser.cs

@@ -9,39 +9,31 @@ namespace SKMC.Api.Motion.Driver
     public interface IMotionDriverParser
     {
         /// <summary>
-        /// 是否开启自动触发模式
-        /// 开启后DI能接收到传感器数据
-        /// 关闭后适用于空跑测试
+        /// 控制卡驱动对象
         /// </summary>
-        /// <param name="trigger"></param>
-        void TriggerMode(bool triggerMode);
+        IMotionDriver MotionDriver { get; set; }
+
+        void CacheDio(MotionIO motionIO);
 
         /// <summary>
-        /// 解析一组IO模组的Di/Do返回值, 并注入到数据模型中
+        /// 缓存更新所有的IO模组的数据
         /// </summary>
-        /// <param name="motionIODev"></param>
-        /// <param name="grpValue1"></param>
-        /// <param name="grpValue2"></param>
-        void ParseDio(MotionIODev motionIODev, short grpValue1, short grpValue2 = -1);
+        void CacheDioAll();
 
         /// <summary>
-        /// 
+        /// 缓存更新所有的AD模组的数据
         /// </summary>
-        /// <param name="motionIODev"></param>
-        /// <param name="grpValue"></param>
-        void ParseDio(MotionIODev motionIODev, ushort grpValue);
+        void CacheADAll();
 
         /// <summary>
-        /// 解析多个IO模组的数据
+        /// 缓存更新Axis数据
         /// </summary>
-        void ParseDio(List<MotionIODev> motionIODevs, ushort[] packValues);
+        void CacheAxis(MotionAxis motionAxis);
 
         /// <summary>
-        /// 解析一个Axis状态并注入到数据模型中
+        /// 缓存更新所有的Axis数据
         /// </summary>
-        /// <param name="axisStatus"></param>
-        /// <param name="axisSts"></param>
-        void ParseAxisSts(MotionAxisStatus axisStatus, int axisSts);
+        void CacheAxisAll();
 
     }
 }

+ 1 - 1
SKMC.API/Motion/Model/AxisCnd.cs

@@ -1,4 +1,4 @@
-using SKMC.Api.Common;
+using SKMC.Api.Core;
 using SKMC.Api.Common.Logger;
 using System;
 

+ 1 - 1
SKMC.API/Motion/Model/DioCnd.cs

@@ -1,4 +1,4 @@
-using SKMC.Api.Common;
+using SKMC.Api.Core;
 using System;
 
 namespace SKMC.Api.Motion.Model

+ 8 - 8
SKMC.API/Motion/Model/MotionAxis.cs

@@ -184,26 +184,26 @@ namespace SKMC.Api.Motion.Model
             set { _homeDir = value; RaisePropertyChanged(); }
         }
 
-        private double _lowVel;
+        private int _homeLowVel;
 
         /// <summary>
         /// 回零低速
         /// </summary>
-        public double LowVel
+        public int HomeLowVel
         {
-            get { return _lowVel; }
-            set { _lowVel = value; RaisePropertyChanged(); }
+            get { return _homeLowVel; }
+            set { _homeLowVel = value; RaisePropertyChanged(); }
         }
 
-        private double _highVel;
+        private int _homeHighVel;
 
         /// <summary>
         /// 回零高速
         /// </summary>
-        public double HighVel
+        public int HomeHighVel
         {
-            get { return _highVel; }
-            set { _highVel = value; RaisePropertyChanged(); }
+            get { return _homeHighVel; }
+            set { _homeHighVel = value; RaisePropertyChanged(); }
         }
 
         public string SerialNo { get => $"[{AxisNo}]{AxisDir}: {Code}"; }

+ 15 - 0
SKMC.API/Motion/MotionCacher.cs

@@ -11,6 +11,21 @@ namespace SKMC.Api.Motion
     /// </summary>
     public abstract class MotionCacher : BindableBase
     {
+        /// <summary>
+        /// DI模块数量
+        /// </summary>
+        public int DevDiNum { get; set; }
+
+        /// <summary>
+        /// DO模块数量
+        /// </summary>
+        public int DevDoNum { get; set; }
+
+        /// <summary>
+        /// 运动控制卡数据解析层
+        /// </summary>
+        public IMotionDriverParser MotionDriverParser { get; set; }
+
         /// <summary>
         /// 运动控制卡接口层
         /// </summary>

+ 1 - 1
SKMC.API/Process/Config/ProcessException.cs

@@ -1,4 +1,4 @@
-using SKMC.Api.Common.Exceptions;
+using SKMC.Api.Core.Exceptions;
 
 namespace SKMC.Api.Process.Config
 {

+ 1 - 1
SKMC.API/Process/Model/ProcessAction.cs

@@ -1,4 +1,4 @@
-using SKMC.Api.Common;
+using SKMC.Api.Core;
 using SKMC.Api.Motion.Control;
 using System;
 

+ 23 - 1
SKMC.API/Process/Model/ProcessStation.cs

@@ -1,4 +1,4 @@
-using SKMC.Api.Common;
+using SKMC.Api.Core;
 using SKMC.Api.Common.Logger;
 using SKMC.Api.Common.Tasks;
 using SKMC.Api.Motion.Control;
@@ -431,6 +431,28 @@ namespace SKMC.Api.Process.Model
             if (toStorage) processStorage.DeleteStationStatusAll(this);
         }
 
+        /// <summary>
+        /// 请求其他流程站点物料状态交互:更新物料状态并阻塞,直到目标Station确认收到后(ConfirmStationStatus)退出阻塞
+        /// </summary>
+        /// <param name="matType"></param>
+        /// <param name="statusVals"></param>
+        /// <param name="stationId"></param>
+        public void RequestStationStatus(int matType, int[] statusVals, int stationId = -1)
+        {
+
+        }
+
+        /// <summary>
+        /// 阻塞并等待响应其他流程站点的物料状态,如果与期望的物料状态匹配则确认接收
+        /// </summary>
+        /// <param name="matType"></param>
+        /// <param name="statusVals"></param>
+        /// <param name="stationId"></param>
+        public void ResponsetationStatus(int matType, int[] statusVals, int stationId = -1)
+        {
+
+        }
+
         private ProcessStation GetProcessStation(int stationId = -1)
         {
             ProcessStation processStation = (stationId == -1) ? this : ProcessStationManager.Get(stationId);

+ 8 - 8
SKMC.API/Product/Material/Tray/TraySlot.cs

@@ -88,7 +88,7 @@ namespace SKMC.Api.Product.Material.Tray
         // 重试次数
         public int RetryTimes { get; set; }
 
-        public RecipePoint ProcessPoint { get; set; }
+        public RecipePoint RecipePoint { get; set; }
 
         public void Set(int index)
         {
@@ -100,15 +100,15 @@ namespace SKMC.Api.Product.Material.Tray
         /// <summary>
         /// 获取产品或穴位定位的偏移量
         /// </summary>
-        /// <param name="processTrayMatter"></param>
-        public void InjectFixset(TraySlot processTrayMatter)
+        /// <param name="traySlot"></param>
+        public void InjectFixset(TraySlot traySlot)
         {
-            FixsetX = processTrayMatter.FixsetX;
-            FixsetY = processTrayMatter.FixsetY;
-            if (ProcessPoint != null)
+            FixsetX = traySlot.FixsetX;
+            FixsetY = traySlot.FixsetY;
+            if (RecipePoint != null)
             {
-                ProcessPoint.RecipePointPositions[0].FixsetVal = processTrayMatter.FixsetX;
-                ProcessPoint.RecipePointPositions[1].FixsetVal = processTrayMatter.FixsetY;
+                RecipePoint.RecipePointPositions[0].FixsetVal = traySlot.FixsetX;
+                RecipePoint.RecipePointPositions[1].FixsetVal = traySlot.FixsetY;
             }
         }
 

+ 1 - 1
SKMC.API/Recipe/Config/RecipeParamBase.cs

@@ -1,4 +1,4 @@
-using SKMC.Api.Common;
+using SKMC.Api.Core;
 using System;
 using System.Reflection;
 

+ 3 - 0
SKMC.API/Recipe/Model/RecipePoint.cs

@@ -10,6 +10,9 @@ namespace SKMC.Api.Recipe.Model
     /// </summary>
     public class RecipePoint : BindableBase, ICloneable
     {
+
+        public long RecipeId { get; set; }
+
         private string _code;
 
         /// <summary>

+ 13 - 11
SKMC.API/Recipe/Model/RecipePointGroup.cs

@@ -1,5 +1,6 @@
 using Prism.Mvvm;
 using SKMC.Api.Motion.Model;
+using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Text;
 
@@ -11,13 +12,8 @@ namespace SKMC.Api.Recipe.Model
     /// </summary>
     public class RecipePointGroup : BindableBase
     {
-        private long _profileId;
 
-        public long ProfileId
-        {
-            get { return _profileId; }
-            set { _profileId = value; }
-        }
+        public long RecipeId { get; set; }
 
         private string _code;
         /// <summary>
@@ -62,7 +58,8 @@ namespace SKMC.Api.Recipe.Model
 
         public string AxisSerials
         {
-            get {
+            get
+            {
                 StringBuilder builder = new StringBuilder();
                 for (int i = 0; i < MotionAxises.Count; i++)
                 {
@@ -72,19 +69,24 @@ namespace SKMC.Api.Recipe.Model
                         builder.Append("\r\n");
                     }
                 }
-                return builder.ToString(); 
+                return builder.ToString();
             }
         }
 
-        public int AxisNum 
-        { 
+        public int PointNum
+        {
             get => RecipePoints.Count;
         }
 
+        /// <summary>
+        /// 关联电机序号集合
+        /// </summary>
+        public List<int> AxisNoList { get; set; } = new List<int>();
+
         /// <summary>
         /// 关联电机集合
         /// </summary>
-        public ObservableCollection<MotionAxis> MotionAxises { get; set; } = new ObservableCollection<MotionAxis>();
+        public List<MotionAxis> MotionAxises { get; set; } = new List<MotionAxis>();
 
         /// <summary>
         /// 关联点位集合

+ 9 - 9
SKMC.API/SKMC.API.csproj

@@ -86,15 +86,15 @@
     <Compile Include="Client\Config\ClientConstants.cs" />
     <Compile Include="Client\Config\ClientException.cs" />
     <Compile Include="Client\Views\BaseEditorModel.cs" />
-    <Compile Include="Common\CommonCacher.cs" />
+    <Compile Include="Core\Exceptions\ExceptionCacher.cs" />
     <Compile Include="Common\DB\IModelConverter.cs" />
     <Compile Include="Client\Access\ClientAccess.cs" />
     <Compile Include="Client\Access\ClientRole.cs" />
     <Compile Include="Client\Access\IClientRoleAccesser.cs" />
     <Compile Include="Client\UI\ClientDialogs.cs" />
-    <Compile Include="Common\Exceptions\ExceptionConfigStore.cs" />
-    <Compile Include="Common\Exceptions\ExceptionWrapper.cs" />
-    <Compile Include="Common\ObjectFactory.cs" />
+    <Compile Include="Core\Exceptions\ExceptionConfigStore.cs" />
+    <Compile Include="Core\Exceptions\ExceptionWrapper.cs" />
+    <Compile Include="Core\ObjectFactory.cs" />
     <Compile Include="Client\Extension\IMouseTracer.cs" />
     <Compile Include="Client\Model\ClientMessage.cs" />
     <Compile Include="Client\Views\ExceptionViewModel.cs" />
@@ -110,8 +110,8 @@
     <Compile Include="Common\DB\Entity\BaseEntity.cs" />
     <Compile Include="Common\DB\Entity\ConfigEntity.cs" />
     <Compile Include="Common\DB\SqlSugarTool.cs" />
-    <Compile Include="Common\Exceptions\ExceptionBase.cs" />
-    <Compile Include="Common\Exceptions\ExceptionShow.cs" />
+    <Compile Include="Core\Exceptions\ExceptionBase.cs" />
+    <Compile Include="Core\Exceptions\ExceptionShow.cs" />
     <Compile Include="Common\File\AppConfig.cs" />
     <Compile Include="Common\File\IniFiles.cs" />
     <Compile Include="Common\File\XmlSerializerTool.cs" />
@@ -200,7 +200,7 @@
     <Compile Include="Motion\Model\DioCnd.cs" />
     <Compile Include="Process\Model\ProcessStep.cs" />
     <Compile Include="Recipe\RecipeCacher.cs" />
-    <Compile Include="Common\Exceptions\ExceptionConfig.cs" />
+    <Compile Include="Core\Exceptions\ExceptionConfig.cs" />
     <Compile Include="Recipe\Config\RecipeParam.cs" />
     <Compile Include="Recipe\Model\RecipePointPosition.cs" />
     <Compile Include="Recipe\Model\RecipePoint.cs" />
@@ -209,8 +209,8 @@
     <Compile Include="Common\Tasks\TaskToken.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Loader.cs" />
-    <Compile Include="Common\Vision\IResultParser.cs" />
-    <Compile Include="Common\Vision\VisionException.cs" />
+    <Compile Include="Vision\IResultParser.cs" />
+    <Compile Include="Vision\VisionException.cs" />
   </ItemGroup>
   <ItemGroup>
     <Folder Include="Device\Ethercats\Config\" />

+ 1 - 1
SKMC.API/Common/Vision/IResultParser.cs → SKMC.API/Vision/IResultParser.cs

@@ -4,7 +4,7 @@ using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
 
-namespace SKMC.Api.Common.Vision
+namespace SKMC.Api.Vision
 {
     /// <summary>
     /// 结果字符串解析接口

+ 1 - 1
SKMC.API/Vision/SKV0/SKVisionClientBase.cs

@@ -1,6 +1,6 @@
 using SKMC.Api.Common.Logger;
 using SKMC.Api.Common.Tcp;
-using SKMC.Api.Common.Vision;
+using SKMC.Api.Vision;
 using System;
 
 namespace SKMC.Api.Vision.SKV0

+ 1 - 2
SKMC.API/Vision/SKV0/SKVisionProtocol.cs

@@ -1,5 +1,4 @@
-using SKMC.Api.Common.Vision;
-using System;
+using System;
 using System.Collections.Generic;
 
 namespace SKMC.Api.Vision.SKV0

+ 2 - 7
SKMC.API/Common/Vision/VisionException.cs → SKMC.API/Vision/VisionException.cs

@@ -1,11 +1,6 @@
-using SKMC.Api.Common.Exceptions;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
+using SKMC.Api.Core.Exceptions;
 
-namespace SKMC.Api.Common.Vision
+namespace SKMC.Api.Vision
 {
     public class VisionException : ExceptionBase
     {