Skip to content

通过整合LangChain、大语言模型(LLM)、FastAPI和Streamlit,我们打造了一个直观、高效的PID参数调优平台

Notifications You must be signed in to change notification settings

mcp2everything/PID-agent

Repository files navigation

PID-Agent: 智能PID参数调优助手

项目简介

PID-Agent是一个创新的智能PID控制系统优化工具,它结合了传统PID控制理论与现代人工智能技术。通过整合LangChain、大语言模型(LLM)、FastAPI和Streamlit,我们打造了一个直观、高效的PID参数调优平台,实现了温度控制系统的智能化与可视化。

System Architecture

核心特性

🤖 智能调参

  • AI驱动优化: 利用LangChain和大语言模型分析温度曲线,提供专业的PID参数优化建议
  • 自适应调节: 根据系统响应特性,自动调整控制参数
  • 专家级分析: 提供详细的性能指标分析和优化建议

📊 实时监控

  • 动态曲线: 实时绘制温度变化曲线
  • 参数跟踪: 监控PID参数变化及其影响
  • 性能指标: 显示响应时间、超调量、稳态误差等关键指标

🔧 硬件集成

  • 串口通信: 支持多达16个独立控制通道
  • 实时数据: 毫秒级数据采集和处理
  • 即时控制: 参数修改实时同步到硬件

💻 用户界面

  • 可视化控制: 基于Streamlit的直观操作界面
  • 实时反馈: 即时查看系统响应和控制效果
  • 数据导出: 支持历史数据导出和分析

技术栈

  • 前端: Streamlit

    • 实时数据可视化
    • 交互式参数调节
    • 系统状态监控
  • 后端: FastAPI

    • RESTful API设计
    • 异步数据处理
    • WebSocket实时通信
  • AI引擎: LangChain + LLM

    • 智能参数优化
    • 性能分析
    • 优化建议生成
  • 硬件通信: PySerial

    • 多通道支持
    • 实时数据采集
    • 可靠的命令传输

应用场景

  • 工业加热控制

    • 精密温度控制
    • 多区域协同控制
    • 生产过程优化
  • 实验室设备

    • 精确温度控制
    • 实验数据记录
    • 参数优化研究
  • 教育培训

    • PID控制原理演示
    • 参数调节实践
    • 系统响应分析

创新特点

  1. AI辅助决策

    • 智能分析系统响应
    • 自动生成优化建议
    • 持续学习改进
  2. 全流程可视化

    • 实时温度曲线
    • 参数影响分析
    • 性能指标跟踪
  3. 灵活配置

    • 多通道独立控制
    • 参数范围可调
    • 控制策略可配置
  4. 用户友好

    • 直观的操作界面
    • 清晰的数据展示
    • 详细的优化建议

技术优势

  1. 实时性能

    • 毫秒级数据采集
    • 实时参数调整
    • 即时响应分析
  2. 可扩展性

    • 模块化设计
    • 易于集成
    • 支持多种硬件
  3. 可靠性

    • 异常处理机制
    • 数据备份恢复
    • 稳定性保障
  4. 智能化

    • AI辅助优化
    • 自适应调节
    • 专家经验积累

未来展望

  1. 深度学习增强

    • 引入预测控制
    • 优化策略学习
    • 智能故障诊断
  2. 功能扩展

    • 多参数协同优化
    • 高级控制策略
    • 远程监控管理
  3. 生态建设

    • 开源社区建设
    • 应用案例分享
    • 技术经验交流

配置

  1. 复制配置模板文件:
cp .env.example .env
  1. 编辑 .env 文件,设置必要的配置项:
  • SERIAL_PORT: 串口设备路径
  • BAUD_RATE: 串口波特率
  • API_PORT: FastAPI服务端口
  • STREAMLIT_PORT: Streamlit前端端口
  • DEEPSEEK_API_KEY: apikey

修改config/llm_config.yaml 输入deepseek的apikey 用于知识库检索

  1. 安装依赖
pip install uv
uv pip install -r requirments.txt

启动服务

  1. 启动后端API服务:
uvicorn fastapi_app.main:app --reload --port 8000
  1. 启动Streamlit前端面板:
streamlit run streamlit_app/main.py

$ pkill -f "uvicorn fastapi_app.main:app"; pkill -f "streamlit run streamlit_app/main.py"

这个演示程序包含以下功能:

生成模拟的温度数据,模拟了一个典型的 PID 控制响应曲线,包括: 指数上升部分(系统响应) 衰减振荡(PID 控制特性) 随机噪声(真实系统中的干扰) 创建一个模拟的系统状态,包含: 当前的 PID 参数(Kp、Ki、Kd) 目标温度 时间戳 使用 PIDAgent 分析系统状态并获取优化建议,输出: 温度曲线分析结果(上升时间、超调量等指标) AI 生成的 PID 参数优化建议 您可以直接运行这个文件来测试 PIDAgent 的功能: python -m core.agent.pid_agent

串口通信协议

系统使用JSON格式进行串口通信,支持多达16个独立的温度控制通道。

1. 数据格式

1.1 设备 -> 主机(温度数据)

{
    "channels": [
        {
            "id": 0,
            "temperature": 25.0,
            "pid_params": {
                "kp": 1.0,
                "ki": 0.1,
                "kd": 0.05,
                "target_temp": 25.0
            },
            "heating": true
        },
        // ... 最多16个通道
    ],
    "timestamp": "2025-01-31T20:53:34",
    "status": "running"
}

字段说明:

  • channels: 通道数组,每个通道包含:
    • id: 通道ID(0-15)
    • temperature: 当前温度
    • pid_params: 当前PID参数
      • kp: 比例系数
      • ki: 积分系数
      • kd: 微分系数
      • target_temp: 目标温度
    • heating: 是否正在加热
  • timestamp: 数据时间戳
  • status: 系统状态(running/error)

2. 控制命令

2.1 设置PID参数

PID:<channel>,<kp>,<ki>,<kd>,<target_temp>,<control_period>,<max_duty>\n
示例:PID:0,1.0,0.1,0.05,25.0,100,60\n
参数说明:
- channel: 通道ID(0-15)
- kp: 比例系数
- ki: 积分系数
- kd: 微分系数
- target_temp: 目标温度
- control_period: PID控制周期(毫秒),范围[10, 1000]
- max_duty: 最大占空比(%),范围[0, 100]

2.2 控制加热

开始加热:HEAT_ON:<channel>\n
停止加热:HEAT_OFF:<channel>\n
示例:
HEAT_ON:0  # 开始加热通道0
HEAT_OFF:0 # 停止加热通道0

3. 错误处理

  • 如果接收到无效的JSON数据,系统将返回一个包含所有通道默认值的数据包
  • 通道ID超出范围(0-15)的命令将被忽略
  • 所有浮点数参数都会被限制在合理范围内:
    • kp: [0.1, 100.0]
    • ki: [0.0, 10.0]
    • kd: [0.0, 10.0]
    • temperature: [-273.15, 1000.0]

4. 通信参数

  • 波特率:根据配置文件设置(默认9600)
  • 数据位:8
  • 停止位:1
  • 校验位:无
  • 流控制:无
  • 行结束符:\n(LF)

总结

PID-Agent代表了传统控制理论与现代AI技术的完美结合,为工业控制、实验室研究等领域提供了一个智能、高效、易用的PID调优解决方案。通过持续的技术创新和实践应用,我们期待与用户一起探索更多可能性,推动控制技术的进步与发展。

About

通过整合LangChain、大语言模型(LLM)、FastAPI和Streamlit,我们打造了一个直观、高效的PID参数调优平台

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages