MotorZOperate.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. using SHJX.Service.Model.Dao;
  2. using SHJX.Service.Model.Control;
  3. using SHJX.Service.Common.Extend;
  4. using SHJX.Service.Control.Modules;
  5. using SHJX.Service.Control.Interface;
  6. using SHJX.Service.Common.ReadXML;
  7. namespace SHJX.Service.Control.Route.RouteController
  8. {
  9. public class MotorZOperate : FlowControlOperateImp
  10. {
  11. private const string OpName = "MotorZ";
  12. public static bool AxisZdownOrUp = false;//z轴上下状态
  13. public virtual bool Operate(ReadConfigUtil config, DataEventArgs data)
  14. {
  15. var res = data.Task.RouteStep switch
  16. {
  17. "Z_Move_Down_From" => SetSerialPortData(data, data.Task.From), //Z轴下降
  18. "Z_Move_Down_To" => SetSerialPortData(data, data.Task.To, isdeduct: true),
  19. "Z_Move_GoBack_From" or "Z_Move_GoBack_To" => MotorZGoBack(data), //Z轴上升
  20. _ => false
  21. };
  22. return res;
  23. }
  24. /// <summary>
  25. /// Z轴下降
  26. /// </summary>
  27. /// <param name="data"></param>
  28. /// <param name="local">地址</param>
  29. /// <param name="isdeduct">是否扣减</param>
  30. /// <returns></returns>
  31. protected virtual bool SetSerialPortData(DataEventArgs data, string local, bool isdeduct = false)
  32. {
  33. //这里要做判断其实
  34. //判断X、Y是否已经到达了该点,并且是否Z轴在原点的位置上
  35. var movelenght = local.CalculateAreaPoint(OpName);
  36. if (isdeduct)
  37. {
  38. AxisZdownOrUp = true;
  39. movelenght += 10000;
  40. }
  41. else
  42. AxisZdownOrUp = false;
  43. var portArgs = new PortArgs()
  44. {
  45. WriteWay = WriteWay.Move,
  46. TypeName = OpName,
  47. Distance = movelenght
  48. };
  49. return data.Client.Factory(OpName).Write(portArgs);
  50. }
  51. /// <summary>
  52. /// Z轴返回原点
  53. /// </summary>
  54. /// <returns></returns>
  55. public bool MotorZGoBack(DataEventArgs data)
  56. {
  57. PortArgs portArgs = new()
  58. {
  59. WriteWay = WriteWay.GoBack,
  60. TypeName = OpName,
  61. Distance = OpName.MotorFinal()
  62. };
  63. var res = data.Client.Factory(OpName).Write(portArgs);
  64. AxisZdownOrUp = true;
  65. if (CancelCache.Contains(data.Task.OriginLocalName)&&data.Task.RouteType!="SP")
  66. {
  67. if (CancelCache.Get(data.Task.OriginLocalName).Equals("Cancel"))
  68. {
  69. var task = data.Task;
  70. task.Status = TaskState.Cancel;
  71. data.DataManager.Update(task);
  72. CancelCache.Remove(data.Task.OriginLocalName);
  73. }
  74. }
  75. return res;
  76. }
  77. }
  78. }