你需要准备什么
Python 3.10+、`pip`,以及一枚可用的 DeepSeek API key。
Automatically-adjust-PID-parameters 用来根据控制响应数据给出下一轮 PID 参数建议。第一次使用时,先跑本地分析,再跑仿真,最后再接在线模式。
Python 3.10+、`pip`,以及一枚可用的 DeepSeek API key。
看帮助、分析 CSV、跑仿真、导出 C 参数。
只有在线模式需要 MCU 持续发送 `DATA:` 并接收 `PID:`。
先本地分析,再仿真,再监看串口,最后在线调参。这样更容易判断问题到底出在数据、API key、串口还是设备本身。
串口联调、数据采集、离线分析和在线调参是连在一起的。STM32 参考代码已经把 UART 句柄、引脚和环名字提成了宏。
参数上下限、单次变化率、历史记录、人工确认和 ACK 确认都放在前面,适合真实设备联调。
git clone https://github.com/Zw-awa/Automatically-adjust-PID-parameters.git cd Automatically-adjust-PID-parameters python -m pip install --upgrade pip pip install -r requirements.txt
建议直接用这里的安装方式,不要自己换一套命令。
先复制示例配置,再改你自己的本地配置。
copy config.example.json config.json
DEEPSEEK_API_KEY。如果你写进 config.json 也可以。
COM3。如果你要接在线模式,记得改成自己电脑上的实际串口。
第一次使用时,最值得先跑的是本地分析,因为它不依赖串口和 MCU。
python scripts/offline_analyze.py --file data/raw/example_speed_data.csv
仿真模式会先生成软件响应,再继续走调参流程。
python main.py simulate --loop speed --iterations 1
如果 API key 还没配好,这一步可能会在最后的 LLM 调用时报 401。先看前面的分析输出是否正常。
在线模式前,先确认 MCU 已经持续发送正确的串口数据。
python main.py online --port COM3 --loop speed --interval 10
如果你要接 STM32,先按 docs/mcu_reference.c 把协议打通,再替换成你自己的控制逻辑。
MCU -> PC DATA:speed:1.2345,100.0,95.3,-4.7,85.2 PC -> MCU PID:speed:0.800000,0.150000,0.030000 MCU -> PC ACK:speed:0.800000,0.150000,0.030000 MCU -> PC INFO:PID parameters updated successfully
参考文件里已经把 UART 句柄、TX/RX 引脚和环名字写成了宏,直接改顶部宏定义就能换到你的工程。
通常是 API key 无效、没配置,或者程序没有读到 key。
通常先检查端口号、波特率,以及是否被其他软件占用。
通常先检查 MCU 是否持续发送 `DATA:`,再检查 `loop` 名称是否一致。