sggt/App/MODBUS/Inc/modbus_register_process.h

73 lines
1.7 KiB
C

#ifndef _MODBUS_REGISTER_PROCESS_H_
#define _MODBUS_REGISTER_PROCESS_H_
#include "apps_gather.h"
//自定义线圈寄存器地址
#define COIL_ADDR_ON_OFF 0x00
#define COIL_ADDR_LIGHT 0x01
#define COIL_ADDR_CONFIG_SAVE 0x02
#define COIL_ADDR_CONFIG_RESET 0x03
#define COIL_ADDR_SCREEN_SWITCH 0x04
//自定义离散状态寄存器地址
//自定义保持寄存器地址
#define HOLD_ADDR_SET_WORK_MODE 0x00
#define HOLD_ADDR_MUX_SV_L 0x01
#define HOLD_ADDR_MUX_SV_H 0x02
#define HOLD_ADDR_PHY_UNIT 0x03
#define HOLD_ADDR_PHY_UP 0x04
#define HOLD_ADDR_PHY_LOW 0x05
#define HOLD_ADDR_SAMPLE_INTERVAL 0x06
#define HOLD_ADDR_PLOT_COUNTS 0x07
#define HOLD_ADDR_INPUT_COLOR 0x08
#define HOLD_ADDR_OUTPUT_COLOR 0x09
#define HOLD_ADDR_LANGUAGE 0x0A
//自定义输入寄存器地址
#define INPUT_ADDR_BATTERY 0x00
#define INPUT_ADDR_RUNTIME_SECOND 0x01
#define INPUT_ADDR_RUNTIME_HOUR 0x02
#define INPUT_ADDR_MUX_PV_L 0x03
#define INPUT_ADDR_MUX_PV_H 0x04
//处理modbus寄存器值的更新与写入
void modbus_registers_update(void);
//线圈寄存器,读写
void modbus_reg_update_coil(void);
void coil_deal_ON2OFF(void);
void coil_deal_light(void);
void coil_deal_save(void);
void coil_deal_reset(void);
void coil_deal_screen_switch(void);
//离散输入寄存器,上位机只读
void modbus_reg_update_dis(void);
//保持寄存器,读写
void modbus_reg_update_hold(void);
void hold_deal_set_work_mode(void);
void hold_deal_muxsv(void);
//输入寄存器,上位机只读
void modbus_reg_update_input(void);
//设置线圈寄存器,输入参数:地址、标志位
void set_coil_val(uint8_t addr, uint8_t bit_val);
//获取线圈值,应对上位机修改线圈的情况
uint8_t get_coil_val(uint8_t addr);
#endif