109 lines
2.9 KiB
C
109 lines
2.9 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 COIL_ADDR_HOLD_SV_CTRL 0x05
|
||
#define COIL_ADDR_HOLD_SV_ENSURE 0x06
|
||
|
||
//自定义离散状态寄存器地址
|
||
|
||
//自定义保持寄存器地址
|
||
#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 set_coil_val(uint8_t addr, uint8_t bit_val);
|
||
|
||
//获取线圈值,应对上位机修改线圈的情况
|
||
uint8_t get_coil_val(uint8_t addr);
|
||
|
||
//线圈寄存器,处理主界面的ON&OFF事件
|
||
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 hold_deal_range_type(void);
|
||
|
||
//保持寄存器,处理量程修改事件,修改当前选择的物理量的量程上限
|
||
void hold_deal_range_max(void);
|
||
|
||
//保持寄存器,处理量程修改事件,修改当前选择的物理量的量程下限
|
||
void hold_deal_range_min(void);
|
||
|
||
//保持寄存器,处理采样间隔修改事件
|
||
void hold_deal_sample_interval(void);
|
||
|
||
//保持寄存器,处理描点数量修改事件
|
||
void hold_deal_plot_counts(void);
|
||
|
||
//保持寄存器,处理输入曲线&图例颜色修改事件
|
||
void hold_deal_color_input(void);
|
||
|
||
//保持寄存器,处理输出曲线&图例颜色修改事件
|
||
void hold_deal_color_output(void);
|
||
|
||
//保持寄存器,处理语言选择事件
|
||
void hold_deal_language_select(void);
|
||
|
||
//输入寄存器,上位机只读
|
||
void modbus_reg_update_input(void);
|
||
|
||
|
||
|
||
|
||
#endif
|
||
|
||
|