下载后如何复现
一份面向第一次使用本项目的操作指南:准备软件、解压模型、运行测试、修改工况和生成报告。
准备软件
已验证环境为 Windows、MATLAB R2024b、Simulink、Simscape Electrical Specialized Power Systems。FFT 脚本不依赖 Signal Processing Toolbox。
模型和脚本不包含 MathWorks 软件。使用其他版本时,需要先检查模型所需库能否加载,不能只凭 MATLAB 版本较新就推断兼容。
下载并解压
到 下载中心 获取 cstp-phase1-v1.0.zip。解压到一个可写目录,例如 D:\CSTP\phase1。不要在压缩包内双击运行,也不要只复制一个 m 文件。
phase1/
├─ README.md
├─ RIGHTS.md
├─ SHA256SUMS.txt
├─ report_package/
│ └─ pmsm_base.slx
├─ validation_2to50_20260915/
│ ├─ START_HERE.m
│ ├─ run_report.m
│ ├─ report_config.m
│ ├─ current_thd.m
│ ├─ speed_metrics.m
│ ├─ plot_report.m
│ └─ write_report.m
└─ reference_results/
├─ speed_metrics.csv
├─ current_thd.csv
├─ load_disturbance.csv
└─ figures/
reference_results 是用于核对的已归档结果。运行输出写到测试目录的 results,不会覆盖参考表。
打开基础模型
在 MATLAB 命令行执行,路径替换为实际解压位置:
cd('D:\CSTP\phase1');
open_system(fullfile(pwd,'report_package','pmsm_base.slx'));
观察主图,在 ω、Id、Iq 子系统中查看 PI。需要看封装内部时右键选择 Look Under Mask。首先理解信号走向,不急于修改参数。
模型 SHA256 应为:
F1ABE0F7CF758BB709CFB0C25818CAF83E7E1A524A470EA0A01F92D6FE695E81
Windows PowerShell 可使用 Get-FileHash .\report_package\pmsm_base.slx -Algorithm SHA256 核对。
一次运行 9 项测试
先保存并关闭自己正在编辑的实验模型,保持基础模型不变。进入解压目录的测试文件夹:
cd('D:\CSTP\phase1\validation_2to50_20260915');
run_report;
也可以打开 START_HERE.m,按 F5。脚本会加载基础模型、复制为临时测试模型,然后依次进行动态对比、THD 和负载扰动。
计算期间 MATLAB 会输出 DYNAMIC、STEADY 等进度。运行时长取决于电脑;PDF 导出可能较慢。默认图形在后台生成,未弹出窗口不代表失败。
检查运行成功
公开发布前,我们已把下载 ZIP 解压到独立目录,在 R2024b 完整运行 9 项测试。12 / 15 / 3 条 CSV 记录与参考归档的数值最大差异均为 0,运行后模型哈希保持一致。这验证的是本机独立目录复现,不意味着所有操作系统或 MATLAB 版本都已验证。
正常结束后,命令行输出 Finished. Results: 与目录。工作区出现:
pmsm_results:结果和波形结构。pmsm_speed_metrics:12 行动态指标。pmsm_thd:15 行逐相 THD。pmsm_config:当前配置。
results 目录应生成 3 份 CSV、report_results.mat、PNG/PDF/FIG、模型审计 JSON 和 Markdown 报告。负载 CSV 应有 3 行。
先比较当前配置的四段指标,再核对四组带载 THD 与空载例外。不同平台可能存在小数值差异,应报告环境与误差,而非要求任意机器逐位相同。
首次下载包不包含约 100 MB 的完整 MAT;运行后会在本地生成。第一次运行前不能只执行 plot_report,因为重绘需要这个 MAT。
改时间和速度
打开 report_config.m:
cfg.initialHold = 0.1;
cfg.stageDurations = [0.3 0.2 0.2 0.2];
cfg.stageSpeeds = [1500 500 2000 0];
cfg.dynamicLoad = 0;
初始零速保持 0.1 s,之后四段持续时间依次为 0.3、0.2、0.2、0.2 s。改变数组后重新 run_report,脚本会自动计算四个阶跃的时刻和幅值。第三段实际是 2000 rpm。
当前模型有四个 Step,数组必须保持四段,时长为正。若要增加段数,需要同步修改激励结构,已超出单纯配置修改范围。
重绘、标注和导出
成功运行后,可以直接重绘,无需再仿真:
plot_report;
openfig(fullfile(pwd,'results','02_transient_zoom.fig'),'new','visible');
在 Figure 窗口使用“插入 → 文本框 / 箭头”进行标注。另存 FIG 保留编辑,导出 PNG:
exportgraphics(gcf,fullfile(pwd,'results','my_speed_annotation.png'), ...
'Resolution',300);
请使用新文件名,自动重绘会覆盖脚本定义的同名图片。保留本轮结果时,先复制整个 results 目录,再重新测试。
常见问题
| 现象 | 检查方法 |
|---|---|
| 找不到模型 | 保持两个子目录相邻,完整解压;检查 report_config 的 modelFile |
| 找不到 ω / Id / Iq / 负载 | 使用发布包匹配的模型与脚本,不随意重命名 |
| 找不到库 | 检查 Simulink 与 Specialized Power Systems 安装及许可 |
| 修改后结果不变 | 三组对比会按配置覆盖部分参数;检查改动是否在实际测试路径 |
| 重绘找不到 MAT | 先执行 run_report 生成数据 |
| 空载 THD 很大 | 查看基波 RMS、负载和完整频带定义 |
源码中的 write_report.m 仅作公开版文字与目录说明适配,计算入口、THD 与速度指标算法保持当前回归版本。冻结模型内容完全不变。