You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
61 lines
1.5 KiB
|
4 days ago
|
/*
|
||
|
|
* modbus.h
|
||
|
|
*
|
||
|
|
* Created on: Jul 3, 2025
|
||
|
|
* Author: shiyanlei
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef __MODBUS_SLAVE_H
|
||
|
|
#define __MODBUS_SLAVE_H
|
||
|
|
|
||
|
|
#include "stm32g4xx_hal.h"
|
||
|
|
/* 定义Modbus相关参数 */
|
||
|
|
#define MODBUS_SLAVE_ADDRESS 0x34
|
||
|
|
#define MODBUS_FUNCTION_CODE_03 0x03
|
||
|
|
#define MODBUS_FUNCTION_CODE_06 0x06
|
||
|
|
#define MODBUS_FUNCTION_CODE_10 0x10 // 写多个寄存器功能码
|
||
|
|
#define MODBUS_BUFFER_SIZE 256
|
||
|
|
#define MODBUS_TIMEOUT_MS 2
|
||
|
|
#define MODBUS_CRC_OFF 0 //==1关闭CRC校验
|
||
|
|
/* 定义寄存器相关参数 */
|
||
|
|
#define REGISTER_START_ADDRESS 0x0000
|
||
|
|
//#define REGISTER_COUNT 10
|
||
|
|
#define REGISTER_COUNT 12
|
||
|
|
|
||
|
|
extern uint16_t holdingRegisters[REGISTER_COUNT];
|
||
|
|
extern uint8_t RS485_1_RX;
|
||
|
|
extern uint8_t RS485_1_Host_Existed;
|
||
|
|
|
||
|
|
#define registerWritable_0 1
|
||
|
|
#define registerWritable_1 1
|
||
|
|
#define registerWritable_2 1
|
||
|
|
#define registerWritable_3 1
|
||
|
|
#define registerWritable_4 1
|
||
|
|
#define registerWritable_5 1
|
||
|
|
#define registerWritable_6 1
|
||
|
|
#define registerWritable_7 1
|
||
|
|
#define registerWritable_8 1
|
||
|
|
#define registerWritable_9 1
|
||
|
|
#define registerWritable_10 1
|
||
|
|
#define registerWritable_11 1
|
||
|
|
|
||
|
|
|
||
|
|
//holdingRegisters[0]= motor_cmd //0:stop 1:forward 2:reverse
|
||
|
|
//holdingRegisters[1]= HX711_A_F //int16_t 10g
|
||
|
|
//holdingRegisters[2]= HX711_K //uint16_t
|
||
|
|
//holdingRegisters[3]= HX711_D //int16_t 1g
|
||
|
|
//holdingRegisters[4]= HX711_B_F //int16_t 10g
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
extern void MB_WriteHoldingReg(uint8_t _addr,
|
||
|
|
uint16_t _reg, uint16_t _data);
|
||
|
|
|
||
|
|
/* 初始化Modbus从机 */
|
||
|
|
void Modbus_Init(void);
|
||
|
|
|
||
|
|
/* 处理Modbus消息 */
|
||
|
|
void Modbus_Process(void);
|
||
|
|
|
||
|
|
#endif /* __MODBUS_SLAVE_H */
|