/* * @Author: DaMing zxm5337@163.com * @Date: 2024-03-28 09:58:33 * @LastEditors: 张小明 zxm5337@163.com * @LastEditTime: 2024-05-20 18:48:22 * @FilePath: \Proxi_CheckBoard\User\App\motor.h * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ #ifndef __COMMUNICATION_H__ #define __COMMUNICATION_H__ #include "data_type_def.h" #include "usart.h" #define BUFFER_SIZE 256 #define TASK_DUTY 1 #define DELAY_OUT_MS 5000 #define DELAY_OUT DELAY_OUT_MS / TASK_DUTY #define TEMPERATURE_MAX 100.0f #define TEMPERATURE_MIN -100.0f #define ADDR_REMOTE 0XA1 #define ADDR_LOCAL 0XB1 #define PARSE_HEAD 0X05 #define PARSE_TAIL 0X1B #define CHECK_NUM 0XCD40 typedef enum { CMD_NO_PROC = 0X00, CMD_SET_DIST, CMD_GET_TIME, CMD_SET_FREQ, CMD_ZERO_DIST, CMD_RATED_DIST, CMD_ERR_COMDE } cmd_e; typedef enum { STATE_MOTOR_STOP = 0X00, STATE_MOTOR_RUN, STATE_MOTOR_NEAR, STATE_MOTOR_FAR } state_e; typedef enum { MODE_MANUL = 0X00, MODE_AUTO } mode_e; typedef struct { BOOL rx_flag; BOOL tx_flag; BOOL con_flag; BOOL lvdt_flag; BOOL upsend_flag; uint8_t *tx_buf; uint8_t *rx_buf; uint8_t rx_index; uint8_t addr; uint8_t cmd; uint16_t upsend_delay; uint16_t upsend_count; uint16_t reg_start; uint16_t reg_num; uint16_t crc; uint16_t delay_out; float32 distance; float32 temperature; UART_HandleTypeDef huart; DMA_HandleTypeDef hdma_uart_rx; } modbus_rtu_t; typedef struct { uint8_t head; uint8_t tail; uint8_t lenth; uint8_t state; uint8_t mode; uint8_t director; uint8_t sn; uint16_t step; uint16_t run_duty; uint16_t vol_sv; uint16_t function; uint16_t check; uint16_t local_addr; uint16_t remote_addr; } self_parse_t; extern cmd_e cmd_tppe; extern uint8_t rtu_rx_buf_A[BUFFER_SIZE]; extern uint8_t rtu_rx_buf_B[BUFFER_SIZE]; extern uint8_t rtu_rx_buf_hmi[BUFFER_SIZE]; extern modbus_rtu_t modbus_rtu_A; extern modbus_rtu_t modbus_rtu_B; extern modbus_rtu_t modbus_rtu_hmi; void fun_ini_modbus(modbus_rtu_t *modbus_rtu); BOOL fun_proc_modbus(modbus_rtu_t *modbus_rtu); void fun_com_hmi(modbus_rtu_t *modbus_rtu); #endif