No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 
 

59 líneas
1.7 KiB

  1. #ifndef __MODBUS_PARSE_H
  2. #define __MODBUS_PARSE_H
  3. #include "ucos_ii.h"
  4. /*接收数组大小*/
  5. #define MODBUS_RX_BUF_SIZE 256
  6. /*发送数组大小*/
  7. #define MODBUS_TX_BUF_SIZE 256
  8. /*modbus通信波特率*/
  9. #define MODBUS_USART_BAUDRATE 115200UL
  10. /*从机地址*/
  11. #define SLAVE_ADDRES 0x01
  12. /*错误码*/
  13. #define ERR_FUNC 0x01
  14. #define ERR_OPE_ADDRES 0x02
  15. #define ERR_DATA 0x03
  16. #define ERR_SLAVE 0x04
  17. #define ERR_CRC 0x1F
  18. #define ERR_SLAVE_ADDRES 0x2F
  19. /*modbus帧结构*/
  20. typedef struct Modbus_Frame
  21. {
  22. uint8_t slaveAddres; /*从机地址*/
  23. uint8_t func; /*功能码*/
  24. uint16_t opeAddres; /*操作地址*/
  25. uint16_t opeNum; /*操作数量*/
  26. uint8_t wNum; /*写入字节数*/
  27. uint8_t wData[256]; /*写入数据*/
  28. uint16_t crc; /*CRC校验码*/
  29. }MODBUS_FRAME;
  30. /*接收到数据帧信号量*/
  31. extern OS_EVENT *ModbusReceived;
  32. extern uint8_t ModbusRxBuf[MODBUS_RX_BUF_SIZE]; /*接收数组*/
  33. extern uint16_t ModbusRxLen; /*接收数据长度*/
  34. extern uint8_t ModbusTxBuf[MODBUS_TX_BUF_SIZE]; /*发送数组*/
  35. extern uint16_t ModbusTxLen; /*发送数据长度*/
  36. uint8_t ModbusReadCoils(uint16_t addres, uint16_t num);
  37. uint8_t ModbusWriteCoils(uint16_t addres, uint16_t num, uint8_t *data);
  38. uint8_t ModbusReadRegs(uint16_t addres, uint16_t num);
  39. uint8_t ModbusWriteRegs(uint16_t addres, uint16_t num, uint8_t *data);
  40. uint8_t ModbusWriteReg(uint16_t addres, uint8_t *data);
  41. uint8_t ModbusWriteCoil(uint16_t addres, uint8_t *data);
  42. uint8_t ModbusExtReadOdd(uint16_t num);
  43. uint8_t ModbusErrReply(uint8_t func, uint8_t err);
  44. #endif