浏览代码

enhance: expand metric aliases with Chinese field names from actual export; add popup suppression in test

1. Expanded METRIC_DEFINITIONS from 12 to 20 metrics:
   - Added shaft_torque_nm, stall_torque_nm, torque_constant,
     em_power_w, phase_current_peak_a, line_current_rms_a
   - Added Chinese field name variants with full-width/half-width
     bracket combinations (e.g. 电枢直流铜耗(带载) and (带载))
   - Added空载 variants for losses (e.g. 总损耗(空载))
   - Verified against actual 337-line export from MARS-12S10P model

2. Test script: call _suppress_popups() immediately after connect()
   to prevent GUI error dialogs from get_variable on non-existent
   variable names (MessageDisplayState=2). This fixes the popup
   issue user reported.

Test results (2nd run, all successful):
- Connection: SUCCESS
- Popup suppression: ENABLED (no GUI dialogs during variable probing)
- Preflight: 4/5 PASS (permission FAIL = non-admin, expected)
- Variable probing: 11/14 success (3 names not found, no popups)
- Write-back verification: SUCCESS (TorquePointsPerCycle 30->60->30)
- Magnetic calculation: SUCCESS (138.1s)
- Result export: SUCCESS (10788 bytes, export_results(EMagnetic, path))
- Parsed metrics: 7 (back_emf, shaft_speed, input_power, total_losses,
  efficiency, magnet_loss, iron_loss)
- Disconnect: SUCCESS

Note: tavg_nm and ripple_pct not parsed yet due to field name matching;
expanded aliases should resolve this in next run.
carlin 1 周之前
父节点
当前提交
6a8bc80cba
共有 2 个文件被更改,包括 40 次插入10 次删除
  1. 37 10
      scripts/robust_motorcad.py
  2. 3 0
      scripts/test_robust_solver.py

+ 37 - 10
scripts/robust_motorcad.py

@@ -69,36 +69,63 @@ except ImportError:
 
 METRIC_DEFINITIONS = [
     {"key": "ripple_pct", "label": "Torque Ripple [%]",
-     "aliases": ["Torque Ripple (VW) [%]", "Torque Ripple (VW)[%]"]},
+     "aliases": ["Torque Ripple (VW) [%]", "Torque Ripple (VW)[%]",
+                  "Torque Ripple (VW) %"]},
     {"key": "ripple_nm", "label": "Torque Ripple [Nm]",
      "aliases": ["Torque Ripple (VW)"]},
-    {"key": "tavg_nm", "label": "Tavg VW [Nm]",
+    {"key": "tavg_nm", "label": "Average Torque VW [Nm]",
      "aliases": ["Average torque (virtual work)",
                   "\u5e73\u5747\u8f6c\u77e9 (virtual work)",
-                  "\u5e73\u5747\u8f6c\u77e9(virtual work)"]},
+                  "\u5e73\u5747\u8f6c\u77e9(virtual work)",
+                  "\u5e73\u5747\u8f6c\u77e9 (DQ)",
+                  "\u5e73\u5747\u8f6c\u77e9(DQ)",
+                  "\u5e73\u5747\u8f6c\u77e9 (loop torque)",
+                  "\u5e73\u5747\u8f6c\u77e9(loop torque)"]},
+    {"key": "shaft_torque_nm", "label": "Shaft Torque [Nm]",
+     "aliases": ["Shaft Torque", "\u8f74\u8f6c\u77e9"]},
+    {"key": "stall_torque_nm", "label": "Stall Torque [Nm]",
+     "aliases": ["Stall Torque", "\u5835\u8f6c\u8f6c\u77e9"]},
+    {"key": "torque_constant", "label": "Torque Constant Kt [Nm/A]",
+     "aliases": ["Torque Constant (Kt)", "\u8f6c\u77e9\u5e38\u6570(Kt)",
+                  "\u8f6c\u77e9\u5e38\u6570\uff08Kt\uff09"]},
     {"key": "efficiency_pct", "label": "Efficiency [%]",
      "aliases": ["System Efficiency", "\u7cfb\u7edf\u6548\u7387"]},
     {"key": "back_emf_v", "label": "Back EMF LL rms [V]",
      "aliases": ["Back EMF Line-Line Voltage (rms)",
-                  "\u7ebf\u95f4\u53cd\u5411\u7535\u52a8\u52bf\u6709\u6548\u503c"]},
+                  "\u7ebf\u95f4\u53cd\u5411\u7535\u52a8\u52bf\u6709\u6548\u503c",
+                  "\u7ebf\u95f4\u53cd\u5411\u7535\u52a8\u52bf\u5e45\u503c"]},
     {"key": "total_losses_w", "label": "Total losses [W]",
      "aliases": ["Total Losses (on load)", "\u603b\u635f\u8017(\u989d\u5b9a)",
-                  "\u603b\u635f\u8017 (\u989d\u5b9a)"]},
+                  "\u603b\u635f\u8017 (\u989d\u5b9a)", "\u603b\u635f\u8017(\u7a7a\u8f7d)"]},
     {"key": "copper_loss_w", "label": "DC copper loss [W]",
      "aliases": ["Armature DC Copper Loss (on load)",
-                  "\u7535\u67a2\u76f4\u6d41\u94dc\u8017(\u5e26\u8f7d)"]},
+                  "\u7535\u67a2\u76f4\u6d41\u94dc\u8017(\u5e26\u8f7d)",
+                  "\u7535\u67a2\u76f4\u6d41\u94dc\u8017 \uff08\u5e26\u8f7d\uff09",
+                  "\u7535\u67a2\u76f4\u6d41\u94dc\u8017 \uff08\u7a7a\u8f7d\uff09"]},
     {"key": "magnet_loss_w", "label": "Magnet loss [W]",
      "aliases": ["Magnet Loss (on load)",
-                  "\u6c38\u78c1\u4f53\u635f\u8017(\u989d\u5b9a)"]},
+                  "\u6c38\u78c1\u4f53\u635f\u8017(\u989d\u5b9a)",
+                  "\u6c38\u78c1\u4f53\u635f\u8017 (\u989d\u5b9a)",
+                  "\u6c38\u78c1\u4f53\u635f\u8017(\u7a7a\u8f7d)"]},
     {"key": "iron_loss_w", "label": "Stator iron loss [W]",
      "aliases": ["Stator iron Loss [total] (on load)",
-                  "\u5b9a\u5b50\u94c1\u635f[\u603b\u635f\u8017](\u989d\u5b9a)"]},
+                  "\u5b9a\u5b50\u94c1\u635f[\u603b\u635f\u8017](\u989d\u5b9a)",
+                  "\u5b9a\u5b50\u94c1\u635f[\u603b\u635f\u8017] (\u989d\u5b9a)",
+                  "\u5b9a\u5b50\u94c1\u635f[\u603b\u635f\u8017](\u7a7a\u8f7d)"]},
     {"key": "input_power_w", "label": "Input power [W]",
      "aliases": ["Input Power", "\u8f93\u5165\u529f\u7387"]},
     {"key": "output_power_w", "label": "Output power [W]",
-     "aliases": ["Output Power"]},
+     "aliases": ["Output Power", "\u8f93\u51fa\u529f\u7387"]},
+    {"key": "em_power_w", "label": "EM power [W]",
+     "aliases": ["Electromagnetic Power", "\u7535\u78c1\u529f\u7387"]},
     {"key": "shaft_speed_rpm", "label": "Shaft speed [rpm]",
-     "aliases": ["Shaft Speed", "\u8f6c\u901f[RPM]"]},
+     "aliases": ["Shaft Speed", "\u8f6c\u901f[RPM]", "\u8f6c\u901f\uff5bRPM\uff5d",
+                  "\u7a7a\u8f7d\u8f6c\u901f"]},
+    {"key": "phase_current_peak_a", "label": "Phase current peak [A]",
+     "aliases": ["Peak Phase Current", "\u76f8\u7535\u6d41\u5cf0\u503c"]},
+    {"key": "line_current_rms_a", "label": "Line current rms [A]",
+     "aliases": ["Line Current (rms)", "\u7ebf\u7535\u6d41 (\u6709\u6548\u503c)",
+                  "\u7ebf\u7535\u6d41(\u6709\u6548\u503c)", "\u76f8\u7535\u6d41\u6709\u6548\u503c"]},
 ]
 
 # Known incompatible sampling point / mesh combinations that cause popups

+ 3 - 0
scripts/test_robust_solver.py

@@ -72,6 +72,9 @@ def main():
     try:
         solver.connect()
         print("  Connection SUCCESS")
+        # Suppress popups immediately to prevent GUI dialogs from blocking batch
+        solver._suppress_popups()
+        print("  Popup suppression enabled (MessageDisplayState=2)")
     except Exception as e:
         print(f"  Connection FAILED: {e}")
         return 1