pstd2/User/App/communication.h

111 lines
2.3 KiB
C

/*
* @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