Files
ch32v003-ext-board/modbus.h

27 lines
921 B
C

#ifndef __MODBUS_H
#define __MODBUS_H
#include <stdint.h>
// function codes
#define MODBUS_FC_READ_HOLDING_REGISTERS 0x03
#define MODBUS_FC_WRITE_SINGLE_REGISTER 0x06
#define MODBUS_FC_WRITE_MULTIPLE_REGISTERS 0x10
// errors
#define MODBUS_ERROR_NONE 0x00
#define MODBUS_ERROR_FUNCTION 0x01
#define MODBUS_ERROR_ADDRESS 0x02
#define MODBUS_ERROR_VALUE 0x03
uint8_t modbus_process_message(uint8_t *buf, uint16_t len, uint8_t slave_addr,
uint16_t *holding_registers,
uint16_t num_registers);
uint16_t modbus_create_response(uint8_t *response, uint8_t slave_addr,
uint8_t function, uint16_t address,
uint16_t value);
uint16_t modbus_create_error_response(uint8_t *response, uint8_t slave_addr,
uint8_t function, uint8_t error_code);
#endif // __MODBUS_H