2025-10-20 00:23:45 +08:00
2025-10-19 13:51:48 +08:00
2025-10-19 23:09:24 +08:00
2025-10-19 23:09:24 +08:00

🎛️ 自动控制原理AI+数智平台

交互式控制系统分析与设计工具 | 时域·频域·根轨迹·算例演示·AI问答

一个基于 Gradio 构建的现代化自动控制原理学习平台,集成了系统分析工具、完整混动模型算例演示与 AI 智能问答功能。

核心功能

📊 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 平面稳定性区域
  • 阻尼比等值线

🧪 4. 算例演示 (Case Demo)

  • 完整混动模型:调用 Model/src/series_hybrid_sim.py 进行系统级仿真
  • 参数化工况:支持工况模板、仿真时长、步长、SOC、初始发动机功率与缩放系数
  • 图文结果:输出三联图(转速响应/功率分配/电气状态)与关键数据表
  • 教学解读:自动生成指标摘要(最大转速误差、SOC变化、平均功率与燃油流量)

🤖 5. AI 智能问答 (Q&A)

  • 专业教学助手:精通自动控制原理的 AI 教授
  • 流式响应:实时显示 AI 回复过程
  • LaTeX 公式渲染:完美支持数学公式显示
  • 上下文记忆:支持多轮对话

支持的 API

  • DeepSeek API

🚀 快速开始

环境要求

  • Python 3.10+
  • pip 包管理器

安装步骤

  1. 克隆项目
git clone <your-repo-url>
cd AutoControl
  1. 安装依赖
pip install -r requirements.txt

或使用 conda

conda create -n autocontrol python=3.10
conda activate autocontrol
pip install -r requirements.txt
  1. 配置 API 密钥

编辑 config.py 文件中的配置区域:

# ==================== 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 密钥

  1. 运行应用
python app.py

或使用 conda 环境:

conda run -n autocontrol python app.py
  1. 访问应用

浏览器自动打开,或手动访问:

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:智能问答后端
  • 流式响应:提升用户体验

📁 项目结构

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           # 依赖列表

🔧 高级配置

算例演示说明

  • 仿真时长是模型时间,不等于程序实际等待时间
  • 电池功率符号定义:正值放电,负值充电
  • 若参数超限,程序会在安全范围内自动裁剪

自定义系统提示词

修改 chat_with_ai 函数中的 system_prompt

system_prompt = """
你是一位[角色定义]。
请用[语言风格]来回答有关[领域]的问题。
[其他要求...]
"""

调整图表样式

matplotlib 绘图代码中修改:

# 修改图表大小
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

在线资源

🤝 贡献指南

欢迎提交 Issue 和 Pull Request

贡献方向

  • 🐛 修复 Bug
  • 添加新功能(如状态空间分析)
  • 📝 改进文档
  • 🎨 优化界面设计
  • 🧪 添加测试用例

📄 许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

🙏 致谢

  • Gradio:提供优秀的 Web 界面框架
  • python-control:强大的控制系统分析库
  • DeepSeek:高质量的 AI 服务
  • 所有贡献者和使用者

📞 联系方式


如果这个项目对您有帮助,请给它一个 Star!

最后更新:2026年4月7日

S
Description
No description provided
Readme MIT
3 MiB
Languages
Python 97%
CSS 2.8%
Dockerfile 0.2%