GalilCommonAxis.cs 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. using MECF.Framework.Common.Device.Galil;
  2. using MECF.Framework.Common.TwinCat;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Reflection;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. namespace PunkHPX8_RT.Devices.AXIS
  10. {
  11. public class GalilCommonAxis
  12. {
  13. #region 常量
  14. private const string IS_SWITCH_ON = "IsSwitchOn";
  15. private const string STOP_CODE = "StopCode";
  16. private const string MOTOR_POSITION = "MotorPosition";
  17. private const string POSITION_ERROR = "PositionError";
  18. private const string ACTUAL_TORQUE = "ActualTorque";
  19. private const string ACTUAL_VELOCITY = "Velocity";
  20. private const string FORWARD_LIMIT = "ForwardLimit";
  21. private const string TARGET_POSITION = "ReferencePosition";
  22. #endregion
  23. #region 内部变量
  24. private string _module;
  25. private string _name;
  26. private JetAxisBase _axis;
  27. #endregion
  28. /// <summary>
  29. /// 构造函数
  30. /// </summary>
  31. /// <param name="_module"></param>
  32. /// <param name="name"></param>
  33. public GalilCommonAxis(string module,string name,JetAxisBase jetAxisBase)
  34. {
  35. _module = module;
  36. _name = name;
  37. _axis = jetAxisBase;
  38. }
  39. /// <summary>
  40. /// 订阅变量
  41. /// </summary>
  42. public void SubscriptionVariable()
  43. {
  44. _axis.AxisSubscribeUpdateVariable(IS_SWITCH_ON);
  45. _axis.AxisSubscribeUpdateVariable(STOP_CODE);
  46. _axis.AxisSubscribeUpdateVariable(MOTOR_POSITION);
  47. _axis.AxisSubscribeUpdateVariable(POSITION_ERROR);
  48. _axis.AxisSubscribeUpdateVariable(ACTUAL_TORQUE);
  49. _axis.AxisSubscribeUpdateVariable(ACTUAL_VELOCITY);
  50. _axis.AxisSubscribeUpdateVariable(FORWARD_LIMIT);
  51. _axis.AxisSubscribeUpdateVariable(TARGET_POSITION);
  52. }
  53. /// <summary>
  54. /// 上电
  55. /// </summary>
  56. /// <returns></returns>
  57. public bool WriteSwitchOn()
  58. {
  59. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "SH", null);
  60. }
  61. /// <summary>
  62. /// 下电
  63. /// </summary>
  64. /// <returns></returns>
  65. public bool WriteSwitchOff()
  66. {
  67. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "MO", null);
  68. }
  69. /// <summary>
  70. /// 写入相对位置
  71. /// </summary>
  72. /// <param name="referencePosition"></param>
  73. /// <returns></returns>
  74. public bool WriteReferencePosition(int referencePosition)
  75. {
  76. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "PR", referencePosition);
  77. }
  78. /// <summary>
  79. /// 写入绝对位置
  80. /// </summary>
  81. /// <param name="referencePosition"></param>
  82. /// <returns></returns>
  83. public bool WriteAbsolutePosition(int absolutePosition)
  84. {
  85. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "PA", absolutePosition);
  86. }
  87. /// <summary>
  88. /// 写入速度
  89. /// </summary>
  90. /// <param name="referencePosition"></param>
  91. /// <returns></returns>
  92. public bool WriteSpeed(int speed)
  93. {
  94. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "SP", speed);
  95. }
  96. /// <summary>
  97. /// 写入加速度
  98. /// </summary>
  99. /// <param name="referencePosition"></param>
  100. /// <returns></returns>
  101. public bool WriteAcceleration(int acceleration)
  102. {
  103. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "AC", acceleration);
  104. }
  105. /// <summary>
  106. /// 写入减速度
  107. /// </summary>
  108. /// <param name="referencePosition"></param>
  109. /// <returns></returns>
  110. public bool WriteDeceleration(int deceleration)
  111. {
  112. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "DC", deceleration);
  113. }
  114. /// <summary>
  115. /// 停止
  116. /// </summary>
  117. /// <returns></returns>
  118. public bool WriteStop()
  119. {
  120. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "ST", null);
  121. }
  122. /// <summary>
  123. /// 开始运动
  124. /// </summary>
  125. /// <returns></returns>
  126. public bool WriteStartMotion()
  127. {
  128. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "BG", null);
  129. }
  130. /// <summary>
  131. /// Home 电机
  132. /// </summary>
  133. /// <returns></returns>
  134. public bool WriteHomeAxisCommand()
  135. {
  136. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "HM", null);
  137. }
  138. /// <summary>
  139. /// Home 电机
  140. /// </summary>
  141. /// <returns></returns>
  142. public bool WriteFIAxisCommand()
  143. {
  144. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "FI", null);
  145. }
  146. /// <summary>
  147. /// Home 电机
  148. /// </summary>
  149. /// <returns></returns>
  150. public bool WriteCNCommand(string cn)
  151. {
  152. return GalilControllerCfgManager.Instance.SetSystemCommand(_module, _name, "CN", cn);
  153. }
  154. /// <summary>
  155. /// 手动置零
  156. /// </summary>
  157. /// <returns></returns>
  158. public bool WriteDP(int dp)
  159. {
  160. bool result = GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "DP", dp);
  161. if (result)
  162. {
  163. return GalilControllerCfgManager.Instance.SetAxisCommand(_module, _name, "DE", dp);
  164. }
  165. return false;
  166. }
  167. }
  168. }