62 lines
1.1 KiB
C
62 lines
1.1 KiB
C
#ifndef _MODBUS_H
|
|
#define _MODBUS_H
|
|
|
|
#include <stdint.h>
|
|
|
|
#define SLAVE_ID_DEFAULT (1u)
|
|
#define MODBUS_SLAVE_ID 0
|
|
#define MODBUS_FUN_CODE 1
|
|
#define MODBUS_START_ADDR_H 2
|
|
#define MODBUS_START_ADDR_L 3
|
|
#define MODBUS_SIZE_H 4
|
|
#define MODBUS_SIZE_L 5
|
|
|
|
#define MODBUS_06_VAL_H 4
|
|
#define MODBUS_06_VAL_L 5
|
|
|
|
|
|
typedef enum {
|
|
MODBUS_STATUS_OK,
|
|
MODBUS_STATUS_ERR
|
|
} ModbusStatus_t;
|
|
|
|
|
|
ModbusStatus_t modbus_process(const uint8_t * buffer_cmd, uint8_t recv_len, uint8_t * buffer_resp, uint8_t * resp_len);
|
|
|
|
|
|
|
|
typedef struct {
|
|
uint8_t slaveAddr;
|
|
uint8_t funCode;
|
|
uint16_t startAddr;
|
|
uint16_t num;
|
|
uint16_t crc;
|
|
} ModbusFrameCmd03_t;
|
|
|
|
typedef struct {
|
|
uint8_t slaveAddr;
|
|
uint8_t funCode;
|
|
uint8_t byteNum;
|
|
uint16_t data[125];
|
|
uint16_t crc;
|
|
} ModbusFrameRes03_t;
|
|
|
|
/* 06功能码命令和响应格式一样 */
|
|
typedef struct {
|
|
uint8_t slaveAddr;
|
|
uint8_t funCode;
|
|
uint16_t regAddr;
|
|
uint16_t regValue;
|
|
uint16_t crc;
|
|
} ModbusFrameCmdRes06_t;
|
|
|
|
typedef struct {
|
|
|
|
} ModbusFrameCmd0A_t;
|
|
|
|
typedef struct {
|
|
|
|
} ModbusFrameRes0A_t;
|
|
|
|
#endif
|