|
- #ifndef __MODBUS_H
- #define __MODBUS_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;
-
- uint8_t ModbusErrReply(uint8_t func, uint8_t err);
- uint16_t Crc16(const uint8_t *data, uint16_t length);
- void AddCrc16(uint8_t *data, uint16_t length);
- int8_t ChcekCrc16(uint16_t recCrc16, uint8_t *data, uint16_t length);
- 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);
- void ModbusSend(uint8_t *txBuf, uint16_t len);
-
-
- #endif
|