This commit is contained in:
吴俊潮 2025-04-02 15:51:36 +08:00
parent 4f1f4f0eca
commit 490a53a2af
2 changed files with 36 additions and 36 deletions

View File

@ -126,14 +126,14 @@ int main(void)
ee_io_init();
prov_init(); //±ÈÀý·§³õʼ»¯
ee_readbytes(ch395_addr,0,14);
for(int n = 0;n < 12;n++)
{
HoldReg[40 + n] = ch395_addr[n];
}
HoldReg[52] = ch395_addr[12] << 8 | ch395_addr[13];
ch395_hardware_init(); //ch395硬件初始化
ch395_init(); //以太网初始化
// ee_readbytes(ch395_addr,0,14);
// for(int n = 0;n < 12;n++)
// {
// HoldReg[40 + n] = ch395_addr[n];
// }
// HoldReg[52] = ch395_addr[12] << 8 | ch395_addr[13];
// ch395_hardware_init(); //ch395硬件初始化
// ch395_init(); //以太网初始化
/* USER CODE END 2 */

View File

@ -6,16 +6,16 @@
#include "uarts.h"
#include "ch395.h"
/*--------------------------------- 宏定义 -----------------------------------*/
//功能码
#define ReadCoilState 0x01 //读取线圈状态
#define ReadDisInputState 0x02 //读取输入状态
#define ReadHoldReg 0x03 //读取保持寄存器
#define ReadInputReg 0x04 //读取输入寄存器
#define WriteSingleCoil 0x05 //强制写单线圈输出状态
#define WriteSingleReg 0x06 //预设(写)单寄存器
#define WriteMultiCoil 0x0F //强制写多线圈输出状态
#define WriteMultiReg 0x10 //预设(写)多寄存器
/*--------------------------------- 宏定义 -----------------------------------*/
//功能码
#define ReadCoilState 0x01 //读取线圈状态
#define ReadDisInputState 0x02 //读取输入状态
#define ReadHoldReg 0x03 //读取保持寄存器
#define ReadInputReg 0x04 //读取输入寄存器
#define WriteSingleCoil 0x05 //强制写单线圈输出状态
#define WriteSingleReg 0x06 //预设(写)单寄存器
#define WriteMultiCoil 0x0F //强制写多线圈输出状态
#define WriteMultiReg 0x10 //预设(写)多寄存器
#define COIL_ADD_MIN 0x10
#define COIL_ADD_MAX 0x5F
@ -38,14 +38,14 @@
#define MAKEWORD(a,b) ((uint16_t)(((uint8_t)(a)) | ((uint16_t)((uint8_t)(b))) << 8))
//串口相关定义
#define UART1_RXSIZE 1024 //一帧接收数据的最大值
#define UART1_TXSIZE 1024 //一帧发送数据的最大值
//串口相关定义
#define UART1_RXSIZE 1024 //一帧接收数据的最大值
#define UART1_TXSIZE 1024 //一帧发送数据的最大值
#define MAX_SIZE 1024
#define MODBUS_UART uart1 //将串口改成相应的变量即可例如用到UART1此处改为uart1
#define MODBUS_HUART huart1 //将串口改成相应的变量即可例如用到UART1此处改为huart1
#define MODBUS_HTIM htim7 //将串口改成相应的变量即可例如用到UART1此处改为huart1
#define MODBUS_UART uart1 //将串口改成相应的变量即可例如用到UART1此处改为uart1
#define MODBUS_HUART huart1 //将串口改成相应的变量即可例如用到UART1此处改为huart1
#define MODBUS_HTIM htim7 //将串口改成相应的变量即可例如用到UART1此处改为huart1
typedef enum
{
@ -63,24 +63,24 @@ typedef enum
typedef union var_reg
{
uint16_t SamData [MAX_INPUT_REG_NUM]; // 采样数据
uint16_t InputReg[MAX_INPUT_REG_NUM]; // Reg 与 SamData
uint16_t SamData [MAX_INPUT_REG_NUM]; // 采样数据
uint16_t InputReg[MAX_INPUT_REG_NUM]; // Reg 与 SamData
}Var_Reg;
typedef struct
{
uint8_t *rx_buf; //接收缓冲数组
uint16_t rx_buf_cnt; //接收缓冲计数值
uint16_t rx_size; //接收数据大小
uint8_t rx_flag; //接收完成标志位
uint8_t *rx_buf; //接收缓冲数组
uint16_t rx_buf_cnt; //接收缓冲计数值
uint16_t rx_size; //接收数据大小
uint8_t rx_flag; //接收完成标志位
uint8_t *tx_buf; //发送缓冲数组
uint16_t tx_buf_cnt; //发送缓冲计数值
uint16_t tx_size; //实际发送数据大小
uint8_t *tx_buf; //发送缓冲数组
uint16_t tx_buf_cnt; //发送缓冲计数值
uint16_t tx_size; //实际发送数据大小
}UART_BUF;
extern UART_BUF uart1; //串口结构体实体
extern uint8_t RxBuffer; //接收数据中间变量
extern UART_BUF uart1; //串口结构体实体
extern uint8_t RxBuffer; //接收数据中间变量
extern uint8_t CoilState[(MAX_COIL_NUM + 7) / 8];
extern uint8_t DisState [(MAX_DIS_NUM + 7) / 8];
@ -89,7 +89,7 @@ extern uint16_t HoldReg[MAX_HOLD_REG_NUM];
extern Var_Reg SamVarReg;
void modbus_rtu_init(void);//RTU初始化
void modbus_rtu_init(void);//RTU初始化
void modbus_rx_cb(void);
uint16_t ModbusCRC16(uint8_t *ptr, uint16_t len);