您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

182 行
4.5 KiB

  1. /**
  2. * @file plsr.h
  3. * @author zhangcheng
  4. * @brief PLSR指令功能接口文件
  5. * @version v0.1
  6. * @date 2025-08-06
  7. *
  8. * @copyright Copyright (c) 2025
  9. */
  10. #include "../../modbus/inc/modbus.h"
  11. /**
  12. * @brief 最大支持脉冲段
  13. * @details
  14. * @note
  15. * @attention
  16. */
  17. #define PLSR_PULSE_MAX_SEGMENT_NUM 10
  18. /**
  19. * @brief 系统参数块
  20. * @details
  21. * @note
  22. * @attention
  23. */
  24. typedef enum {
  25. SYSTEM_PARAM_BLOCK_0 = 0, ///< 系统参数块0,默认参数块,不可修改
  26. SYSTEM_PARAM_BLOCK_1, ///< 系统参数块1
  27. SYSTEM_PARAM_BLOCK_2, ///< 系统参数块2
  28. SYSTEM_PARAM_BLOCK_3, ///< 系统参数块3
  29. SYSTEM_PARAM_BLOCK_4 ///< 系统参数块4
  30. } PLSR_SYSTEM_PARAM_BLOCK;
  31. /**
  32. * @brief 输出端口
  33. * @details
  34. * @note
  35. * @attention
  36. */
  37. typedef enum {
  38. OUTPUT_PORT_Y0 = 0, ///< 输出端子Y0
  39. OUTPUT_PORT_Y1, ///< 输出端子Y1
  40. OUTPUT_PORT_Y2, ///< 输出端子Y2
  41. OUTPUT_PORT_Y3 ///< 输出端子Y3
  42. } PLSR_OUTPUT_PORT;
  43. /**
  44. * @brief 输出方向端口
  45. * @details
  46. * @note
  47. * @attention
  48. */
  49. typedef enum {
  50. OUTPUT_DIR_PORT_Y12 = 0, ///< 输出方向端子Y12
  51. OUTPUT_DIR_PORT_Y13, ///< 输出方向端子Y13
  52. OUTPUT_DIR_PORT_Y14, ///< 输出方向端子Y14
  53. OUTPUT_DIR_PORT_Y15 ///< 输出方向端子Y15
  54. } PLSR_OUTPUT_DIR_PORT;
  55. /**
  56. * @brief 方向端子方向逻辑
  57. * @details
  58. * @note
  59. * @attention
  60. */
  61. typedef enum {
  62. OUTPUT_DIR_CORRECT = 0, ///< 正逻辑
  63. OUTPUT_DIR_NEGATIVE, ///< 负逻辑
  64. } PLSR_OUTPUT_DIR_PORT_LOGIC;
  65. /**
  66. * @brief 输入信号端口
  67. * @details
  68. * @note
  69. * @attention
  70. */
  71. typedef enum {
  72. INPUT_EXT_PORT_X4 = 0, ///< 输入端子X4
  73. INPUT_EXT_PORT_X5, ///< 输入端子X5
  74. } PLSR_INPUT_EXT_PORT;
  75. /**
  76. * @brief 加减速模式模式
  77. * @details
  78. * @note
  79. * @attention
  80. */
  81. typedef enum {
  82. STRAIGHT_LINE_MODE = 0, ///< 直线加减速模式
  83. S_CURVE_MODE, ///< S曲线加减速模式
  84. SINE_CURVE_MODE ///< 正弦曲线加减速模式
  85. } PLSR_ACC_DEC_SPEED_MODE;
  86. /**
  87. * @brief 输出模式
  88. * @details
  89. * @note
  90. * @attention
  91. */
  92. typedef enum {
  93. RELATIVE_MODE = 0, ///< 相对模式
  94. ABSOLUTE_MODE ///< 绝对模式
  95. } PLSR_OUTPUT_MODE;
  96. /**
  97. * @brief 参数错误类型
  98. * @details
  99. * @note
  100. * @attention
  101. */
  102. typedef enum {
  103. PLSR_ERROR_NONE = 0, ///< 无错误
  104. PLSR_FREQ_EXCE_MAX_VALUE ///< 超过最大输出频率
  105. } PLSR_ERROR_TYPE;
  106. /**
  107. * @brief PLSR脉冲段
  108. * @details
  109. * @note
  110. * @attention
  111. */
  112. typedef struct
  113. {
  114. int32_t pulseFreq;
  115. int32_t pulseNumber;
  116. int16_t waitType;
  117. int16_t jumpNumber;
  118. } PLSR_SEGMENT;
  119. /**
  120. * @brief PLSR指令结构类型
  121. * @details
  122. * @note
  123. * @attention
  124. */
  125. typedef struct
  126. {
  127. PLSR_OUTPUT_PORT outputPort; ///< 输出端子
  128. PLSR_OUTPUT_DIR_PORT dirPort; ///< 输出方向端子
  129. PLSR_INPUT_EXT_PORT extPort; ///< 输入端子
  130. PLSR_OUTPUT_DIR_PORT_LOGIC dirLogic; ///< 输出方向端子逻辑
  131. PLSR_ACC_DEC_SPEED_MODE accDecSpeedMode; ///< 加减速模式
  132. PLSR_OUTPUT_MODE outMode; ///< 输出模式
  133. uint16_t dirDelayTime; ///< 方向延时时间
  134. uint16_t segmentAllNum; ///< 总段数
  135. uint16_t startRunSegment; ///< 起始执行段数
  136. uint16_t currentSegment; ///< 当前执行段数
  137. uint32_t defaultSpeed; ///< 默认速度
  138. uint16_t defaultAccSpeedTime; ///< 默认加速时间
  139. uint16_t defaultDecSpeedTime; ///< 默认减速时间
  140. int32_t monitorPulseNum; ///< 监控脉冲数量
  141. uint16_t sendEnableState; ///< 脉冲发送使能
  142. PLSR_SEGMENT segment[PLSR_PULSE_MAX_SEGMENT_NUM]; ///< 各段数参数
  143. } PLSR;
  144. /**
  145. * @brief PLSR功能初始化
  146. * @details
  147. *
  148. * @param[in] 无
  149. *
  150. * @return RESUIL 初始化结果
  151. * @retval MODBUS_TURE 成功
  152. * @retval MODBUS_FALSE 失败
  153. */
  154. RESUIL PLSRInit(void);