#ifndef __MODBUS_PARSE_H #define __MODBUS_PARSE_H #include "ucos_ii.h" /*接收数组大小*/ #define MODBUS_RX_BUF_SIZE 256 /*发送数组大小*/ #define MODBUS_TX_BUF_SIZE 256 /*modbus通信波特率*/ #define MODBUS_USART_BAUDRATE 115200 /*从机地址*/ #define SLAVE_ADDRES 0x01 /*错误码*/ #define ERR_FUNC 0x01 #define ERR_OPE_ADDRES 0x02 #define ERR_DATA 0x03 #define ERR_SLAVE 0x04 #define ERR_CRC 0x1F #define ERR_SLAVE_ADDRES 0x2F /*modbus帧结构*/ typedef struct Modbus_Frame { uint8_t slaveAddres; /*从机地址*/ uint8_t func; /*功能码*/ uint16_t opeAddres; /*操作地址*/ uint16_t opeNum; /*操作数量*/ uint8_t wNum; /*写入字节数*/ uint8_t wData[256]; /*写入数据*/ uint16_t crc; /*CRC校验码*/ }MODBUS_FRAME; /*接收到数据帧信号量*/ extern OS_EVENT *ModbusReceived; extern uint8_t ModbusRxBuf[MODBUS_RX_BUF_SIZE]; /*接收数组*/ extern uint16_t ModbusRxLen; /*接收数据长度*/ extern uint8_t ModbusTxBuf[MODBUS_TX_BUF_SIZE]; /*发送数组*/ extern uint16_t ModbusTxLen; /*发送数据长度*/ uint8_t ModbusReadCoils(uint16_t addres, uint16_t num); uint8_t ModbusWriteCoils(uint16_t addres, uint16_t num, uint8_t *data); uint8_t ModbusReadRegs(uint16_t addres, uint16_t num); uint8_t ModbusWriteRegs(uint16_t addres, uint16_t num, uint8_t *data); uint8_t ModbusWriteReg(uint16_t addres, uint8_t *data); uint8_t ModbusWriteCoil(uint16_t addres, uint8_t *data); uint8_t ModbusExtReadOdd(uint16_t num); uint8_t ModbusErrReply(uint8_t func, uint8_t err); #endif