AxisPara.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. 
  2. #pragma once
  3. #include <string>
  4. enum AxisType{
  5. ServoAxis,
  6. ForcerAxis,
  7. StepAxis,
  8. WrongAxis,//错误轴
  9. };
  10. enum CardType {
  11. GTS = 0,
  12. LeiSai = 1,
  13. APS = 2,
  14. ACS = 3,
  15. };
  16. enum HomeMethod
  17. {
  18. IO2HOME = 1,
  19. HOME2HOME = 2,
  20. INDEX2HOME = 4,
  21. DIRECT2HOME = 5,
  22. LEFTLIMITHOME = 6,
  23. RIGHTLIMITHOME = 7,
  24. };
  25. struct CardData
  26. {
  27. int m_nBoardIndex;
  28. CardType m_nCardType;
  29. int m_nCardIndex;
  30. };
  31. struct AxisData{
  32. virtual void virtualMark(){};//!<提供用于转换的虚函数表
  33. int m_nID; //!<整个控制库中独特的轴编号
  34. std::string m_sName; //!<轴名称
  35. int m_nCardType /*= GTS; */; //!<卡的类型,固高,雷赛,ACS,
  36. int m_nCardIndex; //!<卡号,属于这种类型的第几张卡
  37. int m_nAxisIndexInCard; //!<该轴在卡中的索引
  38. int m_nAxisNumInCard; //!<该轴对应卡所含轴的总轴数
  39. //********************************************************************
  40. //UI中不使用
  41. //int m_nBoardNum; //卡号,所有卡的排序;2024/10/28
  42. int m_nAxisType = ServoAxis; //轴类型,不从具体表column中读取
  43. std::string m_sCommAddress; //通讯地址
  44. int m_nPort; //端口号
  45. int m_nSerialPort; //串口号
  46. unsigned int m_nBaudRate; //波特率,需要为无符号整型
  47. std::string m_sIPLocal; //上位机本地IP地址
  48. std::string m_sIPDriver; //驱动器IP地址
  49. int m_nRemotePort; //驱动器端口
  50. int m_nHeadType; //?
  51. int m_nModuleType; //模块类型是什么东西?
  52. int m_nMotorID; //卡?
  53. int m_nTranceducerType; //超声类型
  54. //********************************************************************
  55. //General Parameters
  56. int m_nNegativeLimitSwitch; //负限位开关(用1和0表示开关)(!!!)
  57. int m_nNegLimSwIndex; //负限位开关io的index
  58. int m_nNegLimSwLevel; //负限位电平(01常开常闭)
  59. int m_nPositiveLimitSwitch; //正限位开关,用1和0表示开关
  60. int m_nPosLimSwIndex; //正限位开关io的index
  61. int m_nPosLimSwLevel; //正限位电平(01常开常闭)
  62. int m_nAbortAtHWLimit; //在硬件限位触发时是否中止操作(0,1)
  63. int m_nHighVoltageMode; //是否处于高压模式(0,1)
  64. //********************************************************************
  65. //advance parameter 先进参数
  66. int m_nEncoderFaultIndex; //编码器故障索引:暂时不需要
  67. int m_nEncoderFaultBit; //编码器故障位:暂时不需要
  68. int m_nEncoderFaultLevel; //编码器故障级别:暂时不需要
  69. double m_fMotorTemperatureGain; //电机温度增益:暂时不需要
  70. double m_fMotorTemperatureTimeConstant; //电机温度时间常数:暂时不需要
  71. double m_fMotorTemperatureLimit; //电机温度限制:暂时不需要
  72. int m_nDriveCardType; //驱动器类型(控制卡?):暂时不需要
  73. int m_nDriveCardStatusBitMask; //驱动器卡状态位掩码:暂时不需要
  74. double m_fKxab; //暂时不需要
  75. double m_fKyab; //暂时不需要
  76. double m_fKza; //暂时不需要
  77. double m_fKza2; //暂时不需要
  78. double m_fKtv; //电压到达时间:暂时不需要
  79. double m_fKta; //电流到达时间:暂时不需要
  80. //**********************************************************************
  81. //trackball parameter
  82. double m_fPositionerRate1; //定位器比率1:暂时不需要
  83. double m_fPositionerRate2; //定位器比率2:暂时不需要
  84. double m_fPositionerGain1; //定位器增益1:暂时不需要
  85. double m_fPositionerGain2; //定位器增益2:暂时不需要
  86. double m_fPositionerGain3; //定位器增益3:暂时不需要
  87. //**********************************************************************
  88. //other parameters
  89. double m_fPosScaleFactor; //位置比例因子:物理单位与脉冲的关系 cnts/um;CntsPerCircle/Pitch
  90. double m_fSpringCoefficient1 = 0; //弹簧系数1:暂时不需要
  91. double m_fSpringCoefficient2 = 0; //弹簧系数2:暂时不需要
  92. double m_fSpringCoefficient3 = 0; //弹簧系数3:暂时不需要
  93. int m_nUPHEnhance; //(!!!)
  94. };
  95. // //控制轴
  96. struct ControlAxisData : AxisData {
  97. //********************************************************************
  98. //Home Parameter 回零参数
  99. double m_fPositionTolerance; //位置公差(相当于已有的误差带ErrBand)
  100. int m_nHomeSwitch; //原点开关!Home开关
  101. int m_nHomeSwitchIndex; //原点开关索引(Home开关对应的索引)
  102. int m_nHomeSwitchLevel; //原点开关电平(Home触发电平,默认应该都是低电平)
  103. int m_nIndexPulse; //索引脉冲(Index)
  104. int m_nIndexPulseIndex; //index脉冲的索引
  105. int m_nHomingBuffer; //轴对应回零程序存储的Buffer号
  106. int m_nHomingProcId; //回零过程id(回零方式)
  107. int m_nHomingDir1; //回零方向1(HomeDir:Home回零方向)
  108. int m_nHomingDir2; //回零方向2(IndexDir:Index回零方向)
  109. double m_fHomingVel1; //回零速度1;(快速回零速度)
  110. double m_fHomingVel2; //回零速度2;(慢速回零速度)
  111. double m_fHomingAccel; //回零加速度
  112. double m_fHomingDecel; //回零减速度
  113. double m_fHomingOutputLimit; //回零输出限制:暂时不需要
  114. double m_fHomingErrThresh; //回零错误阈值:暂时不需要
  115. double m_fHomePosition; //回零位置
  116. double m_fInitialPosition; //初始位置(!!!或许相当于已有的零位偏置)
  117. //General Parameters 常规参数
  118. double m_fNegCmdLimit; //负命令限位(软限位)
  119. double m_fPosCmdLimit; //正命令限位(软限位)
  120. double m_fMinimumVelocity; //最小速度
  121. double m_fStopDeceleration; //停止减速度(平滑值)
  122. double m_fStopDecelerationSD; //停止减速度(急停)
  123. int m_nFindLimitsProc; //寻找限位过程;(?)
  124. //****************************************************************************
  125. //other Parameter
  126. double m_fMaximumJerk = 0; //最大的加加速度(um/s^3)
  127. double m_fMaximumAcceleration = 0; //最大加速度(um/s^2)
  128. double m_fMaximumVelocity = 0; //最大速度(um/s)
  129. double m_fEndVelocity = 0; //每一段的末端速度(um/s)
  130. double m_fNegativeLimitMargin; //负限位外边距(负限位与电机停止位置之间的距离):暂时不需要
  131. double m_fPositiveLimitMargin; //正限位外边距:暂时不需要
  132. };
  133. // //力矩轴
  134. struct ForcerAxisData : AxisData {
  135. int m_nOpenPositionMargin; //开环位置边距:暂时不需要
  136. int m_nClosePositionMargin; //闭环位置边距:暂时不需要
  137. double m_fOutputScaleFactor; //输出比例系数:这个目前只在力轴上使用
  138. double m_fOutputOffset; //输出补偿:这个目前只在力轴上使用
  139. double m_fOutputLimit; //输出极限:这个目前只在力轴上使用
  140. double m_fWireClampForceCoefficient;//线夹力系数
  141. };
  142. // //伺服轴
  143. struct ServoAxisData : ControlAxisData {
  144. double m_fSafetyModeGain; //安全模式增益
  145. double m_fErrorThreshold; //误差阈值
  146. int m_nErrThreshCount; //错误触发计数
  147. double m_fKa; //电流
  148. double m_fKv; //电压
  149. double m_fKp; //比例调节系数
  150. double m_fKi; //积分调节系数
  151. double m_fKd; //微分调节系数
  152. double m_fIntegratorLimit; //积分器限制
  153. double m_fForceOffset; //力补偿
  154. double m_fForceScaleFactor; //力标度系数
  155. double m_fStaticFriction; //静摩檫力:暂时不需要
  156. double m_fDynamicFrictionCoefficient;//动摩擦系数:暂时不需要
  157. double m_fInertia; //惯性,测试,后删:暂时不需要
  158. double m_fPidOutputErrorThreshold; //pid输出错误阈值
  159. double m_fKip; //电流调节器的比例系数
  160. double m_fKii; //电流调节器的积分系数
  161. int m_nECPR; //电子齿轮比
  162. int m_nQuadDiv; //四阶分频;:暂时不需要
  163. double m_fEpdOnTime; //使能时间:暂时不需要
  164. double m_fEpdOffTime; //关闭时间:暂时不需要
  165. double m_fEpdCurrent; //电流:暂时不需要
  166. double m_fEpdPeak; //峰值:暂时不需要
  167. double m_fDriveAngleCalibCurrent; //驱动角校准电流:暂时不需要
  168. double m_fDriveAngleCalibPos; //驱动角校准位置:暂时不需要
  169. double m_fDriveAngleCalibAngle; //驱动角校准角度:暂时不需要
  170. double m_fDriveAngleAtHome; //原点时的驱动角度:暂时不需要
  171. int m_nDriveAngleCalibCycles; //驱动角校准周期:暂时不需要
  172. double m_fJerkFeedForward; //加加速前馈
  173. double m_fIntegratorSwitchVelocity; //积分开关速度
  174. double m_fBaseMass; //基础质量(负载质量)
  175. double m_fForceConstant; //力常数
  176. double m_fOutputLimitGain; //输出限制增益
  177. };
  178. //步进轴
  179. struct StepAxisData :ControlAxisData {
  180. //*******************************************************************
  181. //other parameter
  182. double m_fHoldCurrent; //保持电流
  183. double m_fRunCurrent; //运行电流
  184. double m_fSettlingTime; //稳定时间
  185. int m_nErrorCorrectionMode; //误差修正模型:暂时不需要
  186. };