2025-10-15 20:37:30 +08:00
|
|
|
|
# 🎛️ 自动控制原理AI+数智平台
|
|
|
|
|
|
|
2026-04-07 01:25:46 +08:00
|
|
|
|
> 交互式控制系统分析与设计工具 | 时域·频域·根轨迹·算例演示·AI问答
|
2025-10-15 20:37:30 +08:00
|
|
|
|
|
2026-04-07 01:25:46 +08:00
|
|
|
|
一个基于 Gradio 构建的现代化自动控制原理学习平台,集成了系统分析工具、完整混动模型算例演示与 AI 智能问答功能。
|
2025-10-15 20:37:30 +08:00
|
|
|
|
|
|
|
|
|
|
## ✨ 核心功能
|
|
|
|
|
|
|
|
|
|
|
|
### 📊 1. 时域分析 (Time Domain Analysis)
|
|
|
|
|
|
|
|
|
|
|
|
- **阶跃响应分析**:观察系统对单位阶跃输入的响应
|
|
|
|
|
|
- **脉冲响应分析**:观察系统对单位脉冲输入的响应
|
|
|
|
|
|
- **性能指标计算**:
|
|
|
|
|
|
- 上升时间 (Rise Time)
|
|
|
|
|
|
- 峰值时间 (Peak Time)
|
|
|
|
|
|
- 超调量 (Overshoot)
|
|
|
|
|
|
- 调节时间 (Settling Time)
|
|
|
|
|
|
- 稳态值 (Steady State Value)
|
|
|
|
|
|
|
|
|
|
|
|
**知识要点**:
|
|
|
|
|
|
- 二阶系统标准形式
|
|
|
|
|
|
- 阻尼比与自然频率参数说明
|
|
|
|
|
|
- 时域性能指标公式
|
|
|
|
|
|
- 稳态误差分析
|
|
|
|
|
|
|
|
|
|
|
|
### 🌊 2. 频域分析 (Frequency Domain Analysis)
|
|
|
|
|
|
|
|
|
|
|
|
- **Bode 图绘制**:幅频特性和相频特性
|
|
|
|
|
|
- **Nyquist 图绘制**:极坐标频率响应
|
|
|
|
|
|
- **稳定裕度计算**:
|
|
|
|
|
|
- 增益裕度 (Gain Margin, GM)
|
|
|
|
|
|
- 相位裕度 (Phase Margin, PM)
|
|
|
|
|
|
- 增益交越频率
|
|
|
|
|
|
- 相角交越频率
|
|
|
|
|
|
- **稳定性评估**:自动判断系统稳定性
|
|
|
|
|
|
|
|
|
|
|
|
**知识要点**:
|
|
|
|
|
|
- 增益裕度与相位裕度定义
|
|
|
|
|
|
- 稳定性判断准则
|
|
|
|
|
|
- 频域指标与时域性能的关系
|
|
|
|
|
|
- Bode 图读数技巧
|
|
|
|
|
|
|
|
|
|
|
|
### 🎯 3. 根轨迹分析 (Root Locus Analysis)
|
|
|
|
|
|
|
|
|
|
|
|
- **根轨迹绘制**:自动绘制完整根轨迹图
|
|
|
|
|
|
- **增益调节**:对数滑块精确调节增益 K
|
|
|
|
|
|
- **极点跟踪**:实时显示当前增益下的闭环极点位置
|
|
|
|
|
|
- **动态视角**:自动调整坐标范围,聚焦关键区域
|
|
|
|
|
|
|
|
|
|
|
|
**知识要点**:
|
|
|
|
|
|
- 根轨迹法基本原理
|
|
|
|
|
|
- 幅值条件与相角条件
|
|
|
|
|
|
- 根轨迹的基本性质(起点、终点、渐近线、分离点)
|
|
|
|
|
|
- s 平面稳定性区域
|
|
|
|
|
|
- 阻尼比等值线
|
|
|
|
|
|
|
2026-04-07 01:25:46 +08:00
|
|
|
|
### 🧪 4. 算例演示 (Case Demo)
|
|
|
|
|
|
|
|
|
|
|
|
- **完整混动模型**:调用 `Model/src/series_hybrid_sim.py` 进行系统级仿真
|
|
|
|
|
|
- **参数化工况**:支持工况模板、仿真时长、步长、SOC、初始发动机功率与缩放系数
|
|
|
|
|
|
- **图文结果**:输出三联图(转速响应/功率分配/电气状态)与关键数据表
|
|
|
|
|
|
- **教学解读**:自动生成指标摘要(最大转速误差、SOC变化、平均功率与燃油流量)
|
|
|
|
|
|
|
|
|
|
|
|
### 🤖 5. AI 智能问答 (Q&A)
|
2025-10-15 20:37:30 +08:00
|
|
|
|
|
|
|
|
|
|
- **专业教学助手**:精通自动控制原理的 AI 教授
|
|
|
|
|
|
- **流式响应**:实时显示 AI 回复过程
|
|
|
|
|
|
- **LaTeX 公式渲染**:完美支持数学公式显示
|
|
|
|
|
|
- **上下文记忆**:支持多轮对话
|
|
|
|
|
|
|
|
|
|
|
|
**支持的 API**:
|
2026-04-07 01:25:46 +08:00
|
|
|
|
- DeepSeek API
|
2025-10-15 20:37:30 +08:00
|
|
|
|
|
|
|
|
|
|
## 🚀 快速开始
|
|
|
|
|
|
|
|
|
|
|
|
### 环境要求
|
|
|
|
|
|
|
2026-04-07 01:25:46 +08:00
|
|
|
|
- Python 3.10+
|
2025-10-15 20:37:30 +08:00
|
|
|
|
- pip 包管理器
|
|
|
|
|
|
|
|
|
|
|
|
### 安装步骤
|
|
|
|
|
|
|
|
|
|
|
|
1. **克隆项目**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
git clone <your-repo-url>
|
|
|
|
|
|
cd AutoControl
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
2. **安装依赖**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-04-07 01:25:46 +08:00
|
|
|
|
pip install -r requirements.txt
|
2025-10-15 20:37:30 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
或使用 conda:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-04-07 01:25:46 +08:00
|
|
|
|
conda create -n autocontrol python=3.10
|
2025-10-15 20:37:30 +08:00
|
|
|
|
conda activate autocontrol
|
2026-04-07 01:25:46 +08:00
|
|
|
|
pip install -r requirements.txt
|
2025-10-15 20:37:30 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
3. **配置 API 密钥**
|
|
|
|
|
|
|
2026-04-07 01:25:46 +08:00
|
|
|
|
编辑 `config.py` 文件中的配置区域:
|
2025-10-15 20:37:30 +08:00
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
# ==================== API 配置 ====================
|
|
|
|
|
|
API_KEY = "your-api-key-here" # 填入您的 DeepSeek API 密钥
|
|
|
|
|
|
API_BASE_URL = "https://api.deepseek.com/v1"
|
|
|
|
|
|
API_MODEL = "deepseek-chat"
|
|
|
|
|
|
API_TYPE = "deepseek" # 或 "gemini"
|
|
|
|
|
|
# ==================================================
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**获取 DeepSeek API 密钥**:
|
|
|
|
|
|
- 访问 https://platform.deepseek.com/api_keys
|
|
|
|
|
|
- 注册并创建 API 密钥
|
|
|
|
|
|
- 复制密钥到配置文件
|
|
|
|
|
|
|
|
|
|
|
|
4. **运行应用**
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
python app.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
或使用 conda 环境:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
conda run -n autocontrol python app.py
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
5. **访问应用**
|
|
|
|
|
|
|
|
|
|
|
|
浏览器自动打开,或手动访问:
|
|
|
|
|
|
```
|
|
|
|
|
|
http://localhost:7860
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 📖 使用指南
|
|
|
|
|
|
|
|
|
|
|
|
### 输入系统传递函数
|
|
|
|
|
|
|
|
|
|
|
|
在任意标签页的输入框中输入传递函数的分子和分母系数:
|
|
|
|
|
|
|
|
|
|
|
|
**示例 1:一阶系统**
|
|
|
|
|
|
```
|
|
|
|
|
|
分子: 1
|
|
|
|
|
|
分母: 1,1
|
|
|
|
|
|
传递函数: G(s) = 1/(s+1)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**示例 2:二阶系统**
|
|
|
|
|
|
```
|
|
|
|
|
|
分子: 4
|
|
|
|
|
|
分母: 1,2,4
|
|
|
|
|
|
传递函数: G(s) = 4/(s²+2s+4)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**示例 3:三阶系统**
|
|
|
|
|
|
```
|
|
|
|
|
|
分子: 1
|
|
|
|
|
|
分母: 1,6,11,6
|
|
|
|
|
|
传递函数: G(s) = 1/(s³+6s²+11s+6)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
**输入格式**:
|
|
|
|
|
|
- 系数从最高次项到常数项
|
|
|
|
|
|
- 用逗号分隔(支持中文或英文逗号)
|
|
|
|
|
|
- 支持小数和负数
|
|
|
|
|
|
- 例如:`1, 2.5, -3, 4` 表示 s³ + 2.5s² - 3s + 4
|
|
|
|
|
|
|
|
|
|
|
|
### 调节系统增益
|
|
|
|
|
|
|
|
|
|
|
|
频域分析和根轨迹分析都支持增益调节:
|
|
|
|
|
|
|
|
|
|
|
|
- **对数滑块**:log₁₀(K) 范围 -1 到 3
|
|
|
|
|
|
- -1 对应 K = 0.1
|
|
|
|
|
|
- 0 对应 K = 1
|
|
|
|
|
|
- 1 对应 K = 10
|
|
|
|
|
|
- 2 对应 K = 100
|
|
|
|
|
|
- 3 对应 K = 1000
|
|
|
|
|
|
|
|
|
|
|
|
- **实时显示**:下方数字框显示实际增益值
|
|
|
|
|
|
- **松开更新**:滑块松开后才更新图表,避免卡顿
|
|
|
|
|
|
|
|
|
|
|
|
### AI 问答技巧
|
|
|
|
|
|
|
|
|
|
|
|
**高效提问方式**:
|
|
|
|
|
|
|
|
|
|
|
|
✅ **好的问题**:
|
|
|
|
|
|
- "请解释 PID 控制器的三个参数如何影响系统性能?"
|
|
|
|
|
|
- "如何根据 Bode 图判断系统的稳定裕度?"
|
|
|
|
|
|
- "为什么阻尼比为 0.707 时系统响应最佳?"
|
|
|
|
|
|
- "推导二阶系统的超调量公式"
|
|
|
|
|
|
|
|
|
|
|
|
❌ **避免的问题**:
|
|
|
|
|
|
- "帮我做作业"(太模糊)
|
|
|
|
|
|
- "这个对吗?"(缺少上下文)
|
|
|
|
|
|
- "答案是什么?"(没有提供问题描述)
|
|
|
|
|
|
|
|
|
|
|
|
**公式显示**:
|
|
|
|
|
|
AI 回复中的数学公式会自动渲染,支持以下格式:
|
|
|
|
|
|
- 行内公式:`$公式$` 或 `\(公式\)`
|
|
|
|
|
|
- 块级公式:`$$公式$$` 或 `\[公式\]`
|
|
|
|
|
|
|
|
|
|
|
|
## 🎨 界面特色
|
|
|
|
|
|
|
|
|
|
|
|
### 现代化设计
|
|
|
|
|
|
|
|
|
|
|
|
- **渐变色标题**:紫色渐变视觉效果
|
|
|
|
|
|
- **卡片式布局**:分组清晰,层次分明
|
|
|
|
|
|
- **可滚动知识卡片**:长文档不占据过多空间
|
|
|
|
|
|
- **可折叠章节**:按需展开知识点
|
|
|
|
|
|
|
|
|
|
|
|
### 响应式交互
|
|
|
|
|
|
|
|
|
|
|
|
- **实时更新**:参数改变即时反映在图表上
|
|
|
|
|
|
- **流式对话**:AI 回复逐字显示
|
|
|
|
|
|
- **标签页联动**:切换标签自动加载数据
|
|
|
|
|
|
- **平滑动画**:按钮悬停、卡片滚动效果
|
|
|
|
|
|
|
|
|
|
|
|
### 知识可视化
|
|
|
|
|
|
|
|
|
|
|
|
- **嵌入式公式**:页面内直接显示 LaTeX 公式
|
|
|
|
|
|
- **表格对比**:性能指标、稳定准则表格化
|
|
|
|
|
|
- **颜色编码**:稳定/不稳定用绿/红色标识
|
|
|
|
|
|
- **图标辅助**:emoji 增强视觉识别
|
|
|
|
|
|
|
|
|
|
|
|
## 🛠️ 技术栈
|
|
|
|
|
|
|
|
|
|
|
|
### 前端框架
|
|
|
|
|
|
- **Gradio 4.x**:快速构建机器学习 Web 界面
|
|
|
|
|
|
- **Custom CSS**:现代化样式定制
|
|
|
|
|
|
|
|
|
|
|
|
### 计算库
|
|
|
|
|
|
- **NumPy**:数值计算
|
|
|
|
|
|
- **python-control**:控制系统分析
|
|
|
|
|
|
- **Matplotlib**:图表绘制
|
|
|
|
|
|
|
|
|
|
|
|
### AI 集成
|
|
|
|
|
|
- **aiohttp**:异步 HTTP 请求
|
|
|
|
|
|
- **DeepSeek API**:智能问答后端
|
|
|
|
|
|
- **流式响应**:提升用户体验
|
|
|
|
|
|
|
|
|
|
|
|
## 📁 项目结构
|
|
|
|
|
|
|
2026-04-07 01:25:46 +08:00
|
|
|
|
```text
|
|
|
|
|
|
AutoControlCourse/
|
|
|
|
|
|
├── app.py # Gradio 入口与事件绑定
|
|
|
|
|
|
├── ui_components.py # 各标签页 UI 组件
|
|
|
|
|
|
├── analysis_functions.py # 时域/频域/根轨迹计算
|
|
|
|
|
|
├── case_demo_functions.py # 算例演示模块(调用 Model)
|
|
|
|
|
|
├── chatbot.py # AI 问答
|
|
|
|
|
|
├── user_stats.py # 在线人数统计
|
|
|
|
|
|
├── config.py # API 与运行配置
|
|
|
|
|
|
├── Model/
|
|
|
|
|
|
│ ├── src/ # 混动模型核心代码
|
|
|
|
|
|
│ └── data/ # 运行所需模型权重与数据
|
|
|
|
|
|
└── requirements.txt # 依赖列表
|
2025-10-15 20:37:30 +08:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 🔧 高级配置
|
|
|
|
|
|
|
2026-04-07 01:25:46 +08:00
|
|
|
|
### 算例演示说明
|
2025-10-15 20:37:30 +08:00
|
|
|
|
|
2026-04-07 01:25:46 +08:00
|
|
|
|
- 仿真时长是模型时间,不等于程序实际等待时间
|
|
|
|
|
|
- 电池功率符号定义:正值放电,负值充电
|
|
|
|
|
|
- 若参数超限,程序会在安全范围内自动裁剪
|
2025-10-15 20:37:30 +08:00
|
|
|
|
|
|
|
|
|
|
### 自定义系统提示词
|
|
|
|
|
|
|
|
|
|
|
|
修改 `chat_with_ai` 函数中的 `system_prompt`:
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
system_prompt = """
|
|
|
|
|
|
你是一位[角色定义]。
|
|
|
|
|
|
请用[语言风格]来回答有关[领域]的问题。
|
|
|
|
|
|
[其他要求...]
|
|
|
|
|
|
"""
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 调整图表样式
|
|
|
|
|
|
|
|
|
|
|
|
在 `matplotlib` 绘图代码中修改:
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
# 修改图表大小
|
|
|
|
|
|
fig, ax = plt.subplots(figsize=(12, 6))
|
|
|
|
|
|
|
|
|
|
|
|
# 修改颜色主题
|
|
|
|
|
|
ax.plot(x, y, color='#667eea', linewidth=2)
|
|
|
|
|
|
|
|
|
|
|
|
# 修改网格样式
|
|
|
|
|
|
ax.grid(True, alpha=0.3, linestyle='--')
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## 📚 参考资料
|
|
|
|
|
|
|
|
|
|
|
|
### 经典教材
|
|
|
|
|
|
- 《自动控制原理》- 胡寿松
|
|
|
|
|
|
- 《现代控制工程》- Katsuhiko Ogata
|
|
|
|
|
|
- 《反馈控制理论》- John Doyle
|
|
|
|
|
|
|
|
|
|
|
|
### 在线资源
|
|
|
|
|
|
- [python-control 官方文档](https://python-control.readthedocs.io/)
|
|
|
|
|
|
- [DeepSeek API 文档](https://platform.deepseek.com/docs)
|
|
|
|
|
|
- [Gradio 官方文档](https://www.gradio.app/docs)
|
|
|
|
|
|
|
|
|
|
|
|
## 🤝 贡献指南
|
|
|
|
|
|
|
|
|
|
|
|
欢迎提交 Issue 和 Pull Request!
|
|
|
|
|
|
|
|
|
|
|
|
### 贡献方向
|
|
|
|
|
|
- 🐛 修复 Bug
|
|
|
|
|
|
- ✨ 添加新功能(如状态空间分析)
|
|
|
|
|
|
- 📝 改进文档
|
|
|
|
|
|
- 🎨 优化界面设计
|
|
|
|
|
|
- 🧪 添加测试用例
|
|
|
|
|
|
|
|
|
|
|
|
## 📄 许可证
|
|
|
|
|
|
|
|
|
|
|
|
本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。
|
|
|
|
|
|
|
|
|
|
|
|
## 🙏 致谢
|
|
|
|
|
|
|
|
|
|
|
|
- **Gradio**:提供优秀的 Web 界面框架
|
|
|
|
|
|
- **python-control**:强大的控制系统分析库
|
|
|
|
|
|
- **DeepSeek**:高质量的 AI 服务
|
|
|
|
|
|
- 所有贡献者和使用者
|
|
|
|
|
|
|
|
|
|
|
|
## 📞 联系方式
|
|
|
|
|
|
|
|
|
|
|
|
- 项目地址:[GitHub Repository URL]
|
|
|
|
|
|
- 问题反馈:[Issues URL]
|
|
|
|
|
|
- 邮箱:[your-email@example.com]
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
**⭐ 如果这个项目对您有帮助,请给它一个 Star!**
|
|
|
|
|
|
|
2026-04-07 01:25:46 +08:00
|
|
|
|
最后更新:2026年4月7日
|