# config.py 函数文档

系统配置管理模块，负责所有系统参数的存储和加载。

## Config 类

### 配置地址映射
```python
dicParamAddr = {
    # 测试参数
    "SET_TestTime": 0x003D,  # 测试时间
    "SetTempra": 0x003C,     # 设定温度

    # 流量设置 (Flow01-Flow12)
    "Flow01": 0x0030,        # 流量1设定值
    "Flow02": 0x0031,        # 流量2设定值
    ...
    "Flow12": 0x003B,        # 流量12设定值

    # PID控制参数
    "KP1": 0x0060,          # 比例系数1
    "KP2": 0x0061,          # 比例系数2
    "KI1": 0x0062,          # 积分系数1
    "KI2": 0x0063,          # 积分系数2
    "KD1": 0x0064,          # 微分系数1
    "KD2": 0x0065,          # 微分系数2
    "KD3": 0x0066,          # 微分系数3
    "KD4": 0x0067,          # 微分系数4

    # 流量校准参数k (Flow01_k-Flow12_k)
    "Flow01_k": 0x0050,     # 流量1校准系数k
    "Flow02_k": 0x0051,     # 流量2校准系数k
    ...
    "Flow12_k": 0x005B,     # 流量12校准系数k

    # 流量校准参数b (Flow01_b-Flow12_b)
    "Flow01_b": 0x0040,     # 流量1校准偏移b
    "Flow02_b": 0x0041,     # 流量2校准偏移b
    ...
    "Flow12_b": 0x004B,     # 流量12校准偏移b

    # 温度校准参数
    "Tempr_b": 0x004C,      # 温度偏移
    "Tempra_k": 0x005C      # 温度系数
}
```

### 初始化
```python
def __init__(self, ee: EEPROM)
```
- **功能**: 初始化配置对象
- **参数**: 
  - ee: EEPROM实例
- **初始化内容**:
  - 测试参数默认值
  - 流量设置默认值
  - PID控制参数默认值
  - 校准参数默认值
  - 从EEPROM加载保存的值

### 参数存储

#### save_param(self, ee: EEPROM)
```python
def save_param(self, ee: EEPROM)
```
- **功能**: 保存所有参数到EEPROM
- **参数**: 
  - ee: EEPROM实例
- **实现特性**:
  - 使用反射机制自动保存
  - 16位有符号整数处理
  - 地址自动映射
  - 调试信息输出
- **存储格式**:
  - 每个参数占用2字节
  - 地址按字对齐

#### load_param(self, ee: EEPROM)
```python
def load_param(self, ee: EEPROM)
```
- **功能**: 从EEPROM加载所有参数
- **参数**: 
  - ee: EEPROM实例
- **实现特性**:
  - 使用反射机制自动加载
  - 16位有符号整数处理
  - 地址自动映射
  - 静默加载（无调试输出）

## 参数说明

### 测试参数
- **SET_TestTime**: 测试时间设置
- **SetTempra**: 目标温度设置

### 流量参数
- **Flow01-Flow12**: 12路流量设定值
- **Flow01_k-Flow12_k**: 12路流量校准系数k
- **Flow01_b-Flow12_b**: 12路流量校准偏移b

### 控制参数
- **KP1,KP2**: 比例系数
- **KI1,KI2**: 积分系数
- **KD1-KD4**: 微分系数

### 温度校准
- **Tempr_b**: 温度偏移值
- **Tempra_k**: 温度系数

## 使用示例

### 基本使用
```python
from eeprom import EEPROM
from config import Config

# 创建配置实例
eeprom = EEPROM()
config = Config(eeprom)

# 修改参数
config.SetTempra = 800    # 设置温度为80.0度
config.Flow01 = 1000      # 设置流量1为100.0
config.KP1 = 320         # 设置比例系数

# 保存配置
config.save_param(eeprom)

# 加载配置
config.load_param(eeprom)
```

### 批量参数设置
```python
# 设置所有流量为相同值
flow_value = 500
for i in range(1, 13):
    setattr(config, f"Flow{i:02d}", flow_value)

# 保存更改
config.save_param(eeprom)
```

## 参数范围建议

1. 流量设置
   - 范围: 0-65535
   - 单位: 0.1ml/min
   - 默认值: 500 (50.0ml/min)

2. 温度设置
   - 范围: 0-65535
   - 单位: 0.1℃
   - 默认值: 500 (50.0℃)

3. PID参数
   - KP: 比例系数 (0-65535)
   - KI: 积分时间 (0-65535)
   - KD: 微分时间 (0-65535)

4. 校准参数
   - k系数: 0.01为单位
   - b偏移: 0.1为单位

## 注意事项

1. 数据存储
   - 所有参数以16位有符号整数存储
   - 地址按字对齐
   - 参数修改后需显式保存

2. 参数范围
   - 注意参数上下限
   - 避免超出物理意义范围
   - 考虑数值精度

3. 性能优化
   - 批量修改后统一保存
   - 避免频繁存储
   - 合理使用加载功能

4. 调试建议
   - 使用save_param的调试输出
   - 验证加载值正确性
   - 监控异常参数

5. 扩展性
   - 参数地址预留空间
   - 支持动态参数添加
   - 保持向后兼容性
