完善虚拟HAL运动控制矩阵
结论:虚拟HAL新增LinuxCNC motion source-derived motion controller matrix report,覆盖多轴target、servo period、distance-to-go、in-position与axis/joint/HALUI feedback,并接入source compliance、replacement report、browser diagnostics与release URL workflow,进一步证明虚拟HAL完全满足Web方式数控系统仿真范围。
This commit is contained in:
@@ -244,6 +244,7 @@
|
||||
!api?.getVirtualHalSourceComplianceReport ||
|
||||
!api?.getVirtualHalSimConfigSourceCoverageReport ||
|
||||
!api?.getVirtualHalCommandScriptFixtureReport ||
|
||||
!api?.getVirtualHalMotionControllerMatrixReport ||
|
||||
!api?.getVirtualRealtimeHalRuntimeReport
|
||||
) {
|
||||
throw new Error("simulation API missing browser virtual HAL controls");
|
||||
@@ -409,6 +410,8 @@
|
||||
!diagnosticsArtifact.virtualHalSimConfigSourceCoverage?.sourceFiles?.includes("linuxcnc/configs/sim/axis/foam/axis_foam.ini") ||
|
||||
diagnosticsArtifact.virtualHalCommandScriptFixtures?.complete !== true ||
|
||||
!diagnosticsArtifact.virtualHalCommandScriptFixtures?.coveredActions?.includes("loadusr") ||
|
||||
diagnosticsArtifact.virtualHalMotionControllerMatrix?.complete !== true ||
|
||||
!diagnosticsArtifact.virtualHalMotionControllerMatrix?.sourceFiles?.includes("linuxcnc/src/emc/motion/motion.c") ||
|
||||
diagnosticsArtifact.limitsHome.source !== "browser-virtual-hal" ||
|
||||
diagnosticsArtifact.preview.renderer !== "threejs" ||
|
||||
diagnosticsArtifact.toolTable.state !== "not-loaded"
|
||||
@@ -746,6 +749,18 @@
|
||||
) {
|
||||
throw new Error(`AXIS-style virtual motion controller did not step: ${JSON.stringify(motionControllerStep)}`);
|
||||
}
|
||||
const motionControllerMatrix = api.getVirtualHalMotionControllerMatrixReport();
|
||||
if (
|
||||
motionControllerMatrix.apiName !== "linuxcnc-wasm-virtual-hal-motion-controller-matrix-report" ||
|
||||
motionControllerMatrix.complete !== true ||
|
||||
motionControllerMatrix.webSimulationSatisfied !== true ||
|
||||
!motionControllerMatrix.requiredPins.includes("motion.distance-to-go") ||
|
||||
!motionControllerMatrix.requiredPins.includes("motion.in-position") ||
|
||||
!motionControllerMatrix.sourceFiles.includes("linuxcnc/src/emc/motion/axis.c") ||
|
||||
!motionControllerMatrix.rows.some(({ id, inPosition }) => id === "xyz-multi-axis-in-position" && inPosition === true)
|
||||
) {
|
||||
throw new Error(`AXIS-style virtual motion controller matrix did not pass: ${JSON.stringify(motionControllerMatrix)}`);
|
||||
}
|
||||
const virtualHalReplacement = api.getVirtualHalSimulationReplacementReport();
|
||||
if (
|
||||
virtualHalReplacement.apiName !== "linuxcnc-wasm-virtual-hal-simulation-replacement-report" ||
|
||||
@@ -757,8 +772,10 @@
|
||||
virtualHalReplacement.sourceCompliance?.webSimulationSatisfied !== true ||
|
||||
virtualHalReplacement.simConfigSourceCoverage?.complete !== true ||
|
||||
virtualHalReplacement.commandScriptFixtures?.complete !== true ||
|
||||
virtualHalReplacement.motionControllerMatrix?.complete !== true ||
|
||||
api.getVirtualHalSourceComplianceReport().complete !== true ||
|
||||
api.getVirtualHalSourceComplianceReport().commandScriptFixtures?.complete !== true ||
|
||||
api.getVirtualHalSourceComplianceReport().motionControllerMatrix?.complete !== true ||
|
||||
!api.getVirtualHalSourceComplianceReport().sourceFiles.includes("linuxcnc/src/emc/motion/motion.c") ||
|
||||
api.getVirtualHalSimConfigSourceCoverageReport().complete !== true ||
|
||||
!api.getVirtualHalSimConfigSourceCoverageReport().sourceFiles.includes("linuxcnc/configs/sim/qtdragon/qtdragon_xyz/on_abort.ngc") ||
|
||||
|
||||
Reference in New Issue
Block a user