/** * @file plsr.h * @author zhangcheng * @brief PLSR指令功能接口文件 * @version v0.1 * @date 2025-08-06 * * @copyright Copyright (c) 2025 */ #include "../../modbus/inc/modbus.h" /** * @brief 最大支持脉冲段 * @details * @note * @attention */ #define PLSR_PULSE_MAX_SEGMENT_NUM 10 /** * @brief 系统参数块 * @details * @note * @attention */ typedef enum { SYSTEM_PARAM_BLOCK_0 = 0, ///< 系统参数块0,默认参数块,不可修改 SYSTEM_PARAM_BLOCK_1, ///< 系统参数块1 SYSTEM_PARAM_BLOCK_2, ///< 系统参数块2 SYSTEM_PARAM_BLOCK_3, ///< 系统参数块3 SYSTEM_PARAM_BLOCK_4 ///< 系统参数块4 } PLSR_SYSTEM_PARAM_BLOCK; /** * @brief 输出端口 * @details * @note * @attention */ typedef enum { OUTPUT_PORT_Y0 = 0, ///< 输出端子Y0 OUTPUT_PORT_Y1, ///< 输出端子Y1 OUTPUT_PORT_Y2, ///< 输出端子Y2 OUTPUT_PORT_Y3 ///< 输出端子Y3 } PLSR_OUTPUT_PORT; /** * @brief 输出方向端口 * @details * @note * @attention */ typedef enum { OUTPUT_DIR_PORT_Y12 = 0, ///< 输出方向端子Y12 OUTPUT_DIR_PORT_Y13, ///< 输出方向端子Y13 OUTPUT_DIR_PORT_Y14, ///< 输出方向端子Y14 OUTPUT_DIR_PORT_Y15 ///< 输出方向端子Y15 } PLSR_OUTPUT_DIR_PORT; /** * @brief 方向端子方向逻辑 * @details * @note * @attention */ typedef enum { OUTPUT_DIR_CORRECT = 0, ///< 正逻辑 OUTPUT_DIR_NEGATIVE, ///< 负逻辑 } PLSR_OUTPUT_DIR_PORT_LOGIC; /** * @brief 输入信号端口 * @details * @note * @attention */ typedef enum { INPUT_EXT_PORT_X4 = 0, ///< 输入端子X4 INPUT_EXT_PORT_X5, ///< 输入端子X5 } PLSR_INPUT_EXT_PORT; /** * @brief 加减速模式模式 * @details * @note * @attention */ typedef enum { STRAIGHT_LINE_MODE = 0, ///< 直线加减速模式 S_CURVE_MODE, ///< S曲线加减速模式 SINE_CURVE_MODE ///< 正弦曲线加减速模式 } PLSR_ACC_DEC_SPEED_MODE; /** * @brief 输出模式 * @details * @note * @attention */ typedef enum { RELATIVE_MODE = 0, ///< 相对模式 ABSOLUTE_MODE ///< 绝对模式 } PLSR_OUTPUT_MODE; /** * @brief 参数错误类型 * @details * @note * @attention */ typedef enum { PLSR_ERROR_NONE = 0, ///< 无错误 PLSR_FREQ_EXCE_MAX_VALUE ///< 超过最大输出频率 } PLSR_ERROR_TYPE; /** * @brief PLSR脉冲段 * @details * @note * @attention */ typedef struct { int32_t pulseFreq; int32_t pulseNumber; int16_t waitType; int16_t jumpNumber; } PLSR_SEGMENT; /** * @brief PLSR指令结构类型 * @details * @note * @attention */ typedef struct { PLSR_OUTPUT_PORT outputPort; ///< 输出端子 PLSR_OUTPUT_DIR_PORT dirPort; ///< 输出方向端子 PLSR_INPUT_EXT_PORT extPort; ///< 输入端子 PLSR_OUTPUT_DIR_PORT_LOGIC dirLogic; ///< 输出方向端子逻辑 PLSR_ACC_DEC_SPEED_MODE accDecSpeedMode; ///< 加减速模式 PLSR_OUTPUT_MODE outMode; ///< 输出模式 uint16_t dirDelayTime; ///< 方向延时时间 uint16_t segmentAllNum; ///< 总段数 uint16_t startRunSegment; ///< 起始执行段编号 uint16_t previouSegment; ///< 上一段编号 uint16_t currentSegment; ///< 当前执行段编号 uint32_t defaultSpeed; ///< 默认速度 uint16_t defaultAccSpeedTime; ///< 默认加速时间 uint16_t defaultDecSpeedTime; ///< 默认减速时间 int32_t monitorPulseNum; ///< 监控脉冲数量 uint16_t sendEnableState; ///< 脉冲发送使能 PLSR_SEGMENT segment[PLSR_PULSE_MAX_SEGMENT_NUM]; ///< 各段数参数 } PLSR; /** * @brief PLSR功能初始化 * @details * * @param[in] 无 * * @return RESUIL 初始化结果 * @retval MODBUS_TURE 成功 * @retval MODBUS_FALSE 失败 */ RESUIL PLSRInit(void);