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.
44 lines
1.2 KiB
44 lines
1.2 KiB
|
1 week ago
|
/*
|
||
|
|
* modbus.h
|
||
|
|
*
|
||
|
|
* Created on: Jul 3, 2025
|
||
|
|
* Author: shiyanlei
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef __MODBUS_SLAVE_H
|
||
|
|
#define __MODBUS_SLAVE_H
|
||
|
|
|
||
|
|
#include "stm32g0xx_hal.h"
|
||
|
|
/* 定义Modbus相关参数 */
|
||
|
|
#define MODBUS_SLAVE_ADDRESS 0x42
|
||
|
|
#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 5
|
||
|
|
#define MODBUS_CRC_OFF 0 //==1关闭CRC校验
|
||
|
|
/* 定义寄存器相关参数 */
|
||
|
|
#define REGISTER_START_ADDRESS 0x0000
|
||
|
|
#define REGISTER_COUNT 10
|
||
|
|
extern uint8_t modbusBuffer[MODBUS_BUFFER_SIZE];
|
||
|
|
//extern uint16_t holdingRegisters[REGISTER_COUNT];
|
||
|
|
extern int16_t holdingRegisters[REGISTER_COUNT];
|
||
|
|
#define registerWritable_0 1 //IO_1
|
||
|
|
#define registerWritable_1 1 //IO_2
|
||
|
|
#define registerWritable_2 0 //Encoder
|
||
|
|
#define registerWritable_3 1 //PWM 1-99
|
||
|
|
#define registerWritable_4 0 //Current mA
|
||
|
|
#define registerWritable_5 1 //Zero Encoder
|
||
|
|
#define registerWritable_6 1 //Auto Position Enable
|
||
|
|
#define registerWritable_7 1 //Auto Position Target
|
||
|
|
#define registerWritable_8 0
|
||
|
|
#define registerWritable_9 1 //Auto Position Tolerance
|
||
|
|
|
||
|
|
/* 初始化Modbus从机 */
|
||
|
|
void Modbus_Init(void);
|
||
|
|
|
||
|
|
/* 处理Modbus消息 */
|
||
|
|
void Modbus_Process(void);
|
||
|
|
|
||
|
|
#endif /* __MODBUS_SLAVE_H */
|