# PIDAgent **Repository Path**: ailist/PIDAgent ## Basic Information - **Project Name**: PIDAgent - **Description**: 通过整合LangChain、大语言模型(LLM)、FastAPI和Streamlit,我们打造了一个直观、高效的PID参数调优平台 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2025-02-16 - **Last Updated**: 2025-04-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PID-Agent: 智能PID参数调优助手 ## 项目简介 PID-Agent是一个创新的智能PID控制系统优化工具,它结合了传统PID控制理论与现代人工智能技术。通过整合LangChain、大语言模型(LLM)、FastAPI和Streamlit,我们打造了一个直观、高效的PID参数调优平台,实现了温度控制系统的智能化与可视化。 ![System Architecture](https://via.placeholder.com/800x400?text=PID-Agent+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. 复制配置模板文件: ```bash cp .env.example .env ``` 2. 编辑 `.env` 文件,设置必要的配置项: - `SERIAL_PORT`: 串口设备路径 - `BAUD_RATE`: 串口波特率 - `API_PORT`: FastAPI服务端口 - `STREAMLIT_PORT`: Streamlit前端端口 - `DEEPSEEK_API_KEY`: apikey 修改config/llm_config.yaml 输入deepseek的apikey 用于知识库检索 3. 安装依赖 ```bash pip install uv uv pip install -r requirments.txt ``` ## 启动服务 1. 启动后端API服务: ```bash uvicorn fastapi_app.main:app --reload --port 8000 ``` 2. 启动Streamlit前端面板: ```bash 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 设备 -> 主机(温度数据) ```json { "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:,,,,,,\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:\n 停止加热:HEAT_OFF:\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调优解决方案。通过持续的技术创新和实践应用,我们期待与用户一起探索更多可能性,推动控制技术的进步与发展。