diff --git a/kdl-wasm/web/app/virtual-controller.css b/kdl-wasm/web/app/virtual-controller.css index 0b3f3ed..3b743f3 100644 --- a/kdl-wasm/web/app/virtual-controller.css +++ b/kdl-wasm/web/app/virtual-controller.css @@ -2,20 +2,32 @@ box-sizing: border-box; } +:root { + color-scheme: light; + --ink: #1f2933; + --muted: #5d6972; + --line: #c7d0d6; + --panel: #f8fafb; + --panel-strong: #ffffff; + --accent: #1f7a8c; + --accent-dark: #14566a; + --rail: #dde5e9; +} + body { margin: 0; - font-family: Arial, sans-serif; - color: #1f2933; + font-family: Arial, "Microsoft YaHei", sans-serif; + color: var(--ink); background: #eef2f4; } .workbench { min-height: 100vh; display: grid; - grid-template-columns: 240px minmax(320px, 1fr) 280px; - grid-template-rows: 48px minmax(280px, 1fr) 180px; + grid-template-columns: 240px minmax(360px, 1fr) 300px; + grid-template-rows: auto minmax(280px, 1fr) minmax(230px, 34vh); gap: 1px; - background: #c7d0d6; + background: var(--line); } .command-bar, @@ -24,24 +36,74 @@ body { .pendant, .editor, .bottom-panel { - background: #f8fafb; + background: var(--panel); } .command-bar { grid-column: 1 / 4; - display: flex; - flex-wrap: wrap; + display: grid; + grid-template-columns: auto minmax(220px, 360px) repeat(7, auto) minmax(260px, 1fr); align-items: center; gap: 8px; padding: 8px 12px; + min-width: 0; +} + +.station-title { + display: grid; + gap: 2px; + min-width: 150px; +} + +.station-title span, +.program-picker span, +.frame-control span { + color: var(--muted); + font-size: 12px; +} + +.program-picker, +.frame-control { + display: grid; + gap: 3px; + min-width: 0; +} + +.program-picker select, +.frame-control input { + width: 100%; + min-width: 0; +} + +button, +select { + min-height: 32px; + border: 1px solid #9aa8b2; + background: var(--panel-strong); + color: var(--ink); + border-radius: 4px; + font: inherit; } button { - min-height: 32px; - border: 1px solid #9aa8b2; - background: #ffffff; - color: #1f2933; - border-radius: 4px; + padding: 0 10px; + white-space: nowrap; +} + +button:hover, +select:hover { + border-color: var(--accent); +} + +button[aria-pressed="true"] { + background: var(--accent-dark); + color: #ffffff; + border-color: var(--accent-dark); +} + +output { + color: var(--muted); + font-size: 12px; } .object-tree { @@ -58,7 +120,11 @@ button { .object-tree ul { margin: 0; padding-left: 18px; - line-height: 1.8; + line-height: 1.75; +} + +.object-tree li { + overflow-wrap: anywhere; } .viewport { @@ -75,10 +141,20 @@ button { width: calc(100% - 48px); } +.viewport circle { + fill: var(--accent-dark); +} + +[data-path-current] { + fill: #b8542f; + stroke: #ffffff; + stroke-width: 3; +} + .robot-arm { position: absolute; left: 12%; - top: 20%; + top: 18%; width: 62%; height: 48%; } @@ -114,7 +190,7 @@ button { .pendant dl { display: grid; - grid-template-columns: 84px 1fr; + grid-template-columns: 78px minmax(0, 1fr); gap: 8px; margin: 0; } @@ -123,6 +199,11 @@ button { font-weight: 700; } +.pendant dd { + margin: 0; + overflow-wrap: anywhere; +} + .editor { grid-column: 1 / 3; padding: 12px; @@ -138,43 +219,126 @@ button { .editor pre { margin: 0; padding: 12px; - background: #1f2933; + min-height: 150px; + background: #202a33; color: #f8fafb; overflow: auto; + line-height: 1.45; + border-radius: 4px; } .bottom-panel { + grid-column: 1 / 4; padding: 12px; display: grid; - grid-template-columns: repeat(7, minmax(100px, 1fr)); + grid-template-columns: repeat(9, minmax(100px, 1fr)); gap: 8px; overflow: auto; } -.bottom-panel div { - border: 1px solid #c7d0d6; +.bottom-panel > div { + border: 1px solid var(--line); padding: 8px; - background: #ffffff; + background: var(--panel-strong); display: grid; gap: 6px; min-width: 0; + align-content: start; } .bottom-panel span { overflow-wrap: anywhere; } -@media (max-width: 840px) { +.bottom-panel progress { + width: 100%; + height: 8px; +} + +.steps-panel, +.trajectory-panel { + grid-column: 1 / -1; + min-height: 150px; +} + +.steps-table-wrap, +.trajectory-table-wrap { + overflow: auto; + border: 1px solid var(--line); + max-height: 260px; +} + +table { + width: 100%; + border-collapse: collapse; + font-size: 12px; +} + +th, +td { + border-bottom: 1px solid #e1e7eb; + border-right: 1px solid #e1e7eb; + padding: 6px 7px; + text-align: left; + white-space: nowrap; +} + +th { + position: sticky; + top: 0; + z-index: 1; + background: var(--rail); +} + +tr[aria-current="true"] td { + background: #e6f2f4; + color: #0f4d5d; + font-weight: 700; +} + +tr[data-step-state="active"] td { + background: #fff2cc; + color: #6f4b00; + font-weight: 700; +} + +tr[data-step-state="complete"] td { + background: #f4f7f8; + color: var(--muted); +} + +@media (max-width: 1180px) { + .command-bar { + grid-template-columns: auto minmax(200px, 1fr) repeat(7, auto); + } + + .frame-control { + grid-column: 1 / -1; + } +} + +@media (max-width: 900px) { .workbench { grid-template-columns: 1fr; grid-template-rows: auto; } .command-bar, - .editor { + .editor, + .bottom-panel { grid-column: auto; } + .command-bar { + grid-template-columns: 1fr 1fr; + } + + .station-title, + .program-picker, + .frame-control { + grid-column: 1 / -1; + } + .bottom-panel { grid-template-columns: 1fr 1fr; } @@ -183,3 +347,33 @@ button { min-height: 300px; } } + +@media (max-width: 560px) { + .command-bar { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + + .command-bar button { + padding: 0 6px; + min-width: 0; + overflow: hidden; + text-overflow: ellipsis; + } + + .station-title, + .program-picker, + .frame-control { + grid-column: 1 / -1; + } + + .bottom-panel { + grid-template-columns: 1fr; + } + + .robot-arm { + left: 4%; + width: 80%; + transform: scale(0.85); + transform-origin: left top; + } +} diff --git a/kdl-wasm/web/app/virtual-controller.html b/kdl-wasm/web/app/virtual-controller.html index 583fbc7..cb81f25 100644 --- a/kdl-wasm/web/app/virtual-controller.html +++ b/kdl-wasm/web/app/virtual-controller.html @@ -7,9 +7,16 @@ -
+
- ABB120 Station +
+ ABB120 Station + W2-JOB-latest +
+ @@ -17,21 +24,28 @@ +
+ +
-
+ - - - - + + + +
+ +
+
Logready
Diagnosticsready
@@ -76,7 +95,54 @@ end
Waitnone
Motion Queueempty
Trace0 events
-
ReportsA120-REPORT
+
ReportsW2-REPORT
+
Parseridle
+
Storagechecking browser storage
+
+ Program Steps + step 0 +
+ + + + + + + + + + + + + +
#TimeLineStepSourceMotion/TargetSamples
+
+
+
+ Trajectory Frames + t=0 s +
+ + + + + + + + + + + + + + + + + + +
#tMotionTargetTCP XYZTCP QJ1J2J3J4J5J6
+
+
diff --git a/kdl-wasm/web/app/virtual-controller.js b/kdl-wasm/web/app/virtual-controller.js index 2b16a96..0a69194 100644 --- a/kdl-wasm/web/app/virtual-controller.js +++ b/kdl-wasm/web/app/virtual-controller.js @@ -4,33 +4,532 @@ Array.from(document.querySelectorAll("[data-field]")).map((item) => [item.dataset.field, item]) ); const tabButtons = Array.from(document.querySelectorAll("[data-tab]")); + const programSelect = document.querySelector("[data-program-select]"); + const frameSlider = document.querySelector("[data-frame-slider]"); + const frameTable = document.querySelector("[data-frame-table]"); + const stepTable = document.querySelector("[data-step-table]"); + const objectTree = document.querySelector("[data-object-tree]"); + const pathCurrent = document.querySelector("[data-path-current]"); + const parserProgress = document.querySelector("[data-parser-progress]"); - const sources = { - grl: "proc main()\n run_path pick_place\nend", - abb: "MODULE A120Smoke\n PROC main()\n MoveJ home,v100,fine,tool0;\n ENDPROC\nENDMODULE", - fanuc: "/PROG A120SMOKE\n/MN\n 1:J P[1] 40% FINE ;\n/END", - kuka: "DEF A120SMOKE()\n PTP HOME\nEND" + const fallbackManifest = { + release_id: "local", + suite_id: "working2-abb120-spec", + job_id: "W2-JOB-latest", + robot_id: "abb_irb120_3_58", + report_html: "test-results/abb120-spec/W2-JOB-latest/report.html", + programs: [ + { + program_id: "W2_60_IOWaitPulse", + file: "runtime/W2_60_IOWaitPulse.grl", + source: "", + coverage_level: "Runtime", + status: "pass", + spec_sections: [13], + diagnostics: [], + artifacts: {} + } + ] }; - const state = { + const fallbackProgramData = { + sourceText: [ + "language grl 0.1", + "module W2IOWaitPulse", + " const speed v = joint(35 %)", + " const zone zf = fine", + " target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] }", + " path io_path {", + " defaults { speed: v, zone: zf }", + " point p0 movej home", + " event at p0 distance 5 + 5 mm pulse io.do[20] duration 50 + 50 ms", + " }", + " proc main()", + " io.do[1] = true", + " io.ao[1] = 0.75", + " io.go[1] = 3", + " wait all(io.di[1] == true, io.di[2] == false) timeout 1 s on_timeout alarm \"all timeout\"", + " wait any(io.di[3] == true, io.di[4] == true) timeout 1 s", + " wait rising(io.di[5]) timeout 1 s", + " wait falling(io.di[6]) timeout 1 s", + " wait changed(io.di[7]) timeout 1 s", + " pulse io.do[2] duration 50 + 50 ms", + " run_path io_path", + " end", + "end" + ].join("\n"), + trajectory: { + sampleCount: 4, + duration: 0.24, + startJoints: [0, 0, 0, 0, 0, 0], + endJoints: [0.12, 0.03, -0.08, 0, 0.02, 0], + frames: [ + frame(0, 0, "MOVEJ", "home", [0, 0, 0, 0, 0, 0], [0.374, 0, 0.63], { line: 8, column: 14 }), + frame(1, 0.08, "MOVEJ", "home", [0.04, 0.01, -0.026667, 0, 0.006667, 0], [0.377333, 0, 0.63], { line: 8, column: 14 }), + frame(2, 0.16, "MOVEJ", "home", [0.08, 0.02, -0.053333, 0, 0.013333, 0], [0.380667, 0, 0.63], { line: 8, column: 14 }), + frame(3, 0.24, "MOVEJ", "home", [0.12, 0.03, -0.08, 0, 0.02, 0], [0.384, 0, 0.63], { line: 8, column: 14 }) + ], + diagnostics: [] + }, + controller: { + commands: [], + snapshot: { + runtime: { + pc: 0, + trace: [] + }, + state: { + state: "stopped", + diagnostics: [] + } + } + }, + motionQueue: { + items: [ + { + id: "mq_local", + source: { kind: "path", pathId: "io_path", sourceMap: { line: 21, column: 5 } }, + request: { + pathId: "io_path", + segments: [{ id: "p0", motion: "MOVEJ", targetId: "home", sourceMap: { line: 8, column: 14 } }], + events: [{ id: "event_0", timing: "at", pointId: "p0", kind: "pulse", sourceMap: { line: 9, column: 35 } }] + } + } + ] + }, + trace: [ + traceEntry(0, "io", "IO_WRITE", 12, 0), + traceEntry(0, "io", "IO_WRITE", 13, 1), + traceEntry(0, "io", "IO_WRITE", 14, 2), + traceEntry(0, "wait", "WAIT", 15, 3, { status: "satisfied" }), + traceEntry(0, "wait", "WAIT", 16, 4, { status: "satisfied" }), + traceEntry(0.1, "wait", "WAIT", 17, 5, { status: "satisfied" }), + traceEntry(0.1, "wait", "WAIT", 18, 6, { status: "satisfied" }), + traceEntry(0.1, "wait", "WAIT", 19, 7, { status: "satisfied" }), + traceEntry(0.1, "io", "PULSE", 20, 8), + traceEntry(0.1, "motion", "RUN_PATH", 21, 9, { queued: true }) + ], + io: { image: { "io.di[1]": false, "io.do[1]": false }, events: [] }, + compile: { moduleName: "W2IOWaitPulse", pathCount: 1, operationCount: 0 }, + postReport: { filenames: ["W2IOWaitPulse.mod", "W2IOWaitPulse.ls", "W2IOWaitPulse.src"], report: [] }, + roundtrip: {}, + isFallback: true, + releaseId: "local", + errors: [] + }; + + const app = { + manifest: fallbackManifest, + programs: fallbackManifest.programs, + selectedProgramId: "W2_60_IOWaitPulse", + programCache: new Map([["W2_60_IOWaitPulse", fallbackProgramData]]), command: "ready", mode: "auto", motors: "on", - pc: 0, - joints: [0, 0, 0, 0, 0, 0], - tcp: [0, 0, 580, 0, 0, 0], + tab: "grl", + currentFrameIndex: 0, + currentSampleIndex: 0, + playbackTime: 0, + playbackStartedAt: 0, + playbackTimeStart: 0, + playbackSampleIndex: 0, + samplePeriodSec: 0.05, + samplePeriodMs: 50, di1: false, do1: false, wait: "none", - queue: [], - trace: ["ready"], - diagnostics: ["ready"], - report: "A120-REPORT", - tab: "grl" + report: "W2-REPORT working2-abb120-spec", + localTrace: ["W2-JOB-latest ready"], + playbackTimer: 0, + programLoads: new Map(), + assetTextCache: new Map(), + assetRefreshes: new Set(), + parseStream: { + active: false, + timer: 0, + programId: "", + cursorLine: 0, + totalLines: 0, + linesPerTick: 1, + startedAt: 0, + completedProgramId: "", + lastSummary: "idle" + }, + storage: { + mode: "checking", + hits: 0, + network: 0, + writes: 0, + errors: 0, + last: "checking browser storage" + } }; - function formatArray(values) { - return `[${values.map((value) => Number(value).toFixed(value % 1 === 0 ? 0 : 2)).join(", ")}]`; + window.__virtualController = app; + window.__vcErrors = []; + + function frame(index, time, motion, targetId, joints, position, sourceMap) { + return { + index, + time, + motion, + targetId, + joints, + tcp: { + position, + quaternion: [0, 0.707107, 0, 0.707107] + }, + sourceMap, + diagnostics: [] + }; + } + + function traceEntry(time, kind, instructionKind, line, pc, data) { + return { + time, + kind, + procedure: "main", + pc, + instructionKind, + source: { + kind: instructionKind, + id: `main:${instructionKind}:${line}:5`, + sourceMap: { line, column: 5 }, + procedureId: "main" + }, + data, + id: pc + 1 + }; + } + + function selectedProgram() { + return app.programs.find((program) => program.program_id === app.selectedProgramId) ?? app.programs[0]; + } + + function cachedProgramData(programId = app.selectedProgramId) { + return app.programCache.get(programId) ?? fallbackProgramData; + } + + function selectedData() { + const data = cachedProgramData(); + if (app.parseStream.active && app.parseStream.programId === app.selectedProgramId) { + return projectedProgramData(data, app.parseStream.cursorLine); + } + return data; + } + + function projectedProgramData(data, cursorLine) { + const lines = (data.sourceText || fallbackProgramData.sourceText).split(/\r?\n/); + const visibleLineCount = Math.min(Math.max(Math.round(numberOr(cursorLine, 0)), 0), lines.length); + const sourceText = [ + ...lines.slice(0, visibleLineCount), + ...(visibleLineCount < lines.length ? [`... parsing ${visibleLineCount}/${lines.length}`] : []) + ].join("\n"); + + return { + ...data, + sourceText, + trajectory: projectedTrajectory(data.trajectory, visibleLineCount), + controller: projectedController(data.controller, visibleLineCount), + motionQueue: projectedMotionQueue(data.motionQueue, visibleLineCount), + trace: projectedTrace(data.trace, visibleLineCount), + postReport: visibleLineCount >= lines.length ? data.postReport : { filenames: data.postReport?.filenames ?? [], report: [] }, + isStreaming: true + }; + } + + function projectedTrajectory(trajectory, cursorLine) { + const sourceFrames = Array.isArray(trajectory?.frames) ? trajectory.frames : []; + const visibleFrames = sourceFrames.filter((item) => numberOr(item?.sourceMap?.line, 0) <= cursorLine); + const lastTime = numberOr(visibleFrames.at(-1)?.time, 0); + return { + sampleCount: visibleFrames.length, + duration: lastTime, + frames: visibleFrames, + diagnostics: Array.isArray(trajectory?.diagnostics) + ? trajectory.diagnostics.filter((item) => numberOr(item?.sourceMap?.line, 0) <= cursorLine) + : [] + }; + } + + function projectedController(controller, cursorLine) { + const trace = Array.isArray(controller?.snapshot?.runtime?.trace) + ? controller.snapshot.runtime.trace.filter((item) => numberOr(item?.source?.sourceMap?.line, 0) <= cursorLine) + : []; + return { + ...controller, + snapshot: { + ...(controller?.snapshot ?? {}), + runtime: { + ...(controller?.snapshot?.runtime ?? {}), + trace + } + } + }; + } + + function projectedTrace(trace, cursorLine) { + return Array.isArray(trace) + ? trace.filter((item) => numberOr(item?.source?.sourceMap?.line, 0) <= cursorLine) + : []; + } + + function projectedMotionQueue(motionQueue, cursorLine) { + const sourceItems = Array.isArray(motionQueue?.items) ? motionQueue.items : []; + const items = []; + for (const item of sourceItems) { + const parentLine = numberOr(item?.source?.sourceMap?.line ?? item?.source?.instruction?.sourceMap?.line, 0); + const request = item.request ?? {}; + const segments = Array.isArray(request.segments) + ? request.segments.filter((segment) => numberOr(segment?.sourceMap?.line, 0) <= cursorLine) + : []; + const events = Array.isArray(request.events) + ? request.events.filter((event) => numberOr(event?.sourceMap?.line, 0) <= cursorLine) + : []; + if (parentLine > cursorLine && segments.length === 0 && events.length === 0) continue; + items.push({ + ...item, + request: { + ...request, + segments, + events + } + }); + } + return { + ...motionQueue, + items + }; + } + + function frames() { + const data = selectedData(); + return normalizeFrames(data.trajectory, data.isFallback === true && data.isStreaming !== true); + } + + function trajectoryDuration(items = frames()) { + const duration = Number(selectedData().trajectory?.duration); + const lastTime = Number(items.at(-1)?.time ?? 0); + const trace = selectedData().trace; + const traceTime = Array.isArray(trace) + ? trace.reduce((max, item) => Math.max(max, numberOr(item?.time, 0)), 0) + : 0; + return Math.max( + 0, + Number.isFinite(duration) ? duration : 0, + Number.isFinite(lastTime) ? lastTime : 0, + traceTime + ); + } + + function executionSamples() { + const items = frames(); + const duration = trajectoryDuration(items); + const step = app.samplePeriodSec; + const times = []; + + if (duration <= 0) { + times.push(0); + } else { + for (let time = 0; time < duration - 1e-9; time += step) { + times.push(Number(time.toFixed(6))); + } + if (times.length === 0 || Math.abs(times.at(-1) - duration) > 1e-9) { + times.push(Number(duration.toFixed(6))); + } + } + + return times.map((time, index) => interpolateSample(items, time, index)); + } + + function hasTrajectoryData(data) { + const trajectory = data?.trajectory; + return Array.isArray(trajectory?.frames) && trajectory.frames.length > 0 + || Array.isArray(trajectory?.startJoints) + || Array.isArray(trajectory?.endJoints); + } + + function currentFrame() { + const samples = executionSamples(); + return samples[Math.min(app.currentSampleIndex, Math.max(samples.length - 1, 0))] + ?? fallbackProgramData.trajectory.frames[0]; + } + + function currentSamples() { + return executionSamples(); + } + + function syncFrameIndexFromTime(time = app.playbackTime) { + const items = frames(); + if (items.length === 0) { + app.currentFrameIndex = 0; + return; + } + let index = 0; + for (let i = 0; i < items.length; i += 1) { + if (items[i].time <= time + 1e-9) index = i; + else break; + } + app.currentFrameIndex = index; + } + + function setSampleIndex(index) { + const samples = currentSamples(); + const total = samples.length; + app.currentSampleIndex = Math.min(Math.max(Math.round(numberOr(index, 0)), 0), Math.max(total - 1, 0)); + app.playbackTime = samples[app.currentSampleIndex]?.time ?? 0; + syncFrameIndexFromTime(app.playbackTime); + } + + function setPlaybackTime(time) { + const samples = currentSamples(); + if (samples.length === 0) { + app.currentSampleIndex = 0; + app.playbackTime = 0; + syncFrameIndexFromTime(0); + return; + } + const duration = samples.at(-1).time; + const clamped = Math.min(Math.max(numberOr(time, 0), 0), duration); + const sampleIndex = Math.min(Math.round(clamped / app.samplePeriodSec), samples.length - 1); + app.currentSampleIndex = sampleIndex; + app.playbackTime = samples[sampleIndex]?.time ?? clamped; + syncFrameIndexFromTime(app.playbackTime); + } + + function resetExecutionClock() { + app.currentSampleIndex = 0; + app.currentFrameIndex = 0; + app.playbackTime = 0; + app.playbackStartedAt = 0; + app.playbackTimeStart = 0; + app.playbackSampleIndex = 0; + } + + function syncExecutionClockToLatestSample() { + const samples = currentSamples(); + app.currentSampleIndex = Math.max(samples.length - 1, 0); + app.playbackTime = samples.at(-1)?.time ?? 0; + syncFrameIndexFromTime(app.playbackTime); + } + + function interpolateSample(items, time, sampleIndex) { + if (!Array.isArray(items) || items.length === 0) { + return frame(sampleIndex, time, "NO_MOTION", "no planned segment", [0, 0, 0, 0, 0, 0], [0, 0, 0]); + } + + const first = items[0]; + if (time <= first.time) return sampleFromFrame(first, time, sampleIndex); + + const last = items.at(-1); + if (time >= last.time) return sampleFromFrame(last, time, sampleIndex); + + let nextIndex = items.findIndex((item) => item.time >= time); + if (nextIndex <= 0) nextIndex = 1; + const previous = items[nextIndex - 1]; + const next = items[nextIndex]; + const span = Math.max(next.time - previous.time, 1e-9); + const ratio = Math.min(Math.max((time - previous.time) / span, 0), 1); + const source = ratio < 1 ? previous : next; + + return { + index: sampleIndex, + time, + motion: source.motion || next.motion || previous.motion || "MOVEJ", + segmentId: source.segmentId ?? next.segmentId ?? previous.segmentId, + targetId: source.targetId ?? next.targetId ?? previous.targetId, + joints: interpolateArray(previous.joints, next.joints, ratio), + tcp: { + position: interpolateArray(previous.tcp.position, next.tcp.position, ratio), + quaternion: normalizeQuaternion(interpolateArray(previous.tcp.quaternion, next.tcp.quaternion, ratio)) + }, + sourceMap: source.sourceMap, + trajectoryFrameIndex: source.index, + diagnostics: [...(previous.diagnostics ?? []), ...(next.diagnostics ?? [])] + }; + } + + function sampleFromFrame(item, time, sampleIndex) { + return { + ...item, + index: sampleIndex, + time, + joints: [...item.joints], + tcp: { + position: [...item.tcp.position], + quaternion: [...item.tcp.quaternion] + }, + trajectoryFrameIndex: item.index + }; + } + + function interpolateArray(start, end, ratio) { + const a = Array.isArray(start) ? start : []; + const b = Array.isArray(end) ? end : []; + return Array.from({ length: Math.max(a.length, b.length) }, (_item, index) => { + const left = numberOr(a[index], 0); + const right = numberOr(b[index], left); + return left + (right - left) * ratio; + }); + } + + function normalizeQuaternion(values) { + const q = padNumbers(values, 4, [0, 0.707107, 0, 0.707107]); + const length = Math.hypot(q[0], q[1], q[2], q[3]); + if (length <= 1e-9) return [0, 0.707107, 0, 0.707107]; + return q.map((value) => value / length); + } + + function normalizeFrames(trajectory, allowFallback) { + if (Array.isArray(trajectory?.frames) && trajectory.frames.length > 0) { + return trajectory.frames.map((item, index) => ({ + index: numberOr(item.index, index), + time: numberOr(item.time, index * 0.02), + motion: item.motion || "MOVEJ", + segmentId: item.segmentId, + targetId: item.targetId, + joints: padNumbers(item.joints, 6), + tcp: { + position: padNumbers(item.tcp?.position, 3), + quaternion: padNumbers(item.tcp?.quaternion, 4, [0, 0.707107, 0, 0.707107]) + }, + sourceMap: item.sourceMap, + diagnostics: Array.isArray(item.diagnostics) ? item.diagnostics : [] + })); + } + + if (Array.isArray(trajectory?.startJoints) || Array.isArray(trajectory?.endJoints)) { + return [ + frame(0, 0, "MOVEJ", "start", padNumbers(trajectory.startJoints, 6), [0.374, 0, 0.63]), + frame(1, numberOr(trajectory.duration, 0), "MOVEJ", "end", padNumbers(trajectory.endJoints, 6), [0.384, 0, 0.63]) + ]; + } + + if (allowFallback) return fallbackProgramData.trajectory.frames; + return [frame(0, 0, "NO_MOTION", "no planned segment", [0, 0, 0, 0, 0, 0], [0, 0, 0])]; + } + + function padNumbers(values, length, fallback) { + const source = Array.isArray(values) ? values : fallback ?? []; + return Array.from({ length }, (_item, index) => numberOr(source[index], 0)); + } + + function numberOr(value, fallback) { + const number = Number(value); + return Number.isFinite(number) ? number : fallback; + } + + function sourceMapLine(value) { + return numberOr(value?.sourceMap?.line ?? value?.source?.sourceMap?.line, 0); + } + + function formatNumber(value, digits) { + const fixed = Number(value).toFixed(digits); + return fixed.replace(/\.?0+$/, ""); + } + + function formatArray(values, digits) { + return `[${values.map((value) => formatNumber(value, digits)).join(", ")}]`; } function setField(name, value) { @@ -38,103 +537,1267 @@ if (item) item.textContent = value; } - function render() { - root?.setAttribute("data-last-command", state.command); - root?.setAttribute("data-running", String(state.command === "running")); - setField("state", state.command); - setField("mode", state.mode); - setField("motors", state.motors); - setField("pc", `main:${state.pc}`); - setField("joints", formatArray(state.joints)); - setField("tcp", formatArray(state.tcp)); - setField("log", state.trace.at(-1) ?? "ready"); - setField("diagnostics", state.diagnostics.at(-1) ?? "ready"); - setField("io", `do[1]=${state.do1}, di[1]=${state.di1}`); - setField("wait", state.wait); - setField("queue", state.queue.length ? state.queue.join(" -> ") : "empty"); - setField("trace", `${state.trace.length} events`); - setField("reports", state.report); - setField("editor", sources[state.tab]); + function resolvePackageUrl(relativePath) { + if (!relativePath) return ""; + return new URL(`../${relativePath.replace(/^\/+/, "")}`, window.location.href).href; + } - for (const button of tabButtons) { - button.setAttribute("aria-pressed", String(button.dataset.tab === state.tab)); + function packageCacheKey(relativePath) { + if (!relativePath) return ""; + try { + const url = new URL(resolvePackageUrl(relativePath)); + return `package:${url.origin}${url.pathname}`; + } catch (_error) { + return `package:${relativePath}`; } } - function pushTrace(message) { - state.trace.push(message); - state.diagnostics.push(message); + function cacheFileName(key) { + try { + return window.btoa(key).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/g, ""); + } catch (_error) { + return key.replace(/[^a-z0-9_.-]/gi, "_").slice(0, 180); + } } - function advanceProgram(stepSize) { - state.pc = Math.min(state.pc + stepSize, 4); - state.joints = state.joints.map((value, index) => Number((value + (index + 1) * 1.5 * stepSize).toFixed(2))); - state.tcp = [ - Number((state.tcp[0] + 12 * stepSize).toFixed(2)), - Number((state.tcp[1] + 4 * stepSize).toFixed(2)), - state.tcp[2], - state.tcp[3], - state.tcp[4], - state.tcp[5] + function shortName(value) { + const name = String(value || "").split(/[?#]/)[0].split("/").pop() || String(value || "asset"); + return name.length > 48 ? `${name.slice(0, 45)}...` : name; + } + + const opfs = { + directory: undefined + }; + + async function opfsDirectory() { + if (opfs.directory) return opfs.directory; + opfs.directory = (async () => { + if (!navigator.storage?.getDirectory) { + app.storage.mode = "localStorage"; + app.storage.last = "OPFS unavailable"; + return null; + } + try { + const rootDirectory = await navigator.storage.getDirectory(); + const directory = await rootDirectory.getDirectoryHandle("kdl-virtual-controller", { create: true }); + app.storage.mode = "OPFS"; + app.storage.last = "OPFS ready"; + return directory; + } catch (error) { + app.storage.mode = "localStorage"; + app.storage.errors += 1; + app.storage.last = `OPFS blocked: ${error instanceof Error ? error.name : "error"}`; + return null; + } + })(); + return opfs.directory; + } + + async function readOpfsText(key) { + const directory = await opfsDirectory(); + if (!directory) return undefined; + try { + const handle = await directory.getFileHandle(cacheFileName(key)); + const file = await handle.getFile(); + return await file.text(); + } catch (_error) { + return undefined; + } + } + + async function writeOpfsText(key, text) { + const directory = await opfsDirectory(); + if (!directory) return false; + try { + const handle = await directory.getFileHandle(cacheFileName(key), { create: true }); + const writable = await handle.createWritable(); + await writable.write(text); + await writable.close(); + return true; + } catch (error) { + app.storage.errors += 1; + app.storage.last = `OPFS write failed: ${error instanceof Error ? error.name : "error"}`; + return false; + } + } + + function readLocalStorageText(key) { + try { + const value = window.localStorage?.getItem(`kdl-vc-cache:${key}`); + return value ?? undefined; + } catch (_error) { + return undefined; + } + } + + function writeLocalStorageText(key, text) { + try { + if (text.length > 2_000_000) return false; + window.localStorage?.setItem(`kdl-vc-cache:${key}`, text); + return true; + } catch (_error) { + return false; + } + } + + async function readCachedTextByKey(key, label) { + if (!key) return undefined; + if (app.assetTextCache.has(key)) { + app.storage.hits += 1; + app.storage.last = `memory ${shortName(label ?? key)}`; + return app.assetTextCache.get(key); + } + + const opfsText = await readOpfsText(key); + if (typeof opfsText === "string") { + app.assetTextCache.set(key, opfsText); + app.storage.hits += 1; + app.storage.last = `OPFS ${shortName(label ?? key)}`; + return opfsText; + } + + const localStorageText = readLocalStorageText(key); + if (typeof localStorageText === "string") { + app.assetTextCache.set(key, localStorageText); + app.storage.hits += 1; + app.storage.last = `localStorage ${shortName(label ?? key)}`; + return localStorageText; + } + + return undefined; + } + + async function writeCachedTextByKey(key, text, label) { + if (!key || typeof text !== "string") return; + app.assetTextCache.set(key, text); + const opfsWritten = await writeOpfsText(key, text); + const localStorageWritten = writeLocalStorageText(key, text); + if (opfsWritten || localStorageWritten) { + app.storage.writes += 1; + app.storage.last = `${opfsWritten ? "OPFS" : "localStorage"} saved ${shortName(label ?? key)}`; + } + } + + async function fetchTextFromNetwork(relativePath, options = {}) { + if (!relativePath) return undefined; + const controller = typeof AbortController === "function" ? new AbortController() : undefined; + const timeoutMs = Number.isFinite(options.timeoutMs) ? options.timeoutMs : 3500; + const timeout = controller + ? window.setTimeout(() => controller.abort(), timeoutMs) + : 0; + try { + const response = await fetch(resolvePackageUrl(relativePath), { + cache: "no-store", + signal: controller?.signal + }); + if (!response.ok) throw new Error(`${response.status} ${response.statusText}`); + const text = await response.text(); + app.storage.network += 1; + app.storage.last = `network ${shortName(relativePath)}`; + void writeCachedTextByKey(packageCacheKey(relativePath), text, relativePath); + return text; + } catch (error) { + app.storage.errors += 1; + app.storage.last = `network ${shortName(relativePath)} ${error instanceof Error ? error.name : "error"}`; + return undefined; + } finally { + if (timeout) window.clearTimeout(timeout); + } + } + + function refreshPackageAsset(relativePath, options = {}) { + const key = packageCacheKey(relativePath); + if (!key || app.assetRefreshes.has(key)) return; + app.assetRefreshes.add(key); + void fetchTextFromNetwork(relativePath, options).finally(() => { + app.assetRefreshes.delete(key); + }); + } + + async function optionalText(relativePath, options = {}) { + if (!relativePath) return ""; + let triedNetwork = false; + if (options.networkFirst) { + triedNetwork = true; + const text = await fetchTextFromNetwork(relativePath, options); + if (typeof text === "string") return text; + } + + const key = packageCacheKey(relativePath); + const cached = await readCachedTextByKey(key, relativePath); + if (typeof cached === "string") { + if (!options.networkFirst && options.refresh !== false) refreshPackageAsset(relativePath, options); + return cached; + } + + if (triedNetwork) return ""; + const text = await fetchTextFromNetwork(relativePath, options); + return text ?? ""; + } + + async function optionalJson(relativePath, options = {}) { + const text = await optionalText(relativePath, options); + if (!text) return undefined; + try { + return JSON.parse(text); + } catch (error) { + app.storage.errors += 1; + app.storage.last = `JSON ${shortName(relativePath)} ${error instanceof Error ? error.name : "error"}`; + return undefined; + } + } + + function applyManifest(manifest) { + app.manifest = manifest; + if (manifest.release_id !== "local") { + for (const [programId, data] of app.programCache) { + if (data.releaseId && data.releaseId !== manifest.release_id && data.releaseId !== "local") { + app.programCache.delete(programId); + } + } + } + app.programs = Array.isArray(manifest.programs) && manifest.programs.length > 0 + ? manifest.programs + : fallbackManifest.programs; + app.selectedProgramId = chooseDefaultProgram(app.selectedProgramId); + app.report = manifest.report_html ? `${manifest.job_id} report` : app.report; + root?.setAttribute("data-robot", manifest.robot_id ?? "abb_irb120_3_58"); + root?.setAttribute("data-suite", manifest.suite_id ?? "working2-abb120-spec"); + root?.setAttribute("data-job", manifest.job_id ?? "W2-JOB-latest"); + populateProgramSelect(); + } + + function chooseDefaultProgram(current) { + const ids = app.programs.map((program) => program.program_id); + if (current && ids.includes(current)) return current; + if (ids.includes("W2_60_IOWaitPulse")) return "W2_60_IOWaitPulse"; + return ids[0] ?? "W2_60_IOWaitPulse"; + } + + function populateProgramSelect() { + if (!programSelect) return; + programSelect.textContent = ""; + for (const program of app.programs) { + const option = document.createElement("option"); + option.value = program.program_id; + option.textContent = `${program.program_id} (${program.coverage_level}/${program.status})`; + programSelect.append(option); + } + programSelect.value = app.selectedProgramId; + } + + async function loadManifest() { + const manifest = await optionalJson("demo-manifest.json", { + networkFirst: true, + timeoutMs: 2500, + refresh: false + }); + if (!manifest) return; + applyManifest(manifest); + void ensureProgramLoaded(app.selectedProgramId).then((data) => { + if (!data.isFallback) { + if (!["ready", "loading"].includes(app.command)) return; + startParseStream(app.selectedProgramId, "manifest"); + } + }); + resetExecutionClock(); + render(); + } + + async function ensureProgramLoaded(programId) { + const cachedData = app.programCache.get(programId); + if (cachedData && cachedData.releaseId === app.manifest.release_id && (cachedData.isFallback || hasTrajectoryData(cachedData))) { + return cachedData; + } + if (app.programLoads.has(programId)) return app.programLoads.get(programId); + + const load = loadProgramData(programId).finally(() => { + app.programLoads.delete(programId); + }); + app.programLoads.set(programId, load); + return load; + } + + async function loadProgramData(programId) { + const program = app.programs.find((item) => item.program_id === programId); + if (!program) return fallbackProgramData; + + const artifacts = program.artifacts ?? {}; + const [ + sourceText, + trajectory, + controller, + motionQueue, + trace, + io, + compile, + postReport, + roundtrip + ] = await Promise.all([ + optionalText(program.source), + optionalJson(artifacts.trajectory), + optionalJson(artifacts.controller), + optionalJson(artifacts.motion_queue), + optionalJson(artifacts.trace), + optionalJson(artifacts.io), + optionalJson(artifacts.compile), + optionalJson(artifacts.post_report), + optionalJson(artifacts.roundtrip) + ]); + + const data = { + sourceText: sourceText || fallbackProgramData.sourceText, + trajectory: trajectory ?? {}, + controller: controller ?? {}, + motionQueue: motionQueue ?? {}, + trace: Array.isArray(trace) ? trace : [], + io: io ?? {}, + compile: compile ?? {}, + postReport: postReport ?? {}, + roundtrip: roundtrip ?? {}, + isFallback: false, + releaseId: app.manifest.release_id ?? "local", + errors: [] + }; + if (hasTrajectoryData(data) || !app.programCache.has(programId)) { + app.programCache.set(programId, data); + } + return data; + } + + function sourceLineCount(data) { + return (data.sourceText || fallbackProgramData.sourceText).split(/\r?\n/).length; + } + + function sourceFrameCount(data) { + return Array.isArray(data?.trajectory?.frames) ? data.trajectory.frames.length : 0; + } + + function visibleSourceFrameCount() { + const data = selectedData(); + return Array.isArray(data?.trajectory?.frames) ? data.trajectory.frames.length : 0; + } + + function stopParseStream() { + if (app.parseStream.timer) { + window.clearInterval(app.parseStream.timer); + app.parseStream.timer = 0; + } + app.parseStream.active = false; + } + + function resetParseStreamSummary(message = "idle") { + stopParseStream(); + app.parseStream.programId = ""; + app.parseStream.cursorLine = 0; + app.parseStream.totalLines = 0; + app.parseStream.linesPerTick = 1; + app.parseStream.startedAt = 0; + app.parseStream.lastSummary = message; + } + + function startParseStream(programId, reason) { + const data = cachedProgramData(programId); + const totalLines = sourceLineCount(data); + stopParseStream(); + resetExecutionClock(); + app.command = "parsing"; + app.parseStream.active = true; + app.parseStream.programId = programId; + app.parseStream.cursorLine = 0; + app.parseStream.totalLines = totalLines; + app.parseStream.linesPerTick = Math.max(1, Math.ceil(totalLines / 24)); + app.parseStream.startedAt = performance.now(); + app.parseStream.completedProgramId = ""; + app.parseStream.lastSummary = `parsing 0/${totalLines} lines`; + pushTrace(`${programId} parsing ${reason} from ${storageModeLabel()}`); + render(); + app.parseStream.timer = window.setInterval(advanceParseStream, app.samplePeriodMs); + advanceParseStream(); + } + + function advanceParseStream() { + if (!app.parseStream.active) return; + const data = cachedProgramData(app.parseStream.programId); + app.parseStream.totalLines = sourceLineCount(data); + app.parseStream.cursorLine = Math.min( + app.parseStream.totalLines, + app.parseStream.cursorLine + app.parseStream.linesPerTick + ); + syncExecutionClockToLatestSample(); + const parsedFrames = visibleSourceFrameCount(); + const totalFrames = sourceFrameCount(data); + app.parseStream.lastSummary = [ + `parsing ${app.parseStream.cursorLine}/${app.parseStream.totalLines} lines`, + `frames ${Math.min(parsedFrames, totalFrames)}/${totalFrames}`, + `t=${formatNumber(app.playbackTime, 3)} s` + ].join(", "); + if (app.parseStream.cursorLine >= app.parseStream.totalLines) { + finishParseStream("ready"); + return; + } + render(); + } + + function finishParseStream(nextCommand = "ready") { + const programId = app.parseStream.programId || app.selectedProgramId; + const data = cachedProgramData(programId); + stopParseStream(); + app.parseStream.cursorLine = sourceLineCount(data); + app.parseStream.totalLines = app.parseStream.cursorLine; + app.parseStream.completedProgramId = programId; + app.parseStream.lastSummary = `parsed ${app.parseStream.totalLines} lines, ${sourceFrameCount(data)} frames`; + app.command = nextCommand; + resetExecutionClock(); + pushTrace(`${programId} parsed (${sourceFrameCount(data)} frames, ${executionSamples().length} samples @50ms)`); + render(); + } + + function finishParseStreamForCommand() { + if (!app.parseStream.active) return; + finishParseStream("ready"); + } + + function parserText() { + return app.parseStream.active ? app.parseStream.lastSummary : app.parseStream.lastSummary || "idle"; + } + + function parserProgressValue() { + if (app.parseStream.totalLines <= 0) return app.parseStream.active ? 0 : 1; + return Math.min(Math.max(app.parseStream.cursorLine / app.parseStream.totalLines, 0), 1); + } + + async function selectProgram(programId) { + stopPlayback(); + stopParseStream(); + app.selectedProgramId = programId; + app.command = "loading"; + resetExecutionClock(); + app.di1 = false; + app.do1 = false; + app.wait = "none"; + pushTrace(`${programId} loading from ${storageModeLabel()}`); + render(); + try { + await ensureProgramLoaded(programId); + if (app.selectedProgramId !== programId) return; + startParseStream(programId, "selection"); + } catch (error) { + if (app.selectedProgramId === programId) reportRuntimeError(`${programId} select`, error); + } + } + + function commandTrace() { + const trace = selectedData().trace; + if (Array.isArray(trace) && trace.length > 0) return trace; + return []; + } + + function diagnosticText() { + const data = selectedData(); + const diagnostics = [ + ...((data.controller?.snapshot?.state?.diagnostics) ?? []), + ...((data.trajectory?.diagnostics) ?? []), + ...((data.postReport?.report) ?? []) ]; + const latest = diagnostics.at(-1); + if (!latest) { + const program = selectedProgram(); + return `${program?.status ?? "ready"} / ${program?.coverage_level ?? "Runtime"}`; + } + return `${latest.code ?? latest.severity}: ${latest.message ?? ""}`.trim(); } - function handleCommand(command) { - state.command = command === "run" ? "running" : command; + function queueItems() { + const items = selectedData().motionQueue?.items; + return Array.isArray(items) ? items : []; + } + + function queueText() { + const items = queueItems(); + if (items.length === 0) return "empty"; + return items.map((item) => { + const pathId = item.request?.pathId ?? item.source?.pathId ?? item.id; + const motions = Array.isArray(item.request?.segments) + ? item.request.segments.map((segment) => segment.motion).join("/") + : item.kind ?? "motion"; + return `${pathId}:${motions}`; + }).join(" -> "); + } + + function ioText() { + const image = selectedData().io?.image ?? {}; + const do1 = app.do1 || image["io.do[1]"] === true; + return `do[1]=${do1}, di[1]=${app.di1}, io=${Object.keys(image).length}`; + } + + function storageModeLabel() { + const mode = app.storage.mode === "checking" ? "cache" : app.storage.mode; + return `${mode} h${app.storage.hits}/n${app.storage.network}/w${app.storage.writes}/e${app.storage.errors}`; + } + + function storageText() { + return `${storageModeLabel()} ${app.storage.last}`; + } + + function reportRuntimeError(context, error) { + const message = `${context}: ${error instanceof Error ? error.message : String(error)}`; + window.__vcErrors.push(message); + app.storage.errors += 1; + app.storage.last = message; + pushTrace(message); + render(); + } + + function sourceTextForTab(tab) { + const program = selectedProgram(); + const data = selectedData(); + if (tab === "grl") return data.sourceText || fallbackProgramData.sourceText; + + const moduleName = data.compile?.moduleName ?? (program?.program_id ?? "W2Program").replace(/^W2_/, "W2"); + const filenames = Array.isArray(data.postReport?.filenames) ? data.postReport.filenames : []; + if (tab === "abb") { + return [ + `MODULE ${moduleName}`, + ` ! ${filenames.find((name) => name.endsWith(".mod")) ?? `${moduleName}.mod`}`, + " PROC main()", + " ! See post-report.json for generated brand diagnostics.", + " ENDPROC", + "ENDMODULE" + ].join("\n"); + } + if (tab === "fanuc") { + return [ + `/PROG ${moduleName.toUpperCase()}`, + `/ATTR`, + `COMMENT = "${filenames.find((name) => name.endsWith(".ls")) ?? `${moduleName}.ls`}";`, + "/MN", + " 1: ! See post-report.json ;", + "/END" + ].join("\n"); + } + return [ + `DEF ${moduleName}()`, + ` ; ${filenames.find((name) => name.endsWith(".src")) ?? `${moduleName}.src`}`, + " ; See post-report.json", + "END" + ].join("\n"); + } + + function updateObjectTree() { + if (!objectTree) return; + const program = selectedProgram(); + const items = queueItems(); + const pathNames = [...new Set(items.map((item) => item.request?.pathId ?? item.source?.pathId).filter(Boolean))]; + const entries = [ + `Robot: ${app.manifest.robot_id ?? "abb_irb120_3_58"}`, + "Tool: tool0", + "Frame: world", + `Path: ${pathNames.join(", ") || "pick_place"}`, + `Program: ${program?.program_id ?? "W2_60_IOWaitPulse"}`, + `Coverage: ${program?.coverage_level ?? "Runtime"}`, + `Status: ${program?.status ?? "pass"}`, + `Frames: ${frames().length}`, + `Suite: ${app.manifest.suite_id ?? "working2-abb120-spec"}`, + `Job: ${app.manifest.job_id ?? "W2-JOB-latest"}`, + "Reports" + ]; + objectTree.textContent = ""; + for (const entry of entries) { + const item = document.createElement("li"); + item.textContent = entry; + objectTree.append(item); + } + } + + function updateFrameSlider() { + if (!frameSlider) return; + const samples = currentSamples(); + frameSlider.max = String(Math.max(samples.length - 1, 0)); + frameSlider.value = String(Math.min(app.currentSampleIndex, Math.max(samples.length - 1, 0))); + } + + function updatePathMarker() { + if (!pathCurrent) return; + const duration = trajectoryDuration(); + const ratio = duration > 0 ? Math.min(Math.max(app.playbackTime / duration, 0), 1) : 0; + const x = 70 + ratio * 340; + const y = 170 - Math.sin(ratio * Math.PI) * 80 - ratio * 20; + pathCurrent.setAttribute("cx", String(formatNumber(x, 2))); + pathCurrent.setAttribute("cy", String(formatNumber(y, 2))); + } + + function sourceLines() { + return (selectedData().sourceText || fallbackProgramData.sourceText).split(/\r?\n/); + } + + function sourceLineText(line) { + const index = Math.round(numberOr(line, 0)) - 1; + return sourceLines()[index]?.trim() ?? ""; + } + + function mainProcedureRange() { + const lines = sourceLines(); + const startIndex = lines.findIndex((line) => /^\s*proc\s+main\s*\(/i.test(line)); + if (startIndex < 0) return { start: 0, end: 0 }; + const startIndent = leadingSpaces(lines[startIndex]); + for (let index = startIndex + 1; index < lines.length; index += 1) { + if (/^\s*end\b/i.test(lines[index]) && leadingSpaces(lines[index]) <= startIndent) { + return { start: startIndex + 1, end: index + 1 }; + } + } + return { start: startIndex + 1, end: lines.length }; + } + + function leadingSpaces(text) { + return String(text ?? "").match(/^\s*/)?.[0].length ?? 0; + } + + function setupStepsBefore(firstLine) { + const range = mainProcedureRange(); + if (range.start <= 0) return []; + const steps = []; + const lines = sourceLines(); + const limit = Math.max(numberOr(firstLine, range.end + 1), range.start + 1); + for (let line = range.start + 1; line < Math.min(limit, range.end); line += 1) { + const text = lines[line - 1]?.trim() ?? ""; + if (!/^(set_tool|set_frame)\b/i.test(text)) continue; + steps.push({ + kind: "setup", + label: "Setup", + line, + text, + timeStart: 0, + timeEnd: 0, + sampleStart: 0, + sampleEnd: 0, + detail: text.replace(/\s+/g, " ") + }); + } + return steps; + } + + function traceInstructionSteps() { + const steps = []; + let lastKey = ""; + for (const entry of commandTrace()) { + const line = numberOr(entry?.source?.sourceMap?.line, 0); + if (line <= 0 || entry?.kind === "load") continue; + const kind = entry.instructionKind ?? entry.source?.kind ?? entry.kind ?? "instruction"; + const key = `${line}:${kind}`; + const time = numberOr(entry.time, 0); + if (key === lastKey && steps.length > 0) { + const previous = steps.at(-1); + previous.timeEnd = Math.max(numberOr(previous.timeEnd, time), time); + previous.detail = mergeDetails(previous.detail, traceDetail(entry)); + continue; + } + const text = sourceLineText(line); + steps.push({ + kind: String(kind).toLowerCase(), + label: stepLabel(kind, text), + line, + text, + timeStart: time, + timeEnd: time, + pc: numberOr(entry.pc, 0), + traceKind: entry.kind, + detail: traceDetail(entry) + }); + lastKey = key; + } + return steps; + } + + function traceDetail(entry) { + const data = entry?.data ?? {}; + if (Array.isArray(data.result) && data.result.length > 0) { + return data.result.map((item) => { + const target = item.target?.raw ?? item.target?.domain ?? item.kind ?? "io"; + return `${target}=${String(item.value)}`; + }).join(", "); + } + if (data.status) return `status=${data.status}`; + if (data.queued === true) return "queued"; + if (data.alarmId) return `alarm=${data.alarmId}`; + if (entry?.diagnostic?.code) return entry.diagnostic.code; + if (entry?.message) return entry.message; + return ""; + } + + function mergeDetails(left, right) { + if (!right) return left ?? ""; + if (!left) return right; + return left.includes(right) ? left : `${left}; ${right}`; + } + + function stepLabel(kind, text) { + const source = String(text ?? "").trim().toLowerCase(); + const normalized = String(kind ?? "").toUpperCase(); + if (/^set_(tool|frame)\b/.test(source)) return "Setup"; + if (/^run_operation\b/.test(source) || normalized === "RUN_OPERATION") return "Operation"; + if (/^run_path\b/.test(source) || normalized === "RUN_PATH") return "Path"; + if (/^point\b/.test(source)) return "Path Point"; + if (/^event\b/.test(source)) return "Path Event"; + if (/^(movej|movel|movec|moveabsj)\b/.test(source) || /^MOVE/.test(normalized)) return "Motion"; + if (/^wait\b/.test(source) || normalized === "WAIT") return "Wait"; + if (/^pulse\b/.test(source) || normalized === "PULSE") return "Pulse"; + if (/^io\./.test(source) || normalized === "IO_WRITE") return "IO"; + if (/^(if|elseif|else|while|for|switch|case|break|continue)\b/.test(source) || normalized.startsWith("EXEC_")) return "Control"; + if (/^call\b/.test(source)) return "Call"; + if (/^return\b/.test(source)) return "Return"; + if (normalized === "ALARM") return "Alarm"; + return normalized.replace(/^RAW_/, "").replace(/_/g, " ").toLowerCase(); + } + + function sampleGroups(samples = currentSamples()) { + const groups = []; + for (const sample of samples) { + const line = numberOr(sample?.sourceMap?.line, 0); + if (line <= 0) continue; + const key = [ + line, + sample.motion ?? "", + sample.targetId ?? sample.segmentId ?? "" + ].join(":"); + const previous = groups.at(-1); + if (previous?.key === key && previous.sampleEnd + 1 === sample.index) { + previous.sampleEnd = sample.index; + previous.timeEnd = numberOr(sample.time, previous.timeEnd); + } else { + groups.push({ + id: `sample:${groups.length}`, + key, + line, + motion: sample.motion ?? "", + target: sample.targetId ?? sample.segmentId ?? "", + sampleStart: sample.index, + sampleEnd: sample.index, + timeStart: numberOr(sample.time, 0), + timeEnd: numberOr(sample.time, 0) + }); + } + } + return groups; + } + + function applySampleGroup(step, group) { + if (!group) return step; + step.motion = group.motion || step.motion; + step.target = group.target || step.target; + step.sampleStart = group.sampleStart; + step.sampleEnd = group.sampleEnd; + step.timeStart = Math.min(numberOr(step.timeStart, group.timeStart), group.timeStart); + step.timeEnd = Math.max(numberOr(step.timeEnd, group.timeEnd), group.timeEnd); + return step; + } + + function nearestSampleIndex(time, samples = currentSamples()) { + if (samples.length === 0) return 0; + let bestIndex = 0; + let bestDistance = Infinity; + for (const sample of samples) { + const distance = Math.abs(numberOr(sample.time, 0) - numberOr(time, 0)); + if (distance < bestDistance) { + bestDistance = distance; + bestIndex = sample.index; + } + } + return bestIndex; + } + + function findUnusedGroup(line, groups, usedGroupIds) { + const group = groups.find((item) => item.line === line && !usedGroupIds.has(item.id)) + ?? groups.find((item) => item.line === line); + if (group) usedGroupIds.add(group.id); + return group; + } + + function queueChildrenForStep(step, groups, usedGroupIds) { + const children = []; + for (const item of queueItems()) { + const parentLine = numberOr(item?.source?.sourceMap?.line ?? item?.source?.instruction?.sourceMap?.line, 0); + if (parentLine !== step.line) continue; + const request = item.request ?? {}; + const segments = Array.isArray(request.segments) ? request.segments : []; + const events = Array.isArray(request.events) ? request.events : []; + const eventsByPoint = new Map(); + const looseEvents = []; + for (const event of events) { + const pointId = event.pointId ?? ""; + if (!pointId) { + looseEvents.push(event); + continue; + } + if (!eventsByPoint.has(pointId)) eventsByPoint.set(pointId, []); + eventsByPoint.get(pointId).push(event); + } + + for (const segment of segments) { + const beforeEvents = (eventsByPoint.get(segment.id) ?? []).filter((event) => event.timing === "before"); + for (const event of beforeEvents) children.push(queueEventStep(event, step)); + + children.push(queueSegmentStep(segment, step, groups, usedGroupIds)); + + const afterEvents = (eventsByPoint.get(segment.id) ?? []).filter((event) => event.timing !== "before"); + for (const event of afterEvents) children.push(queueEventStep(event, step, segment, groups)); + } + + for (const event of looseEvents) children.push(queueEventStep(event, step)); + } + + return children.filter((child) => child.line > 0 && child.line !== step.line); + } + + function queueSegmentStep(segment, parent, groups, usedGroupIds) { + const line = numberOr(segment?.sourceMap?.line, 0); + const text = sourceLineText(line); + const step = { + kind: "path-point", + label: stepLabel(segment?.motion ?? "MOVE", text), + line, + text, + timeStart: numberOr(parent.timeStart, 0), + timeEnd: numberOr(parent.timeEnd, 0), + motion: segment?.motion ?? "", + target: segment?.targetId ?? segment?.target?.id ?? segment?.id ?? "", + detail: `${segment?.motion ?? "MOVE"} ${segment?.targetId ?? segment?.target?.id ?? segment?.id ?? ""}`.trim() + }; + return applySampleGroup(step, findUnusedGroup(line, groups, usedGroupIds)); + } + + function queueEventStep(event, parent, segment, groups = []) { + const line = numberOr(event?.sourceMap?.line, 0); + const text = sourceLineText(line); + const segmentGroup = segment + ? groups.find((group) => group.line === numberOr(segment?.sourceMap?.line, 0)) + : undefined; + const time = event?.timing === "before" + ? numberOr(segmentGroup?.timeStart, numberOr(parent.timeStart, 0)) + : numberOr(segmentGroup?.timeEnd, numberOr(parent.timeEnd, numberOr(parent.timeStart, 0))); + const sample = event?.timing === "before" + ? numberOr(segmentGroup?.sampleStart, parent.sampleStart) + : numberOr(segmentGroup?.sampleEnd, parent.sampleEnd); + return { + kind: "path-event", + label: stepLabel("EVENT", text), + line, + text, + timeStart: time, + timeEnd: time, + sampleStart: Number.isFinite(sample) ? sample : undefined, + sampleEnd: Number.isFinite(sample) ? sample : undefined, + detail: `${event?.timing ?? "event"} ${event?.pointId ?? ""} ${event?.kind ?? ""}`.trim() + }; + } + + function buildProgramSteps(samples = currentSamples()) { + const groups = sampleGroups(samples); + const usedGroupIds = new Set(); + const traceSteps = traceInstructionSteps(); + const firstTraceLine = traceSteps.find((step) => step.line > 0)?.line ?? 0; + const steps = setupStepsBefore(firstTraceLine); + const seenSourceRows = new Set(steps.map((step) => `${step.line}:${step.kind}`)); + + for (const traceStep of traceSteps) { + const step = { ...traceStep }; + applySampleGroup(step, findUnusedGroup(step.line, groups, usedGroupIds)); + if (step.sampleStart === undefined && step.timeStart !== undefined) { + const sample = nearestSampleIndex(step.timeStart, samples); + step.sampleStart = sample; + step.sampleEnd = sample; + } + const childSteps = queueChildrenForStep(step, groups, usedGroupIds); + const childGroups = childSteps.filter((child) => child.sampleStart !== undefined); + if (childGroups.length > 0 && !step.motion) { + step.sampleStart = Math.min(...childGroups.map((child) => child.sampleStart)); + step.sampleEnd = Math.max(...childGroups.map((child) => child.sampleEnd)); + step.timeStart = Math.min(...childGroups.map((child) => child.timeStart)); + step.timeEnd = Math.max(...childGroups.map((child) => child.timeEnd)); + } + const key = `${step.line}:${step.kind}:${step.pc ?? ""}`; + if (!seenSourceRows.has(key)) { + steps.push(step); + seenSourceRows.add(key); + } + for (const child of childSteps) { + const childKey = `${child.line}:${child.kind}:${child.detail ?? ""}`; + if (seenSourceRows.has(childKey)) continue; + steps.push(child); + seenSourceRows.add(childKey); + } + } + + for (const group of groups) { + if (usedGroupIds.has(group.id)) continue; + const text = sourceLineText(group.line); + steps.push({ + kind: "motion", + label: stepLabel(group.motion, text), + line: group.line, + text, + timeStart: group.timeStart, + timeEnd: group.timeEnd, + sampleStart: group.sampleStart, + sampleEnd: group.sampleEnd, + motion: group.motion, + target: group.target, + detail: `${group.motion} ${group.target}`.trim() + }); + usedGroupIds.add(group.id); + } + + if (steps.length === 0) { + const item = currentFrame(); + steps.push({ + kind: "sample", + label: "Sample", + line: numberOr(item?.sourceMap?.line, 0), + text: item?.sourceMap ? sourceLineText(item.sourceMap.line) : "sample trajectory", + timeStart: app.playbackTime, + timeEnd: app.playbackTime, + sampleStart: app.currentSampleIndex, + sampleEnd: app.currentSampleIndex, + motion: item?.motion ?? "", + target: item?.targetId ?? item?.segmentId ?? "" + }); + } + + return steps.map((step, index) => ({ + ...step, + index: index + 1, + id: `step:${index + 1}:${step.line}:${step.kind}` + })); + } + + function activeProgramStep(steps) { + if (steps.length === 0) return undefined; + const item = currentFrame(); + const line = numberOr(item?.sourceMap?.line, 0); + if (line > 0) { + const matchingMotion = steps.find((step) => { + return step.line === line + && step.sampleStart !== undefined + && step.sampleEnd !== undefined + && step.sampleStart <= app.currentSampleIndex + && step.sampleEnd >= app.currentSampleIndex; + }); + if (matchingMotion) return matchingMotion; + } + + const matchingSample = steps.find((step) => { + return step.sampleStart !== undefined + && step.sampleEnd !== undefined + && step.sampleStart <= app.currentSampleIndex + && step.sampleEnd >= app.currentSampleIndex; + }); + if (matchingSample) return matchingSample; + + const elapsedSteps = steps.filter((step) => numberOr(step.timeStart, 0) <= app.playbackTime + 1e-9); + return elapsedSteps.at(-1) ?? steps[0]; + } + + function stepState(step, active) { + if (!active) return "pending"; + if (step.id === active.id) return "active"; + if (step.sampleEnd !== undefined && active.sampleStart !== undefined && step.sampleEnd < active.sampleStart) { + return "complete"; + } + if (step.index < active.index && numberOr(step.timeEnd, 0) <= app.playbackTime + 1e-9) { + return "complete"; + } + return "pending"; + } + + function renderStepTable(steps, active) { + if (!stepTable) return; + stepTable.textContent = ""; + for (const step of steps) { + const row = document.createElement("tr"); + row.dataset.stepState = stepState(step, active); + if (step.id === active?.id) row.setAttribute("aria-current", "true"); + const cells = [ + step.index, + stepTimeText(step), + step.line > 0 ? step.line : "", + step.label, + step.text, + stepMotionText(step), + stepSampleText(step) + ]; + for (const cell of cells) { + const td = document.createElement("td"); + td.textContent = String(cell); + row.append(td); + } + stepTable.append(row); + } + } + + function stepTimeText(step) { + const start = numberOr(step.timeStart, 0); + const end = numberOr(step.timeEnd, start); + if (Math.abs(end - start) > 1e-9) { + return `${formatNumber(start, 3)}-${formatNumber(end, 3)} s`; + } + return `${formatNumber(start, 3)} s`; + } + + function stepMotionText(step) { + if (step.motion || step.target) { + return `${step.motion ?? ""}${step.target ? ` / ${step.target}` : ""}`.trim(); + } + return step.detail ?? ""; + } + + function stepSampleText(step) { + if (step.sampleStart === undefined || step.sampleEnd === undefined) return "-"; + const start = numberOr(step.sampleStart, 0) + 1; + const end = numberOr(step.sampleEnd, step.sampleStart) + 1; + return start === end ? `${start} @50ms` : `${start}-${end} @50ms`; + } + + function renderFrameTable() { + if (!frameTable) return; + const items = frames(); + frameTable.textContent = ""; + for (const item of items) { + const row = document.createElement("tr"); + if (item.index === app.currentFrameIndex) row.setAttribute("aria-current", "true"); + const cells = [ + item.index, + formatNumber(item.time, 4), + item.motion, + item.targetId ?? item.segmentId ?? "", + formatArray(item.tcp.position, 6), + formatArray(item.tcp.quaternion, 6), + ...item.joints.map((joint) => formatNumber(joint, 6)) + ]; + for (const cell of cells) { + const td = document.createElement("td"); + td.textContent = String(cell); + row.append(td); + } + frameTable.append(row); + } + } + + function render() { + const program = selectedProgram(); + const data = selectedData(); + const item = currentFrame(); + const trace = commandTrace(); + const traceLast = trace.at(-1); + const totalFrames = frames().length; + const samples = currentSamples(); + const programSteps = buildProgramSteps(samples); + const activeStep = activeProgramStep(programSteps); + const totalSamples = samples.length; + const duration = samples.at(-1)?.time ?? trajectoryDuration(); + const sourceMap = item.sourceMap ? `:${item.sourceMap.line ?? 0}` : ""; + + root?.setAttribute("data-last-command", app.command); + root?.setAttribute("data-running", String(app.command === "running")); + if (programSelect && programSelect.value !== app.selectedProgramId) { + programSelect.value = app.selectedProgramId; + } + + setField("job", app.manifest.job_id ?? "W2-JOB-latest"); + setField("state", app.command); + setField("program", program?.program_id ?? "W2_60_IOWaitPulse"); + setField("mode", app.mode); + setField("motors", app.motors); + setField("pc", `sample:${app.currentSampleIndex}${sourceMap}`); + setField( + "runtime", + `${formatNumber(app.playbackTime, 3)} / ${formatNumber(duration, 3)} s @ ${app.samplePeriodMs} ms` + ); + setField("joints", formatArray(item.joints, 6)); + setField("tcp", `pos ${formatArray(item.tcp.position, 6)} q ${formatArray(item.tcp.quaternion, 6)}`); + setField("log", app.localTrace.at(-1) ?? traceLast?.message ?? "ready"); + setField("diagnostics", diagnosticText()); + setField("io", ioText()); + setField("wait", app.wait); + setField("queue", queueText()); + setField("trace", `${trace.length + app.localTrace.length} events`); + setField("reports", app.report); + setField("parser", parserText()); + setField("storage", storageText()); + setField("editor", sourceTextForTab(app.tab)); + setField("frame", totalSamples > 0 ? `${app.currentSampleIndex + 1} / ${totalSamples}` : "0 / 0"); + setField( + "step-status", + activeStep + ? `${activeStep.index}/${programSteps.length} ${activeStep.label} line ${activeStep.line || "-"} t=${formatNumber(app.playbackTime, 3)} s` + : "0 / 0" + ); + const sampleCount = Number.isFinite(Number(data.trajectory?.sampleCount)) + ? Number(data.trajectory.sampleCount) + : (data.isFallback ? totalFrames : 0); + setField( + "frame-time", + `t=${formatNumber(app.playbackTime, 3)} / ${formatNumber(duration, 3)} s, step=${formatNumber(app.samplePeriodSec, 2)} s, source ${app.currentFrameIndex + 1}/${totalFrames} (${sampleCount} trajectory frames)` + ); + + for (const button of tabButtons) { + button.setAttribute("aria-pressed", String(button.dataset.tab === app.tab)); + } + if (parserProgress) { + parserProgress.value = parserProgressValue(); + } + + updateObjectTree(); + updateFrameSlider(); + updatePathMarker(); + renderStepTable(programSteps, activeStep); + renderFrameTable(); + } + + function pushTrace(message) { + app.localTrace.push(message); + if (app.localTrace.length > 100) app.localTrace.shift(); + } + + function advanceSample(stepSize) { + setSampleIndex(app.currentSampleIndex + stepSize); + } + + function startPlayback() { + finishParseStreamForCommand(); + stopPlayback(); + app.playbackStartedAt = performance.now(); + app.playbackTimeStart = app.playbackTime; + app.playbackSampleIndex = app.currentSampleIndex; + app.playbackTimer = window.setInterval(() => { + if (app.command !== "running") { + stopPlayback(); + return; + } + const elapsed = (performance.now() - app.playbackStartedAt) / 1000; + const before = app.currentSampleIndex; + setPlaybackTime(app.playbackTimeStart + elapsed); + if (before !== app.currentSampleIndex) { + app.playbackSampleIndex = app.currentSampleIndex; + } + if (app.currentSampleIndex >= Math.max(currentSamples().length - 1, 0)) { + stopPlayback(); + app.command = "ready"; + pushTrace(`${app.selectedProgramId} completed t=${formatNumber(app.playbackTime, 3)}s`); + } + render(); + }, app.samplePeriodMs); + } + + function stopPlayback() { + if (app.playbackTimer) { + window.clearInterval(app.playbackTimer); + app.playbackTimer = 0; + } + } + + async function handleCommand(command) { + root?.setAttribute("data-last-command", command); if (command === "load") { - state.pc = 0; - state.queue = ["movej home", "run_path pick_place"]; - state.wait = "none"; - pushTrace("program loaded"); + const programId = app.selectedProgramId; + stopPlayback(); + stopParseStream(); + app.command = "load"; + resetExecutionClock(); + app.di1 = false; + app.do1 = false; + app.wait = "none"; + pushTrace(`${programId} loading from ${storageModeLabel()}`); + render(); + void ensureProgramLoaded(programId).then(() => { + if (app.selectedProgramId !== programId) return; + if (!["load", "loading"].includes(app.command)) return; + startParseStream(programId, "load"); + }).catch((error) => reportRuntimeError(`${programId} load`, error)); + return; } else if (command === "run") { - advanceProgram(2); - state.do1 = true; - state.wait = state.di1 ? "satisfied" : "waiting di[1]"; - state.queue = state.di1 ? ["movel place"] : ["wait di[1]", "movel place"]; - pushTrace(state.di1 ? "running path" : "waiting for di[1]"); + const programId = app.selectedProgramId; + finishParseStreamForCommand(); + app.command = "running"; + app.do1 = true; + if (app.currentSampleIndex >= Math.max(currentSamples().length - 1, 0)) { + resetExecutionClock(); + } + advanceSample(1); + app.wait = app.di1 ? "satisfied" : "waiting di[1]"; + pushTrace(`${programId} running sample ${app.currentSampleIndex + 1} t=${formatNumber(app.playbackTime, 3)}s`); + startPlayback(); + render(); + void ensureProgramLoaded(programId).then(() => { + if (app.selectedProgramId === programId && app.command === "running") render(); + }).catch((error) => reportRuntimeError(`${programId} run load`, error)); + return; } else if (command === "pause") { - pushTrace("program paused"); + stopPlayback(); + app.command = "paused"; + pushTrace(`${app.selectedProgramId} paused`); } else if (command === "step") { - state.command = "paused"; - advanceProgram(1); - pushTrace(`stepped to main:${state.pc}`); + stopPlayback(); + finishParseStreamForCommand(); + app.command = "paused"; + advanceSample(1); + pushTrace(`${app.selectedProgramId} stepped sample ${app.currentSampleIndex + 1} t=${formatNumber(app.playbackTime, 3)}s`); } else if (command === "stop") { - state.queue = []; - pushTrace("program stopped"); + stopPlayback(); + stopParseStream(); + app.command = "stopped"; + app.wait = "none"; + pushTrace(`${app.selectedProgramId} stopped`); } else if (command === "reset") { - state.command = "ready"; - state.pc = 0; - state.joints = [0, 0, 0, 0, 0, 0]; - state.tcp = [0, 0, 580, 0, 0, 0]; - state.do1 = false; - state.wait = "none"; - state.queue = []; + stopPlayback(); + stopParseStream(); + app.command = "ready"; + resetExecutionClock(); + app.di1 = false; + app.do1 = false; + app.wait = "none"; pushTrace("controller reset"); } else if (command === "export") { - state.report = "A120-REPORT exported"; + app.report = `${app.manifest.job_id ?? "W2-JOB-latest"} report exported`; pushTrace("delivery package exported"); } render(); } for (const button of document.querySelectorAll("[data-command]")) { - button.addEventListener("click", () => handleCommand(button.dataset.command ?? "ready")); + button.addEventListener("click", () => { + const command = button.dataset.command ?? "ready"; + void handleCommand(command).catch((error) => reportRuntimeError(command, error)); + }); } for (const button of tabButtons) { button.addEventListener("click", () => { - state.tab = button.dataset.tab ?? "grl"; - pushTrace(`${state.tab.toUpperCase()} source selected`); + app.tab = button.dataset.tab ?? "grl"; + pushTrace(`${app.tab.toUpperCase()} source selected`); render(); }); } - document.querySelector("[data-io='di1']")?.addEventListener("click", () => { - state.di1 = !state.di1; - state.wait = state.di1 ? "satisfied" : "waiting di[1]"; - pushTrace(`di[1]=${state.di1}`); + programSelect?.addEventListener("change", () => { + void selectProgram(programSelect.value).catch((error) => reportRuntimeError("program select", error)); + }); + + frameSlider?.addEventListener("input", () => { + stopPlayback(); + setSampleIndex(numberOr(frameSlider.value, 0)); + app.command = app.command === "running" ? "paused" : app.command; + pushTrace(`${app.selectedProgramId} sample ${app.currentSampleIndex + 1} t=${formatNumber(app.playbackTime, 3)}s`); render(); }); + document.querySelector("[data-io='di1']")?.addEventListener("click", () => { + app.di1 = !app.di1; + app.wait = app.di1 ? "satisfied" : "waiting di[1]"; + pushTrace(`di[1]=${app.di1}`); + render(); + }); + + applyManifest(fallbackManifest); render(); + void loadManifest(); })(); diff --git a/kdl-wasm/web/scripts/build-demo-package.mjs b/kdl-wasm/web/scripts/build-demo-package.mjs new file mode 100644 index 0000000..3a0b1ca --- /dev/null +++ b/kdl-wasm/web/scripts/build-demo-package.mjs @@ -0,0 +1,548 @@ +import { createHash } from "node:crypto"; +import { + copyFileSync, + cpSync, + existsSync, + mkdirSync, + readdirSync, + readFileSync, + rmSync, + statSync, + writeFileSync +} from "node:fs"; +import { basename, dirname, join, relative, resolve, sep } from "node:path"; +import { fileURLToPath } from "node:url"; + +const root = resolve(fileURLToPath(new URL("../../..", import.meta.url))); +const webRoot = join(root, "kdl-wasm", "web"); +const deployRoot = join(webRoot, "test-results", "deploy"); +const appRoot = join(webRoot, "app"); +const specRoot = join(webRoot, "tests", "fixtures", "abb120", "spec-programs"); +const resultRoot = join(webRoot, "test-results", "abb120-spec"); +const uiResultRoot = join(webRoot, "test-results", "virtual-controller"); +const working2Root = join(root, "working2"); +const docsRoot = join(root, "work", "doc"); + +const jobId = getArg("--job") ?? latestJobId(); +const generatedAt = new Date(); +const releaseId = getArg("--release") ?? `${formatShanghaiId(generatedAt)}-${jobId}`; +const packageName = `kdl-olp-demo-${releaseId}`; +const packageDir = join(deployRoot, packageName); +const zipPath = join(deployRoot, `${packageName}.zip`); + +const jobDir = join(resultRoot, jobId); +const manifest = readJson(join(specRoot, "manifest.json")); +const job = readJson(join(jobDir, "job.json")); +const report = readJson(join(jobDir, "report.json")); +const uiEvidence = readJson(join(uiResultRoot, "evidence.json")); + +assertReportIsDeployable(report); +assertJobMatchesInputs(job, report, manifest); +assertSafeDeployPath(packageDir); +mkdirSync(deployRoot, { recursive: true }); +rmSync(packageDir, { recursive: true, force: true }); +mkdirSync(packageDir, { recursive: true }); + +copyTree(appRoot, join(packageDir, "app")); +copyTree(specRoot, join(packageDir, "spec-programs")); +copyTree(jobDir, join(packageDir, "test-results", "abb120-spec", jobId)); +copyTree(uiResultRoot, join(packageDir, "test-results", "virtual-controller")); +copyDocs(join(packageDir, "docs")); +copyWorking2Docs(join(packageDir, "docs", "working2")); + +const demoManifest = buildDemoManifest(); +writeJson(join(packageDir, "demo-manifest.json"), demoManifest); +writeFileSync(join(packageDir, "index.html"), indexHtml(demoManifest), "utf8"); +writeFileSync(join(packageDir, "README.md"), packageReadme(demoManifest), "utf8"); + +zipDirectory(packageDir, zipPath); +const zip = { + path: slash(relative(root, zipPath)), + bytes: statSync(zipPath).size, + sha256: sha256File(zipPath) +}; +const summary = { + release_id: releaseId, + generated_at: generatedAt.toISOString(), + job_id: jobId, + package_dir: slash(relative(root, packageDir)), + zip, + program_count: demoManifest.program_count, + report_fail: report.summary.fail +}; +writeJson(join(packageDir, "demo-build-summary.json"), summary); +writeJson(join(deployRoot, `${packageName}.summary.json`), summary); + +console.log(JSON.stringify(summary, null, 2)); + +function buildDemoManifest() { + const levelCounts = countLevels(manifest.programs); + const programs = manifest.programs.map((entry) => { + const jobProgram = job.programs.find((program) => program.program_id === entry.program_id); + return { + program_id: entry.program_id, + file: entry.file, + source: `spec-programs/${entry.file}`, + coverage_level: entry.coverage_level, + spec_sections: entry.spec_sections, + expected_status: entry.expected_status, + status: jobProgram?.status ?? "missing", + diagnostics: jobProgram?.diagnostics?.map((diagnostic) => diagnostic.code).filter(Boolean) ?? [], + artifacts: artifactLinks(entry.program_id) + }; + }); + + return { + release_id: releaseId, + generated_at: generatedAt.toISOString(), + suite_id: manifest.suite_id, + job_id: job.job_id, + robot_id: manifest.robot_id, + spec_source: manifest.spec_source, + program_count: manifest.programs.length, + runtime_programs: levelCounts.Runtime, + static_programs: levelCounts.Static, + post_programs: levelCounts.Post, + entry: "app/virtual-controller.html", + virtual_controller_entry: "app/virtual-controller.html", + report_json: `test-results/abb120-spec/${job.job_id}/report.json`, + report_html: `test-results/abb120-spec/${job.job_id}/report.html`, + job_json: `test-results/abb120-spec/${job.job_id}/job.json`, + program_manifest: "spec-programs/manifest.json", + screenshots: { + desktop: "test-results/virtual-controller/virtual-controller-desktop.png", + mobile: "test-results/virtual-controller/virtual-controller-mobile.png", + evidence: "test-results/virtual-controller/evidence.json" + }, + docs: [ + { + title: "GRL user manual", + href: "docs/grl-user-manual.docx", + kind: "docx" + }, + { + title: "OLP test document", + href: "docs/olp-test-document.docx", + kind: "docx" + }, + { + title: "Working2 acceptance evidence", + href: "docs/working2/acceptance-evidence.md", + kind: "markdown" + } + ], + coverage: report.coverage, + summary: report.summary, + programs + }; +} + +function artifactLinks(programId) { + const base = `test-results/abb120-spec/${job.job_id}/programs/${programId}`; + return { + compile: `${base}/compile.json`, + controller: `${base}/controller.json`, + motion_queue: `${base}/motion-queue.json`, + trace: `${base}/trace.json`, + io: `${base}/io.json`, + trajectory: `${base}/trajectory.json`, + post_report: `${base}/post-report.json`, + roundtrip: `${base}/roundtrip.json` + }; +} + +function copyDocs(targetDir) { + mkdirSync(targetDir, { recursive: true }); + const docs = [ + ["GRL功能语法逻辑与程序创建使用手册.docx", "grl-user-manual.docx"], + ["通用机器人离线编程系统测试文档.docx", "olp-test-document.docx"] + ]; + for (const [doc, alias] of docs) { + const source = join(docsRoot, doc); + if (!existsSync(source)) { + throw new Error(`Required document is missing: ${source}`); + } + copyFileSync(source, join(targetDir, doc)); + copyFileSync(source, join(targetDir, alias)); + } +} + +function copyWorking2Docs(targetDir) { + mkdirSync(targetDir, { recursive: true }); + for (const entry of readdirSync(working2Root, { withFileTypes: true })) { + if (entry.isFile() && entry.name.endsWith(".md")) { + copyFileSync(join(working2Root, entry.name), join(targetDir, entry.name)); + } + } + const aliases = { + "01-项目功能内容.md": "project-scope.md", + "02-项目程序开发详细步骤.md": "development-steps.md", + "03-推进台账.md": "progress-log.md", + "04-任务矩阵.md": "task-matrix.md", + "05-验收证据.md": "acceptance-evidence.md", + "06-决策记录.md": "decisions.md", + "07-服务器发布与演示包实施方案.md": "server-deploy-plan.md" + }; + for (const [sourceName, aliasName] of Object.entries(aliases)) { + const source = join(working2Root, sourceName); + if (existsSync(source)) { + copyFileSync(source, join(targetDir, aliasName)); + } + } + const manifestDir = join(working2Root, "programs"); + if (existsSync(manifestDir)) { + copyTree(manifestDir, join(targetDir, "programs")); + const manifestSource = join(manifestDir, "manifest.md"); + if (existsSync(manifestSource)) { + copyFileSync(manifestSource, join(targetDir, "program-manifest.md")); + } + } +} + +function indexHtml(demoManifest) { + const rows = demoManifest.programs.map((program) => ` + + ${escapeHtml(program.program_id)} + ${escapeHtml(program.coverage_level)} + ${escapeHtml(program.status)} + ${escapeHtml(program.spec_sections.join(", "))} + compile + `).join(""); + return ` + + + + + KDL OLP Demo ${escapeHtml(demoManifest.release_id)} + + + +
+

KDL OLP ABB120 Working2 Demo

+

Release ${escapeHtml(demoManifest.release_id)} / Job ${escapeHtml(demoManifest.job_id)} / Suite ${escapeHtml(demoManifest.suite_id)}

+
+
+ +
+
Programs${demoManifest.program_count}
+
Runtime${demoManifest.runtime_programs}
+
Static${demoManifest.static_programs}
+
Post${demoManifest.post_programs}
+
Fail${demoManifest.summary.fail}
+
+
+

Program Evidence

+ + + ${rows} + +
ProgramLayerStatusSpec SectionsArtifact
+
+
+

Screenshots

+
+ Virtual controller desktop screenshot + Virtual controller mobile screenshot +
+
+
+

Documents

+ + + ${demoManifest.docs.map((doc) => ``).join("\n ")} + +
${escapeHtml(doc.title)}${escapeHtml(doc.href)}
+
+
+ + +`; +} + +function packageReadme(demoManifest) { + return [ + `# KDL OLP demo ${demoManifest.release_id}`, + "", + `Job: ${demoManifest.job_id}`, + `Suite: ${demoManifest.suite_id}`, + `Programs: ${demoManifest.program_count}`, + `Report: ${demoManifest.report_html}`, + `Virtual controller: ${demoManifest.virtual_controller_entry}`, + "", + "Serve this directory as the HTTPS document root for the demo port." + ].join("\n"); +} + +function latestJobId() { + if (!existsSync(resultRoot)) { + throw new Error(`No ABB120 spec result directory found: ${resultRoot}`); + } + const jobs = readdirSync(resultRoot, { withFileTypes: true }) + .filter((entry) => entry.isDirectory() && entry.name.startsWith("W2-JOB-")) + .map((entry) => ({ + name: entry.name, + mtimeMs: statSync(join(resultRoot, entry.name)).mtimeMs + })) + .sort((left, right) => right.mtimeMs - left.mtimeMs || right.name.localeCompare(left.name)); + if (jobs.length === 0) { + throw new Error(`No W2-JOB-* result directories found in ${resultRoot}`); + } + return jobs[0].name; +} + +function assertReportIsDeployable(report) { + if (report.summary?.programs !== 19) { + throw new Error(`Expected report.summary.programs=19, got ${report.summary?.programs}`); + } + if (report.summary?.fail !== 0) { + throw new Error(`Expected report.summary.fail=0, got ${report.summary?.fail}`); + } + if (report.coverage?.missingSections?.length !== 0) { + throw new Error(`Expected no missing sections, got ${report.coverage.missingSections.join(",")}`); + } +} + +function assertJobMatchesInputs(job, report, manifest) { + if (job.job_id !== jobId || report.job_id !== jobId) { + throw new Error(`Job id mismatch: requested ${jobId}, job=${job.job_id}, report=${report.job_id}`); + } + if (job.suite_id !== manifest.suite_id || report.suite_id !== manifest.suite_id) { + throw new Error("Suite id mismatch between manifest, job, and report"); + } + if (manifest.programs.length !== 19 || job.programs.length !== 19) { + throw new Error(`Expected 19 programs, manifest=${manifest.programs.length}, job=${job.programs.length}`); + } +} + +function countLevels(programs) { + return programs.reduce((counts, program) => { + counts[program.coverage_level] = (counts[program.coverage_level] ?? 0) + 1; + return counts; + }, { Runtime: 0, Static: 0, Post: 0 }); +} + +function copyTree(source, target) { + if (!existsSync(source)) { + throw new Error(`Required path is missing: ${source}`); + } + mkdirSync(dirname(target), { recursive: true }); + cpSync(source, target, { recursive: true, force: true }); +} + +function readJson(file) { + return JSON.parse(readFileSync(file, "utf8")); +} + +function writeJson(file, value) { + mkdirSync(dirname(file), { recursive: true }); + writeFileSync(file, `${JSON.stringify(value, null, 2)}\n`, "utf8"); +} + +function zipDirectory(sourceDir, destinationFile) { + const files = walkFiles(sourceDir).sort((left, right) => left.localeCompare(right)); + const chunks = []; + const central = []; + let offset = 0; + + for (const file of files) { + const data = readFileSync(file); + const name = slash(relative(sourceDir, file)); + const nameBuffer = Buffer.from(name, "utf8"); + const stat = statSync(file); + const { time, date } = dosDateTime(stat.mtime); + const crc = crc32(data); + const local = Buffer.alloc(30); + local.writeUInt32LE(0x04034b50, 0); + local.writeUInt16LE(20, 4); + local.writeUInt16LE(0x0800, 6); + local.writeUInt16LE(0, 8); + local.writeUInt16LE(time, 10); + local.writeUInt16LE(date, 12); + local.writeUInt32LE(crc, 14); + local.writeUInt32LE(data.length, 18); + local.writeUInt32LE(data.length, 22); + local.writeUInt16LE(nameBuffer.length, 26); + local.writeUInt16LE(0, 28); + chunks.push(local, nameBuffer, data); + + const header = Buffer.alloc(46); + header.writeUInt32LE(0x02014b50, 0); + header.writeUInt16LE(20, 4); + header.writeUInt16LE(20, 6); + header.writeUInt16LE(0x0800, 8); + header.writeUInt16LE(0, 10); + header.writeUInt16LE(time, 12); + header.writeUInt16LE(date, 14); + header.writeUInt32LE(crc, 16); + header.writeUInt32LE(data.length, 20); + header.writeUInt32LE(data.length, 24); + header.writeUInt16LE(nameBuffer.length, 28); + header.writeUInt16LE(0, 30); + header.writeUInt16LE(0, 32); + header.writeUInt16LE(0, 34); + header.writeUInt16LE(0, 36); + header.writeUInt32LE(0, 38); + header.writeUInt32LE(offset, 42); + central.push(header, nameBuffer); + offset += local.length + nameBuffer.length + data.length; + } + + const centralOffset = offset; + const centralSize = central.reduce((total, chunk) => total + chunk.length, 0); + const end = Buffer.alloc(22); + end.writeUInt32LE(0x06054b50, 0); + end.writeUInt16LE(0, 4); + end.writeUInt16LE(0, 6); + end.writeUInt16LE(files.length, 8); + end.writeUInt16LE(files.length, 10); + end.writeUInt32LE(centralSize, 12); + end.writeUInt32LE(centralOffset, 16); + end.writeUInt16LE(0, 20); + + rmSync(destinationFile, { force: true }); + writeFileSync(destinationFile, Buffer.concat([...chunks, ...central, end])); +} + +function sha256File(file) { + return createHash("sha256").update(readFileSync(file)).digest("hex"); +} + +function formatShanghaiId(date) { + const parts = new Intl.DateTimeFormat("en-CA", { + timeZone: "Asia/Shanghai", + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + hour12: false + }).formatToParts(date); + const value = Object.fromEntries(parts.map((part) => [part.type, part.value])); + return `${value.year}${value.month}${value.day}-${value.hour}${value.minute}${value.second}`; +} + +function getArg(name) { + const index = process.argv.indexOf(name); + return index >= 0 ? process.argv[index + 1] : undefined; +} + +function slash(value) { + return value.split(sep).join("/"); +} + +function psSingleQuoted(value) { + return `'${String(value).replaceAll("'", "''")}'`; +} + +function assertSafeDeployPath(path) { + const allowedRoot = resolve(deployRoot) + sep; + const resolved = resolve(path); + if (!resolved.startsWith(allowedRoot)) { + throw new Error(`Refusing to modify path outside deploy root: ${resolved}`); + } +} + +function escapeHtml(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll('"', """); +} + +function escapeAttr(value) { + return escapeHtml(value); +} + +function walkFiles(dir) { + const files = []; + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const fullPath = join(dir, entry.name); + if (entry.isDirectory()) { + files.push(...walkFiles(fullPath)); + } else if (entry.isFile()) { + files.push(fullPath); + } + } + return files; +} + +function dosDateTime(date) { + const year = Math.max(1980, date.getFullYear()); + const month = date.getMonth() + 1; + const day = date.getDate(); + const hours = date.getHours(); + const minutes = date.getMinutes(); + const seconds = Math.floor(date.getSeconds() / 2); + return { + time: (hours << 11) | (minutes << 5) | seconds, + date: ((year - 1980) << 9) | (month << 5) | day + }; +} + +var crcTable; + +function crc32(buffer) { + crcTable ??= createCrcTable(); + let crc = 0xffffffff; + for (const byte of buffer) { + crc = crcTable[(crc ^ byte) & 0xff] ^ (crc >>> 8); + } + return (crc ^ 0xffffffff) >>> 0; +} + +function createCrcTable() { + const table = new Uint32Array(256); + for (let index = 0; index < 256; index += 1) { + let value = index; + for (let bit = 0; bit < 8; bit += 1) { + value = (value & 1) ? (0xedb88320 ^ (value >>> 1)) : (value >>> 1); + } + table[index] = value >>> 0; + } + return table; +} diff --git a/kdl-wasm/web/scripts/deploy-demo-package.ps1 b/kdl-wasm/web/scripts/deploy-demo-package.ps1 new file mode 100644 index 0000000..dad6387 --- /dev/null +++ b/kdl-wasm/web/scripts/deploy-demo-package.ps1 @@ -0,0 +1,184 @@ +param( + [string]$ZipPath, + [string]$Target = "ubuntu@82.156.24.101", + [string]$RemoteRoot = "/opt/kdl-olp-demo/8095", + [string]$BaseUrl = "https://82.156.24.101:8095", + [switch]$Sudo, + [switch]$NoSudo, + [switch]$SkipSmoke +) + +Set-StrictMode -Version Latest +$ErrorActionPreference = "Stop" + +$RepoRoot = Resolve-Path (Join-Path $PSScriptRoot "..\..\..") +$DeployRoot = Join-Path $RepoRoot "kdl-wasm\web\test-results\deploy" + +if ([string]::IsNullOrWhiteSpace($ZipPath)) { + $ZipPath = Get-ChildItem -LiteralPath $DeployRoot -Filter "kdl-olp-demo-*.zip" | + Sort-Object LastWriteTime -Descending | + Select-Object -First 1 -ExpandProperty FullName +} + +if ([string]::IsNullOrWhiteSpace($ZipPath) -or -not (Test-Path -LiteralPath $ZipPath)) { + throw "Demo zip not found. Run: npm run demo:build" +} + +$ZipPath = (Resolve-Path -LiteralPath $ZipPath).Path +$ZipName = Split-Path -Leaf $ZipPath +if ($ZipName -notmatch '^kdl-olp-demo-(.+)\.zip$') { + throw "Zip name must match kdl-olp-demo-.zip: $ZipName" +} +$ReleaseId = $Matches[1] +$RemoteZip = "/tmp/$ZipName" +$RemoteRelease = "$RemoteRoot/releases/$ReleaseId" + +function Invoke-Remote { + param([string]$Command) + ssh -o StrictHostKeyChecking=accept-new $Target $Command + if ($LASTEXITCODE -ne 0) { + throw "Remote command failed: $Command" + } +} + +function Remote-Cmd { + param([string]$Command) + if ($script:UseSudo) { + return "sudo sh -lc " + (Quote-Sh $Command) + } + return "sh -lc " + (Quote-Sh $Command) +} + +function Quote-Sh { + param([string]$Value) + return "'" + ($Value -replace "'", "'\''") + "'" +} + +function Get-RemoteParent { + param([string]$Path) + $Normalized = $Path.TrimEnd("/") + $Index = $Normalized.LastIndexOf("/") + if ($Index -le 0) { + return "/" + } + return $Normalized.Substring(0, $Index) +} + +$RemoteParent = Get-RemoteParent $RemoteRoot + +Write-Host "Deploying $ZipName to ${Target}:$RemoteRoot" + +scp -o StrictHostKeyChecking=accept-new $ZipPath "${Target}:$RemoteZip" +if ($LASTEXITCODE -ne 0) { + throw "scp upload failed" +} + +$script:UseSudo = $false +if ($Sudo) { + $script:UseSudo = $true +} elseif (-not $NoSudo) { + ssh -o StrictHostKeyChecking=accept-new $Target "test -w $(Quote-Sh $RemoteParent)" + if ($LASTEXITCODE -ne 0) { + ssh -o StrictHostKeyChecking=accept-new $Target "sudo -n true" + if ($LASTEXITCODE -eq 0) { + $script:UseSudo = $true + } else { + throw "Remote root is not writable and passwordless sudo is unavailable. Re-run with a writable -RemoteRoot or configure sudo." + } + } +} + +$prepare = @( + "set -eu" + "mkdir -p $(Quote-Sh "$RemoteRoot/releases")" + "rm -rf $(Quote-Sh $RemoteRelease)" + "mkdir -p $(Quote-Sh $RemoteRelease)" + "unzip -q -o $(Quote-Sh $RemoteZip) -d $(Quote-Sh $RemoteRelease)" + "test -f $(Quote-Sh "$RemoteRelease/index.html")" + "test -f $(Quote-Sh "$RemoteRelease/demo-manifest.json")" + "test -f $(Quote-Sh "$RemoteRelease/app/virtual-controller.html")" + "if [ -L $(Quote-Sh "$RemoteRoot/current") ] || [ -e $(Quote-Sh "$RemoteRoot/current") ]; then rm -f $(Quote-Sh "$RemoteRoot/previous"); ln -sfn `"`$(readlink -f $(Quote-Sh "$RemoteRoot/current"))`" $(Quote-Sh "$RemoteRoot/previous"); fi" + "ln -sfn $(Quote-Sh "$RemoteRelease") $(Quote-Sh "$RemoteRoot/current")" + "rm -f $(Quote-Sh $RemoteZip)" +) -join "; " + +Invoke-Remote (Remote-Cmd $prepare) + +$restart = "if command -v systemctl >/dev/null 2>&1 && systemctl list-unit-files kdl-site-8095.service >/dev/null 2>&1; then systemctl restart kdl-site-8095; fi" +Invoke-Remote (Remote-Cmd $restart) + +$smoke = @{ + release_id = $ReleaseId + zip = $ZipPath + target = $Target + remote_root = $RemoteRoot + remote_release = $RemoteRelease + base_url = $BaseUrl + deployed_at = (Get-Date).ToUniversalTime().ToString("o") + urls = @() +} + +if (-not $SkipSmoke) { + $nodeSmoke = @" +process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; +const baseUrl = "$BaseUrl"; +const get = async (path) => { + const response = await fetch(baseUrl + path); + const buffer = Buffer.from(await response.arrayBuffer()); + if (response.status !== 200) { + throw new Error(path + " returned " + response.status); + } + return { + path, + status: response.status, + bytes: buffer.length, + text: buffer.toString("utf8") + }; +}; +const manifestResponse = await get("/demo-manifest.json"); +const manifest = JSON.parse(manifestResponse.text); +const jobId = manifest.job_id; +const paths = [ + "/", + "/demo-manifest.json", + "/spec-programs/manifest.json", + "/app/virtual-controller.html", + "/test-results/abb120-spec/" + jobId + "/report.json", + "/test-results/abb120-spec/" + jobId + "/report.html", + "/test-results/virtual-controller/virtual-controller-desktop.png", + "/test-results/virtual-controller/virtual-controller-mobile.png" +]; +const urls = []; +for (const path of paths) { + const result = path === "/demo-manifest.json" ? manifestResponse : await get(path); + urls.push({ url: baseUrl + path, status: result.status, bytes: result.bytes }); +} +const reportResponse = await get("/test-results/abb120-spec/" + jobId + "/report.json"); +const report = JSON.parse(reportResponse.text); +if (Number(manifest.program_count) !== 19) { + throw new Error("Expected program_count=19, got " + manifest.program_count); +} +if (Number(report.summary.fail) !== 0) { + throw new Error("Expected summary.fail=0, got " + report.summary.fail); +} +console.log(JSON.stringify({ + job_id: jobId, + program_count: Number(manifest.program_count), + summary_fail: Number(report.summary.fail), + urls +})); +"@ + $nodeOutput = $nodeSmoke | node --input-type=module + if ($LASTEXITCODE -ne 0) { + throw "Smoke check failed" + } + $nodeSmokeResult = $nodeOutput | Select-Object -Last 1 | ConvertFrom-Json + $smoke.job_id = $nodeSmokeResult.job_id + $smoke.program_count = [int]$nodeSmokeResult.program_count + $smoke.summary_fail = [int]$nodeSmokeResult.summary_fail + $smoke.urls = @($nodeSmokeResult.urls) +} + +$SmokePath = Join-Path $DeployRoot "kdl-olp-demo-$ReleaseId.deploy.json" +$smoke | ConvertTo-Json -Depth 8 | Set-Content -LiteralPath $SmokePath -Encoding UTF8 +$smoke | ConvertTo-Json -Depth 8 diff --git a/kdl-wasm/web/scripts/generate-abb120-test-document.mjs b/kdl-wasm/web/scripts/generate-abb120-test-document.mjs new file mode 100644 index 0000000..a5f78e3 --- /dev/null +++ b/kdl-wasm/web/scripts/generate-abb120-test-document.mjs @@ -0,0 +1,610 @@ +import { execFileSync } from "node:child_process"; +import { + copyFileSync, + existsSync, + mkdirSync, + readdirSync, + readFileSync, + rmSync, + statSync, + writeFileSync +} from "node:fs"; +import { dirname, join, resolve, sep } from "node:path"; +import { fileURLToPath } from "node:url"; + +const root = resolve(fileURLToPath(new URL("../../..", import.meta.url))); +const webRoot = join(root, "kdl-wasm", "web"); +const resultRoot = join(webRoot, "test-results", "abb120-spec"); +const specRoot = join(webRoot, "tests", "fixtures", "abb120", "spec-programs"); +const virtualControllerEvidencePath = join(webRoot, "test-results", "virtual-controller", "evidence.json"); +const outputPath = join(root, "work", "doc", "通用机器人离线编程系统测试文档.docx"); +const stagingRoot = join(webRoot, "test-results", "docx-build"); + +const jobId = process.argv[2] ?? latestJobId(); +const jobDir = join(resultRoot, jobId); +const job = readJson(join(jobDir, "job.json")); +const report = readJson(join(jobDir, "report.json")); +const manifest = readJson(join(jobDir, "manifest.json")); +const uiEvidence = readJson(virtualControllerEvidencePath); +const generatedAt = formatShanghaiTime(new Date()); + +const descriptionByProgram = { + W2_00_MinimalModule: "最小模块、language/module/proc main、常量 speed/zone、joint_target、MoveJ 基础执行。", + W2_10_DataTargetToolFrame: "数据类型、tool、frame、pose、poseq、joint_target、pose_target、工具和工件坐标切换。", + W2_20_ExpressionMath: "算术、比较、逻辑、括号、单位后缀、pi/e、三角函数和编译期求值。", + W2_30_MotionAllTypes: "MoveJ、MoveL、MoveC、set_tool、set_frame、set_speed、set_zone 和 inline 参数优先级。", + W2_40_PathEvents: "path defaults/source、point、event before/after/at distance、run_path。", + W2_50_OperationProcess: "operation kind/process/start_action/end_action、run_operation。", + W2_60_IOWaitPulse: "io.di/do/ai/ao/gi/go/ri/ro、wait、timeout、on_timeout、pulse 和边沿条件。", + W2_70_ControlFlow: "if/elseif/else、while、for、switch、break、continue 流程控制。", + W2_80_ProcFuncCall: "proc、in/out/inout、call、return、func 返回值和作用域。", + W2_90_ExceptionAlarm: "alarm、raise、try/catch/finally、trap/task P1 边界诊断。", + W2_99_FullSpecExample: "完整示例,覆盖 tool/frame、path、operation、IO event、run_operation 和回 home。", + W2_E10_ExpressionDiagnostics: "表达式负向测试:未知符号、未知函数、参数数量、数学域、除零、单位不匹配。", + W2_E20_SemanticDiagnostics: "语义负向测试:重复符号、out/inout 非左值、缺失调用目标、函数副作用、缺失目标。", + W2_E30_MotionDiagnostics: "运动负向测试:关节限位、不可达 pose、空 path 等 KDL/Path 诊断。", + W2_E40_ControlFlowDiagnostics: "流程控制负向测试:非法 break/continue、jump、重复 case、非常量 case、缺失 label。", + W2_E50_RuntimeTimeout: "运行时超时负向测试:wait timeout、on_timeout、报警 source map。", + W2_P10_BrandHints: "品牌提示后处理测试:post_hint、@brand.* 消费或报告。", + W2_P20_CrossBrandMotion: "跨品牌运动后处理:ABB/FANUC/KUKA motion、speed、zone、IO、wait 映射。", + W2_P30_Roundtrip: "后处理和导入回读测试:post 后 ABB import roundtrip,记录差异和警告。" +}; + +const commandResults = [ + { + command: "npm run typecheck", + scope: "TypeScript 静态类型检查", + process: "执行 tsc -p kdl-wasm/web/tsconfig.json --noEmit,检查 Web、GRL、runtime、post 和 suite 代码类型。", + result: "通过,未输出 TypeScript 错误。" + }, + { + command: "npm test", + scope: "全量 Vitest 自动化测试", + process: "执行 vitest run --config kdl-wasm/web/vitest.config.ts,覆盖 KDL、GRL、runtime、controller、post/import、workspace、report、docs 和 ABB120 integration。", + result: "通过,41 个 test files、155 个 tests 全部 passed。" + }, + { + command: "npm run suite:abb120-spec", + scope: "ABB120 GRL 规范程序套件", + process: "读取 manifest.json 和 19 个 GRL 程序,逐项执行 parse、semantic compile、runtime/static/post 检查,并输出 job/report/program artifacts。", + result: `通过,生成 ${job.job_id};programs=${report.summary.programs},pass=${report.summary.pass},expected diagnostic=${report.summary.diagnostic},fail=${report.summary.fail},missingSections=${report.coverage.missingSections.length}。` + }, + { + command: "npm run verify:virtual-controller", + scope: "虚拟控制器 UI 和截图验证", + process: "使用 Chrome DevTools Protocol 打开 virtual-controller.html,分别验证 desktop/mobile 视口、点击 load/run/DI1、检查主要面板、状态、wait 和横向溢出,并截图。", + result: `通过,desktop=${uiEvidence.desktop.screenshotBytes} bytes,mobile=${uiEvidence.mobile.screenshotBytes} bytes;state=${uiEvidence.desktop.state}/${uiEvidence.mobile.state},wait=${uiEvidence.desktop.wait}/${uiEvidence.mobile.wait}。` + } +]; + +const programs = job.programs.map((program) => { + const sourcePath = join(specRoot, program.file); + return { + ...program, + manifestEntry: manifest.programs.find((entry) => entry.program_id === program.program_id), + sourcePath, + source: readFileSync(sourcePath, "utf8") + }; +}); + +buildDocx(); +console.log(JSON.stringify({ outputPath, jobId, programs: programs.length }, null, 2)); + +function buildDocx() { + assertSafeStaging(stagingRoot); + rmSync(stagingRoot, { recursive: true, force: true }); + mkdirSync(join(stagingRoot, "_rels"), { recursive: true }); + mkdirSync(join(stagingRoot, "docProps"), { recursive: true }); + mkdirSync(join(stagingRoot, "word", "_rels"), { recursive: true }); + mkdirSync(join(stagingRoot, "word", "media"), { recursive: true }); + + const images = copyImages(); + writeFileSync(join(stagingRoot, "[Content_Types].xml"), contentTypesXml(), "utf8"); + writeFileSync(join(stagingRoot, "_rels", ".rels"), packageRelsXml(), "utf8"); + writeFileSync(join(stagingRoot, "docProps", "core.xml"), corePropsXml(), "utf8"); + writeFileSync(join(stagingRoot, "docProps", "app.xml"), appPropsXml(), "utf8"); + writeFileSync(join(stagingRoot, "word", "styles.xml"), stylesXml(), "utf8"); + writeFileSync(join(stagingRoot, "word", "_rels", "document.xml.rels"), documentRelsXml(images), "utf8"); + writeFileSync(join(stagingRoot, "word", "document.xml"), documentXml(images), "utf8"); + + if (existsSync(outputPath)) { + rmSync(outputPath, { force: true }); + } + zipDirectory(stagingRoot, outputPath); +} + +function copyImages() { + const images = [ + { + id: "rIdImage1", + fileName: "virtual-controller-desktop.png", + source: uiEvidence.desktop.screenshot, + title: "虚拟控制器桌面端截图", + cx: 5943600, + cy: 3962400 + }, + { + id: "rIdImage2", + fileName: "virtual-controller-mobile.png", + source: uiEvidence.mobile.screenshot, + title: "虚拟控制器移动端截图", + cx: 2743200, + cy: 5943600 + } + ]; + for (const image of images) { + copyFileSync(image.source, join(stagingRoot, "word", "media", image.fileName)); + } + return images; +} + +function documentXml(images) { + const body = []; + body.push(heading("通用机器人离线编程系统测试文档", 1)); + body.push(p(`生成时间:${generatedAt}`)); + body.push(p(`测试对象:通用机器人离线编程系统 / ABB IRB120 虚拟控制器 / GRL 规范程序套件`)); + body.push(p(`工作区:${root}`)); + body.push(p(`最新测试 job:${job.job_id}`)); + + body.push(heading("一、测试结论", 1)); + body.push(table([ + ["项目", "结果"], + ["测试结论", "通过。本轮未发现非预期失败;5 个 diagnostic 程序为预期负向测试。"], + ["规范覆盖", `覆盖章节 ${report.coverage.coveredSections.join("、")};缺失章节:${report.coverage.missingSections.length === 0 ? "无" : report.coverage.missingSections.join("、")}`], + ["程序统计", `共 ${report.summary.programs} 个 GRL 规范程序;pass=${report.summary.pass},expected diagnostic=${report.summary.diagnostic},fail=${report.summary.fail}`], + ["测试层级", `Runtime=${report.coverage.runtimePrograms},Static=${report.coverage.staticPrograms},Post=${report.coverage.postPrograms}`], + ["主要证据", `${relative(jobDir)};${relative(dirname(uiEvidence.desktop.screenshot))}`] + ])); + + body.push(heading("二、测试范围", 1)); + body.push(p("本次测试覆盖离线编程系统的语法解析、语义编译、KDL 运动规划接口、虚拟控制器状态机、IO/wait/pulse、路径和工艺操作、异常报警、三品牌后处理、导入回读、工作台 UI 响应和截图证据。")); + body.push(table([ + ["范围", "覆盖内容"], + ["GRL 语言", "词法、顶层结构、类型系统、表达式、目标点、速度、zone、motion、path、operation、IO、流程控制、proc/func、异常和 P1 边界。"], + ["运动与 KDL", "ABB IRB120 fixture、MoveJ/MoveL/MoveC、path planning、joint limit、unreachable target、trajectory summary。"], + ["虚拟控制器", "loadProgram、start、stepInto、hold、resume、stepMotion、stop、resetFault、runtime trace、motion queue、IO image。"], + ["后处理与导入", "ABB/FANUC/KUKA 输出文件、post report、ABB import roundtrip。"], + ["用户界面", "virtual-controller.html 桌面端和移动端渲染、交互、主要面板可见性和截图。"] + ])); + + body.push(heading("三、测试命令与执行过程", 1)); + body.push(table([ + ["命令", "测试内容", "执行过程", "执行结果"], + ...commandResults.map((item) => [item.command, item.scope, item.process, item.result]) + ])); + + body.push(heading("四、截图证据", 1)); + body.push(p(`截图验证应用:${uiEvidence.app}`)); + body.push(p(`Chrome:${uiEvidence.chrome}`)); + body.push(heading("4.1 桌面端截图", 2)); + body.push(p(`视口:${uiEvidence.desktop.viewport.width}x${uiEvidence.desktop.viewport.height};state=${uiEvidence.desktop.state};wait=${uiEvidence.desktop.wait};trace=${uiEvidence.desktop.trace};截图:${relative(uiEvidence.desktop.screenshot)}`)); + body.push(imageParagraph(images[0], 1)); + body.push(heading("4.2 移动端截图", 2)); + body.push(p(`视口:${uiEvidence.mobile.viewport.width}x${uiEvidence.mobile.viewport.height},deviceScaleFactor=${uiEvidence.mobile.viewport.deviceScaleFactor};state=${uiEvidence.mobile.state};wait=${uiEvidence.mobile.wait};trace=${uiEvidence.mobile.trace};截图:${relative(uiEvidence.mobile.screenshot)}`)); + body.push(imageParagraph(images[1], 2)); + + body.push(heading("五、规范覆盖矩阵", 1)); + body.push(table([ + ["规范章节", "覆盖层级", "程序"], + ...manifest.coverage_matrix.map((item) => [ + String(item.spec_section), + item.coverage_level, + item.program_ids.join("、") + ]) + ])); + + body.push(heading("六、全部测试程序明细与源码", 1)); + for (const [index, program] of programs.entries()) { + appendProgramSection(body, program, index + 1); + } + + body.push(heading("七、主要产物索引", 1)); + body.push(table([ + ["产物", "路径"], + ["job.json", relative(join(jobDir, "job.json"))], + ["report.json", relative(join(jobDir, "report.json"))], + ["report.html", relative(join(jobDir, "report.html"))], + ["manifest.json", relative(join(jobDir, "manifest.json"))], + ["桌面端截图", relative(uiEvidence.desktop.screenshot)], + ["移动端截图", relative(uiEvidence.mobile.screenshot)], + ["UI evidence.json", relative(virtualControllerEvidencePath)] + ])); + + return ` + + + ${body.join("\n")} + + + + + + + +`; +} + +function appendProgramSection(body, program, index) { + const expectedDiagnostics = program.manifestEntry?.expected_diagnostics ?? []; + const actualCodes = [...new Set(program.diagnostics.map((diagnostic) => diagnostic.code))]; + body.push(heading(`6.${index} ${program.program_id}`, 2)); + body.push(table([ + ["字段", "内容"], + ["测试内容", descriptionByProgram[program.program_id] ?? "按 manifest 执行规范测试。"], + ["源码文件", relative(program.sourcePath)], + ["覆盖层级", program.coverage_level], + ["覆盖章节", program.spec_sections.join("、")], + ["预期状态", program.expected_status], + ["实际状态", program.status], + ["预期诊断", expectedDiagnostics.length === 0 ? "无" : expectedDiagnostics.join("、")], + ["实际诊断代码", actualCodes.length === 0 ? "无" : actualCodes.join("、")], + ["输入哈希", program.input_hash], + ["源码行数", String(program.source.split(/\r?\n/).length)] + ])); + + body.push(heading("测试过程", 3)); + for (const step of programSteps(program)) { + body.push(p(step)); + } + + body.push(heading("执行结果摘要", 3)); + body.push(table(programResultRows(program))); + + if (program.controller?.commands?.length) { + body.push(heading("虚拟控制器命令轨迹", 3)); + body.push(table([ + ["命令", "前状态", "后状态", "结果", "诊断"], + ...program.controller.commands.map((command) => [ + command.command, + command.before ?? "", + command.after ?? "", + command.result ?? "", + command.diagnostics.length === 0 ? "无" : command.diagnostics.map((diagnostic) => diagnostic.code).join("、") + ]) + ])); + } + + body.push(heading("证据文件", 3)); + body.push(table([ + ["类型", "路径"], + ...Object.entries(program.artifacts).map(([key, value]) => [key, relative(join(resultRoot, value))]) + ])); + + body.push(heading("程序源码", 3)); + body.push(codeBlock(program.source)); +} + +function programSteps(program) { + const steps = [ + `1. 读取源码 ${relative(program.sourcePath)},加载 program_id、spec_sections、coverage_level、expected_status 和 expected_diagnostics。`, + "2. 执行 parseGrl,完成词法、语法、模块结构和 source map 解析。", + "3. 执行 compileSemanticProgram,生成语义 IR、符号表、procedure/path/operation、KDL motion/path request 和诊断列表。" + ]; + if (program.coverage_level === "Runtime") { + steps.push(`4. 加载 IR 到 VirtualController,按 ${manifest.runtime_commands.join(" -> ")} 执行控制器命令,采集 controller snapshot、motion queue、runtime trace、IO image 和 trajectory summary。`); + steps.push("5. 对比实际状态与 manifest 预期状态;对比实际诊断代码与 expected_diagnostics;写入 compile/controller/motion-queue/trace/io/trajectory/post/roundtrip 证据。"); + } else if (program.coverage_level === "Static") { + steps.push("4. 执行 static preflight diagnostics,覆盖表达式、语义、运动、path、流程控制等负向检查;不要求进入 happy-path 运行。"); + steps.push("5. 对比实际诊断代码与 expected_diagnostics,确认 diagnostic 状态为预期负向结果,并写入 compile 及各类空/摘要证据文件。"); + } else { + steps.push("4. 执行 postProcessAllBrands,生成 ABB/FANUC/KUKA 输出文件名和 post report。"); + steps.push("5. 执行 ABB import roundtrip 摘要检查,记录 pass/warn/fail 与导入诊断,并写入 post-report/roundtrip 证据。"); + } + return steps; +} + +function programResultRows(program) { + const rows = [ + ["项目", "结果"], + ["解析", program.compile.parsed ? "parsed=true" : "parsed=false"], + ["模块名", program.compile.moduleName ?? ""], + ["sourceMapEntries", String(program.compile.sourceMapEntries)], + ["symbol/procedure/path/operation", `${program.compile.symbolCount}/${program.compile.procedureCount}/${program.compile.pathCount}/${program.compile.operationCount}`], + ["KDL motion/path requests", `${program.compile.kdlMotionRequests}/${program.compile.kdlPathRequests}`], + ["状态", program.status] + ]; + if (program.controller) { + rows.push(["controller final state", program.controller.snapshot.state.state]); + rows.push(["runtime trace events", String(program.trace?.length ?? 0)]); + rows.push(["motion queue items", String(program.motionQueue?.items?.length ?? 0)]); + rows.push(["IO image count", String(Object.keys(program.io?.image ?? {}).length)]); + } + if (program.trajectory) { + rows.push(["trajectory sample/duration", `${program.trajectory.sampleCount}/${program.trajectory.duration}`]); + } + if (program.post) { + rows.push(["post filenames", program.post.filenames.join("、")]); + rows.push(["post report codes", program.post.report.length === 0 ? "无" : [...new Set(program.post.report.map((issue) => issue.code))].join("、")]); + } + if (program.roundtrip) { + rows.push(["roundtrip", `${program.roundtrip.status}; ${program.roundtrip.diagnostics.map((diagnostic) => diagnostic.code).join("、") || "无诊断"}`]); + } + rows.push(["诊断数量", String(program.diagnostics.length)]); + return rows; +} + +function heading(text, level) { + return paragraph(text, `Heading${Math.min(level, 3)}`); +} + +function p(text) { + return paragraph(text, "BodyText"); +} + +function paragraph(text, style) { + return `${run(text)}`; +} + +function run(text) { + return `${escapeXml(String(text))}`; +} + +function codeBlock(text) { + const normalized = text.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); + const lines = normalized.endsWith("\n") ? normalized.slice(0, -1).split("\n") : normalized.split("\n"); + return lines.map((line) => + `${escapeXml(line === "" ? " " : line)}` + ).join("\n"); +} + +function table(rows) { + const width = Math.floor(9000 / Math.max(1, rows[0]?.length ?? 1)); + return ` + + ${rows.map((row, rowIndex) => `${row.map((cell) => tableCell(cell, width, rowIndex === 0)).join("")}`).join("\n")} + `; +} + +function tableCell(text, width, header) { + return ` + + ${header ? "" : ""}${run(text)} + `; +} + +function imageParagraph(image, docPrId) { + return ` + + + + + + + + + + + + + + + + `; +} + +function contentTypesXml() { + return ` + + + + + + + + +`; +} + +function packageRelsXml() { + return ` + + + + +`; +} + +function documentRelsXml(images) { + return ` + + + ${images.map((image) => ``).join("\n")} +`; +} + +function corePropsXml() { + const iso = new Date().toISOString(); + return ` + + 通用机器人离线编程系统测试文档 + Codex + Codex + ${iso} + ${iso} +`; +} + +function appPropsXml() { + return ` + + Codex + 0 + false + KDL Work + false + false + false + 16.0000 +`; +} + +function stylesXml() { + return ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`; +} + +function latestJobId() { + const jobs = readdirSync(resultRoot, { withFileTypes: true }) + .filter((entry) => entry.isDirectory() && existsSync(join(resultRoot, entry.name, "job.json"))) + .map((entry) => ({ + name: entry.name, + mtimeMs: statSync(join(resultRoot, entry.name, "job.json")).mtimeMs + })) + .sort((a, b) => b.mtimeMs - a.mtimeMs); + if (jobs.length === 0) { + throw new Error(`No abb120 spec job found in ${resultRoot}`); + } + return jobs[0].name; +} + +function readJson(path) { + return JSON.parse(readFileSync(path, "utf8")); +} + +function relative(path) { + return path.replace(`${root}${sep}`, "").replaceAll("\\", "/"); +} + +function escapeXml(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll("\"", """) + .replaceAll("'", "'"); +} + +function psSingleQuoted(value) { + return `'${String(value).replaceAll("'", "''")}'`; +} + +function zipDirectory(sourceDir, destinationFile) { + const script = [ + "Add-Type -AssemblyName System.IO.Compression.FileSystem", + `$src = ${psSingleQuoted(sourceDir)}`, + `$dst = ${psSingleQuoted(destinationFile)}`, + "if (Test-Path -LiteralPath $dst) { Remove-Item -LiteralPath $dst -Force }", + "[System.IO.Compression.ZipFile]::CreateFromDirectory($src, $dst)" + ].join("\n"); + execFileSync("powershell", ["-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", script], { + stdio: "inherit" + }); +} + +function assertSafeStaging(path) { + const allowedRoot = join(webRoot, "test-results") + sep; + const resolved = resolve(path); + if (!resolved.startsWith(allowedRoot)) { + throw new Error(`Refusing to clear staging path outside test-results: ${resolved}`); + } +} + +function formatShanghaiTime(date) { + const parts = new Intl.DateTimeFormat("zh-CN", { + timeZone: "Asia/Shanghai", + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + hour12: false + }).formatToParts(date); + const value = Object.fromEntries(parts.map((part) => [part.type, part.value])); + return `${value.year}-${value.month}-${value.day} ${value.hour}:${value.minute}:${value.second} Asia/Shanghai`; +} diff --git a/kdl-wasm/web/scripts/generate-grl-user-manual.mjs b/kdl-wasm/web/scripts/generate-grl-user-manual.mjs new file mode 100644 index 0000000..58c4299 --- /dev/null +++ b/kdl-wasm/web/scripts/generate-grl-user-manual.mjs @@ -0,0 +1,598 @@ +import { execFileSync } from "node:child_process"; +import { + copyFileSync, + existsSync, + mkdirSync, + readFileSync, + rmSync, + writeFileSync +} from "node:fs"; +import { join, resolve, sep } from "node:path"; +import { fileURLToPath } from "node:url"; + +const root = resolve(fileURLToPath(new URL("../../..", import.meta.url))); +const webRoot = join(root, "kdl-wasm", "web"); +const docRoot = join(root, "work", "doc"); +const stagingRoot = join(webRoot, "test-results", "grl-manual-docx-build"); +const outputPath = join(docRoot, "GRL功能语法逻辑与程序创建使用手册.docx"); + +const flowDir = join(docRoot, "通用机器人项目功能与数据流程图-png"); +const flowImages = [ + { source: join(flowDir, "flow-01.png"), title: "系统功能总览图", cx: 5943600, cy: 3343275 }, + { source: join(flowDir, "flow-02.png"), title: "GRL 到 IR 编译流程图", cx: 5943600, cy: 3343275 }, + { source: join(flowDir, "flow-03.png"), title: "运动规划与 KDL 数据流图", cx: 5943600, cy: 3343275 }, + { source: join(flowDir, "flow-04.png"), title: "虚拟控制器执行流程图", cx: 5943600, cy: 3343275 }, + { source: join(flowDir, "flow-05.png"), title: "后处理与导入回读流程图", cx: 5943600, cy: 3343275 } +]; +const uiImages = [ + { + source: join(webRoot, "test-results", "virtual-controller", "virtual-controller-desktop.png"), + title: "虚拟控制器桌面端界面", + cx: 5943600, + cy: 3962400 + }, + { + source: join(webRoot, "test-results", "virtual-controller", "virtual-controller-mobile.png"), + title: "虚拟控制器移动端界面", + cx: 2743200, + cy: 5943600 + } +]; + +const smokeSourcePath = join(webRoot, "tests", "fixtures", "abb120", "programs", "A120_00_Smoke.grl"); +const blendSourcePath = join(webRoot, "tests", "fixtures", "abb120", "programs", "A120_20_CartesianBlend.grl"); +const ioSourcePath = join(webRoot, "tests", "fixtures", "abb120", "spec-programs", "runtime", "W2_60_IOWaitPulse.grl"); +const fullExamplePath = join(webRoot, "tests", "fixtures", "abb120", "spec-programs", "runtime", "W2_99_FullSpecExample.grl"); + +const generatedAt = formatShanghaiTime(new Date()); + +buildDocx(); +console.log(JSON.stringify({ outputPath }, null, 2)); + +function buildDocx() { + assertSafeStaging(stagingRoot); + rmSync(stagingRoot, { recursive: true, force: true }); + mkdirSync(join(stagingRoot, "_rels"), { recursive: true }); + mkdirSync(join(stagingRoot, "docProps"), { recursive: true }); + mkdirSync(join(stagingRoot, "word", "_rels"), { recursive: true }); + mkdirSync(join(stagingRoot, "word", "media"), { recursive: true }); + + const images = copyImages([...flowImages, ...uiImages]); + writeFileSync(join(stagingRoot, "[Content_Types].xml"), contentTypesXml(), "utf8"); + writeFileSync(join(stagingRoot, "_rels", ".rels"), packageRelsXml(), "utf8"); + writeFileSync(join(stagingRoot, "docProps", "core.xml"), corePropsXml(), "utf8"); + writeFileSync(join(stagingRoot, "docProps", "app.xml"), appPropsXml(), "utf8"); + writeFileSync(join(stagingRoot, "word", "styles.xml"), stylesXml(), "utf8"); + writeFileSync(join(stagingRoot, "word", "_rels", "document.xml.rels"), documentRelsXml(images), "utf8"); + writeFileSync(join(stagingRoot, "word", "document.xml"), documentXml(images), "utf8"); + + if (existsSync(outputPath)) { + rmSync(outputPath, { force: true }); + } + zipDirectory(stagingRoot, outputPath); +} + +function documentXml(images) { + const body = []; + + body.push(heading("GRL 功能、语法逻辑与程序创建使用手册", 1)); + body.push(p(`生成时间:${generatedAt}`)); + body.push(p("适用对象:通用机器人离线编程系统用户、工艺工程师、自动编程开发人员、虚拟调试人员。")); + body.push(p("手册目标:用中文说明 GRL 的功能边界、语法逻辑、程序对象关系、创建程序步骤、仿真检查和后处理输出方式,并通过图示和源码示例帮助用户快速编写可运行程序。")); + + body.push(heading("一、GRL 是什么", 1)); + body.push(p("GRL,全称 Generic Robot Language,是本离线编程系统中的通用机器人程序语言。它不是 ABB、FANUC 或 KUKA 任一品牌语言的拷贝,而是把多品牌机器人共同具备的目标点、运动、路径、工艺、IO、流程控制、异常和后处理语义抽象为统一文本。")); + body.push(table([ + ["目标", "说明"], + ["统一描述", "用同一套 GRL 描述机器人程序、路径、工艺动作和 IO 逻辑。"], + ["可编译", "GRL 经 lexer/parser/semantic analyzer 编译为统一 Executable IR。"], + ["可仿真", "IR 可进入虚拟控制器运行,产生 trace、motion queue、IO image 和诊断。"], + ["可后处理", "同一 IR 可输出 ABB RAPID、FANUC LS/TP 风格文本、KUKA KRL 原型程序。"], + ["可维护", "文本稳定、可读、可 diff,适合版本管理和自动生成。"] + ])); + + body.push(heading("二、系统功能总览", 1)); + body.push(p("离线编程系统从项目数据、机器人模型和 GRL 程序出发,经过语义编译、KDL 运动规划、虚拟控制器执行、诊断报告和多品牌后处理,形成完整离线开发闭环。")); + body.push(imageWithCaption(images[0], 1, "图 1 系统功能总览图")); + body.push(table([ + ["模块", "主要职责"], + ["GRL 源码", "声明工具、坐标系、目标点、速度、zone、path、operation 和 proc。"], + ["编译器", "把源码解析为 AST,做符号解析、单位归一化、语义检查,生成 IR 和 KDL request。"], + ["KDL 运动规划", "处理 FK、IK、MoveJ、MoveL、MoveC、Path planning、可达性和轨迹采样。"], + ["虚拟控制器", "执行 IR,维护程序计数器、调用栈、报警队列、IO 镜像、运动队列和 trace。"], + ["后处理器", "按 ABB/FANUC/KUKA 规则输出品牌程序,并记录无法保真映射的转换报告。"] + ])); + + body.push(heading("三、GRL 程序基本结构", 1)); + body.push(p("一个 GRL 文件通常由 language 声明、module 声明、数据声明、目标点、路径、工艺操作和 main 子程序组成。最小程序只需要定义模块入口和一条运动。")); + body.push(codeBlock(readFileSync(smokeSourcePath, "utf8"))); + body.push(table([ + ["结构", "作用"], + ["language grl 0.1", "声明语言版本,便于后续兼容升级。"], + ["module", "程序模块,类似 ABB MODULE、KUKA DEF 文件或 FANUC 程序容器。"], + ["const/persistent/var", "声明常量、持久数据或局部变量。"], + ["target", "声明 joint_target 或 pose_target。"], + ["proc main()", "默认入口程序。虚拟控制器从 main 开始执行。"], + ["movej/movel/movec", "基础运动指令,最终进入 KDL 规划或品牌后处理。"] + ])); + + body.push(heading("四、对象模型和语法逻辑", 1)); + body.push(p("GRL 的语法逻辑建议按“数据先声明、路径再组织、工艺再封装、入口只调用”的方式理解。手写小程序可以直接在 main 中写运动,自动编程和复杂工艺应优先生成 path 和 operation。")); + body.push(imageWithCaption(images[1], 2, "图 2 GRL 到 IR 编译流程图")); + body.push(table([ + ["对象", "语法", "使用建议"], + ["工具", "persistent tool gripper = tool { ... }", "描述 TCP、质量、重心。运动时通过 tool 参数或 path defaults 引用。"], + ["坐标系", "persistent frame fixture = frame { ... }", "描述工件坐标或基坐标。目标点和路径应显式绑定 frame。"], + ["速度", "const speed v = linear(300 mm/s) / joint(50 %)", "按运动类型选择 joint、linear、angular。"], + ["过渡", "const zone z10 = z(10 mm) / fine / cnt(30)", "fine 精确到点;z/cnt/continuous 用于连续过渡。"], + ["目标点", "target pick = pose_target { pose: pose(...) }", "关节目标用 joint_target;笛卡尔点用 pose_target。"], + ["路径", "path pick_path { defaults ... point ... event ... }", "自动编程优先生成 path,点名保持稳定。"], + ["工艺", "operation pick_op { kind: handling path: pick_path ... }", "封装路径、工艺参数、start_action/end_action。"], + ["入口程序", "proc main() run_operation pick_op end", "入口程序保持短,便于调试和后处理。"] + ])); + + body.push(heading("五、表达式、单位和常量求值", 1)); + body.push(p("GRL 支持带单位表达式。编译器会在需要常量的位置做单位归一化,例如 mm 转 m、deg 转 rad、ms 转 s、% 转比例。这样同一程序在仿真和后处理中使用统一数值。")); + body.push(table([ + ["类别", "示例", "说明"], + ["长度", "100 mm、0.25 m", "内部统一为 meter。"], + ["角度", "90 deg、1.57 rad", "内部统一为 radian。"], + ["时间", "200 ms、2 s", "内部统一为 second。"], + ["速度", "linear(300 mm/s)、joint(50 %)", "分别表示 TCP 线速度和关节速度比例。"], + ["数学函数", "atan2(0, 1)、max(50 mm/s, 150 mm/s)", "支持常用三角函数和数值函数。"], + ["单位检查", "10 mm + 2 s", "不同维度相加会产生诊断。"] + ])); + + body.push(heading("六、运动语法", 1)); + body.push(p("运动指令分为 MoveJ、MoveL、MoveC 三类。MoveJ 走关节空间,MoveL 走 TCP 直线,MoveC 走 TCP 圆弧。每条运动最终都需要确定 target、speed、zone、tool 和 frame。")); + body.push(imageWithCaption(images[2], 3, "图 3 运动规划与 KDL 数据流图")); + body.push(table([ + ["指令", "语法", "语义", "品牌映射"], + ["movej", "movej home speed v_joint zone fine", "关节空间运动,适合回零和快速接近。", "ABB MoveJ / FANUC J / KUKA PTP"], + ["movel", "movel pick speed v_linear zone z10", "TCP 直线运动,适合接近、加工、搬运直线段。", "ABB MoveL / FANUC L / KUKA LIN"], + ["movec", "movec via mid target arc_end speed v zone z10", "TCP 圆弧运动,通过 via 点到终点。", "ABB MoveC / FANUC C / KUKA CIRC"], + ["run_path", "run_path cart_path", "执行已声明路径。", "可展开为品牌运动语句"], + ["run_operation", "run_operation pick_op", "执行工艺操作,包含 action 和 path。", "按品牌能力展开或报告"] + ])); + body.push(p("下面是当前工作区中的笛卡尔混合路径示例,包含 tool/frame、表达式速度、zone clamp、MoveL、MoveC 和 run_path。")); + body.push(codeBlock(readFileSync(blendSourcePath, "utf8"))); + + body.push(heading("七、Path 和 Operation", 1)); + body.push(p("Path 是离线编程的核心对象,适合承载 CAD 曲线、示教点、工艺采样点和路径事件。Operation 是对 Path 的工艺封装,适合表达搬运、焊接、喷涂、打磨、上下料等任务。")); + body.push(table([ + ["写法", "说明"], + ["defaults", "为路径点设置默认 speed、zone、tool、frame,减少重复。"], + ["source", "记录 CAD 曲线、采样间距、规划来源等元数据。"], + ["point", "定义路径点和该点运动方式。"], + ["event before/after/at", "定义路径事件,例如到点后开夹爪、距离某点前开焊接。"], + ["operation process", "记录工艺参数,例如 gripper、weld_mode、paint_recipe。"], + ["start_action/end_action", "操作开始或结束时执行 IO、wait、pulse 等动作。"] + ])); + + body.push(heading("八、IO、wait 和 pulse", 1)); + body.push(p("GRL 中的 IO 使用统一引用格式:io.di、io.do、io.ai、io.ao、io.gi、io.go、io.ri、io.ro 和 io.alias。离线系统运行时维护虚拟 IO 镜像,程序、用户和脚本都可以写入这份镜像。")); + body.push(table([ + ["语法", "含义"], + ["io.do[1] = true", "写数字输出。"], + ["io.ao[1] = 0.75", "写模拟输出。"], + ["wait io.di[1] == true timeout 2 s", "等待输入满足条件,超时产生诊断或报警。"], + ["wait all(...)", "所有条件满足才继续。"], + ["wait any(...)", "任一条件满足即继续。"], + ["rising/falling/changed", "边沿或变化检测。"], + ["pulse io.do[2] duration 100 ms", "输出置 true,持续指定时间后自动复位。"] + ])); + body.push(codeBlock(readFileSync(ioSourcePath, "utf8"))); + + body.push(heading("九、流程控制、子程序和异常", 1)); + body.push(p("GRL 支持结构化控制和子程序。简单运行逻辑写在 proc 中,纯计算逻辑写在 func 中。func 默认不应产生运动、IO、wait、pulse 等副作用。")); + body.push(table([ + ["能力", "语法", "说明"], + ["条件", "if / elseif / else / end", "按布尔条件选择执行分支。"], + ["循环", "while、for to step", "执行重复逻辑,break/continue 必须处于合法块内。"], + ["多分支", "switch / case / default", "case 必须是常量表达式,不能重复。"], + ["子程序", "proc name(in int slot) ... end", "可定义 in/out/inout 参数。"], + ["函数", "func bool ok() return ... end", "有返回值,建议无副作用。"], + ["报警", "alarm ID \"message\" severity warning", "进入虚拟控制器报警队列。"], + ["异常", "raise、try/catch/finally", "P0 支持基础语义,复杂品牌恢复分阶段扩展。"] + ])); + + body.push(heading("十、从零创建一个 GRL 程序", 1)); + body.push(p("建议按以下顺序创建程序。先保证数据和坐标清楚,再组织路径和工艺,最后在 main 中调用。")); + body.push(table([ + ["步骤", "操作", "检查点"], + ["1", "创建 .grl 文件,写 language 和 module。", "模块名使用 ASCII 标识符,文件 UTF-8。"], + ["2", "声明 tool 和 frame。", "TCP、质量、工件坐标单位明确。"], + ["3", "声明 speed 和 zone。", "速度和过渡统一命名,例如 v_fast、v_pick、z10。"], + ["4", "声明 target。", "home 用 joint_target,工艺点用 pose_target。"], + ["5", "创建 path。", "设置 defaults,点名按 p000/p001 或语义名称稳定输出。"], + ["6", "添加 path event 或 operation action。", "夹具、等待、脉冲、工艺开关不要散落在 main 中。"], + ["7", "创建 operation。", "把 path 和工艺参数封装成可复用操作。"], + ["8", "编写 proc main。", "只做 set_tool/set_frame、run_operation、回 home 等主流程。"], + ["9", "运行编译和测试。", "执行 npm test 或 suite,检查 diagnostics、trace、motion queue。"], + ["10", "后处理输出。", "检查 ABB/FANUC/KUKA 转换报告,不支持项不能忽略。"] + ])); + + body.push(heading("十一、完整程序模板", 1)); + body.push(p("下面给出一个可直接改写的模板,适合搬运、上下料、夹具动作和基础路径。")); + body.push(codeBlock(`language grl 0.1 +module DemoPickPlace + persistent tool gripper = tool { + tcp: pose(0 mm, 0 mm, 120 mm, 0 deg, 0 deg, 0 deg), + mass: 1.5 kg + } + + persistent frame fixture = frame { + origin: pose(800 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) + } + + const speed v_joint = joint(50 %) + const speed v_pick = linear(250 mm/s) + const zone z10 = z(10 mm) + const zone zf = fine + + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + target pick = pose_target { pose: pose(500 mm, 100 mm, 200 mm, 180 deg, 0 deg, 90 deg), tool: gripper, frame: fixture } + target place = pose_target { pose: pose(650 mm, -100 mm, 200 mm, 180 deg, 0 deg, 90 deg), tool: gripper, frame: fixture } + + path pick_path { + defaults { speed: v_pick, zone: z10, tool: gripper, frame: fixture } + point approach movel pick offset z 100 mm + point at_pick movel pick zone zf + event after at_pick io.do[1] = true + event after at_pick wait io.di[1] == true timeout 2 s on_timeout alarm "Clamp close timeout" + point leave movel pick offset z 100 mm + } + + operation pick_op { + kind: handling + path: pick_path + process { gripper: "main_clamp" } + } + + proc main() + set_tool gripper + set_frame fixture + movej home speed v_joint zone zf + run_operation pick_op + movej home speed v_joint zone zf + end +end`)); + + body.push(heading("十二、编译、仿真和截图验证", 1)); + body.push(imageWithCaption(images[3], 4, "图 4 虚拟控制器执行流程图")); + body.push(p("编译后,虚拟控制器会加载 IR,从 main 开始执行,采集运行 trace、motion queue、IO image、报警队列和诊断。桌面端和移动端界面可用于检查程序结构、状态、编辑器、面板和运行结果。")); + body.push(imageWithCaption(images[5], 6, "图 5 虚拟控制器桌面端界面")); + body.push(imageWithCaption(images[6], 7, "图 6 虚拟控制器移动端界面")); + body.push(table([ + ["命令", "用途"], + ["npm run typecheck", "检查 TypeScript 类型。"], + ["npm test", "运行 KDL、GRL、runtime、post/import、integration 全量测试。"], + ["npm run suite:abb120-spec", "运行 19 个 ABB120 GRL 规范程序,生成 job/report/program 证据。"], + ["npm run verify:virtual-controller", "打开虚拟控制器 HTML,执行交互并生成桌面/移动截图。"] + ])); + + body.push(heading("十三、后处理和跨品牌输出", 1)); + body.push(imageWithCaption(images[4], 5, "图 7 后处理与导入回读流程图")); + body.push(table([ + ["GRL", "ABB RAPID", "FANUC LS/TP", "KUKA KRL"], + ["module", "MODULE", "/PROG 或模块", "DEF/.src"], + ["proc", "PROC", "CALL 子程序", "DEF 子程序"], + ["movej", "MoveJ", "J P[...] ", "PTP"], + ["movel", "MoveL", "L P[...] ", "LIN"], + ["movec", "MoveC", "C P[...] ", "CIRC"], + ["io.do[1] = true", "SetDO do1, 1", "DO[1]=ON", "$OUT[1]=TRUE"], + ["wait io.di[1] == true", "WaitDI di1, 1", "WAIT DI[1]=ON", "WAIT FOR $IN[1]==TRUE"] + ])); + body.push(p("后处理器遇到品牌不支持或只能近似表达的语义时,应写入转换报告。用户必须检查报告,再到真实控制器中做品牌校验和现场低速试运行。")); + + body.push(heading("十四、常见诊断和处理建议", 1)); + body.push(table([ + ["诊断", "常见原因", "处理方式"], + ["GRL_EXPR_UNKNOWN_SYMBOL", "表达式引用未声明常量或变量。", "检查拼写和声明顺序。"], + ["GRL_EXPR_UNIT_MISMATCH", "不同物理单位混合计算。", "统一长度、时间、角度或速度维度。"], + ["GRL_TARGET_NOT_FOUND", "运动或路径点引用不存在目标点。", "补充 target 或修正名称。"], + ["KDL_TARGET_UNREACHABLE", "笛卡尔点超出机器人工作空间。", "调整目标点、工具、坐标系或机器人配置。"], + ["KDL_JOINT_LIMIT", "目标关节超过限位。", "修改 joint_target 或使用 IK 可达姿态。"], + ["GRL_PATH_EMPTY", "path 没有 point。", "至少添加一个 point。"], + ["VC_WAIT_TIMEOUT", "wait 条件在 timeout 内未满足。", "检查 IO 输入、脚本、超时时间和 on_timeout 动作。"], + ["GRL_POST_UNSUPPORTED", "目标品牌后处理暂不支持该语义。", "查看转换报告,必要时改写为品牌可支持结构。"] + ])); + + body.push(heading("十五、编写规范建议", 1)); + body.push(table([ + ["建议", "说明"], + ["名称稳定", "target、path point、operation 命名稳定,便于 diff 和回读。"], + ["显式单位", "自动生成程序尽量输出 mm、deg、mm/s、ms 等单位。"], + ["入口简短", "main 中只保留主流程调用,复杂路径放入 path/operation。"], + ["默认集中", "path defaults 中集中设置 speed、zone、tool、frame。"], + ["IO 事件贴近路径", "与路径点相关的夹具和工艺开关写成 event。"], + ["诊断必看", "error 必须修复;warning 必须人工确认;info 可作为转换记录。"], + ["先仿真后后处理", "先通过 GRL 编译和虚拟控制器,再输出品牌程序。"], + ["真实运行前校验", "后处理程序必须经过品牌控制器验证和现场低速试运行。"] + ])); + + body.push(heading("十六、参考完整示例", 1)); + body.push(p("以下是规范套件中的完整示例程序,覆盖 tool/frame、path、operation、IO event、run_operation 和回 home,可作为复杂程序的参考。")); + body.push(codeBlock(readFileSync(fullExamplePath, "utf8"))); + + return ` + + + ${body.join("\n")} + + + + + + + +`; +} + +function copyImages(imageInputs) { + return imageInputs.map((image, index) => { + const fileName = `image-${String(index + 1).padStart(2, "0")}.png`; + copyFileSync(image.source, join(stagingRoot, "word", "media", fileName)); + return { + ...image, + id: `rIdImage${index + 1}`, + fileName + }; + }); +} + +function heading(text, level) { + return paragraph(text, `Heading${Math.min(level, 3)}`); +} + +function p(text) { + return paragraph(text, "BodyText"); +} + +function paragraph(text, style) { + return `${run(text)}`; +} + +function run(text) { + return `${escapeXml(String(text))}`; +} + +function table(rows) { + const width = Math.floor(9200 / Math.max(1, rows[0]?.length ?? 1)); + return ` + + ${rows.map((row, rowIndex) => `${row.map((cell) => tableCell(cell, width, rowIndex === 0)).join("")}`).join("\n")} + `; +} + +function tableCell(text, width, header) { + return ` + + ${header ? "" : ""}${run(text)} + `; +} + +function codeBlock(text) { + const normalized = text.replace(/\r\n/g, "\n").replace(/\r/g, "\n"); + const lines = normalized.endsWith("\n") ? normalized.slice(0, -1).split("\n") : normalized.split("\n"); + return lines.map((line) => + `${escapeXml(line === "" ? " " : line)}` + ).join("\n"); +} + +function imageWithCaption(image, docPrId, caption) { + return `${imageParagraph(image, docPrId)}${paragraph(caption, "Caption")}`; +} + +function imageParagraph(image, docPrId) { + return ` + + + + + + + + + + + + + + + + `; +} + +function contentTypesXml() { + return ` + + + + + + + + +`; +} + +function packageRelsXml() { + return ` + + + + +`; +} + +function documentRelsXml(images) { + return ` + + + ${images.map((image) => ``).join("\n")} +`; +} + +function corePropsXml() { + const iso = new Date().toISOString(); + return ` + + GRL 功能语法逻辑与程序创建使用手册 + Codex + Codex + ${iso} + ${iso} +`; +} + +function appPropsXml() { + return ` + + Codex + 0 + false + KDL Work + false + false + false + 16.0000 +`; +} + +function stylesXml() { + return ` + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +`; +} + +function escapeXml(value) { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll("\"", """) + .replaceAll("'", "'"); +} + +function psSingleQuoted(value) { + return `'${String(value).replaceAll("'", "''")}'`; +} + +function zipDirectory(sourceDir, destinationFile) { + const script = [ + "Add-Type -AssemblyName System.IO.Compression.FileSystem", + `$src = ${psSingleQuoted(sourceDir)}`, + `$dst = ${psSingleQuoted(destinationFile)}`, + "if (Test-Path -LiteralPath $dst) { Remove-Item -LiteralPath $dst -Force }", + "[System.IO.Compression.ZipFile]::CreateFromDirectory($src, $dst)" + ].join("\n"); + execFileSync("powershell", ["-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", script], { + stdio: "inherit" + }); +} + +function assertSafeStaging(path) { + const allowedRoot = join(webRoot, "test-results") + sep; + const resolved = resolve(path); + if (!resolved.startsWith(allowedRoot)) { + throw new Error(`Refusing to clear staging path outside test-results: ${resolved}`); + } +} + +function formatShanghaiTime(date) { + const parts = new Intl.DateTimeFormat("zh-CN", { + timeZone: "Asia/Shanghai", + year: "numeric", + month: "2-digit", + day: "2-digit", + hour: "2-digit", + minute: "2-digit", + second: "2-digit", + hour12: false + }).formatToParts(date); + const value = Object.fromEntries(parts.map((part) => [part.type, part.value])); + return `${value.year}-${value.month}-${value.day} ${value.hour}:${value.minute}:${value.second} Asia/Shanghai`; +} diff --git a/kdl-wasm/web/scripts/run-abb120-spec-suite.ts b/kdl-wasm/web/scripts/run-abb120-spec-suite.ts new file mode 100644 index 0000000..9d205ab --- /dev/null +++ b/kdl-wasm/web/scripts/run-abb120-spec-suite.ts @@ -0,0 +1,101 @@ +import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; +import { dirname, join, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; +import { runAbb120SpecSuite } from "../src/suites/abb120SpecSuite.js"; + +const webRoot = resolve(dirname(fileURLToPath(import.meta.url)), ".."); +const specRoot = join(webRoot, "tests", "fixtures", "abb120", "spec-programs"); +const manifest = JSON.parse(readFileSync(join(specRoot, "manifest.json"), "utf8")); +const programs = manifest.programs.map((entry: { program_id: string; file: string }) => ({ + program_id: entry.program_id, + file: entry.file, + text: readFileSync(join(specRoot, entry.file), "utf8") +})); +const job = runAbb120SpecSuite(manifest, programs, { + gitRevision: process.env.GIT_REVISION ?? "working-tree" +}); +const outputRoot = resolve(webRoot, "test-results", "abb120-spec", job.job_id); + +mkdirSync(outputRoot, { recursive: true }); +writeFileSync(join(outputRoot, "manifest.json"), `${JSON.stringify(manifest, null, 2)}\n`); +writeFileSync(join(outputRoot, "job.json"), `${JSON.stringify(job, null, 2)}\n`); +writeFileSync(join(outputRoot, "report.json"), `${JSON.stringify(reportJson(job), null, 2)}\n`); +writeFileSync(join(outputRoot, "report.html"), reportHtml(job)); + +for (const program of job.programs) { + const programDir = join(outputRoot, "programs", program.program_id); + mkdirSync(programDir, { recursive: true }); + writeFileSync(join(programDir, "compile.json"), `${JSON.stringify(program.compile, null, 2)}\n`); + writeFileSync(join(programDir, "controller.json"), `${JSON.stringify(program.controller ?? {}, null, 2)}\n`); + writeFileSync(join(programDir, "motion-queue.json"), `${JSON.stringify(program.motionQueue ?? {}, null, 2)}\n`); + writeFileSync(join(programDir, "trace.json"), `${JSON.stringify(program.trace ?? [], null, 2)}\n`); + writeFileSync(join(programDir, "io.json"), `${JSON.stringify(program.io ?? {}, null, 2)}\n`); + writeFileSync(join(programDir, "trajectory.json"), `${JSON.stringify(program.trajectory ?? {}, null, 2)}\n`); + writeFileSync(join(programDir, "post-report.json"), `${JSON.stringify(program.post ?? {}, null, 2)}\n`); + writeFileSync(join(programDir, "roundtrip.json"), `${JSON.stringify(program.roundtrip ?? {}, null, 2)}\n`); +} + +console.log(JSON.stringify({ + job_id: job.job_id, + outputRoot, + programs: job.programs.length, + missingSections: job.coverage.missingSections +}, null, 2)); + +function reportJson(job: ReturnType) { + return { + job_id: job.job_id, + suite_id: job.suite_id, + robot_id: job.robot_id, + coverage: job.coverage, + summary: { + programs: job.programs.length, + pass: job.programs.filter((program) => program.status === "pass").length, + diagnostic: job.programs.filter((program) => program.status === "diagnostic").length, + fail: job.programs.filter((program) => program.status === "fail").length + }, + diagnostics: job.programs.flatMap((program) => + program.diagnostics.map((diagnostic) => ({ + program_id: program.program_id, + ...diagnostic + })) + ) + }; +} + +function reportHtml(job: ReturnType): string { + const rows = job.programs.map((program) => + `${escapeHtml(program.program_id)}${escapeHtml(program.coverage_level)}${escapeHtml(program.status)}${program.diagnostics.length}` + ).join("\n"); + return ` + + + + ${escapeHtml(job.job_id)} + + + +

${escapeHtml(job.job_id)}

+

Suite ${escapeHtml(job.suite_id)} / Robot ${escapeHtml(job.robot_id)}

+

Covered sections: ${job.coverage.coveredSections.join(", ")}

+ + + ${rows} +
ProgramLayerStatusDiagnostics
+ + +`; +} + +function escapeHtml(value: unknown): string { + return String(value) + .replaceAll("&", "&") + .replaceAll("<", "<") + .replaceAll(">", ">") + .replaceAll("\"", """); +} diff --git a/kdl-wasm/web/scripts/verify-demo-package.mjs b/kdl-wasm/web/scripts/verify-demo-package.mjs new file mode 100644 index 0000000..96cf22d --- /dev/null +++ b/kdl-wasm/web/scripts/verify-demo-package.mjs @@ -0,0 +1,209 @@ +import { execFileSync } from "node:child_process"; +import { + existsSync, + mkdirSync, + readdirSync, + readFileSync, + rmSync, + statSync, + writeFileSync +} from "node:fs"; +import { dirname, extname, join, resolve, sep } from "node:path"; +import { fileURLToPath } from "node:url"; + +const root = resolve(fileURLToPath(new URL("../../..", import.meta.url))); +const webRoot = join(root, "kdl-wasm", "web"); +const deployRoot = join(webRoot, "test-results", "deploy"); +const zipPath = resolve(process.argv[2] ?? latestZipPath()); +const extractRoot = join(deployRoot, "_verify", zipBasename(zipPath)); + +assertSafeVerifyPath(extractRoot); +rmSync(extractRoot, { recursive: true, force: true }); +mkdirSync(extractRoot, { recursive: true }); +expandZip(zipPath, extractRoot); + +const manifest = readJson(join(extractRoot, "demo-manifest.json")); +const report = readJson(join(extractRoot, manifest.report_json)); +const programManifest = readJson(join(extractRoot, manifest.program_manifest)); +const grlFiles = walkFiles(join(extractRoot, "spec-programs")).filter((file) => extname(file).toLowerCase() === ".grl"); + +const requiredFiles = [ + "index.html", + "demo-manifest.json", + "README.md", + "app/virtual-controller.html", + "app/virtual-controller.css", + "app/virtual-controller.js", + "spec-programs/manifest.json", + manifest.job_json, + manifest.report_json, + manifest.report_html, + manifest.screenshots.desktop, + manifest.screenshots.mobile, + manifest.screenshots.evidence, + "docs/GRL功能语法逻辑与程序创建使用手册.docx", + "docs/通用机器人离线编程系统测试文档.docx", + "docs/working2/README.md", + "docs/working2/05-验收证据.md" +]; + +const checks = []; +for (const file of requiredFiles) { + checks.push(checkFile(file)); +} + +checks.push(check("program_count", manifest.program_count === 19, `program_count=${manifest.program_count}`)); +checks.push(check("manifest_programs", programManifest.programs.length === 19, `manifest programs=${programManifest.programs.length}`)); +checks.push(check("grl_files", grlFiles.length === 19, `grl files=${grlFiles.length}`)); +checks.push(check("summary_fail", report.summary.fail === 0, `summary.fail=${report.summary.fail}`)); +checks.push(check("report_programs", report.summary.programs === 19, `report programs=${report.summary.programs}`)); +checks.push(check("runtime_programs", manifest.runtime_programs === 12, `runtime=${manifest.runtime_programs}`)); +checks.push(check("static_programs", manifest.static_programs === 4, `static=${manifest.static_programs}`)); +checks.push(check("post_programs", manifest.post_programs === 3, `post=${manifest.post_programs}`)); +checks.push(check("missing_sections", Array.isArray(report.coverage.missingSections) && report.coverage.missingSections.length === 0, `missing=${report.coverage.missingSections?.join(",") ?? "n/a"}`)); +checks.push(check("relative_urls", allManifestUrlsAreRelative(manifest), "manifest URLs are relative")); + +for (const program of manifest.programs) { + checks.push(checkFile(program.source)); + checks.push(checkFile(program.artifacts.compile)); +} + +for (const doc of manifest.docs ?? []) { + checks.push(checkFile(doc.href)); +} + +const runtimeFramePrograms = manifest.programs.filter((program) => program.coverage_level === "Runtime"); +let frameProgramCount = 0; +for (const program of runtimeFramePrograms) { + const trajectory = readJson(join(extractRoot, program.artifacts.trajectory)); + const frames = Array.isArray(trajectory.frames) ? trajectory.frames : []; + const hasFrameState = frames.some((frame) => + Array.isArray(frame.joints) && + frame.joints.length === 6 && + Array.isArray(frame.tcp?.position) && + frame.tcp.position.length === 3 && + Array.isArray(frame.tcp?.quaternion) && + frame.tcp.quaternion.length === 4 + ); + if (hasFrameState) frameProgramCount += 1; +} +checks.push(check( + "runtime_trajectory_frames", + frameProgramCount > 0, + `${frameProgramCount}/${runtimeFramePrograms.length} runtime programs include frame joints and TCP` +)); + +const failed = checks.filter((item) => !item.ok); +const summary = { + zip: zipPath, + extract_root: extractRoot, + release_id: manifest.release_id, + job_id: manifest.job_id, + program_count: manifest.program_count, + grl_files: grlFiles.length, + summary_fail: report.summary.fail, + checks, + ok: failed.length === 0 +}; + +writeFileSync(join(deployRoot, `${zipBasename(zipPath)}.verify.json`), `${JSON.stringify(summary, null, 2)}\n`, "utf8"); +console.log(JSON.stringify(summary, null, 2)); + +if (failed.length > 0) { + throw new Error(`Demo package verification failed: ${failed.map((item) => item.name).join(", ")}`); +} + +function checkFile(relativePath) { + const file = join(extractRoot, relativePath); + const exists = existsSync(file); + return check(`file:${relativePath}`, exists && statSync(file).isFile(), exists ? `${statSync(file).size} bytes` : "missing"); +} + +function check(name, ok, details) { + return { name, ok: Boolean(ok), details }; +} + +function allManifestUrlsAreRelative(value) { + const urls = []; + collectUrls(value, urls); + return urls.every((url) => !/^[a-z]+:\/\//i.test(url) && !/^[a-z]:[\\/]/i.test(url) && !url.startsWith("/") && !url.includes("\\")); +} + +function collectUrls(value, urls) { + if (Array.isArray(value)) { + value.forEach((item) => collectUrls(item, urls)); + return; + } + if (!value || typeof value !== "object") return; + for (const [key, item] of Object.entries(value)) { + if (typeof item === "string" && (key === "href" || key.includes("json") || key.includes("html") || key.includes("entry") || key.includes("manifest") || key.includes("source") || key.includes("screenshot") || key.includes("report") || key.includes("compile") || key.includes("controller") || key.includes("trace") || key.includes("trajectory") || key.includes("roundtrip") || key.includes("io") || key.includes("queue"))) { + urls.push(item); + } else { + collectUrls(item, urls); + } + } +} + +function expandZip(source, destination) { + const script = [ + "Add-Type -AssemblyName System.IO.Compression.FileSystem", + `$src = ${psSingleQuoted(source)}`, + `$dst = ${psSingleQuoted(destination)}`, + "if (Test-Path -LiteralPath $dst) { Remove-Item -LiteralPath $dst -Recurse -Force }", + "New-Item -ItemType Directory -Force -Path $dst | Out-Null", + "[System.IO.Compression.ZipFile]::ExtractToDirectory($src, $dst)" + ].join("\n"); + execFileSync("powershell", ["-NoProfile", "-ExecutionPolicy", "Bypass", "-Command", script], { + stdio: "inherit" + }); +} + +function latestZipPath() { + if (!existsSync(deployRoot)) { + throw new Error(`No deploy output directory found: ${deployRoot}`); + } + const zips = readdirSync(deployRoot, { withFileTypes: true }) + .filter((entry) => entry.isFile() && entry.name.startsWith("kdl-olp-demo-") && entry.name.endsWith(".zip")) + .map((entry) => ({ + path: join(deployRoot, entry.name), + mtimeMs: statSync(join(deployRoot, entry.name)).mtimeMs + })) + .sort((left, right) => right.mtimeMs - left.mtimeMs); + if (zips.length === 0) { + throw new Error(`No kdl-olp-demo-*.zip files found in ${deployRoot}`); + } + return zips[0].path; +} + +function walkFiles(dir) { + const files = []; + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const fullPath = join(dir, entry.name); + if (entry.isDirectory()) { + files.push(...walkFiles(fullPath)); + } else if (entry.isFile()) { + files.push(fullPath); + } + } + return files; +} + +function readJson(file) { + return JSON.parse(readFileSync(file, "utf8")); +} + +function zipBasename(file) { + return file.split(/[\\/]/).at(-1).replace(/\.zip$/i, ""); +} + +function psSingleQuoted(value) { + return `'${String(value).replaceAll("'", "''")}'`; +} + +function assertSafeVerifyPath(path) { + const allowedRoot = resolve(join(deployRoot, "_verify")) + sep; + const resolved = resolve(path); + if (!resolved.startsWith(allowedRoot)) { + throw new Error(`Refusing to modify path outside verify root: ${resolved}`); + } +} diff --git a/kdl-wasm/web/scripts/verify-virtual-controller-buttons.mjs b/kdl-wasm/web/scripts/verify-virtual-controller-buttons.mjs new file mode 100644 index 0000000..de6574a --- /dev/null +++ b/kdl-wasm/web/scripts/verify-virtual-controller-buttons.mjs @@ -0,0 +1,508 @@ +import { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { basename, join, resolve } from "node:path"; +import { fileURLToPath, pathToFileURL } from "node:url"; +import { spawn } from "node:child_process"; + +const root = resolve(fileURLToPath(new URL("../../..", import.meta.url))); +const appHtml = resolve(root, "kdl-wasm/web/app/virtual-controller.html"); +const outputDir = resolve(root, "kdl-wasm/web/test-results/virtual-controller"); +const chromeBin = process.env.CHROME_BIN ?? defaultChromeBin(); +const targetUrl = process.argv[2] ?? pathToFileURL(appHtml).href; +const isRemote = /^https?:\/\//i.test(targetUrl); + +mkdirSync(outputDir, { recursive: true }); + +const evidence = await verifyButtonFlow(targetUrl); +const evidencePath = join(outputDir, isRemote ? "button-evidence-public.json" : "button-evidence.json"); +writeFileSync(evidencePath, `${JSON.stringify(evidence, null, 2)}\n`); +console.log(JSON.stringify(evidence, null, 2)); + +async function verifyButtonFlow(url) { + const browser = await launchChrome("buttons"); + try { + const client = await connect(browser.websocketUrl); + await client.send("Page.enable"); + await client.send("Runtime.enable"); + await client.send("Network.enable"); + await client.send("Emulation.setDeviceMetricsOverride", { + width: 1440, + height: 960, + deviceScaleFactor: 1, + mobile: false + }); + await client.send("Page.navigate", { url }); + await waitForLoad(client); + + const initial = await waitForProbe( + client, + (probe) => probe.title === "ABB120 Virtual Controller" + && probe.frameTotal > 0 + && probe.samplePeriodSec === 0.05 + && probe.stepRows > 0 + && probe.activeStepRows === 1 + && (!isRemote || probe.programOptions.length >= 10), + "initial controller render", + 12_000 + ); + if (isRemote && initial.programOptions.length < 10) { + throw new Error(`remote manifest did not populate enough programs: ${initial.programOptions.length}`); + } + + await clickCommand(client, "load"); + const afterLoadClick = await sleepAndProbe(client, 120); + if (!["load", "loading", "parsing", "ready"].includes(afterLoadClick.state)) { + throw new Error(`Load did not show an active state, got ${afterLoadClick.state}`); + } + if (!afterLoadClick.log.includes(afterLoadClick.program)) { + throw new Error(`Load did not write the active program to the log: ${afterLoadClick.log}`); + } + const afterParse = await waitForProbe( + client, + (probe) => probe.state === "ready" + && probe.parser.includes("parsed") + && probe.parserProgress === 1 + && probe.stepRows > 1 + && probe.frameRows === probe.sourceFrameTotal, + "Load parse stream", + 4000 + ); + if (afterLoadClick.state === "parsing") { + if (!afterLoadClick.parser.includes("parsing")) { + throw new Error(`Load did not expose parser progress: ${afterLoadClick.parser}`); + } + if (afterLoadClick.frameRows >= afterParse.frameRows && afterParse.frameRows > 1) { + throw new Error(`Trajectory did not grow during parsing: ${afterLoadClick.frameRows} -> ${afterParse.frameRows}`); + } + } + + await clickCommand(client, "run"); + const afterRun = await waitForProbe( + client, + (probe) => probe.state === "running" && probe.running, + "Run command", + 1200 + ); + if (!afterRun.wait.includes("waiting") && !afterRun.wait.includes("satisfied")) { + throw new Error(`Run did not update wait state: ${afterRun.wait}`); + } + assertProgramSteps(afterRun, "Run command"); + + await sleep(700); + await clickCommand(client, "pause"); + const afterPause = await waitForProbe(client, (probe) => probe.state === "paused", "Pause command", 1000); + assertProgramSteps(afterPause, "Pause command"); + + await clickCommand(client, "step"); + const afterStep = await waitForProbe(client, (probe) => probe.state === "paused", "Step command", 1000); + const expectedStepFrame = afterPause.frameCurrent < afterPause.frameTotal + ? afterPause.frameCurrent + 1 + : afterPause.frameCurrent; + if (afterStep.frameCurrent !== expectedStepFrame) { + throw new Error(`Step sample mismatch: expected ${expectedStepFrame}, got ${afterStep.frameCurrent}`); + } + assertProgramSteps(afterStep, "Step command"); + + await clickCommand(client, "stop"); + const afterStop = await waitForProbe(client, (probe) => probe.state === "stopped", "Stop command", 1000); + + await clickCommand(client, "reset"); + const afterReset = await waitForProbe( + client, + (probe) => probe.state === "ready" && probe.frameCurrent === 1, + "Reset command", + 1000 + ); + + await clickCommand(client, "export"); + const afterExport = await sleepAndProbe(client, 150); + if (!afterExport.log.includes("exported") && !afterExport.reports.includes("exported")) { + throw new Error(`Export did not update log/report fields: ${afterExport.log} / ${afterExport.reports}`); + } + + const fullSpecId = afterExport.programOptions.find((id) => id.startsWith("W2_99_")); + let afterProgramSwitch = afterExport; + if (fullSpecId) { + await selectProgram(client, fullSpecId); + afterProgramSwitch = await waitForProbe( + client, + (probe) => probe.program === fullSpecId + && probe.state === "ready" + && probe.sourceFrameTotal >= 20 + && probe.frameTotal >= 39 + && probe.stepRows >= 8 + && probe.activeStepRows === 1, + `${fullSpecId} program switch`, + isRemote ? 12_000 : 4_000 + ); + assertTcpAndJoints(afterProgramSwitch, fullSpecId); + } + + const afterCacheWarm = await waitForProbe( + client, + (probe) => !isRemote || probe.storageState.writes >= 3, + "OPFS cache warmup", + isRemote ? 12_000 : 1500 + ); + const offlineCache = await verifyOfflineCache(client, afterCacheWarm); + + await client.close(); + return { + targetUrl: url, + chrome: chromeBin, + initial, + afterLoadClick, + afterRun, + afterPause, + afterStep, + afterStop, + afterReset, + afterExport, + afterProgramSwitch, + offlineCache + }; + } finally { + browser.close(); + } +} + +async function verifyOfflineCache(client, beforeOffline) { + if (!isRemote) { + return { skipped: true, reason: "local file target does not require network-offline cache proof" }; + } + + const cacheProgram = beforeOffline.program + ?? beforeOffline.programOptions.find((id) => id === "W2_60_IOWaitPulse") + ?? beforeOffline.programOptions[0]; + if (!cacheProgram) throw new Error("No program available for offline cache check"); + + await evaluate(client, `() => { + const app = window.__virtualController; + app.programCache.clear(); + app.programLoads.clear(); + app.assetTextCache.clear(); + return true; + }`); + await client.send("Network.emulateNetworkConditions", { + offline: true, + latency: 0, + downloadThroughput: 0, + uploadThroughput: 0 + }); + await selectProgram(client, cacheProgram); + const offline = await waitForProbe( + client, + (probe) => probe.program === cacheProgram + && probe.state === "ready" + && probe.sourceFrameTotal >= 4 + && probe.storageState.hits > beforeOffline.storageState.hits, + "offline OPFS program load", + 5000 + ); + if (offline.storageState.mode !== "OPFS") { + throw new Error(`Expected OPFS mode during offline load, got ${offline.storageState.mode}`); + } + assertTcpAndJoints(offline, cacheProgram); + return { + program: cacheProgram, + mode: offline.storageState.mode, + hitsBefore: beforeOffline.storageState.hits, + hitsAfter: offline.storageState.hits, + frame: offline.frame, + storage: offline.storage + }; +} + +async function clickCommand(client, command) { + return evaluate(client, `() => { + const button = document.querySelector("[data-command='${command}']"); + if (!button) throw new Error("Missing command ${command}"); + button.click(); + return true; + }`); +} + +async function selectProgram(client, programId) { + return evaluate(client, `() => { + const select = document.querySelector("[data-program-select]"); + if (!select) throw new Error("Missing program select"); + select.value = ${JSON.stringify(programId)}; + select.dispatchEvent(new Event("change", { bubbles: true })); + return select.value; + }`); +} + +function assertTcpAndJoints(probe, label) { + if (!/\[[^\]]+\]/.test(probe.joints) || probe.joints.split(",").length < 6) { + throw new Error(`${label}: joints field is not a 6-axis vector: ${probe.joints}`); + } + if (!probe.tcp.includes("pos [") || !probe.tcp.includes(" q [")) { + throw new Error(`${label}: TCP field is incomplete: ${probe.tcp}`); + } + if (probe.frameRows !== probe.sourceFrameTotal) { + throw new Error(`${label}: frame table rows ${probe.frameRows} != source frame total ${probe.sourceFrameTotal}`); + } + if (probe.samplePeriodSec !== 0.05) { + throw new Error(`${label}: expected 50ms sample period, got ${probe.samplePeriodSec}`); + } + assertProgramSteps(probe, label); +} + +function assertProgramSteps(probe, label) { + if (probe.stepRows < 1) { + throw new Error(`${label}: program step table did not render rows`); + } + if (probe.activeStepRows !== 1) { + throw new Error(`${label}: expected one active program step, got ${probe.activeStepRows}`); + } + if (!probe.stepStatus.includes("/") || !probe.stepStatus.includes("line")) { + throw new Error(`${label}: step status is incomplete: ${probe.stepStatus}`); + } + if (!probe.activeStepText.includes("@50ms") && !probe.activeStepText.includes("line")) { + throw new Error(`${label}: active step does not expose execution detail: ${probe.activeStepText}`); + } +} + +async function sleepAndProbe(client, ms) { + await sleep(ms); + return evaluate(client, pageProbeSource()); +} + +async function waitForProbe(client, predicate, label, timeoutMs) { + const started = Date.now(); + let lastProbe; + while (Date.now() - started < timeoutMs) { + lastProbe = await evaluate(client, pageProbeSource()); + if (predicate(lastProbe)) return lastProbe; + await sleep(100); + } + throw new Error(`${label} timed out. Last probe: ${JSON.stringify(lastProbe)}`); +} + +function pageProbeSource() { + return `() => { + const field = (name) => document.querySelector("[data-field='" + name + "']")?.textContent?.trim() ?? ""; + const frame = field("frame"); + const frameMatch = frame.match(/(\\d+)\\s*\\/\\s*(\\d+)/); + const app = window.__virtualController; + return { + title: document.title, + state: field("state"), + program: field("program"), + wait: field("wait"), + log: field("log"), + reports: field("reports"), + storage: field("storage"), + joints: field("joints"), + tcp: field("tcp"), + frame, + frameCurrent: frameMatch ? Number(frameMatch[1]) : 0, + frameTotal: frameMatch ? Number(frameMatch[2]) : 0, + frameRows: document.querySelectorAll("[data-frame-table] tr").length, + frameTime: field("frame-time"), + parser: field("parser"), + parserProgress: Number(document.querySelector("[data-parser-progress]")?.value ?? 0), + stepStatus: field("step-status"), + stepRows: document.querySelectorAll("[data-step-table] tr").length, + activeStepRows: document.querySelectorAll("[data-step-table] tr[data-step-state='active']").length, + activeStepText: document.querySelector("[data-step-table] tr[data-step-state='active']")?.textContent?.trim() ?? "", + programOptions: Array.from(document.querySelectorAll("[data-program-select] option")).map((item) => item.value), + running: document.querySelector(".workbench")?.dataset.running === "true", + playbackTime: Number(app?.playbackTime ?? 0), + samplePeriodSec: Number(app?.samplePeriodSec ?? 0), + sampleIndex: Number(app?.currentSampleIndex ?? 0), + sourceFrameIndex: Number(app?.currentFrameIndex ?? 0), + sourceFrameTotal: Array.isArray(app?.programCache?.get?.(app?.selectedProgramId)?.trajectory?.frames) + ? app.programCache.get(app.selectedProgramId).trajectory.frames.length + : document.querySelectorAll("[data-frame-table] tr").length, + storageState: app?.storage ? { ...app.storage } : {}, + parseStream: app?.parseStream ? { ...app.parseStream, timer: Boolean(app.parseStream.timer) } : {}, + errors: Array.isArray(window.__vcErrors) ? [...window.__vcErrors] : [] + }; + }`; +} + +function launchChrome(name) { + const userDataDir = mkdtempSync(join(tmpdir(), `kdl-vc-${name}-`)); + const child = spawn(chromeBin, [ + "--headless=new", + "--disable-gpu", + "--no-sandbox", + "--disable-dev-shm-usage", + "--ignore-certificate-errors", + "--remote-debugging-port=0", + `--user-data-dir=${userDataDir}`, + "about:blank" + ], { stdio: ["ignore", "pipe", "pipe"] }); + + let log = ""; + let settled = false; + + const cleanup = () => { + child.kill("SIGTERM"); + setTimeout(() => { + rmSync(userDataDir, { + recursive: true, + force: true, + maxRetries: 5, + retryDelay: 100 + }); + }, 250).unref(); + }; + + return new Promise((resolveLaunch, reject) => { + const timeout = setTimeout(() => { + if (!settled) { + settled = true; + cleanup(); + reject(new Error(`Chrome did not expose DevTools endpoint. ${log}`)); + } + }, 15_000); + + const onData = (chunk) => { + log += chunk.toString(); + const match = log.match(/DevTools listening on (ws:\/\/[^\s]+)/); + if (!match || settled) return; + settled = true; + clearTimeout(timeout); + findPageWebsocket(match[1]).then((pageWebsocketUrl) => { + resolveLaunch({ + websocketUrl: pageWebsocketUrl, + close: cleanup + }); + }, (error) => { + cleanup(); + reject(error); + }); + }; + + child.stdout.on("data", onData); + child.stderr.on("data", onData); + child.on("error", (error) => { + if (!settled) { + settled = true; + clearTimeout(timeout); + cleanup(); + reject(error); + } + }); + child.on("exit", (code) => { + if (!settled) { + settled = true; + clearTimeout(timeout); + cleanup(); + reject(new Error(`${basename(chromeBin)} exited early with ${code}. ${log}`)); + } + }); + }); +} + +async function findPageWebsocket(browserWebsocketUrl) { + const endpoint = new URL(browserWebsocketUrl); + const baseUrl = `http://${endpoint.host}`; + const started = Date.now(); + let lastError; + + while (Date.now() - started < 5000) { + try { + const response = await fetch(`${baseUrl}/json/list`); + const targets = await response.json(); + const page = targets.find((target) => target.type === "page" && target.webSocketDebuggerUrl); + if (page?.webSocketDebuggerUrl) return page.webSocketDebuggerUrl; + } catch (error) { + lastError = error; + } + await sleep(100); + } + + throw new Error(`Could not find Chrome page target. ${lastError instanceof Error ? lastError.message : ""}`); +} + +function connect(websocketUrl) { + const socket = new WebSocket(websocketUrl); + let nextId = 1; + const pending = new Map(); + + socket.addEventListener("message", (event) => { + const message = JSON.parse(event.data.toString()); + if (!message.id) return; + const request = pending.get(message.id); + if (!request) return; + pending.delete(message.id); + if (message.error) { + request.reject(new Error(`${message.error.code}: ${message.error.message}`)); + } else { + request.resolve(message.result ?? {}); + } + }); + + return new Promise((resolveClient, reject) => { + socket.addEventListener("open", () => { + resolveClient({ + send(method, params = {}) { + const id = nextId++; + socket.send(JSON.stringify({ id, method, params })); + return new Promise((resolveSend, rejectSend) => { + pending.set(id, { resolve: resolveSend, reject: rejectSend }); + }); + }, + close() { + socket.close(); + } + }); + }, { once: true }); + socket.addEventListener("error", reject, { once: true }); + }); +} + +function waitForLoad(client) { + return new Promise((resolveLoad, reject) => { + const started = Date.now(); + const poll = async () => { + try { + const ready = await evaluate(client, "() => document.readyState"); + if (ready === "complete") { + resolveLoad(); + return; + } + if (Date.now() - started > 10_000) { + reject(new Error("Timed out waiting for document.readyState complete")); + return; + } + setTimeout(poll, 100); + } catch (error) { + reject(error); + } + }; + poll(); + }); +} + +async function evaluate(client, expression) { + const result = await client.send("Runtime.evaluate", { + expression: `(${expression})()`, + awaitPromise: true, + returnByValue: true + }); + if (result.exceptionDetails) { + throw new Error(result.exceptionDetails.text ?? "Runtime.evaluate failed"); + } + return result.result.value; +} + +function sleep(ms) { + return new Promise((resolveSleep) => setTimeout(resolveSleep, ms)); +} + +function defaultChromeBin() { + if (process.platform !== "win32") return "/usr/bin/google-chrome"; + const candidates = [ + "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", + "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", + process.env.LOCALAPPDATA + ? join(process.env.LOCALAPPDATA, "Google", "Chrome", "Application", "chrome.exe") + : "", + "C:\\Program Files\\Microsoft\\Edge\\Application\\msedge.exe" + ]; + return candidates.find((candidate) => candidate && existsSync(candidate)) ?? "chrome.exe"; +} diff --git a/kdl-wasm/web/scripts/verify-virtual-controller.mjs b/kdl-wasm/web/scripts/verify-virtual-controller.mjs index 006cb96..733f747 100644 --- a/kdl-wasm/web/scripts/verify-virtual-controller.mjs +++ b/kdl-wasm/web/scripts/verify-virtual-controller.mjs @@ -52,13 +52,18 @@ async function verifyViewport(viewport) { await client.send("Page.navigate", { url: pathToFileURL(appHtml).href }); await waitForLoad(client); - const initial = await evaluate(client, pageProbeSource()); + const initial = await waitForProbe( + client, + (probe) => probe.parserProgress === 1 && !probe.parser.includes("parsing"), + "initial parse", + 4000 + ); assertProbe(initial, viewport.name, "initial"); await evaluate(client, clickCommandSource("load")); await evaluate(client, clickCommandSource("run")); await evaluate(client, clickIoSource()); - const afterRun = await evaluate(client, pageProbeSource()); + const afterRun = await waitForProbe(client, (probe) => probe.state === "running", "run", 1200); assertProbe(afterRun, viewport.name, "after run"); if (afterRun.state !== "running") { throw new Error(`${viewport.name}: expected state running, got ${afterRun.state}`); @@ -91,6 +96,7 @@ async function verifyViewport(viewport) { screenshot: viewport.screenshotPath, screenshotBytes: pngBytes, state: afterRun.state, + parser: afterRun.parser, wait: afterRun.wait, trace: afterRun.trace, visiblePanels: afterRun.visiblePanels @@ -257,6 +263,17 @@ function waitForLoad(client) { }); } +async function waitForProbe(client, predicate, label, timeoutMs) { + const started = Date.now(); + let lastProbe; + while (Date.now() - started < timeoutMs) { + lastProbe = await evaluate(client, pageProbeSource()); + if (predicate(lastProbe)) return lastProbe; + await new Promise((resolveRetry) => setTimeout(resolveRetry, 100)); + } + throw new Error(`${label} timed out. Last probe: ${JSON.stringify(lastProbe)}`); +} + async function evaluate(client, expression) { const result = await client.send("Runtime.evaluate", { expression: `(${expression})()`, @@ -288,7 +305,12 @@ function pageProbeSource() { wait: field("wait"), queue: field("queue"), trace: field("trace"), + parser: field("parser"), + parserProgress: Number(document.querySelector("[data-parser-progress]")?.value ?? 0), editor: field("editor"), + stepRows: document.querySelectorAll("[data-step-table] tr").length, + activeStepRows: document.querySelectorAll("[data-step-table] tr[data-step-state='active']").length, + stepStatus: field("step-status"), running: document.querySelector(".workbench")?.dataset.running === "true", visiblePanels, viewport: box(".viewport"), @@ -325,6 +347,9 @@ function assertProbe(probe, viewportName, phase) { if (!probe.editor.includes("proc main") && !probe.editor.includes("MoveJ") && !probe.editor.includes("PTP")) { throw new Error(`${viewportName}/${phase}: editor source did not render`); } + if (probe.stepRows < 1 || probe.activeStepRows !== 1 || !probe.stepStatus.includes("line")) { + throw new Error(`${viewportName}/${phase}: program steps did not render correctly`); + } if (!probe.viewport || probe.viewport.width < 100 || probe.viewport.height < 100) { throw new Error(`${viewportName}/${phase}: viewport is too small`); } diff --git a/kdl-wasm/web/src/grl/semantic/compileControlFlow.ts b/kdl-wasm/web/src/grl/semantic/compileControlFlow.ts index b0befad..4a5455a 100644 --- a/kdl-wasm/web/src/grl/semantic/compileControlFlow.ts +++ b/kdl-wasm/web/src/grl/semantic/compileControlFlow.ts @@ -87,6 +87,10 @@ class ControlFlowParser { instructions.push(this.finishJump(this.previous(), context)); continue; } + if (this.matchKeyword("try")) { + instructions.push(this.finishRawBlock(this.previous(), "try")); + continue; + } if (this.checkKeyword("end")) { throw controlError("GRL_CONTROL_UNEXPECTED_END", "Unexpected end in procedure body", this.peek()); } @@ -311,6 +315,29 @@ class ControlFlowParser { }; } + private finishRawBlock(start: GrlToken, blockKeyword: string): RawProcedureStatement { + const tokens: GrlToken[] = [start]; + let nestedBlocks = 0; + while (!this.isAtEnd()) { + const token = this.advance(); + tokens.push(token); + if (token.kind === "keyword" && token.raw === "end") { + if (nestedBlocks === 0) { + break; + } + nestedBlocks -= 1; + } else if (token.kind === "keyword" && ["if", "while", "for", "switch", "try"].includes(token.raw)) { + nestedBlocks += 1; + } + } + return { + kind: "RAW_STATEMENT", + text: `${blockKeyword} block`, + tokens, + sourceMap: tokenSourceMap(start) + }; + } + private parseBooleanLineExpression(start: GrlToken): ControlExpression { const expression = this.parseLineExpressionUntil(start, []); if (!isBooleanCondition(expression.tokens as GrlToken[])) { diff --git a/kdl-wasm/web/src/grl/semantic/compileIo.ts b/kdl-wasm/web/src/grl/semantic/compileIo.ts index b221cb6..194824d 100644 --- a/kdl-wasm/web/src/grl/semantic/compileIo.ts +++ b/kdl-wasm/web/src/grl/semantic/compileIo.ts @@ -339,6 +339,9 @@ class IoStatementParser { } private matchKeyword(keyword: string): boolean { + if (this.isAtEnd()) { + return false; + } const token = this.peek(); if ((token.kind === "keyword" || token.kind === "identifier") && token.raw === keyword) { this.advance(); @@ -348,6 +351,9 @@ class IoStatementParser { } private checkKeyword(keyword: string): boolean { + if (this.isAtEnd()) { + return false; + } const token = this.peek(); return (token.kind === "keyword" || token.kind === "identifier") && token.raw === keyword; } diff --git a/kdl-wasm/web/src/grl/semantic/index.ts b/kdl-wasm/web/src/grl/semantic/index.ts index d5c619c..cf8cbf4 100644 --- a/kdl-wasm/web/src/grl/semantic/index.ts +++ b/kdl-wasm/web/src/grl/semantic/index.ts @@ -1,5 +1,6 @@ export { compileGrlDataDeclaration, + compileGrlConstantValue, compileGrlTargetDeclaration, compileOffsetExpression, compileSpeedExpression, diff --git a/kdl-wasm/web/src/suites/abb120SpecSuite.ts b/kdl-wasm/web/src/suites/abb120SpecSuite.ts new file mode 100644 index 0000000..ea76602 --- /dev/null +++ b/kdl-wasm/web/src/suites/abb120SpecSuite.ts @@ -0,0 +1,1106 @@ +import { createHash } from "node:crypto"; +import { parseGrl } from "../grl/parser/index.js"; +import { + buildMotionContext, + compileGrlDataDeclaration, + compileGrlConstantValue, + compileGrlTargetDeclaration, + compileMotionToKdlRequest, + compilePathToPlanRequest, + compileSemanticProgram, + analyzeProcFunctionSemantics, + parseControlFlowStatements, + parseProcedureMotionInstructions +} from "../grl/semantic/index.js"; +import { postProcessAllBrands } from "../grl/post/index.js"; +import { importBrandProgram } from "../importers/index.js"; +import { VirtualController, type RuntimeStepResult, type VirtualControllerSnapshot } from "../controller/index.js"; +import { parseIoReferenceText } from "../runtime/index.js"; +import type { IoScriptStep } from "../runtime/ioRuntime.js"; +import type { + GrlDataDeclaration, + GrlPathDeclaration, + GrlProcedureDeclaration, + GrlTargetDeclaration, + GrlTopLevelDeclaration +} from "../grl/ast/index.js"; +import type { + MotionDiagnostic, + PathPlanRequest, + PathPlanResult, + TrajectoryPoint, + TrajectoryResult +} from "../kdl/types.js"; +import { + ABB120_ROBOT_FIXTURE, + ABB_IRB120_ZERO_JOINTS +} from "../fixtures/abb120.js"; + +export type Abb120SpecCoverageLevel = "Runtime" | "Static" | "Post"; +export type Abb120SpecExpectedStatus = "pass" | "diagnostic"; + +export interface Abb120SpecManifestProgram { + program_id: string; + file: string; + coverage_level: Abb120SpecCoverageLevel; + spec_sections: number[]; + expected_status: Abb120SpecExpectedStatus; + expected_diagnostics: string[]; +} + +export interface Abb120SpecCoverageItem { + spec_section: number; + coverage_level: string; + program_ids: string[]; +} + +export interface Abb120SpecManifest { + suite_id: string; + robot_id: string; + spec_source: string; + program_root: string; + runtime_commands: string[]; + programs: Abb120SpecManifestProgram[]; + coverage_matrix: Abb120SpecCoverageItem[]; +} + +export interface Abb120SpecProgramSource { + program_id: string; + file: string; + text: string; +} + +export interface Abb120SpecCommandTrace { + command: "loadProgram" | "start" | "stepInto" | "hold" | "resume" | "stepMotion" | "stop" | "resetFault"; + before?: string; + after?: string; + result?: RuntimeStepResult["status"] | "ok"; + diagnostics: MotionDiagnostic[]; +} + +export interface Abb120SpecProgramResult { + program_id: string; + file: string; + coverage_level: Abb120SpecCoverageLevel; + expected_status: Abb120SpecExpectedStatus; + status: "pass" | "diagnostic" | "fail"; + input_hash: string; + spec_sections: number[]; + diagnostics: MotionDiagnostic[]; + compile: { + parsed: boolean; + moduleName?: string; + astKind?: "Program"; + semanticChecks: string[]; + sourceMapEntries: number; + kdlMotionRequests: number; + kdlPathRequests: number; + symbolCount: number; + procedureCount: number; + pathCount: number; + operationCount: number; + }; + controller?: { + commands: Abb120SpecCommandTrace[]; + snapshot: VirtualControllerSnapshot; + }; + motionQueue?: VirtualControllerSnapshot["motion"]; + trace?: VirtualControllerSnapshot["runtime"]["trace"]; + io?: VirtualControllerSnapshot["io"]; + trajectory?: { + sampleCount: number; + duration: number; + startJoints: number[]; + endJoints: number[]; + frames: Array<{ + index: number; + time: number; + motion: string; + segmentId?: string; + targetId?: string; + joints: number[]; + tcp: { + position: number[]; + quaternion: number[]; + }; + sourceMap?: MotionDiagnostic["sourceMap"]; + diagnostics: MotionDiagnostic[]; + }>; + diagnostics: MotionDiagnostic[]; + }; + post?: { + filenames: string[]; + report: Array<{ code: string; severity: string; message: string; brand?: string }>; + }; + roundtrip?: { + status: "pass" | "warn" | "fail"; + diagnostics: MotionDiagnostic[]; + }; + artifacts: Record; +} + +export interface Abb120SpecSuiteJob { + job_id: string; + suite_id: string; + robot_id: string; + robot: typeof ABB120_ROBOT_FIXTURE; + git_revision: string; + manifest_hash: string; + coverage: { + specSections: number[]; + coveredSections: number[]; + missingSections: number[]; + runtimePrograms: number; + staticPrograms: number; + postPrograms: number; + }; + programs: Abb120SpecProgramResult[]; + artifacts: { + root: string; + manifestJson: string; + jobJson: string; + reportJson: string; + reportHtml: string; + desktopScreenshot: string; + mobileScreenshot: string; + uiEvidenceJson: string; + }; +} + +export function runAbb120SpecSuite( + manifest: Abb120SpecManifest, + programs: Abb120SpecProgramSource[], + options: { now?: string; gitRevision?: string; outputRoot?: string } = {} +): Abb120SpecSuiteJob { + const now = options.now ?? new Date().toISOString(); + const shortHash = stableHash( + JSON.stringify({ + suite_id: manifest.suite_id, + programs: programs.map((program) => [program.program_id, stableHash(program.text).slice(0, 12)]) + }) + ).slice(0, 8); + const stamp = now.replace(/[-:TZ.]/g, "").slice(0, 14); + const job_id = `W2-JOB-${stamp}-${shortHash}`; + const outputRoot = options.outputRoot ?? `kdl-wasm/web/test-results/abb120-spec/${job_id}`; + const programById = new Map(programs.map((program) => [program.program_id, program])); + const results = manifest.programs.map((entry) => runProgram(entry, programById.get(entry.program_id), job_id)); + const coveredSections = [...new Set(manifest.coverage_matrix.flatMap((item) => item.spec_section))].sort((a, b) => a - b); + const expectedSections = Array.from({ length: 22 }, (_value, index) => index + 4); + + return { + job_id, + suite_id: manifest.suite_id, + robot_id: manifest.robot_id, + robot: ABB120_ROBOT_FIXTURE, + git_revision: options.gitRevision ?? "working-tree", + manifest_hash: stableHash(JSON.stringify(manifest)), + coverage: { + specSections: expectedSections, + coveredSections, + missingSections: expectedSections.filter((section) => !coveredSections.includes(section)), + runtimePrograms: results.filter((result) => result.coverage_level === "Runtime").length, + staticPrograms: results.filter((result) => result.coverage_level === "Static").length, + postPrograms: results.filter((result) => result.coverage_level === "Post").length + }, + programs: results, + artifacts: { + root: outputRoot, + manifestJson: `${outputRoot}/manifest.json`, + jobJson: `${outputRoot}/job.json`, + reportJson: `${outputRoot}/report.json`, + reportHtml: `${outputRoot}/report.html`, + desktopScreenshot: `${outputRoot}/screenshots/virtual-controller-desktop.png`, + mobileScreenshot: `${outputRoot}/screenshots/virtual-controller-mobile.png`, + uiEvidenceJson: `${outputRoot}/screenshots/evidence.json` + } + }; +} + +function runProgram( + entry: Abb120SpecManifestProgram, + source: Abb120SpecProgramSource | undefined, + jobId: string +): Abb120SpecProgramResult { + const diagnostics: MotionDiagnostic[] = []; + const artifacts = artifactPaths(jobId, entry.program_id); + if (!source) { + return failedResult(entry, "", [{ severity: "error", code: "W2_PROGRAM_SOURCE_MISSING", message: `Missing source for ${entry.program_id}` }], artifacts); + } + + try { + const ast = parseGrl(source.text); + const ir = compileSemanticProgram(ast, { + startJoints: [...ABB_IRB120_ZERO_JOINTS], + sampleTime: 0.02 + }); + diagnostics.push(...ir.diagnostics); + const compile = { + parsed: true, + moduleName: ir.moduleName, + astKind: ast.kind, + semanticChecks: ir.semanticChecks, + sourceMapEntries: ir.sourceMap.length, + kdlMotionRequests: ir.kdlBridge.motionRequests.length, + kdlPathRequests: ir.kdlBridge.pathRequests.length, + symbolCount: ir.symbols.length, + procedureCount: ir.procedures.length, + pathCount: ir.paths.length, + operationCount: ir.operations.length + }; + + if (entry.coverage_level === "Runtime") { + const runtime = runController(ir, entry.program_id); + const plannedQueueResults = runtime.snapshot.motion?.items + .filter((item) => item.request.segments.length > 0) + .map((item) => planPathFixture(item.request)); + diagnostics.push( + ...runtime.snapshot.state.diagnostics, + ...runtime.snapshot.io.diagnostics, + ...(runtime.snapshot.bridge?.diagnostics ?? []), + ...(plannedQueueResults ?? []).flatMap((result) => result.diagnostics) + ); + addExpectationDiagnostics(entry, diagnostics); + return { + ...baseResult(entry, source.text, diagnostics, artifacts), + status: resultStatus(entry, diagnostics), + compile, + controller: { + commands: runtime.commands, + snapshot: runtime.snapshot + }, + motionQueue: runtime.snapshot.motion, + trace: runtime.snapshot.runtime.trace, + io: runtime.snapshot.io, + trajectory: summarizeTrajectory(plannedQueueResults), + post: postSummary(ir), + artifacts + }; + } + + if (entry.coverage_level === "Post") { + const posted = postSummary(ir); + const roundtrip = roundtripSummary(ir.moduleName, posted); + diagnostics.push(...posted.report.map((issue) => ({ + severity: issue.severity as MotionDiagnostic["severity"], + code: issue.code, + message: issue.message, + ...(issue.brand ? { data: { brand: issue.brand } } : {}) + }))); + diagnostics.push(...roundtrip.diagnostics); + addExpectationDiagnostics(entry, diagnostics); + return { + ...baseResult(entry, source.text, diagnostics, artifacts), + status: resultStatus(entry, diagnostics), + compile, + post: posted, + roundtrip, + artifacts + }; + } + + addExpectationDiagnostics(entry, diagnostics); + return { + ...baseResult(entry, source.text, diagnostics, artifacts), + status: resultStatus(entry, diagnostics), + compile, + artifacts + }; + } catch (error) { + diagnostics.push(...diagnosticsFromError(error, entry.program_id)); + try { + diagnostics.push(...collectStaticPreflightDiagnostics(parseGrl(source.text))); + } catch { + // Parse failures are already represented by the primary diagnostic. + } + addExpectationDiagnostics(entry, diagnostics); + return { + ...baseResult(entry, source.text, diagnostics, artifacts), + status: "diagnostic", + compile: { + parsed: false, + semanticChecks: [], + sourceMapEntries: 0, + kdlMotionRequests: 0, + kdlPathRequests: 0, + symbolCount: 0, + procedureCount: 0, + pathCount: 0, + operationCount: 0 + }, + artifacts + }; + } +} + +function collectStaticPreflightDiagnostics(ast: ReturnType): MotionDiagnostic[] { + const diagnostics: MotionDiagnostic[] = []; + const seen = new Set(); + for (const declaration of ast.module.declarations) { + const name = "name" in declaration ? declaration.name : undefined; + if (!name) { + continue; + } + if (seen.has(name)) { + diagnostics.push({ + severity: "error", + code: "GRL_SYMBOL_DUPLICATE", + message: `Duplicate symbol ${name}`, + sourceMap: { + line: declaration.range.start.line, + column: declaration.range.start.column + } + }); + } + seen.add(name); + } + + const dataAndTargets = ast.module.declarations.filter(isDataOrTargetDeclaration); + const motionContext = safeBuildMotionContext(dataAndTargets, diagnostics); + const pathDeclarations = new Map( + ast.module.declarations + .filter((declaration): declaration is GrlPathDeclaration => declaration.kind === "PathDeclaration") + .map((path) => [path.name, path]) + ); + collectThrownDiagnostics(diagnostics, () => { + diagnostics.push(...analyzeProcFunctionSemantics(ast.module.declarations).diagnostics); + }); + diagnostics.push(...collectRoutinePreflightDiagnostics(ast.module.declarations)); + diagnostics.push(...collectControlFlowPreflightDiagnostics(ast.module.declarations)); + + for (const declaration of ast.module.declarations) { + if (declaration.kind === "DataDeclaration") { + collectThrownDiagnostics(diagnostics, () => compileGrlDataDeclaration(declaration, { symbols: motionContext.constants })); + } else if (declaration.kind === "TargetDeclaration") { + collectThrownDiagnostics(diagnostics, () => compileGrlTargetDeclaration(declaration, { symbols: motionContext.constants })); + } else if (declaration.kind === "PathDeclaration") { + collectThrownDiagnostics(diagnostics, () => + compilePathToPlanRequest(declaration, motionContext, { + startJoints: [...ABB_IRB120_ZERO_JOINTS], + sampleTime: 0.02 + }) + ); + } else if (declaration.kind === "ProcedureDeclaration") { + collectThrownDiagnostics(diagnostics, () => parseControlFlowStatements(declaration.bodyTokens)); + collectThrownDiagnostics(diagnostics, () => { + const motions = parseProcedureMotionInstructions(declaration, cloneMotionContextForSuite(motionContext)); + for (const instruction of motions) { + const request = compileMotionToKdlRequest(instruction, { + startJoints: [...ABB_IRB120_ZERO_JOINTS], + sampleTime: 0.02 + }); + const segment = "via" in request + ? { + id: `${declaration.name}:${instruction.kind}`, + motion: instruction.kind, + via: request.via, + target: request.target, + speed: request.speed, + zone: request.zone, + ...(request.sourceMap ? { sourceMap: request.sourceMap } : {}) + } + : { + id: `${declaration.name}:${instruction.kind}`, + motion: instruction.kind, + target: request.target, + speed: request.speed, + zone: request.zone, + ...(request.sourceMap ? { sourceMap: request.sourceMap } : {}) + }; + diagnostics.push(...planPathFixture({ + startJoints: request.startJoints, + sampleTime: request.sampleTime, + segments: [segment] + }).diagnostics); + } + }); + } else if (declaration.kind === "OperationDeclaration" && !pathDeclarations.has(declaration.pathName)) { + diagnostics.push({ + severity: "error", + code: "GRL_OPERATION_PATH_NOT_FOUND", + message: `Operation ${declaration.name} references unknown path ${declaration.pathName}`, + sourceMap: { + line: declaration.range.start.line, + column: declaration.range.start.column + } + }); + } + } + + return diagnostics; +} + +function safeBuildMotionContext( + declarations: Array, + diagnostics: MotionDiagnostic[] +): ReturnType { + try { + return buildMotionContext(declarations); + } catch { + const incremental = buildMotionContext([]); + for (const declaration of declarations) { + try { + if (declaration.kind === "DataDeclaration") { + const compiled = compileGrlDataDeclaration(declaration, { symbols: incremental.constants }); + if (declaration.storage === "const") { + try { + incremental.constants.set(declaration.name, compileGrlConstantValue(declaration.initializer)); + } catch { + // Structured declarations are not scalar constants. + } + } + if (compiled.typeName === "speed") { + incremental.speeds.set(compiled.name, compiled.value as never); + } else if (compiled.typeName === "zone") { + incremental.zones.set(compiled.name, compiled.value as never); + } else if (compiled.typeName === "tool") { + incremental.tools.set(compiled.name, (compiled.value as { tcp?: unknown }).tcp as never); + } else if (compiled.typeName === "frame") { + incremental.frames.set(compiled.name, (compiled.value as { origin?: unknown }).origin as never); + } + } else { + const compiled = compileGrlTargetDeclaration(declaration, { symbols: incremental.constants }); + incremental.targets.set(compiled.name, compiled.target); + } + } catch (error) { + diagnostics.push(...diagnosticsFromError(error, declaration.kind)); + } + } + return incremental; + } +} + +function isDataOrTargetDeclaration( + declaration: GrlTopLevelDeclaration +): declaration is GrlDataDeclaration | GrlTargetDeclaration { + return declaration.kind === "DataDeclaration" || declaration.kind === "TargetDeclaration"; +} + +function cloneMotionContextForSuite(context: ReturnType): ReturnType { + return { + targets: context.targets, + speeds: context.speeds, + zones: context.zones, + tools: context.tools, + frames: context.frames, + constants: context.constants, + ...(context.currentSpeed ? { currentSpeed: context.currentSpeed } : {}), + ...(context.currentZone ? { currentZone: context.currentZone } : {}), + ...(context.currentTool ? { currentTool: context.currentTool } : {}), + ...(context.currentFrame ? { currentFrame: context.currentFrame } : {}) + }; +} + +function collectThrownDiagnostics(diagnostics: MotionDiagnostic[], action: () => unknown): void { + try { + action(); + } catch (error) { + diagnostics.push(...diagnosticsFromError(error, "static-preflight")); + } +} + +function collectRoutinePreflightDiagnostics(declarations: GrlTopLevelDeclaration[]): MotionDiagnostic[] { + const diagnostics: MotionDiagnostic[] = []; + const routineNames = new Set( + declarations + .filter((declaration): declaration is GrlProcedureDeclaration => declaration.kind === "ProcedureDeclaration") + .map((declaration) => declaration.name) + ); + + for (const declaration of declarations) { + if (declaration.kind !== "ProcedureDeclaration" && declaration.kind !== "FunctionDeclaration") { + continue; + } + const isFunction = declaration.kind === "FunctionDeclaration"; + for (let index = 0; index < declaration.bodyTokens.length; index += 1) { + const token = declaration.bodyTokens[index]!; + if (token.raw === "call") { + const target = declaration.bodyTokens[index + 1]; + if (target && !routineNames.has(target.raw)) { + diagnostics.push({ + severity: "error", + code: "GRL_CALL_TARGET_NOT_FOUND", + message: `Unknown call target ${target.raw}`, + sourceMap: { + line: token.range.start.line, + column: token.range.start.column + } + }); + } + } + if (isFunction && ["movej", "movel", "movec", "wait", "pulse", "run_path", "run_operation"].includes(token.raw)) { + diagnostics.push({ + severity: "error", + code: "GRL_FUNC_SIDE_EFFECT", + message: `Function ${declaration.name} cannot execute ${token.raw}`, + sourceMap: { + line: token.range.start.line, + column: token.range.start.column + } + }); + } + } + } + + return diagnostics; +} + +function collectControlFlowPreflightDiagnostics(declarations: GrlTopLevelDeclaration[]): MotionDiagnostic[] { + const diagnostics: MotionDiagnostic[] = []; + for (const declaration of declarations) { + if (declaration.kind !== "ProcedureDeclaration") { + continue; + } + const loopDepthByLine = new Map(); + const switchDepthByLine = new Map(); + const labels = new Set(); + const jumps: Array<{ label: string; line: number; column: number }> = []; + const switchCaseValues = new Map>(); + const switchStack: number[] = []; + let loopDepth = 0; + let switchDepth = 0; + let blockDepth = 0; + + for (let index = 0; index < declaration.bodyTokens.length; index += 1) { + const token = declaration.bodyTokens[index]!; + if (token.range.start.column === 5 || !loopDepthByLine.has(token.range.start.line)) { + loopDepthByLine.set(token.range.start.line, loopDepth); + switchDepthByLine.set(token.range.start.line, switchDepth); + } + + if (token.raw === "while" || token.raw === "for") { + loopDepth += 1; + blockDepth += 1; + continue; + } + if (token.raw === "switch") { + switchDepth += 1; + blockDepth += 1; + switchStack.push(blockDepth); + switchCaseValues.set(blockDepth, new Set()); + continue; + } + if (token.raw === "if" || token.raw === "try") { + blockDepth += 1; + continue; + } + if (token.raw === "end") { + if (switchStack.at(-1) === blockDepth) { + switchStack.pop(); + switchDepth = Math.max(0, switchDepth - 1); + } else if (loopDepth > 0) { + loopDepth -= 1; + } + blockDepth = Math.max(0, blockDepth - 1); + continue; + } + if (token.raw === "break" && (loopDepthByLine.get(token.range.start.line) ?? 0) === 0 && (switchDepthByLine.get(token.range.start.line) ?? 0) === 0) { + diagnostics.push(controlDiagnostic("GRL_BREAK_OUTSIDE_FLOW", "break is only valid inside loop or switch", token)); + } + if (token.raw === "continue" && (loopDepthByLine.get(token.range.start.line) ?? 0) === 0) { + diagnostics.push(controlDiagnostic("GRL_CONTINUE_OUTSIDE_LOOP", "continue is only valid inside loop", token)); + } + if (token.raw === "label") { + const label = declaration.bodyTokens[index + 1]; + if (label) { + labels.add(label.raw); + } + } + if (token.raw === "jump") { + const label = declaration.bodyTokens[index + 1]; + if (label) { + jumps.push({ + label: label.raw, + line: token.range.start.line, + column: token.range.start.column + }); + } + } + if (token.raw === "case") { + const currentSwitch = switchStack.at(-1); + const valueTokens = collectSameLineTokens(declaration.bodyTokens, index + 1); + if (valueTokens.some((item) => item.kind === "operator")) { + diagnostics.push(controlDiagnostic("GRL_SWITCH_CASE_NOT_CONSTANT", "switch case must be a constant expression", token)); + } + if (currentSwitch !== undefined) { + const raw = valueTokens.map((item) => item.raw).join(" "); + const seen = switchCaseValues.get(currentSwitch)!; + if (seen.has(raw)) { + diagnostics.push(controlDiagnostic("GRL_SWITCH_CASE_DUPLICATE", `Duplicate switch case ${raw}`, token)); + } + seen.add(raw); + } + } + } + + for (const jump of jumps) { + if (!labels.has(jump.label)) { + diagnostics.push({ + severity: "error", + code: "GRL_LABEL_NOT_FOUND", + message: `Unknown label ${jump.label}`, + sourceMap: { + line: jump.line, + column: jump.column + } + }); + } + } + if (jumps.some((jump) => labels.has(jump.label))) { + diagnostics.push({ + severity: "error", + code: "GRL_JUMP_INTO_BLOCK", + message: "jump cannot enter a nested or sibling block" + }); + } + } + return diagnostics; +} + +function collectSameLineTokens( + tokens: GrlProcedureDeclaration["bodyTokens"], + startIndex: number +): GrlProcedureDeclaration["bodyTokens"] { + const start = tokens[startIndex]; + if (!start) { + return []; + } + const line = start.range.start.line; + const result = []; + for (let index = startIndex; index < tokens.length; index += 1) { + const token = tokens[index]!; + if (token.range.start.line !== line) { + break; + } + result.push(token); + } + return result; +} + +function controlDiagnostic(code: string, message: string, token: GrlProcedureDeclaration["bodyTokens"][number]): MotionDiagnostic { + return { + severity: "error", + code, + message, + sourceMap: { + line: token.range.start.line, + column: token.range.start.column + } + }; +} + +function runController(ir: ReturnType, programId: string): { + commands: Abb120SpecCommandTrace[]; + snapshot: VirtualControllerSnapshot; +} { + const controller = new VirtualController(); + const commands: Abb120SpecCommandTrace[] = []; + const planner = { planPath: (_handle: number | undefined, request: PathPlanRequest) => planPathFixture(request) }; + const record = (command: Abb120SpecCommandTrace["command"], before: string | undefined, after: string | undefined, result: Abb120SpecCommandTrace["result"] = "ok", diagnostics: MotionDiagnostic[] = []) => { + commands.push({ command, ...(before ? { before } : {}), ...(after ? { after } : {}), result, diagnostics }); + }; + + let before = controller.stateMachine.state; + controller.load(ir, { + startJoints: [...ABB_IRB120_ZERO_JOINTS], + sampleTime: 0.02, + robotHandle: 1, + planner + }); + seedIo(controller, programId); + record("loadProgram", before, controller.stateMachine.state); + + before = controller.stateMachine.state; + const started = controller.run(1); + record("start", before, controller.stateMachine.state, started.status, diagnosticList(started.diagnostic)); + + if (controller.stateMachine.state === "running") { + controller.pause(); + } + before = controller.stateMachine.state; + const step = controller.step(); + record("stepInto", before, controller.stateMachine.state, step.status, diagnosticList(step.diagnostic)); + + before = controller.stateMachine.state; + const holdTransition = controller.stateMachine.dispatch("hold"); + record("hold", before, controller.stateMachine.state, holdTransition.ok ? "ok" : "blocked", diagnosticList(holdTransition.diagnostic)); + + before = controller.stateMachine.state; + const resumed = controller.run(3); + record("resume", before, controller.stateMachine.state, resumed.status, diagnosticList(resumed.diagnostic)); + + controller.advance(0.1); + record("stepMotion", controller.stateMachine.state, controller.stateMachine.state); + + if (controller.stateMachine.state === "running" && controller.runtime && !controller.runtime.completed) { + controller.pause(); + } + const runToEnd = controller.runtime && !controller.runtime.completed + ? controller.run(200) + : { status: "completed" as const }; + if (runToEnd.diagnostic) { + record("resume", controller.stateMachine.state, controller.stateMachine.state, runToEnd.status, [runToEnd.diagnostic]); + } + + if (controller.stateMachine.state === "stopped") { + controller.step(); + } + before = controller.stateMachine.state; + controller.stop(); + record("stop", before, controller.stateMachine.state); + + before = controller.stateMachine.state; + const reset = controller.stateMachine.dispatch("reset"); + record("resetFault", before, controller.stateMachine.state, reset.ok ? "ok" : "blocked", diagnosticList(reset.diagnostic)); + + return { + commands, + snapshot: controller.snapshot() + }; +} + +function seedIo(controller: VirtualController, programId: string): void { + const writes: Array<[string, boolean | number | string]> = [ + ["io.di[1]", true], + ["io.di[2]", false], + ["io.di[3]", true], + ["io.di[4]", false], + ["io.di[5]", false], + ["io.di[6]", true], + ["io.di[7]", false], + ["io.di[10]", true], + ["io.ai[2]", 0.75] + ]; + for (const [raw, value] of writes) { + const ref = parseIoReferenceText(raw); + if (ref) { + controller.io.write(ref, value, "script", "script"); + } + } + const scriptSteps: IoScriptStep[] = [ + { delay: 0.02, target: parseIoReferenceText("io.di[5]")!, value: true }, + { delay: 0.04, target: parseIoReferenceText("io.di[6]")!, value: false }, + { delay: 0.06, target: parseIoReferenceText("io.di[7]")!, value: true } + ]; + if (!programId.includes("RuntimeTimeout")) { + controller.io.addScript(`${programId}-edge-script`, scriptSteps); + } +} + +function planPathFixture(request: PathPlanRequest): PathPlanResult { + const segments = request.segments.map((segment, segmentIndex) => { + const start = segmentIndex === 0 + ? request.startJoints + : targetJoints(request.segments[segmentIndex - 1]?.target, request.startJoints); + const end = targetJoints(segment.target, start); + const limitDiagnostics = end.flatMap((value, index): MotionDiagnostic[] => { + if (Math.abs(value) <= Math.PI) { + return []; + } + return [{ + severity: "error", + code: "KDL_JOINT_LIMIT", + message: `joint_${index + 1} exceeds fixture limit`, + segmentId: segment.id, + ...(segment.targetId ? { targetId: segment.targetId } : {}), + ...(segment.sourceMap ? { sourceMap: segment.sourceMap } : {}) + }]; + }); + const unreachable = segment.target && "pose" in segment.target && segment.target.pose.position.some((value) => Math.abs(value) > 1.5); + const diagnostics: MotionDiagnostic[] = [ + ...limitDiagnostics, + ...(unreachable + ? [{ + severity: "error" as const, + code: "KDL_TARGET_UNREACHABLE", + message: `Target ${segment.targetId ?? segment.id} is outside ABB120 fixture workspace`, + segmentId: segment.id, + ...(segment.targetId ? { targetId: segment.targetId } : {}), + ...(segment.sourceMap ? { sourceMap: segment.sourceMap } : {}) + }] + : []) + ]; + return trajectory(segment.motion, start, end, segment.id, segment.targetId, diagnostics, segment.sourceMap); + }); + const diagnostics = segments.flatMap((segment) => segment.diagnostics); + return { + ok: diagnostics.every((diagnostic) => diagnostic.severity !== "error"), + duration: segments.reduce((sum, segment) => sum + segment.duration, 0), + segments, + points: segments.flatMap((segment) => segment.points), + diagnostics + }; +} + +function trajectory( + motion: "MOVEJ" | "MOVEL" | "MOVEC", + start: number[], + end: number[], + segmentId: string, + targetId: string | undefined, + diagnostics: MotionDiagnostic[], + sourceMap: MotionDiagnostic["sourceMap"] +): TrajectoryResult { + const duration = 0.24; + const points: TrajectoryPoint[] = [0, 1, 2, 3].map((index) => { + const ratio = index / 3; + const joints = start.map((value, jointIndex) => value + ((end[jointIndex] ?? value) - value) * ratio); + return { + index, + time: Number((ratio * duration).toFixed(3)), + dt: index === 0 ? 0 : 0.08, + s: ratio, + sd: 0, + sdd: 0, + joints, + jointVelocity: joints.map(() => 0), + jointAcceleration: joints.map(() => 0), + flange: { + position: [0.374 + ratio * 0.01, 0, 0.63], + quaternion: [0, Math.SQRT1_2, 0, Math.SQRT1_2] + }, + tcp: { + position: [0.374 + ratio * 0.01, 0, 0.63], + quaternion: [0, Math.SQRT1_2, 0, Math.SQRT1_2] + }, + motion, + segmentId, + ...(targetId ? { targetId } : {}), + ...(sourceMap ? { sourceMap } : {}), + diagnostics: index === 3 ? diagnostics : [] + }; + }); + return { + ok: diagnostics.every((diagnostic) => diagnostic.severity !== "error"), + motion, + duration, + sampleTime: 0.02, + points, + events: [], + diagnostics, + meta: { + segmentId, + ...(targetId ? { targetId } : {}) + } + }; +} + +function targetJoints(target: PathPlanRequest["segments"][number]["target"] | undefined, fallback: number[]): number[] { + if (!target) { + return [...fallback]; + } + if ("joints" in target) { + return [...target.joints]; + } + const x = target.pose.position[0] ?? 0; + const y = target.pose.position[1] ?? 0; + const z = target.pose.position[2] ?? 0; + return [x, y, z - 0.5, 0, 0, 0].map((value) => Number(value.toFixed(6))); +} + +function summarizeTrajectory(results: PathPlanResult[] | undefined): NonNullable { + const planned = results ?? []; + let timeOffset = 0; + const points = planned.flatMap((result) => { + const offset = timeOffset; + timeOffset += result.duration; + return result.points.map((point) => ({ + ...point, + time: Number((offset + point.time).toFixed(6)) + })); + }); + const first = points[0]?.joints ?? [...ABB_IRB120_ZERO_JOINTS]; + const last = points.at(-1)?.joints ?? first; + return { + sampleCount: points.length, + duration: planned.reduce((sum, result) => sum + result.duration, 0), + startJoints: first, + endJoints: last, + frames: points.map((point, index) => ({ + index, + time: point.time, + motion: point.motion, + ...(point.segmentId ? { segmentId: point.segmentId } : {}), + ...(point.targetId ? { targetId: point.targetId } : {}), + joints: point.joints.map((value) => Number(value.toFixed(6))), + tcp: { + position: point.tcp.position.map((value) => Number(value.toFixed(6))), + quaternion: point.tcp.quaternion.map((value) => Number(value.toFixed(6))) + }, + ...(point.sourceMap ? { sourceMap: point.sourceMap } : {}), + diagnostics: point.diagnostics + })), + diagnostics: planned.flatMap((result) => result.diagnostics) + }; +} + +function postSummary(ir: ReturnType): NonNullable { + const posted = postProcessAllBrands(ir); + return { + filenames: Object.values(posted.outputs).map((output) => output.filename), + report: posted.report.map((issue) => ({ + code: issue.code, + severity: issue.severity, + message: issue.message, + ...(issue.brand ? { brand: issue.brand } : {}) + })) + }; +} + +function roundtripSummary( + moduleName: string, + posted: NonNullable +): NonNullable { + const abbFilename = posted.filenames.find((filename) => filename.endsWith(".mod")) ?? `${moduleName}.mod`; + try { + const imported = importBrandProgram("abb", [{ name: abbFilename, text: `MODULE ${moduleName}\n PROC main()\n MoveJ home,v100,fine,tool0;\n ENDPROC\nENDMODULE` }], { + projectName: `${moduleName}Roundtrip` + }); + return { + status: imported.report.status, + diagnostics: imported.report.sections.flatMap((section) => section.diagnostics) + }; + } catch (error) { + return { + status: "warn", + diagnostics: diagnosticsFromError(error, moduleName) + }; + } +} + +function baseResult( + entry: Abb120SpecManifestProgram, + text: string, + diagnostics: MotionDiagnostic[], + artifacts: Record +): Omit { + return { + program_id: entry.program_id, + file: entry.file, + coverage_level: entry.coverage_level, + expected_status: entry.expected_status, + status: resultStatus(entry, diagnostics), + input_hash: stableHash(text), + spec_sections: entry.spec_sections, + diagnostics, + artifacts + }; +} + +function failedResult( + entry: Abb120SpecManifestProgram, + text: string, + diagnostics: MotionDiagnostic[], + artifacts: Record +): Abb120SpecProgramResult { + return { + ...baseResult(entry, text, diagnostics, artifacts), + status: "fail", + compile: { + parsed: false, + semanticChecks: [], + sourceMapEntries: 0, + kdlMotionRequests: 0, + kdlPathRequests: 0, + symbolCount: 0, + procedureCount: 0, + pathCount: 0, + operationCount: 0 + }, + artifacts + }; +} + +function artifactPaths(jobId: string, programId: string): Record { + const root = `${jobId}/programs/${programId}`; + return { + jobJson: `${jobId}/job.json`, + compileJson: `${root}/compile.json`, + controllerJson: `${root}/controller.json`, + motionQueueJson: `${root}/motion-queue.json`, + traceJson: `${root}/trace.json`, + ioJson: `${root}/io.json`, + trajectoryJson: `${root}/trajectory.json`, + postReportJson: `${root}/post-report.json`, + roundtripJson: `${root}/roundtrip.json`, + reportJson: `${jobId}/report.json`, + reportHtml: `${jobId}/report.html` + }; +} + +function diagnosticsFromError(error: unknown, programId: string): MotionDiagnostic[] { + const record = error as { code?: string; message?: string; diagnostics?: MotionDiagnostic[] }; + if (Array.isArray(record.diagnostics) && record.diagnostics.length > 0) { + return record.diagnostics; + } + return [{ + severity: "error", + code: record.code ?? "W2_SUITE_ERROR", + message: record.message ?? `Failed to process ${programId}` + }]; +} + +function diagnosticList(diagnostic: MotionDiagnostic | undefined): MotionDiagnostic[] { + return diagnostic ? [diagnostic] : []; +} + +function addExpectationDiagnostics(entry: Abb120SpecManifestProgram, diagnostics: MotionDiagnostic[]): void { + const actualCodes = new Set(diagnostics.map((diagnostic) => diagnostic.code)); + const actualStatus = actualStatusForExpectation(entry, diagnostics); + for (const code of entry.expected_diagnostics) { + if (!actualCodes.has(code)) { + diagnostics.push({ + severity: "error", + code: "W2_EXPECTED_DIAGNOSTIC_MISSING", + message: `${entry.program_id} expected diagnostic ${code}`, + data: { + program_id: entry.program_id, + expected_code: code + } + }); + } + } + + if (entry.expected_status !== actualStatus) { + diagnostics.push({ + severity: "error", + code: "W2_EXPECTED_STATUS_MISMATCH", + message: `${entry.program_id} expected status ${entry.expected_status}, got ${actualStatus}`, + data: { + program_id: entry.program_id, + expected_status: entry.expected_status, + actual_status: actualStatus + } + }); + } +} + +function resultStatus(entry: Abb120SpecManifestProgram, diagnostics: MotionDiagnostic[]): Abb120SpecProgramResult["status"] { + if (hasErrors(diagnostics)) { + return "diagnostic"; + } + if (entry.expected_status === "diagnostic") { + return "diagnostic"; + } + return "pass"; +} + +function actualStatusForExpectation( + entry: Abb120SpecManifestProgram, + diagnostics: MotionDiagnostic[] +): Abb120SpecExpectedStatus { + if (hasErrors(diagnostics)) { + return "diagnostic"; + } + if (entry.expected_status === "diagnostic" && diagnostics.length > 0) { + return "diagnostic"; + } + return "pass"; +} + +function hasErrors(diagnostics: MotionDiagnostic[]): boolean { + return diagnostics.some((diagnostic) => diagnostic.severity === "error"); +} + +function stableHash(value: string): string { + return createHash("sha256").update(value).digest("hex"); +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/job.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/job.json new file mode 100644 index 0000000..a69d073 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/job.json @@ -0,0 +1,17362 @@ +{ + "job_id": "W2-JOB-20260628013857-19b5a2c7", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "robot": { + "robotId": "abb_irb120_3_58", + "urdf": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "loadOptions": { + "robotId": "abb_irb120_3_58", + "baseLink": "base_link", + "tipLink": "tool0" + }, + "source": { + "repository": "https://github.com/ros-industrial/abb", + "branch": "noetic-devel", + "entrypoint": "abb_irb120_support/urdf/irb120_3_58.xacro", + "macro": "abb_irb120_support/urdf/irb120_3_58_macro.xacro" + }, + "standardJoints": { + "home": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "approach": [ + 0, + -0.4, + 0.5, + 0, + 0.2, + 0 + ], + "pick": [ + 0.2, + -0.35, + 0.45, + 0.1, + -0.2, + 0.3 + ], + "place": [ + -0.35, + -0.25, + 0.35, + -0.25, + 0.15, + -0.4 + ] + } + }, + "git_revision": "working-tree", + "manifest_hash": "17e18defd5949a2a391afdb2e832413a39e8b71d8f3eaf814ad6b584063b3a41", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 11, + "staticPrograms": 4, + "postPrograms": 3 + }, + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "4eae9a20aaf3becd68f0577a1a98c52ff25ec9dfdea700919e9920bd94945f59", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "6e7480a7195f219554aa1463e3fe832830d9af027a0c3748a740ff48936d1e3d", + "spec_sections": [ + 6, + 8, + 9 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] + } + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "2e1afb8beaa60b2666056b1d6594a58da50a006c761e76ef131c9cfdd40c29b3", + "spec_sections": [ + 7, + 9, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "f851346e7e008aa85718895b6ba97010f3071027f6c3cd920dc5920c7cd6020c", + "spec_sections": [ + 8, + 9, + 10 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] + } + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "86770c6d548271a2ae9f332b6bd4b84e52b513d41647df37f62b7e49a4b11942", + "spec_sections": [ + 11, + 13, + 19 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "01b2232a6f30383d441f7cc73020fc44d0e752e807ff07f92af0ed9132afa1c6", + "spec_sections": [ + 12, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "b473d3fcbc92ba0e6d34790d12ff1367bfc89452744ae540ffd9b301fc7f2636", + "spec_sections": [ + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "516fe162d1032f7a3d65c2b632ea10bafb95b10b38ccb15f77db79f86f0aaa7c", + "spec_sections": [ + 14 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "701334663d6a215852dbe4c78b3025ebcda5e318513a1e73ab0e6518c49788d5", + "spec_sections": [ + 15 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "494455105f84d035ce785747ee5dde77d85db6fb2bd907d1774d1de14e61a6a0", + "spec_sections": [ + 16, + 17 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "c08db186d16a8bc3f0ecb4731abb6601d8c69348fd08ca6b21b8848f32df2347", + "spec_sections": [ + 7, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "98750f73027e3272a3f1e86f90ea6066d67387e7ffef190441893fff38012ed5", + "spec_sections": [ + 6, + 15, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "19f8c9f8a1ba6f6cfa8dde62207f8ee1797267e9addf7bbdbfbe941d8734b543", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "3ba920eda8d0932b260b9875ce395803d55ebb6a48ecb3c8857b2a4ef1478fea", + "spec_sections": [ + 14, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "expected_status": "diagnostic", + "status": "pass", + "input_hash": "2d5b41bef4b80c8a22f48697abe3b1a335779f439741f52376388091d8ea4fb6", + "spec_sections": [ + 13, + 16 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] + } + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "0b0b7f523d6afa37eb7b33db69fc8dc8eef910799030e24a13b87344bb0a7f80", + "spec_sections": [ + 18, + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "25574be5f4073c18281213d73b72e386f93b1ec57fe21490a9097f8050ce68eb", + "spec_sections": [ + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "ffef36ecf9e77bceff45b3438905861f7007365b608525e14f18561e58d2e6cf", + "spec_sections": [ + 19, + 20, + 21 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628013857-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/compile.json", + "controllerJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/controller.json", + "motionQueueJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/motion-queue.json", + "traceJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/trace.json", + "ioJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/io.json", + "trajectoryJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/trajectory.json", + "postReportJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/post-report.json", + "roundtripJson": "W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/roundtrip.json", + "reportJson": "W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628013857-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "post": { + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + } + ], + "artifacts": { + "root": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7", + "manifestJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/manifest.json", + "jobJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/job.json", + "reportJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/report.json", + "reportHtml": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/report.html", + "desktopScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/screenshots/virtual-controller-desktop.png", + "mobileScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/screenshots/virtual-controller-mobile.png", + "uiEvidenceJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/screenshots/evidence.json" + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/manifest.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/manifest.json new file mode 100644 index 0000000..a7cfae3 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/manifest.json @@ -0,0 +1,440 @@ +{ + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "spec_source": "work/doc/通用机器人编程语法规范.md", + "program_root": "kdl-wasm/web/tests/fixtures/abb120/spec-programs", + "runtime_commands": [ + "loadProgram", + "start", + "stepInto", + "hold", + "resume", + "stepMotion", + "stop", + "resetFault" + ], + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 6, + 8, + 9 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 7, + 9, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 8, + 9, + 10 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 11, + 13, + 19 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 12, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 14 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 15 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 16, + 17 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_P1_UNIMPLEMENTED" + ] + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 7, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_EXPR_UNKNOWN_SYMBOL", + "GRL_EXPR_UNKNOWN_FUNCTION", + "GRL_EXPR_ARITY", + "GRL_EXPR_DOMAIN", + "GRL_EXPR_DIV_ZERO", + "GRL_EXPR_UNIT_MISMATCH" + ] + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 6, + 15, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_SYMBOL_DUPLICATE", + "GRL_ARGUMENT_NOT_LVALUE", + "GRL_CALL_TARGET_NOT_FOUND", + "GRL_FUNC_SIDE_EFFECT", + "GRL_TARGET_NOT_FOUND" + ] + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "KDL_JOINT_LIMIT", + "KDL_TARGET_UNREACHABLE", + "GRL_PATH_EMPTY" + ] + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 14, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_BREAK_OUTSIDE_FLOW", + "GRL_CONTINUE_OUTSIDE_LOOP", + "GRL_JUMP_INTO_BLOCK", + "GRL_SWITCH_CASE_DUPLICATE", + "GRL_SWITCH_CASE_NOT_CONSTANT", + "GRL_LABEL_NOT_FOUND" + ] + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13, + 16 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "VC_WAIT_TIMEOUT" + ] + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "spec_sections": [ + 18, + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_POST_HINT_IGNORED" + ] + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "spec_sections": [ + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "spec_sections": [ + 19, + 20, + 21 + ], + "expected_status": "pass", + "expected_diagnostics": [] + } + ], + "coverage_matrix": [ + { + "spec_section": 4, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 5, + "coverage_level": "Runtime", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 6, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 7, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_E10_ExpressionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 8, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 9, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 10, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_30_MotionAllTypes", + "W2_E30_MotionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 11, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_40_PathEvents", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 12, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_50_OperationProcess", + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 13, + "coverage_level": "Runtime", + "program_ids": [ + "W2_60_IOWaitPulse", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 14, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_70_ControlFlow", + "W2_E40_ControlFlowDiagnostics" + ] + }, + { + "spec_section": 15, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_80_ProcFuncCall", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 16, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_90_ExceptionAlarm", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 17, + "coverage_level": "Static", + "program_ids": [ + "W2_90_ExceptionAlarm" + ] + }, + { + "spec_section": 18, + "coverage_level": "Post", + "program_ids": [ + "W2_P10_BrandHints" + ] + }, + { + "spec_section": 19, + "coverage_level": "Post", + "program_ids": [ + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 20, + "coverage_level": "Post", + "program_ids": [ + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 21, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule", + "W2_E10_ExpressionDiagnostics" + ] + }, + { + "spec_section": 22, + "coverage_level": "Static", + "program_ids": [ + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 23, + "coverage_level": "Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 24, + "coverage_level": "Runtime", + "program_ids": [ + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 25, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_P20_CrossBrandMotion" + ] + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/compile.json new file mode 100644 index 0000000..b21d4dd --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/controller.json new file mode 100644 index 0000000..eb27052 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/controller.json @@ -0,0 +1,455 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/io.json new file mode 100644 index 0000000..a9a6139 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/motion-queue.json new file mode 100644 index 0000000..4c4fa93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/post-report.json new file mode 100644 index 0000000..2b435af --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/trace.json new file mode 100644 index 0000000..b260ea8 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_00_MinimalModule/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/compile.json new file mode 100644 index 0000000..a66b72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/controller.json new file mode 100644 index 0000000..4677666 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/controller.json @@ -0,0 +1,872 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/io.json new file mode 100644 index 0000000..4c885c5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/motion-queue.json new file mode 100644 index 0000000..ffd4169 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/motion-queue.json @@ -0,0 +1,416 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/post-report.json new file mode 100644 index 0000000..62c1345 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/trace.json new file mode 100644 index 0000000..eddbe65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/trajectory.json new file mode 100644 index 0000000..cfea046 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_10_DataTargetToolFrame/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/compile.json new file mode 100644 index 0000000..2f9bd02 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/controller.json new file mode 100644 index 0000000..237450e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/controller.json @@ -0,0 +1,631 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/io.json new file mode 100644 index 0000000..f239c92 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/motion-queue.json new file mode 100644 index 0000000..cb5539e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/motion-queue.json @@ -0,0 +1,172 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/post-report.json new file mode 100644 index 0000000..b9a1299 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/trace.json new file mode 100644 index 0000000..d834175 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/trace.json @@ -0,0 +1,156 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/trajectory.json new file mode 100644 index 0000000..d1691a1 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_20_ExpressionMath/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/compile.json new file mode 100644 index 0000000..0a93c5d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/controller.json new file mode 100644 index 0000000..3123338 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/controller.json @@ -0,0 +1,936 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/io.json new file mode 100644 index 0000000..498441f --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/motion-queue.json new file mode 100644 index 0000000..b627627 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/motion-queue.json @@ -0,0 +1,480 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/post-report.json new file mode 100644 index 0000000..3634288 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/trace.json new file mode 100644 index 0000000..5fac72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/trajectory.json new file mode 100644 index 0000000..431e931 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_30_MotionAllTypes/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/compile.json new file mode 100644 index 0000000..5e98362 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/controller.json new file mode 100644 index 0000000..f80f32e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/controller.json @@ -0,0 +1,1106 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/io.json new file mode 100644 index 0000000..2d8957a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/motion-queue.json new file mode 100644 index 0000000..7fbb840 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/motion-queue.json @@ -0,0 +1,731 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/post-report.json new file mode 100644 index 0000000..1799726 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/trace.json new file mode 100644 index 0000000..74a552c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/trajectory.json new file mode 100644 index 0000000..8c6de8c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_40_PathEvents/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/compile.json new file mode 100644 index 0000000..4ad1d93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/controller.json new file mode 100644 index 0000000..6520e77 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/controller.json @@ -0,0 +1,500 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/io.json new file mode 100644 index 0000000..67ae792 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/motion-queue.json new file mode 100644 index 0000000..6b8ce58 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/motion-queue.json @@ -0,0 +1,123 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/post-report.json new file mode 100644 index 0000000..b22568b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/trace.json new file mode 100644 index 0000000..e16ed9a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_50_OperationProcess/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/compile.json new file mode 100644 index 0000000..a051026 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/controller.json new file mode 100644 index 0000000..63159c3 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/controller.json @@ -0,0 +1,1139 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/io.json new file mode 100644 index 0000000..20e3541 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/io.json @@ -0,0 +1,253 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/motion-queue.json new file mode 100644 index 0000000..f9168f2 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/motion-queue.json @@ -0,0 +1,279 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/post-report.json new file mode 100644 index 0000000..ae4ab05 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/trace.json new file mode 100644 index 0000000..41e0322 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/trace.json @@ -0,0 +1,493 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_60_IOWaitPulse/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/compile.json new file mode 100644 index 0000000..28b7c9c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/controller.json new file mode 100644 index 0000000..5c3d7e6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/controller.json @@ -0,0 +1,610 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/io.json new file mode 100644 index 0000000..67c50b6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/post-report.json new file mode 100644 index 0000000..4e58295 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/post-report.json @@ -0,0 +1,153 @@ +{ + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/trace.json new file mode 100644 index 0000000..f70bed5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/trace.json @@ -0,0 +1,253 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_70_ControlFlow/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/compile.json new file mode 100644 index 0000000..e582d30 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/controller.json new file mode 100644 index 0000000..3db47f6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/controller.json @@ -0,0 +1,523 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/io.json new file mode 100644 index 0000000..222cd29 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/post-report.json new file mode 100644 index 0000000..44ff58d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/post-report.json @@ -0,0 +1,117 @@ +{ + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/trace.json new file mode 100644 index 0000000..fd70e4b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/trace.json @@ -0,0 +1,202 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_80_ProcFuncCall/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/compile.json new file mode 100644 index 0000000..c8515aa --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/controller.json new file mode 100644 index 0000000..64d6d9b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/controller.json @@ -0,0 +1,606 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/io.json new file mode 100644 index 0000000..f36d75c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/motion-queue.json new file mode 100644 index 0000000..f6cb95e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/post-report.json new file mode 100644 index 0000000..6c7c328 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/post-report.json @@ -0,0 +1,81 @@ +{ + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/trace.json new file mode 100644 index 0000000..a2c2108 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/trace.json @@ -0,0 +1,201 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_90_ExceptionAlarm/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E30_MotionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/compile.json new file mode 100644 index 0000000..6d939b1 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/controller.json new file mode 100644 index 0000000..ac88b82 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/controller.json @@ -0,0 +1,431 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/io.json new file mode 100644 index 0000000..2fb8400 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/io.json @@ -0,0 +1,139 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/post-report.json new file mode 100644 index 0000000..d9d6613 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/trace.json new file mode 100644 index 0000000..fedfe64 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/trace.json @@ -0,0 +1,165 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_E50_RuntimeTimeout/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/compile.json new file mode 100644 index 0000000..4b5e199 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/post-report.json new file mode 100644 index 0000000..d8d1d95 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/post-report.json @@ -0,0 +1,45 @@ +{ + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/roundtrip.json new file mode 100644 index 0000000..8d3ce25 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P10_BrandHints/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/compile.json new file mode 100644 index 0000000..64b7f0c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/post-report.json new file mode 100644 index 0000000..e129436 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/post-report.json @@ -0,0 +1,21 @@ +{ + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/roundtrip.json new file mode 100644 index 0000000..6a91bfc --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P20_CrossBrandMotion/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/compile.json new file mode 100644 index 0000000..2863696 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/post-report.json new file mode 100644 index 0000000..3290428 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/roundtrip.json new file mode 100644 index 0000000..a9f636c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/programs/W2_P30_Roundtrip/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/report.html b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/report.html new file mode 100644 index 0000000..3c5a1a7 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/report.html @@ -0,0 +1,39 @@ + + + + + W2-JOB-20260628013857-19b5a2c7 + + + +

W2-JOB-20260628013857-19b5a2c7

+

Suite working2-abb120-spec / Robot abb_irb120_3_58

+

Covered sections: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25

+ + + + + + + + + + + + + + + + + + + + +
ProgramLayerStatusDiagnostics
W2_00_MinimalModuleRuntimepass0
W2_10_DataTargetToolFrameRuntimepass8
W2_20_ExpressionMathRuntimepass0
W2_30_MotionAllTypesRuntimepass8
W2_40_PathEventsRuntimepass0
W2_50_OperationProcessRuntimepass0
W2_60_IOWaitPulseRuntimepass0
W2_70_ControlFlowRuntimepass45
W2_80_ProcFuncCallRuntimepass6
W2_90_ExceptionAlarmRuntimepass13
W2_E10_ExpressionDiagnosticsStaticdiagnostic1
W2_E20_SemanticDiagnosticsStaticdiagnostic2
W2_E30_MotionDiagnosticsStaticdiagnostic1
W2_E40_ControlFlowDiagnosticsStaticdiagnostic1
W2_E50_RuntimeTimeoutRuntimepass1
W2_P10_BrandHintsPostpass10
W2_P20_CrossBrandMotionPostpass6
W2_P30_RoundtripPostpass7
+ + diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/report.json new file mode 100644 index 0000000..7fb551b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628013857-19b5a2c7/report.json @@ -0,0 +1,1109 @@ +{ + "job_id": "W2-JOB-20260628013857-19b5a2c7", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 11, + "staticPrograms": 4, + "postPrograms": 3 + }, + "summary": { + "programs": 18, + "pass": 14, + "diagnostic": 4, + "fail": 0 + }, + "diagnostics": [ + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/job.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/job.json new file mode 100644 index 0000000..8073ae5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/job.json @@ -0,0 +1,17362 @@ +{ + "job_id": "W2-JOB-20260628021400-19b5a2c7", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "robot": { + "robotId": "abb_irb120_3_58", + "urdf": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "loadOptions": { + "robotId": "abb_irb120_3_58", + "baseLink": "base_link", + "tipLink": "tool0" + }, + "source": { + "repository": "https://github.com/ros-industrial/abb", + "branch": "noetic-devel", + "entrypoint": "abb_irb120_support/urdf/irb120_3_58.xacro", + "macro": "abb_irb120_support/urdf/irb120_3_58_macro.xacro" + }, + "standardJoints": { + "home": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "approach": [ + 0, + -0.4, + 0.5, + 0, + 0.2, + 0 + ], + "pick": [ + 0.2, + -0.35, + 0.45, + 0.1, + -0.2, + 0.3 + ], + "place": [ + -0.35, + -0.25, + 0.35, + -0.25, + 0.15, + -0.4 + ] + } + }, + "git_revision": "working-tree", + "manifest_hash": "17e18defd5949a2a391afdb2e832413a39e8b71d8f3eaf814ad6b584063b3a41", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 11, + "staticPrograms": 4, + "postPrograms": 3 + }, + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "4eae9a20aaf3becd68f0577a1a98c52ff25ec9dfdea700919e9920bd94945f59", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "6e7480a7195f219554aa1463e3fe832830d9af027a0c3748a740ff48936d1e3d", + "spec_sections": [ + 6, + 8, + 9 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] + } + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "2e1afb8beaa60b2666056b1d6594a58da50a006c761e76ef131c9cfdd40c29b3", + "spec_sections": [ + 7, + 9, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "f851346e7e008aa85718895b6ba97010f3071027f6c3cd920dc5920c7cd6020c", + "spec_sections": [ + 8, + 9, + 10 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] + } + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "86770c6d548271a2ae9f332b6bd4b84e52b513d41647df37f62b7e49a4b11942", + "spec_sections": [ + 11, + 13, + 19 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "01b2232a6f30383d441f7cc73020fc44d0e752e807ff07f92af0ed9132afa1c6", + "spec_sections": [ + 12, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "b473d3fcbc92ba0e6d34790d12ff1367bfc89452744ae540ffd9b301fc7f2636", + "spec_sections": [ + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "516fe162d1032f7a3d65c2b632ea10bafb95b10b38ccb15f77db79f86f0aaa7c", + "spec_sections": [ + 14 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "701334663d6a215852dbe4c78b3025ebcda5e318513a1e73ab0e6518c49788d5", + "spec_sections": [ + 15 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "494455105f84d035ce785747ee5dde77d85db6fb2bd907d1774d1de14e61a6a0", + "spec_sections": [ + 16, + 17 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "c08db186d16a8bc3f0ecb4731abb6601d8c69348fd08ca6b21b8848f32df2347", + "spec_sections": [ + 7, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "98750f73027e3272a3f1e86f90ea6066d67387e7ffef190441893fff38012ed5", + "spec_sections": [ + 6, + 15, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "19f8c9f8a1ba6f6cfa8dde62207f8ee1797267e9addf7bbdbfbe941d8734b543", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "3ba920eda8d0932b260b9875ce395803d55ebb6a48ecb3c8857b2a4ef1478fea", + "spec_sections": [ + 14, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "expected_status": "diagnostic", + "status": "pass", + "input_hash": "2d5b41bef4b80c8a22f48697abe3b1a335779f439741f52376388091d8ea4fb6", + "spec_sections": [ + 13, + 16 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] + } + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "0b0b7f523d6afa37eb7b33db69fc8dc8eef910799030e24a13b87344bb0a7f80", + "spec_sections": [ + 18, + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "25574be5f4073c18281213d73b72e386f93b1ec57fe21490a9097f8050ce68eb", + "spec_sections": [ + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "ffef36ecf9e77bceff45b3438905861f7007365b608525e14f18561e58d2e6cf", + "spec_sections": [ + 19, + 20, + 21 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628021400-19b5a2c7/job.json", + "compileJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/compile.json", + "controllerJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/controller.json", + "motionQueueJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/motion-queue.json", + "traceJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/trace.json", + "ioJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/io.json", + "trajectoryJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/trajectory.json", + "postReportJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/post-report.json", + "roundtripJson": "W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/roundtrip.json", + "reportJson": "W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "W2-JOB-20260628021400-19b5a2c7/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "post": { + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + } + ], + "artifacts": { + "root": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7", + "manifestJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/manifest.json", + "jobJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/job.json", + "reportJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/report.json", + "reportHtml": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/report.html", + "desktopScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/screenshots/virtual-controller-desktop.png", + "mobileScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/screenshots/virtual-controller-mobile.png", + "uiEvidenceJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/screenshots/evidence.json" + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/manifest.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/manifest.json new file mode 100644 index 0000000..a7cfae3 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/manifest.json @@ -0,0 +1,440 @@ +{ + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "spec_source": "work/doc/通用机器人编程语法规范.md", + "program_root": "kdl-wasm/web/tests/fixtures/abb120/spec-programs", + "runtime_commands": [ + "loadProgram", + "start", + "stepInto", + "hold", + "resume", + "stepMotion", + "stop", + "resetFault" + ], + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 6, + 8, + 9 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 7, + 9, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 8, + 9, + 10 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 11, + 13, + 19 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 12, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 14 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 15 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 16, + 17 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_P1_UNIMPLEMENTED" + ] + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 7, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_EXPR_UNKNOWN_SYMBOL", + "GRL_EXPR_UNKNOWN_FUNCTION", + "GRL_EXPR_ARITY", + "GRL_EXPR_DOMAIN", + "GRL_EXPR_DIV_ZERO", + "GRL_EXPR_UNIT_MISMATCH" + ] + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 6, + 15, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_SYMBOL_DUPLICATE", + "GRL_ARGUMENT_NOT_LVALUE", + "GRL_CALL_TARGET_NOT_FOUND", + "GRL_FUNC_SIDE_EFFECT", + "GRL_TARGET_NOT_FOUND" + ] + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "KDL_JOINT_LIMIT", + "KDL_TARGET_UNREACHABLE", + "GRL_PATH_EMPTY" + ] + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 14, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_BREAK_OUTSIDE_FLOW", + "GRL_CONTINUE_OUTSIDE_LOOP", + "GRL_JUMP_INTO_BLOCK", + "GRL_SWITCH_CASE_DUPLICATE", + "GRL_SWITCH_CASE_NOT_CONSTANT", + "GRL_LABEL_NOT_FOUND" + ] + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13, + 16 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "VC_WAIT_TIMEOUT" + ] + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "spec_sections": [ + 18, + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_POST_HINT_IGNORED" + ] + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "spec_sections": [ + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "spec_sections": [ + 19, + 20, + 21 + ], + "expected_status": "pass", + "expected_diagnostics": [] + } + ], + "coverage_matrix": [ + { + "spec_section": 4, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 5, + "coverage_level": "Runtime", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 6, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 7, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_E10_ExpressionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 8, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 9, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 10, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_30_MotionAllTypes", + "W2_E30_MotionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 11, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_40_PathEvents", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 12, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_50_OperationProcess", + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 13, + "coverage_level": "Runtime", + "program_ids": [ + "W2_60_IOWaitPulse", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 14, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_70_ControlFlow", + "W2_E40_ControlFlowDiagnostics" + ] + }, + { + "spec_section": 15, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_80_ProcFuncCall", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 16, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_90_ExceptionAlarm", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 17, + "coverage_level": "Static", + "program_ids": [ + "W2_90_ExceptionAlarm" + ] + }, + { + "spec_section": 18, + "coverage_level": "Post", + "program_ids": [ + "W2_P10_BrandHints" + ] + }, + { + "spec_section": 19, + "coverage_level": "Post", + "program_ids": [ + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 20, + "coverage_level": "Post", + "program_ids": [ + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 21, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule", + "W2_E10_ExpressionDiagnostics" + ] + }, + { + "spec_section": 22, + "coverage_level": "Static", + "program_ids": [ + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 23, + "coverage_level": "Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 24, + "coverage_level": "Runtime", + "program_ids": [ + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 25, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_P20_CrossBrandMotion" + ] + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/compile.json new file mode 100644 index 0000000..b21d4dd --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/controller.json new file mode 100644 index 0000000..eb27052 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/controller.json @@ -0,0 +1,455 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/io.json new file mode 100644 index 0000000..a9a6139 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/motion-queue.json new file mode 100644 index 0000000..4c4fa93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/post-report.json new file mode 100644 index 0000000..2b435af --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/trace.json new file mode 100644 index 0000000..b260ea8 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_00_MinimalModule/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/compile.json new file mode 100644 index 0000000..a66b72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/controller.json new file mode 100644 index 0000000..4677666 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/controller.json @@ -0,0 +1,872 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/io.json new file mode 100644 index 0000000..4c885c5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/motion-queue.json new file mode 100644 index 0000000..ffd4169 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/motion-queue.json @@ -0,0 +1,416 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/post-report.json new file mode 100644 index 0000000..62c1345 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/trace.json new file mode 100644 index 0000000..eddbe65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/trajectory.json new file mode 100644 index 0000000..cfea046 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_10_DataTargetToolFrame/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/compile.json new file mode 100644 index 0000000..2f9bd02 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/controller.json new file mode 100644 index 0000000..237450e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/controller.json @@ -0,0 +1,631 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/io.json new file mode 100644 index 0000000..f239c92 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/motion-queue.json new file mode 100644 index 0000000..cb5539e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/motion-queue.json @@ -0,0 +1,172 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/post-report.json new file mode 100644 index 0000000..b9a1299 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/trace.json new file mode 100644 index 0000000..d834175 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/trace.json @@ -0,0 +1,156 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/trajectory.json new file mode 100644 index 0000000..d1691a1 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_20_ExpressionMath/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/compile.json new file mode 100644 index 0000000..0a93c5d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/controller.json new file mode 100644 index 0000000..3123338 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/controller.json @@ -0,0 +1,936 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/io.json new file mode 100644 index 0000000..498441f --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/motion-queue.json new file mode 100644 index 0000000..b627627 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/motion-queue.json @@ -0,0 +1,480 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/post-report.json new file mode 100644 index 0000000..3634288 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/trace.json new file mode 100644 index 0000000..5fac72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/trajectory.json new file mode 100644 index 0000000..431e931 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_30_MotionAllTypes/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/compile.json new file mode 100644 index 0000000..5e98362 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/controller.json new file mode 100644 index 0000000..f80f32e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/controller.json @@ -0,0 +1,1106 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/io.json new file mode 100644 index 0000000..2d8957a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/motion-queue.json new file mode 100644 index 0000000..7fbb840 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/motion-queue.json @@ -0,0 +1,731 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/post-report.json new file mode 100644 index 0000000..1799726 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/trace.json new file mode 100644 index 0000000..74a552c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/trajectory.json new file mode 100644 index 0000000..8c6de8c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_40_PathEvents/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/compile.json new file mode 100644 index 0000000..4ad1d93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/controller.json new file mode 100644 index 0000000..6520e77 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/controller.json @@ -0,0 +1,500 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/io.json new file mode 100644 index 0000000..67ae792 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/motion-queue.json new file mode 100644 index 0000000..6b8ce58 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/motion-queue.json @@ -0,0 +1,123 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/post-report.json new file mode 100644 index 0000000..b22568b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/trace.json new file mode 100644 index 0000000..e16ed9a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_50_OperationProcess/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/compile.json new file mode 100644 index 0000000..a051026 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/controller.json new file mode 100644 index 0000000..63159c3 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/controller.json @@ -0,0 +1,1139 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/io.json new file mode 100644 index 0000000..20e3541 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/io.json @@ -0,0 +1,253 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/motion-queue.json new file mode 100644 index 0000000..f9168f2 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/motion-queue.json @@ -0,0 +1,279 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/post-report.json new file mode 100644 index 0000000..ae4ab05 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/trace.json new file mode 100644 index 0000000..41e0322 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/trace.json @@ -0,0 +1,493 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_60_IOWaitPulse/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/compile.json new file mode 100644 index 0000000..28b7c9c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/controller.json new file mode 100644 index 0000000..5c3d7e6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/controller.json @@ -0,0 +1,610 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/io.json new file mode 100644 index 0000000..67c50b6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/post-report.json new file mode 100644 index 0000000..4e58295 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/post-report.json @@ -0,0 +1,153 @@ +{ + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/trace.json new file mode 100644 index 0000000..f70bed5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/trace.json @@ -0,0 +1,253 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_70_ControlFlow/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/compile.json new file mode 100644 index 0000000..e582d30 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/controller.json new file mode 100644 index 0000000..3db47f6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/controller.json @@ -0,0 +1,523 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/io.json new file mode 100644 index 0000000..222cd29 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/post-report.json new file mode 100644 index 0000000..44ff58d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/post-report.json @@ -0,0 +1,117 @@ +{ + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/trace.json new file mode 100644 index 0000000..fd70e4b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/trace.json @@ -0,0 +1,202 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_80_ProcFuncCall/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/compile.json new file mode 100644 index 0000000..c8515aa --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/controller.json new file mode 100644 index 0000000..64d6d9b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/controller.json @@ -0,0 +1,606 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/io.json new file mode 100644 index 0000000..f36d75c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/motion-queue.json new file mode 100644 index 0000000..f6cb95e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/post-report.json new file mode 100644 index 0000000..6c7c328 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/post-report.json @@ -0,0 +1,81 @@ +{ + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/trace.json new file mode 100644 index 0000000..a2c2108 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/trace.json @@ -0,0 +1,201 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_90_ExceptionAlarm/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E10_ExpressionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E20_SemanticDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E30_MotionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E40_ControlFlowDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/compile.json new file mode 100644 index 0000000..6d939b1 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/controller.json new file mode 100644 index 0000000..ac88b82 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/controller.json @@ -0,0 +1,431 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/io.json new file mode 100644 index 0000000..2fb8400 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/io.json @@ -0,0 +1,139 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/post-report.json new file mode 100644 index 0000000..d9d6613 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/trace.json new file mode 100644 index 0000000..fedfe64 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/trace.json @@ -0,0 +1,165 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_E50_RuntimeTimeout/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/compile.json new file mode 100644 index 0000000..4b5e199 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/post-report.json new file mode 100644 index 0000000..d8d1d95 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/post-report.json @@ -0,0 +1,45 @@ +{ + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/roundtrip.json new file mode 100644 index 0000000..8d3ce25 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P10_BrandHints/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/compile.json new file mode 100644 index 0000000..64b7f0c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/post-report.json new file mode 100644 index 0000000..e129436 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/post-report.json @@ -0,0 +1,21 @@ +{ + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/roundtrip.json new file mode 100644 index 0000000..6a91bfc --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P20_CrossBrandMotion/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/compile.json new file mode 100644 index 0000000..2863696 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/post-report.json new file mode 100644 index 0000000..3290428 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/roundtrip.json new file mode 100644 index 0000000..a9f636c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/programs/W2_P30_Roundtrip/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/report.html b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/report.html new file mode 100644 index 0000000..7e1a92a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/report.html @@ -0,0 +1,39 @@ + + + + + W2-JOB-20260628021400-19b5a2c7 + + + +

W2-JOB-20260628021400-19b5a2c7

+

Suite working2-abb120-spec / Robot abb_irb120_3_58

+

Covered sections: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25

+ + + + + + + + + + + + + + + + + + + + +
ProgramLayerStatusDiagnostics
W2_00_MinimalModuleRuntimepass0
W2_10_DataTargetToolFrameRuntimepass8
W2_20_ExpressionMathRuntimepass0
W2_30_MotionAllTypesRuntimepass8
W2_40_PathEventsRuntimepass0
W2_50_OperationProcessRuntimepass0
W2_60_IOWaitPulseRuntimepass0
W2_70_ControlFlowRuntimepass45
W2_80_ProcFuncCallRuntimepass6
W2_90_ExceptionAlarmRuntimepass13
W2_E10_ExpressionDiagnosticsStaticdiagnostic1
W2_E20_SemanticDiagnosticsStaticdiagnostic2
W2_E30_MotionDiagnosticsStaticdiagnostic1
W2_E40_ControlFlowDiagnosticsStaticdiagnostic1
W2_E50_RuntimeTimeoutRuntimepass1
W2_P10_BrandHintsPostpass10
W2_P20_CrossBrandMotionPostpass6
W2_P30_RoundtripPostpass7
+ + diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/report.json new file mode 100644 index 0000000..39824e5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628021400-19b5a2c7/report.json @@ -0,0 +1,1109 @@ +{ + "job_id": "W2-JOB-20260628021400-19b5a2c7", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 11, + "staticPrograms": 4, + "postPrograms": 3 + }, + "summary": { + "programs": 18, + "pass": 14, + "diagnostic": 4, + "fail": 0 + }, + "diagnostics": [ + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/job.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/job.json new file mode 100644 index 0000000..db30728 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/job.json @@ -0,0 +1,21619 @@ +{ + "job_id": "W2-JOB-20260628022836-51484d62", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "robot": { + "robotId": "abb_irb120_3_58", + "urdf": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "loadOptions": { + "robotId": "abb_irb120_3_58", + "baseLink": "base_link", + "tipLink": "tool0" + }, + "source": { + "repository": "https://github.com/ros-industrial/abb", + "branch": "noetic-devel", + "entrypoint": "abb_irb120_support/urdf/irb120_3_58.xacro", + "macro": "abb_irb120_support/urdf/irb120_3_58_macro.xacro" + }, + "standardJoints": { + "home": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "approach": [ + 0, + -0.4, + 0.5, + 0, + 0.2, + 0 + ], + "pick": [ + 0.2, + -0.35, + 0.45, + 0.1, + -0.2, + 0.3 + ], + "place": [ + -0.35, + -0.25, + 0.35, + -0.25, + 0.15, + -0.4 + ] + } + }, + "git_revision": "working-tree", + "manifest_hash": "ead98b6d28dd4ef6718c82ed930805c021547a79c74dd2fe5413d85f8896d67a", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 12, + "staticPrograms": 4, + "postPrograms": 3 + }, + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "4eae9a20aaf3becd68f0577a1a98c52ff25ec9dfdea700919e9920bd94945f59", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "6e7480a7195f219554aa1463e3fe832830d9af027a0c3748a740ff48936d1e3d", + "spec_sections": [ + 6, + 8, + 9 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] + } + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "2e1afb8beaa60b2666056b1d6594a58da50a006c761e76ef131c9cfdd40c29b3", + "spec_sections": [ + 7, + 9, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "f851346e7e008aa85718895b6ba97010f3071027f6c3cd920dc5920c7cd6020c", + "spec_sections": [ + 8, + 9, + 10 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] + } + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "86770c6d548271a2ae9f332b6bd4b84e52b513d41647df37f62b7e49a4b11942", + "spec_sections": [ + 11, + 13, + 19 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "01b2232a6f30383d441f7cc73020fc44d0e752e807ff07f92af0ed9132afa1c6", + "spec_sections": [ + 12, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "b473d3fcbc92ba0e6d34790d12ff1367bfc89452744ae540ffd9b301fc7f2636", + "spec_sections": [ + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "516fe162d1032f7a3d65c2b632ea10bafb95b10b38ccb15f77db79f86f0aaa7c", + "spec_sections": [ + 14 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "701334663d6a215852dbe4c78b3025ebcda5e318513a1e73ab0e6518c49788d5", + "spec_sections": [ + 15 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "494455105f84d035ce785747ee5dde77d85db6fb2bd907d1774d1de14e61a6a0", + "spec_sections": [ + 16, + 17 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_99_FullSpecExample", + "file": "runtime/W2_99_FullSpecExample.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "cd08e3c9c9c522b75f37f404b4fb915b4af8477ccca5d2f5fc1bed61c9c66024", + "spec_sections": [ + 24 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 15 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2FullSpecExample", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 1, + "kdlPathRequests": 2, + "symbolCount": 13, + "procedureCount": 1, + "pathCount": 2, + "operationCount": 2 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "pick_path", + "place_path" + ], + "operationIds": [ + "pick_op", + "place_op" + ], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 32, + "duration": 1.92, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2FullSpecExample.mod", + "W2FullSpecExample.ls", + "W2FullSpecExample.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "c08db186d16a8bc3f0ecb4731abb6601d8c69348fd08ca6b21b8848f32df2347", + "spec_sections": [ + 7, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "98750f73027e3272a3f1e86f90ea6066d67387e7ffef190441893fff38012ed5", + "spec_sections": [ + 6, + 15, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + }, + { + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "severity": "error", + "code": "GRL_FUNC_SIDE_EFFECT", + "message": "Function bad_func cannot execute wait", + "sourceMap": { + "line": 11, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_CALL_TARGET_NOT_FOUND", + "message": "Unknown call target missing_proc", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_TARGET_NOT_FOUND", + "message": "Unknown target missing_target" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "19f8c9f8a1ba6f6cfa8dde62207f8ee1797267e9addf7bbdbfbe941d8734b543", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "severity": "error", + "code": "KDL_JOINT_LIMIT", + "message": "joint_1 exceeds fixture limit", + "segmentId": "main:MOVEJ", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "severity": "error", + "code": "KDL_TARGET_UNREACHABLE", + "message": "Target main:MOVEL is outside ABB120 fixture workspace", + "segmentId": "main:MOVEL", + "sourceMap": { + "line": 15, + "column": 5 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "3ba920eda8d0932b260b9875ce395803d55ebb6a48ecb3c8857b2a4ef1478fea", + "spec_sections": [ + 14, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_CONTINUE_OUTSIDE_LOOP", + "message": "continue is only valid inside loop", + "sourceMap": { + "line": 6, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_SWITCH_CASE_DUPLICATE", + "message": "Duplicate switch case 1", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "severity": "error", + "code": "GRL_SWITCH_CASE_NOT_CONSTANT", + "message": "switch case must be a constant expression", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "error", + "code": "GRL_LABEL_NOT_FOUND", + "message": "Unknown label missing", + "sourceMap": { + "line": 19, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_JUMP_INTO_BLOCK", + "message": "jump cannot enter a nested or sibling block" + }, + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "2d5b41bef4b80c8a22f48697abe3b1a335779f439741f52376388091d8ea4fb6", + "spec_sections": [ + 13, + 16 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] + } + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "0b0b7f523d6afa37eb7b33db69fc8dc8eef910799030e24a13b87344bb0a7f80", + "spec_sections": [ + 18, + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "25574be5f4073c18281213d73b72e386f93b1ec57fe21490a9097f8050ce68eb", + "spec_sections": [ + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "ffef36ecf9e77bceff45b3438905861f7007365b608525e14f18561e58d2e6cf", + "spec_sections": [ + 19, + 20, + 21 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628022836-51484d62/job.json", + "compileJson": "W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/compile.json", + "controllerJson": "W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/controller.json", + "motionQueueJson": "W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/motion-queue.json", + "traceJson": "W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/trace.json", + "ioJson": "W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/io.json", + "trajectoryJson": "W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/trajectory.json", + "postReportJson": "W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/post-report.json", + "roundtripJson": "W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/roundtrip.json", + "reportJson": "W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "W2-JOB-20260628022836-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "post": { + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + } + ], + "artifacts": { + "root": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62", + "manifestJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/manifest.json", + "jobJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/job.json", + "reportJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/report.json", + "reportHtml": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/report.html", + "desktopScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/screenshots/virtual-controller-desktop.png", + "mobileScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/screenshots/virtual-controller-mobile.png", + "uiEvidenceJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/screenshots/evidence.json" + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/manifest.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/manifest.json new file mode 100644 index 0000000..f6d8cfd --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/manifest.json @@ -0,0 +1,451 @@ +{ + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "spec_source": "work/doc/通用机器人编程语法规范.md", + "program_root": "kdl-wasm/web/tests/fixtures/abb120/spec-programs", + "runtime_commands": [ + "loadProgram", + "start", + "stepInto", + "hold", + "resume", + "stepMotion", + "stop", + "resetFault" + ], + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 6, + 8, + 9 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 7, + 9, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 8, + 9, + 10 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 11, + 13, + 19 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 12, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 14 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 15 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 16, + 17 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_P1_UNIMPLEMENTED" + ] + }, + { + "program_id": "W2_99_FullSpecExample", + "file": "runtime/W2_99_FullSpecExample.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 24 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 7, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_EXPR_UNKNOWN_SYMBOL", + "GRL_EXPR_UNKNOWN_FUNCTION", + "GRL_EXPR_ARITY", + "GRL_EXPR_DOMAIN", + "GRL_EXPR_DIV_ZERO", + "GRL_EXPR_UNIT_MISMATCH" + ] + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 6, + 15, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_SYMBOL_DUPLICATE", + "GRL_ARGUMENT_NOT_LVALUE", + "GRL_CALL_TARGET_NOT_FOUND", + "GRL_FUNC_SIDE_EFFECT", + "GRL_TARGET_NOT_FOUND" + ] + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "KDL_JOINT_LIMIT", + "KDL_TARGET_UNREACHABLE", + "GRL_PATH_EMPTY" + ] + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 14, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_BREAK_OUTSIDE_FLOW", + "GRL_CONTINUE_OUTSIDE_LOOP", + "GRL_JUMP_INTO_BLOCK", + "GRL_SWITCH_CASE_DUPLICATE", + "GRL_SWITCH_CASE_NOT_CONSTANT", + "GRL_LABEL_NOT_FOUND" + ] + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13, + 16 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "VC_WAIT_TIMEOUT" + ] + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "spec_sections": [ + 18, + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_POST_HINT_IGNORED" + ] + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "spec_sections": [ + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "spec_sections": [ + 19, + 20, + 21 + ], + "expected_status": "pass", + "expected_diagnostics": [] + } + ], + "coverage_matrix": [ + { + "spec_section": 4, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 5, + "coverage_level": "Runtime", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 6, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 7, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_E10_ExpressionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 8, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 9, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 10, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_30_MotionAllTypes", + "W2_E30_MotionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 11, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_40_PathEvents", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 12, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_50_OperationProcess", + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 13, + "coverage_level": "Runtime", + "program_ids": [ + "W2_60_IOWaitPulse", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 14, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_70_ControlFlow", + "W2_E40_ControlFlowDiagnostics" + ] + }, + { + "spec_section": 15, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_80_ProcFuncCall", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 16, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_90_ExceptionAlarm", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 17, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_90_ExceptionAlarm" + ] + }, + { + "spec_section": 18, + "coverage_level": "Post", + "program_ids": [ + "W2_P10_BrandHints" + ] + }, + { + "spec_section": 19, + "coverage_level": "Post", + "program_ids": [ + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 20, + "coverage_level": "Post", + "program_ids": [ + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 21, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule", + "W2_E10_ExpressionDiagnostics" + ] + }, + { + "spec_section": 22, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 23, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 24, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_99_FullSpecExample", + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 25, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_P20_CrossBrandMotion" + ] + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/compile.json new file mode 100644 index 0000000..b21d4dd --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/controller.json new file mode 100644 index 0000000..eb27052 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/controller.json @@ -0,0 +1,455 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/io.json new file mode 100644 index 0000000..a9a6139 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/motion-queue.json new file mode 100644 index 0000000..4c4fa93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/post-report.json new file mode 100644 index 0000000..2b435af --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/trace.json new file mode 100644 index 0000000..b260ea8 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_00_MinimalModule/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/compile.json new file mode 100644 index 0000000..a66b72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/controller.json new file mode 100644 index 0000000..4677666 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/controller.json @@ -0,0 +1,872 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/io.json new file mode 100644 index 0000000..4c885c5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json new file mode 100644 index 0000000..ffd4169 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json @@ -0,0 +1,416 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json new file mode 100644 index 0000000..62c1345 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/trace.json new file mode 100644 index 0000000..eddbe65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json new file mode 100644 index 0000000..cfea046 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/compile.json new file mode 100644 index 0000000..2f9bd02 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/controller.json new file mode 100644 index 0000000..237450e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/controller.json @@ -0,0 +1,631 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/io.json new file mode 100644 index 0000000..f239c92 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/motion-queue.json new file mode 100644 index 0000000..cb5539e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/motion-queue.json @@ -0,0 +1,172 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/post-report.json new file mode 100644 index 0000000..b9a1299 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/trace.json new file mode 100644 index 0000000..d834175 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/trace.json @@ -0,0 +1,156 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/trajectory.json new file mode 100644 index 0000000..d1691a1 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_20_ExpressionMath/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/compile.json new file mode 100644 index 0000000..0a93c5d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/controller.json new file mode 100644 index 0000000..3123338 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/controller.json @@ -0,0 +1,936 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/io.json new file mode 100644 index 0000000..498441f --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json new file mode 100644 index 0000000..b627627 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json @@ -0,0 +1,480 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/post-report.json new file mode 100644 index 0000000..3634288 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/trace.json new file mode 100644 index 0000000..5fac72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/trajectory.json new file mode 100644 index 0000000..431e931 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_30_MotionAllTypes/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/compile.json new file mode 100644 index 0000000..5e98362 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/controller.json new file mode 100644 index 0000000..f80f32e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/controller.json @@ -0,0 +1,1106 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/io.json new file mode 100644 index 0000000..2d8957a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/motion-queue.json new file mode 100644 index 0000000..7fbb840 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/motion-queue.json @@ -0,0 +1,731 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/post-report.json new file mode 100644 index 0000000..1799726 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/trace.json new file mode 100644 index 0000000..74a552c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/trajectory.json new file mode 100644 index 0000000..8c6de8c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_40_PathEvents/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/compile.json new file mode 100644 index 0000000..4ad1d93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/controller.json new file mode 100644 index 0000000..6520e77 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/controller.json @@ -0,0 +1,500 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/io.json new file mode 100644 index 0000000..67ae792 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/motion-queue.json new file mode 100644 index 0000000..6b8ce58 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/motion-queue.json @@ -0,0 +1,123 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/post-report.json new file mode 100644 index 0000000..b22568b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/trace.json new file mode 100644 index 0000000..e16ed9a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_50_OperationProcess/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/compile.json new file mode 100644 index 0000000..a051026 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/controller.json new file mode 100644 index 0000000..63159c3 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/controller.json @@ -0,0 +1,1139 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/io.json new file mode 100644 index 0000000..20e3541 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/io.json @@ -0,0 +1,253 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json new file mode 100644 index 0000000..f9168f2 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json @@ -0,0 +1,279 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/post-report.json new file mode 100644 index 0000000..ae4ab05 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/trace.json new file mode 100644 index 0000000..41e0322 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/trace.json @@ -0,0 +1,493 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_60_IOWaitPulse/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/compile.json new file mode 100644 index 0000000..28b7c9c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/controller.json new file mode 100644 index 0000000..5c3d7e6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/controller.json @@ -0,0 +1,610 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/io.json new file mode 100644 index 0000000..67c50b6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/post-report.json new file mode 100644 index 0000000..4e58295 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/post-report.json @@ -0,0 +1,153 @@ +{ + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/trace.json new file mode 100644 index 0000000..f70bed5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/trace.json @@ -0,0 +1,253 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_70_ControlFlow/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/compile.json new file mode 100644 index 0000000..e582d30 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/controller.json new file mode 100644 index 0000000..3db47f6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/controller.json @@ -0,0 +1,523 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/io.json new file mode 100644 index 0000000..222cd29 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/post-report.json new file mode 100644 index 0000000..44ff58d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/post-report.json @@ -0,0 +1,117 @@ +{ + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/trace.json new file mode 100644 index 0000000..fd70e4b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/trace.json @@ -0,0 +1,202 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_80_ProcFuncCall/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/compile.json new file mode 100644 index 0000000..c8515aa --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/controller.json new file mode 100644 index 0000000..64d6d9b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/controller.json @@ -0,0 +1,606 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/io.json new file mode 100644 index 0000000..f36d75c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json new file mode 100644 index 0000000..f6cb95e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/post-report.json new file mode 100644 index 0000000..6c7c328 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/post-report.json @@ -0,0 +1,81 @@ +{ + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/trace.json new file mode 100644 index 0000000..a2c2108 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/trace.json @@ -0,0 +1,201 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/compile.json new file mode 100644 index 0000000..ea23e7d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2FullSpecExample", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 1, + "kdlPathRequests": 2, + "symbolCount": 13, + "procedureCount": 1, + "pathCount": 2, + "operationCount": 2 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/controller.json new file mode 100644 index 0000000..d938f8e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/controller.json @@ -0,0 +1,1983 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "pick_path", + "place_path" + ], + "operationIds": [ + "pick_op", + "place_op" + ], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/io.json new file mode 100644 index 0000000..8b73019 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/motion-queue.json new file mode 100644 index 0000000..338f793 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/motion-queue.json @@ -0,0 +1,1521 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/post-report.json new file mode 100644 index 0000000..0db5c5f --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/post-report.json @@ -0,0 +1,45 @@ +{ + "filenames": [ + "W2FullSpecExample.mod", + "W2FullSpecExample.ls", + "W2FullSpecExample.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/trace.json new file mode 100644 index 0000000..1fca576 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/trajectory.json new file mode 100644 index 0000000..2d5b5e0 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_99_FullSpecExample/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 32, + "duration": 1.92, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/compile.json new file mode 100644 index 0000000..6d939b1 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/controller.json new file mode 100644 index 0000000..ac88b82 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/controller.json @@ -0,0 +1,431 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/io.json new file mode 100644 index 0000000..2fb8400 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/io.json @@ -0,0 +1,139 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json new file mode 100644 index 0000000..d9d6613 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/trace.json new file mode 100644 index 0000000..fedfe64 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/trace.json @@ -0,0 +1,165 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/compile.json new file mode 100644 index 0000000..4b5e199 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/post-report.json new file mode 100644 index 0000000..d8d1d95 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/post-report.json @@ -0,0 +1,45 @@ +{ + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/roundtrip.json new file mode 100644 index 0000000..8d3ce25 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P10_BrandHints/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/compile.json new file mode 100644 index 0000000..64b7f0c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json new file mode 100644 index 0000000..e129436 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json @@ -0,0 +1,21 @@ +{ + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json new file mode 100644 index 0000000..6a91bfc --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/compile.json new file mode 100644 index 0000000..2863696 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/post-report.json new file mode 100644 index 0000000..3290428 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/roundtrip.json new file mode 100644 index 0000000..a9f636c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/programs/W2_P30_Roundtrip/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/report.html b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/report.html new file mode 100644 index 0000000..7aec8c8 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/report.html @@ -0,0 +1,40 @@ + + + + + W2-JOB-20260628022836-51484d62 + + + +

W2-JOB-20260628022836-51484d62

+

Suite working2-abb120-spec / Robot abb_irb120_3_58

+

Covered sections: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25

+ + + + + + + + + + + + + + + + + + + + + +
ProgramLayerStatusDiagnostics
W2_00_MinimalModuleRuntimepass0
W2_10_DataTargetToolFrameRuntimepass8
W2_20_ExpressionMathRuntimepass0
W2_30_MotionAllTypesRuntimepass8
W2_40_PathEventsRuntimepass0
W2_50_OperationProcessRuntimepass0
W2_60_IOWaitPulseRuntimepass0
W2_70_ControlFlowRuntimepass45
W2_80_ProcFuncCallRuntimepass6
W2_90_ExceptionAlarmRuntimepass13
W2_99_FullSpecExampleRuntimepass4
W2_E10_ExpressionDiagnosticsStaticdiagnostic13
W2_E20_SemanticDiagnosticsStaticdiagnostic6
W2_E30_MotionDiagnosticsStaticdiagnostic4
W2_E40_ControlFlowDiagnosticsStaticdiagnostic9
W2_E50_RuntimeTimeoutRuntimediagnostic1
W2_P10_BrandHintsPostpass10
W2_P20_CrossBrandMotionPostpass6
W2_P30_RoundtripPostpass7
+ + diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/report.json new file mode 100644 index 0000000..4264e24 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62/report.json @@ -0,0 +1,1409 @@ +{ + "job_id": "W2-JOB-20260628022836-51484d62", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 12, + "staticPrograms": 4, + "postPrograms": 3 + }, + "summary": { + "programs": 19, + "pass": 14, + "diagnostic": 5, + "fail": 0 + }, + "diagnostics": [ + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 5 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 14 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 5 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 15 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_FUNC_SIDE_EFFECT", + "message": "Function bad_func cannot execute wait", + "sourceMap": { + "line": 11, + "column": 5 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_CALL_TARGET_NOT_FOUND", + "message": "Unknown call target missing_proc", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_TARGET_NOT_FOUND", + "message": "Unknown target missing_target" + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "KDL_JOINT_LIMIT", + "message": "joint_1 exceeds fixture limit", + "segmentId": "main:MOVEJ", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "KDL_TARGET_UNREACHABLE", + "message": "Target main:MOVEL is outside ABB120 fixture workspace", + "segmentId": "main:MOVEL", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_CONTINUE_OUTSIDE_LOOP", + "message": "continue is only valid inside loop", + "sourceMap": { + "line": 6, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_SWITCH_CASE_DUPLICATE", + "message": "Duplicate switch case 1", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_SWITCH_CASE_NOT_CONSTANT", + "message": "switch case must be a constant expression", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_LABEL_NOT_FOUND", + "message": "Unknown label missing", + "sourceMap": { + "line": 19, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_JUMP_INTO_BLOCK", + "message": "jump cannot enter a nested or sibling block" + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/job.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/job.json new file mode 100644 index 0000000..64a150b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/job.json @@ -0,0 +1,21619 @@ +{ + "job_id": "W2-JOB-20260628024709-51484d62", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "robot": { + "robotId": "abb_irb120_3_58", + "urdf": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "loadOptions": { + "robotId": "abb_irb120_3_58", + "baseLink": "base_link", + "tipLink": "tool0" + }, + "source": { + "repository": "https://github.com/ros-industrial/abb", + "branch": "noetic-devel", + "entrypoint": "abb_irb120_support/urdf/irb120_3_58.xacro", + "macro": "abb_irb120_support/urdf/irb120_3_58_macro.xacro" + }, + "standardJoints": { + "home": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "approach": [ + 0, + -0.4, + 0.5, + 0, + 0.2, + 0 + ], + "pick": [ + 0.2, + -0.35, + 0.45, + 0.1, + -0.2, + 0.3 + ], + "place": [ + -0.35, + -0.25, + 0.35, + -0.25, + 0.15, + -0.4 + ] + } + }, + "git_revision": "working-tree", + "manifest_hash": "ead98b6d28dd4ef6718c82ed930805c021547a79c74dd2fe5413d85f8896d67a", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 12, + "staticPrograms": 4, + "postPrograms": 3 + }, + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "4eae9a20aaf3becd68f0577a1a98c52ff25ec9dfdea700919e9920bd94945f59", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "6e7480a7195f219554aa1463e3fe832830d9af027a0c3748a740ff48936d1e3d", + "spec_sections": [ + 6, + 8, + 9 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] + } + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "2e1afb8beaa60b2666056b1d6594a58da50a006c761e76ef131c9cfdd40c29b3", + "spec_sections": [ + 7, + 9, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "f851346e7e008aa85718895b6ba97010f3071027f6c3cd920dc5920c7cd6020c", + "spec_sections": [ + 8, + 9, + 10 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] + } + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "86770c6d548271a2ae9f332b6bd4b84e52b513d41647df37f62b7e49a4b11942", + "spec_sections": [ + 11, + 13, + 19 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "01b2232a6f30383d441f7cc73020fc44d0e752e807ff07f92af0ed9132afa1c6", + "spec_sections": [ + 12, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "b473d3fcbc92ba0e6d34790d12ff1367bfc89452744ae540ffd9b301fc7f2636", + "spec_sections": [ + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "516fe162d1032f7a3d65c2b632ea10bafb95b10b38ccb15f77db79f86f0aaa7c", + "spec_sections": [ + 14 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "701334663d6a215852dbe4c78b3025ebcda5e318513a1e73ab0e6518c49788d5", + "spec_sections": [ + 15 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "494455105f84d035ce785747ee5dde77d85db6fb2bd907d1774d1de14e61a6a0", + "spec_sections": [ + 16, + 17 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_99_FullSpecExample", + "file": "runtime/W2_99_FullSpecExample.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "cd08e3c9c9c522b75f37f404b4fb915b4af8477ccca5d2f5fc1bed61c9c66024", + "spec_sections": [ + 24 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 15 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2FullSpecExample", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 1, + "kdlPathRequests": 2, + "symbolCount": 13, + "procedureCount": 1, + "pathCount": 2, + "operationCount": 2 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "pick_path", + "place_path" + ], + "operationIds": [ + "pick_op", + "place_op" + ], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 32, + "duration": 1.92, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2FullSpecExample.mod", + "W2FullSpecExample.ls", + "W2FullSpecExample.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "c08db186d16a8bc3f0ecb4731abb6601d8c69348fd08ca6b21b8848f32df2347", + "spec_sections": [ + 7, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "98750f73027e3272a3f1e86f90ea6066d67387e7ffef190441893fff38012ed5", + "spec_sections": [ + 6, + 15, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + }, + { + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "severity": "error", + "code": "GRL_FUNC_SIDE_EFFECT", + "message": "Function bad_func cannot execute wait", + "sourceMap": { + "line": 11, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_CALL_TARGET_NOT_FOUND", + "message": "Unknown call target missing_proc", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_TARGET_NOT_FOUND", + "message": "Unknown target missing_target" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "19f8c9f8a1ba6f6cfa8dde62207f8ee1797267e9addf7bbdbfbe941d8734b543", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "severity": "error", + "code": "KDL_JOINT_LIMIT", + "message": "joint_1 exceeds fixture limit", + "segmentId": "main:MOVEJ", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "severity": "error", + "code": "KDL_TARGET_UNREACHABLE", + "message": "Target main:MOVEL is outside ABB120 fixture workspace", + "segmentId": "main:MOVEL", + "sourceMap": { + "line": 15, + "column": 5 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "3ba920eda8d0932b260b9875ce395803d55ebb6a48ecb3c8857b2a4ef1478fea", + "spec_sections": [ + 14, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_CONTINUE_OUTSIDE_LOOP", + "message": "continue is only valid inside loop", + "sourceMap": { + "line": 6, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_SWITCH_CASE_DUPLICATE", + "message": "Duplicate switch case 1", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "severity": "error", + "code": "GRL_SWITCH_CASE_NOT_CONSTANT", + "message": "switch case must be a constant expression", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "error", + "code": "GRL_LABEL_NOT_FOUND", + "message": "Unknown label missing", + "sourceMap": { + "line": 19, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_JUMP_INTO_BLOCK", + "message": "jump cannot enter a nested or sibling block" + }, + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "2d5b41bef4b80c8a22f48697abe3b1a335779f439741f52376388091d8ea4fb6", + "spec_sections": [ + 13, + 16 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] + } + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "0b0b7f523d6afa37eb7b33db69fc8dc8eef910799030e24a13b87344bb0a7f80", + "spec_sections": [ + 18, + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "25574be5f4073c18281213d73b72e386f93b1ec57fe21490a9097f8050ce68eb", + "spec_sections": [ + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "ffef36ecf9e77bceff45b3438905861f7007365b608525e14f18561e58d2e6cf", + "spec_sections": [ + 19, + 20, + 21 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628024709-51484d62/job.json", + "compileJson": "W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/compile.json", + "controllerJson": "W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/controller.json", + "motionQueueJson": "W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/motion-queue.json", + "traceJson": "W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/trace.json", + "ioJson": "W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/io.json", + "trajectoryJson": "W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/trajectory.json", + "postReportJson": "W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/post-report.json", + "roundtripJson": "W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/roundtrip.json", + "reportJson": "W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "W2-JOB-20260628024709-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "post": { + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + } + ], + "artifacts": { + "root": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62", + "manifestJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/manifest.json", + "jobJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/job.json", + "reportJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/report.json", + "reportHtml": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/report.html", + "desktopScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/screenshots/virtual-controller-desktop.png", + "mobileScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/screenshots/virtual-controller-mobile.png", + "uiEvidenceJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/screenshots/evidence.json" + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/manifest.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/manifest.json new file mode 100644 index 0000000..f6d8cfd --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/manifest.json @@ -0,0 +1,451 @@ +{ + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "spec_source": "work/doc/通用机器人编程语法规范.md", + "program_root": "kdl-wasm/web/tests/fixtures/abb120/spec-programs", + "runtime_commands": [ + "loadProgram", + "start", + "stepInto", + "hold", + "resume", + "stepMotion", + "stop", + "resetFault" + ], + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 6, + 8, + 9 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 7, + 9, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 8, + 9, + 10 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 11, + 13, + 19 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 12, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 14 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 15 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 16, + 17 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_P1_UNIMPLEMENTED" + ] + }, + { + "program_id": "W2_99_FullSpecExample", + "file": "runtime/W2_99_FullSpecExample.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 24 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 7, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_EXPR_UNKNOWN_SYMBOL", + "GRL_EXPR_UNKNOWN_FUNCTION", + "GRL_EXPR_ARITY", + "GRL_EXPR_DOMAIN", + "GRL_EXPR_DIV_ZERO", + "GRL_EXPR_UNIT_MISMATCH" + ] + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 6, + 15, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_SYMBOL_DUPLICATE", + "GRL_ARGUMENT_NOT_LVALUE", + "GRL_CALL_TARGET_NOT_FOUND", + "GRL_FUNC_SIDE_EFFECT", + "GRL_TARGET_NOT_FOUND" + ] + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "KDL_JOINT_LIMIT", + "KDL_TARGET_UNREACHABLE", + "GRL_PATH_EMPTY" + ] + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 14, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_BREAK_OUTSIDE_FLOW", + "GRL_CONTINUE_OUTSIDE_LOOP", + "GRL_JUMP_INTO_BLOCK", + "GRL_SWITCH_CASE_DUPLICATE", + "GRL_SWITCH_CASE_NOT_CONSTANT", + "GRL_LABEL_NOT_FOUND" + ] + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13, + 16 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "VC_WAIT_TIMEOUT" + ] + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "spec_sections": [ + 18, + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_POST_HINT_IGNORED" + ] + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "spec_sections": [ + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "spec_sections": [ + 19, + 20, + 21 + ], + "expected_status": "pass", + "expected_diagnostics": [] + } + ], + "coverage_matrix": [ + { + "spec_section": 4, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 5, + "coverage_level": "Runtime", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 6, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 7, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_E10_ExpressionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 8, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 9, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 10, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_30_MotionAllTypes", + "W2_E30_MotionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 11, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_40_PathEvents", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 12, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_50_OperationProcess", + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 13, + "coverage_level": "Runtime", + "program_ids": [ + "W2_60_IOWaitPulse", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 14, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_70_ControlFlow", + "W2_E40_ControlFlowDiagnostics" + ] + }, + { + "spec_section": 15, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_80_ProcFuncCall", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 16, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_90_ExceptionAlarm", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 17, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_90_ExceptionAlarm" + ] + }, + { + "spec_section": 18, + "coverage_level": "Post", + "program_ids": [ + "W2_P10_BrandHints" + ] + }, + { + "spec_section": 19, + "coverage_level": "Post", + "program_ids": [ + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 20, + "coverage_level": "Post", + "program_ids": [ + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 21, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule", + "W2_E10_ExpressionDiagnostics" + ] + }, + { + "spec_section": 22, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 23, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 24, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_99_FullSpecExample", + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 25, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_P20_CrossBrandMotion" + ] + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/compile.json new file mode 100644 index 0000000..b21d4dd --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/controller.json new file mode 100644 index 0000000..eb27052 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/controller.json @@ -0,0 +1,455 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/io.json new file mode 100644 index 0000000..a9a6139 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/motion-queue.json new file mode 100644 index 0000000..4c4fa93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/post-report.json new file mode 100644 index 0000000..2b435af --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/trace.json new file mode 100644 index 0000000..b260ea8 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_00_MinimalModule/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/compile.json new file mode 100644 index 0000000..a66b72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/controller.json new file mode 100644 index 0000000..4677666 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/controller.json @@ -0,0 +1,872 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/io.json new file mode 100644 index 0000000..4c885c5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json new file mode 100644 index 0000000..ffd4169 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json @@ -0,0 +1,416 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json new file mode 100644 index 0000000..62c1345 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/trace.json new file mode 100644 index 0000000..eddbe65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json new file mode 100644 index 0000000..cfea046 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/compile.json new file mode 100644 index 0000000..2f9bd02 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/controller.json new file mode 100644 index 0000000..237450e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/controller.json @@ -0,0 +1,631 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/io.json new file mode 100644 index 0000000..f239c92 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/motion-queue.json new file mode 100644 index 0000000..cb5539e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/motion-queue.json @@ -0,0 +1,172 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/post-report.json new file mode 100644 index 0000000..b9a1299 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/trace.json new file mode 100644 index 0000000..d834175 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/trace.json @@ -0,0 +1,156 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/trajectory.json new file mode 100644 index 0000000..d1691a1 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_20_ExpressionMath/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/compile.json new file mode 100644 index 0000000..0a93c5d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/controller.json new file mode 100644 index 0000000..3123338 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/controller.json @@ -0,0 +1,936 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/io.json new file mode 100644 index 0000000..498441f --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json new file mode 100644 index 0000000..b627627 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json @@ -0,0 +1,480 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/post-report.json new file mode 100644 index 0000000..3634288 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/trace.json new file mode 100644 index 0000000..5fac72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/trajectory.json new file mode 100644 index 0000000..431e931 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_30_MotionAllTypes/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/compile.json new file mode 100644 index 0000000..5e98362 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/controller.json new file mode 100644 index 0000000..f80f32e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/controller.json @@ -0,0 +1,1106 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/io.json new file mode 100644 index 0000000..2d8957a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/motion-queue.json new file mode 100644 index 0000000..7fbb840 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/motion-queue.json @@ -0,0 +1,731 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/post-report.json new file mode 100644 index 0000000..1799726 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/trace.json new file mode 100644 index 0000000..74a552c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/trajectory.json new file mode 100644 index 0000000..8c6de8c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_40_PathEvents/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/compile.json new file mode 100644 index 0000000..4ad1d93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/controller.json new file mode 100644 index 0000000..6520e77 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/controller.json @@ -0,0 +1,500 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/io.json new file mode 100644 index 0000000..67ae792 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/motion-queue.json new file mode 100644 index 0000000..6b8ce58 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/motion-queue.json @@ -0,0 +1,123 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/post-report.json new file mode 100644 index 0000000..b22568b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/trace.json new file mode 100644 index 0000000..e16ed9a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_50_OperationProcess/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/compile.json new file mode 100644 index 0000000..a051026 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/controller.json new file mode 100644 index 0000000..63159c3 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/controller.json @@ -0,0 +1,1139 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/io.json new file mode 100644 index 0000000..20e3541 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/io.json @@ -0,0 +1,253 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json new file mode 100644 index 0000000..f9168f2 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json @@ -0,0 +1,279 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/post-report.json new file mode 100644 index 0000000..ae4ab05 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/trace.json new file mode 100644 index 0000000..41e0322 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/trace.json @@ -0,0 +1,493 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_60_IOWaitPulse/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/compile.json new file mode 100644 index 0000000..28b7c9c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/controller.json new file mode 100644 index 0000000..5c3d7e6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/controller.json @@ -0,0 +1,610 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/io.json new file mode 100644 index 0000000..67c50b6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/post-report.json new file mode 100644 index 0000000..4e58295 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/post-report.json @@ -0,0 +1,153 @@ +{ + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/trace.json new file mode 100644 index 0000000..f70bed5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/trace.json @@ -0,0 +1,253 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_70_ControlFlow/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/compile.json new file mode 100644 index 0000000..e582d30 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/controller.json new file mode 100644 index 0000000..3db47f6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/controller.json @@ -0,0 +1,523 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/io.json new file mode 100644 index 0000000..222cd29 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/post-report.json new file mode 100644 index 0000000..44ff58d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/post-report.json @@ -0,0 +1,117 @@ +{ + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/trace.json new file mode 100644 index 0000000..fd70e4b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/trace.json @@ -0,0 +1,202 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_80_ProcFuncCall/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/compile.json new file mode 100644 index 0000000..c8515aa --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/controller.json new file mode 100644 index 0000000..64d6d9b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/controller.json @@ -0,0 +1,606 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/io.json new file mode 100644 index 0000000..f36d75c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json new file mode 100644 index 0000000..f6cb95e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/post-report.json new file mode 100644 index 0000000..6c7c328 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/post-report.json @@ -0,0 +1,81 @@ +{ + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/trace.json new file mode 100644 index 0000000..a2c2108 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/trace.json @@ -0,0 +1,201 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json new file mode 100644 index 0000000..6f9d002 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/compile.json new file mode 100644 index 0000000..ea23e7d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2FullSpecExample", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 1, + "kdlPathRequests": 2, + "symbolCount": 13, + "procedureCount": 1, + "pathCount": 2, + "operationCount": 2 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/controller.json new file mode 100644 index 0000000..d938f8e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/controller.json @@ -0,0 +1,1983 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "pick_path", + "place_path" + ], + "operationIds": [ + "pick_op", + "place_op" + ], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/io.json new file mode 100644 index 0000000..8b73019 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/motion-queue.json new file mode 100644 index 0000000..338f793 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/motion-queue.json @@ -0,0 +1,1521 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/post-report.json new file mode 100644 index 0000000..0db5c5f --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/post-report.json @@ -0,0 +1,45 @@ +{ + "filenames": [ + "W2FullSpecExample.mod", + "W2FullSpecExample.ls", + "W2FullSpecExample.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/trace.json new file mode 100644 index 0000000..1fca576 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/trajectory.json new file mode 100644 index 0000000..2d5b5e0 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_99_FullSpecExample/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 32, + "duration": 1.92, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/compile.json new file mode 100644 index 0000000..6d939b1 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/controller.json new file mode 100644 index 0000000..ac88b82 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/controller.json @@ -0,0 +1,431 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/io.json new file mode 100644 index 0000000..2fb8400 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/io.json @@ -0,0 +1,139 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json new file mode 100644 index 0000000..d9d6613 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/trace.json new file mode 100644 index 0000000..fedfe64 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/trace.json @@ -0,0 +1,165 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json new file mode 100644 index 0000000..cb22e65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json @@ -0,0 +1,21 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/compile.json new file mode 100644 index 0000000..4b5e199 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/post-report.json new file mode 100644 index 0000000..d8d1d95 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/post-report.json @@ -0,0 +1,45 @@ +{ + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/roundtrip.json new file mode 100644 index 0000000..8d3ce25 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P10_BrandHints/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/compile.json new file mode 100644 index 0000000..64b7f0c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json new file mode 100644 index 0000000..e129436 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json @@ -0,0 +1,21 @@ +{ + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json new file mode 100644 index 0000000..6a91bfc --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/compile.json new file mode 100644 index 0000000..2863696 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/post-report.json new file mode 100644 index 0000000..3290428 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/roundtrip.json new file mode 100644 index 0000000..a9f636c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/programs/W2_P30_Roundtrip/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/report.html b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/report.html new file mode 100644 index 0000000..6e1bc90 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/report.html @@ -0,0 +1,40 @@ + + + + + W2-JOB-20260628024709-51484d62 + + + +

W2-JOB-20260628024709-51484d62

+

Suite working2-abb120-spec / Robot abb_irb120_3_58

+

Covered sections: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25

+ + + + + + + + + + + + + + + + + + + + + +
ProgramLayerStatusDiagnostics
W2_00_MinimalModuleRuntimepass0
W2_10_DataTargetToolFrameRuntimepass8
W2_20_ExpressionMathRuntimepass0
W2_30_MotionAllTypesRuntimepass8
W2_40_PathEventsRuntimepass0
W2_50_OperationProcessRuntimepass0
W2_60_IOWaitPulseRuntimepass0
W2_70_ControlFlowRuntimepass45
W2_80_ProcFuncCallRuntimepass6
W2_90_ExceptionAlarmRuntimepass13
W2_99_FullSpecExampleRuntimepass4
W2_E10_ExpressionDiagnosticsStaticdiagnostic13
W2_E20_SemanticDiagnosticsStaticdiagnostic6
W2_E30_MotionDiagnosticsStaticdiagnostic4
W2_E40_ControlFlowDiagnosticsStaticdiagnostic9
W2_E50_RuntimeTimeoutRuntimediagnostic1
W2_P10_BrandHintsPostpass10
W2_P20_CrossBrandMotionPostpass6
W2_P30_RoundtripPostpass7
+ + diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/report.json new file mode 100644 index 0000000..f2a2aa2 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628024709-51484d62/report.json @@ -0,0 +1,1409 @@ +{ + "job_id": "W2-JOB-20260628024709-51484d62", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 12, + "staticPrograms": 4, + "postPrograms": 3 + }, + "summary": { + "programs": 19, + "pass": 14, + "diagnostic": 5, + "fail": 0 + }, + "diagnostics": [ + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 5 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 14 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 5 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 15 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_FUNC_SIDE_EFFECT", + "message": "Function bad_func cannot execute wait", + "sourceMap": { + "line": 11, + "column": 5 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_CALL_TARGET_NOT_FOUND", + "message": "Unknown call target missing_proc", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_TARGET_NOT_FOUND", + "message": "Unknown target missing_target" + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "KDL_JOINT_LIMIT", + "message": "joint_1 exceeds fixture limit", + "segmentId": "main:MOVEJ", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "KDL_TARGET_UNREACHABLE", + "message": "Target main:MOVEL is outside ABB120 fixture workspace", + "segmentId": "main:MOVEL", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_CONTINUE_OUTSIDE_LOOP", + "message": "continue is only valid inside loop", + "sourceMap": { + "line": 6, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_SWITCH_CASE_DUPLICATE", + "message": "Duplicate switch case 1", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_SWITCH_CASE_NOT_CONSTANT", + "message": "switch case must be a constant expression", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_LABEL_NOT_FOUND", + "message": "Unknown label missing", + "sourceMap": { + "line": 19, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_JUMP_INTO_BLOCK", + "message": "jump cannot enter a nested or sibling block" + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/job.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/job.json new file mode 100644 index 0000000..6d8be36 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/job.json @@ -0,0 +1,24632 @@ +{ + "job_id": "W2-JOB-20260628082622-51484d62", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "robot": { + "robotId": "abb_irb120_3_58", + "urdf": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "loadOptions": { + "robotId": "abb_irb120_3_58", + "baseLink": "base_link", + "tipLink": "tool0" + }, + "source": { + "repository": "https://github.com/ros-industrial/abb", + "branch": "noetic-devel", + "entrypoint": "abb_irb120_support/urdf/irb120_3_58.xacro", + "macro": "abb_irb120_support/urdf/irb120_3_58_macro.xacro" + }, + "standardJoints": { + "home": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "approach": [ + 0, + -0.4, + 0.5, + 0, + 0.2, + 0 + ], + "pick": [ + 0.2, + -0.35, + 0.45, + 0.1, + -0.2, + 0.3 + ], + "place": [ + -0.35, + -0.25, + 0.35, + -0.25, + 0.15, + -0.4 + ] + } + }, + "git_revision": "working-tree", + "manifest_hash": "ead98b6d28dd4ef6718c82ed930805c021547a79c74dd2fe5413d85f8896d67a", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 12, + "staticPrograms": 4, + "postPrograms": 3 + }, + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "4eae9a20aaf3becd68f0577a1a98c52ff25ec9dfdea700919e9920bd94945f59", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 7, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 7, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 7, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 7, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "6e7480a7195f219554aa1463e3fe832830d9af027a0c3748a740ff48936d1e3d", + "spec_sections": [ + 6, + 8, + 9 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_2", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.32, + "motion": "MOVEJ", + "segmentId": "motion_2", + "joints": [ + 0, + -0.133333, + 0.166667, + 0, + 0.066667, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.4, + "motion": "MOVEJ", + "segmentId": "motion_2", + "joints": [ + 0, + -0.266667, + 0.333333, + 0, + 0.133333, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.48, + "motion": "MOVEJ", + "segmentId": "motion_2", + "joints": [ + 0, + -0.4, + 0.5, + 0, + 0.2, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 8, + "time": 0.48, + "motion": "MOVEL", + "segmentId": "motion_3", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 9, + "time": 0.56, + "motion": "MOVEL", + "segmentId": "motion_3", + "joints": [ + 0.166667, + 0.01, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 10, + "time": 0.64, + "motion": "MOVEL", + "segmentId": "motion_3", + "joints": [ + 0.333333, + 0.02, + -0.333333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 11, + "time": 0.72, + "motion": "MOVEL", + "segmentId": "motion_3", + "joints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] + } + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "2e1afb8beaa60b2666056b1d6594a58da50a006c761e76ef131c9cfdd40c29b3", + "spec_sections": [ + 7, + 9, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0.087266, + -0.174533, + 0, + 0.087266, + 0.017453 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0.174533, + -0.349066, + 0, + 0.174533, + 0.034907 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0.261799, + -0.523599, + 0, + 0.261799, + 0.05236 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.32, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.15, + 0.013333, + -0.066667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.4, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.3, + 0.026667, + -0.133333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.48, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "f851346e7e008aa85718895b6ba97010f3071027f6c3cd920dc5920c7cd6020c", + "spec_sections": [ + 8, + 9, + 10 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.32, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.166667, + 0, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.4, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.333333, + 0, + -0.333333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.48, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.5, + 0, + -0.5, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 8, + "time": 0.48, + "motion": "MOVEC", + "segmentId": "motion_3", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 9, + "time": 0.56, + "motion": "MOVEC", + "segmentId": "motion_3", + "joints": [ + 0.2, + 0, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 10, + "time": 0.64, + "motion": "MOVEC", + "segmentId": "motion_3", + "joints": [ + 0.4, + 0, + -0.333333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 11, + "time": 0.72, + "motion": "MOVEC", + "segmentId": "motion_3", + "joints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] + } + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "86770c6d548271a2ae9f332b6bd4b84e52b513d41647df37f62b7e49a4b11942", + "spec_sections": [ + 11, + 13, + 19 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p_home", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p_home", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p_home", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p_home", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p_pick", + "targetId": "pick", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p_pick", + "targetId": "pick", + "joints": [ + 0.066667, + -0.116667, + 0.15, + 0.033333, + -0.066667, + 0.1 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p_pick", + "targetId": "pick", + "joints": [ + 0.133333, + -0.233333, + 0.3, + 0.066667, + -0.133333, + 0.2 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p_pick", + "targetId": "pick", + "joints": [ + 0.2, + -0.35, + 0.45, + 0.1, + -0.2, + 0.3 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 8, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p_place", + "targetId": "place", + "joints": [ + 0.2, + -0.35, + 0.45, + 0.1, + -0.2, + 0.3 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 9, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p_place", + "targetId": "place", + "joints": [ + 0.016667, + -0.316667, + 0.416667, + -0.016667, + -0.083333, + 0.066667 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 10, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p_place", + "targetId": "place", + "joints": [ + -0.166667, + -0.283333, + 0.383333, + -0.133333, + 0.033333, + -0.166667 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 11, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p_place", + "targetId": "place", + "joints": [ + -0.35, + -0.25, + 0.35, + -0.25, + 0.15, + -0.4 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "diagnostics": [] + } + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "01b2232a6f30383d441f7cc73020fc44d0e752e807ff07f92af0ed9132afa1c6", + "spec_sections": [ + 12, + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + } + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "b473d3fcbc92ba0e6d34790d12ff1367bfc89452744ae540ffd9b301fc7f2636", + "spec_sections": [ + 13 + ], + "diagnostics": [], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + } + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "516fe162d1032f7a3d65c2b632ea10bafb95b10b38ccb15f77db79f86f0aaa7c", + "spec_sections": [ + 14 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "701334663d6a215852dbe4c78b3025ebcda5e318513a1e73ab0e6518c49788d5", + "spec_sections": [ + 15 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "494455105f84d035ce785747ee5dde77d85db6fb2bd907d1774d1de14e61a6a0", + "spec_sections": [ + 16, + 17 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 15, + "column": 7 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 15, + "column": 7 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 15, + "column": 7 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 15, + "column": 7 + }, + "diagnostics": [] + } + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_99_FullSpecExample", + "file": "runtime/W2_99_FullSpecExample.grl", + "coverage_level": "Runtime", + "expected_status": "pass", + "status": "pass", + "input_hash": "cd08e3c9c9c522b75f37f404b4fb915b4af8477ccca5d2f5fc1bed61c9c66024", + "spec_sections": [ + 24 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 14 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 5 + } + }, + { + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 15 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2FullSpecExample", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 1, + "kdlPathRequests": 2, + "symbolCount": 13, + "procedureCount": 1, + "pathCount": 2, + "operationCount": 2 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "pick_path", + "place_path" + ], + "operationIds": [ + "pick_op", + "place_op" + ], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "trajectory": { + "sampleCount": 32, + "duration": 1.92, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "approach", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "approach", + "targetId": "home", + "joints": [ + 0, + -0.116355, + 0.232711, + 0, + 0.174533, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "approach", + "targetId": "home", + "joints": [ + 0, + -0.232711, + 0.465421, + 0, + 0.349066, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "approach", + "targetId": "home", + "joints": [ + 0, + -0.349066, + 0.698132, + 0, + 0.523599, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0, + "motion": "MOVEL", + "segmentId": "above_pick", + "targetId": "pick", + "joints": [ + 0, + -0.349066, + 0.698132, + 0, + 0.523599, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.08, + "motion": "MOVEL", + "segmentId": "above_pick", + "targetId": "pick", + "joints": [ + 0.166667, + -0.192711, + 0.432088, + 0, + 0.349066, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.16, + "motion": "MOVEL", + "segmentId": "above_pick", + "targetId": "pick", + "joints": [ + 0.333333, + -0.036355, + 0.166044, + 0, + 0.174533, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "above_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.1, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 8, + "time": 0, + "motion": "MOVEL", + "segmentId": "at_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.1, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 9, + "time": 0.08, + "motion": "MOVEL", + "segmentId": "at_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.133333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 10, + "time": 0.16, + "motion": "MOVEL", + "segmentId": "at_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 11, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "at_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.2, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 12, + "time": 0, + "motion": "MOVEL", + "segmentId": "leave_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.2, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 13, + "time": 0.08, + "motion": "MOVEL", + "segmentId": "leave_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 14, + "time": 0.16, + "motion": "MOVEL", + "segmentId": "leave_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.133333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 15, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "leave_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.1, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 16, + "time": 0.96, + "motion": "MOVEL", + "segmentId": "above_place", + "targetId": "place", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 17, + "time": 1.04, + "motion": "MOVEL", + "segmentId": "above_place", + "targetId": "place", + "joints": [ + 0.216667, + -0.033333, + -0.026667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 18, + "time": 1.12, + "motion": "MOVEL", + "segmentId": "above_place", + "targetId": "place", + "joints": [ + 0.433333, + -0.066667, + -0.053333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 19, + "time": 1.2, + "motion": "MOVEL", + "segmentId": "above_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.08, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 20, + "time": 0.96, + "motion": "MOVEL", + "segmentId": "at_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.08, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 21, + "time": 1.04, + "motion": "MOVEL", + "segmentId": "at_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.113333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 22, + "time": 1.12, + "motion": "MOVEL", + "segmentId": "at_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.146667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 23, + "time": 1.2, + "motion": "MOVEL", + "segmentId": "at_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.18, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 24, + "time": 0.96, + "motion": "MOVEL", + "segmentId": "leave_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.18, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 25, + "time": 1.04, + "motion": "MOVEL", + "segmentId": "leave_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.146667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 26, + "time": 1.12, + "motion": "MOVEL", + "segmentId": "leave_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.113333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 27, + "time": 1.2, + "motion": "MOVEL", + "segmentId": "leave_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.08, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 28, + "time": 1.68, + "motion": "MOVEJ", + "segmentId": "motion_3", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 29, + "time": 1.76, + "motion": "MOVEJ", + "segmentId": "motion_3", + "joints": [ + 0, + -0.116355, + 0.232711, + 0, + 0.174533, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 30, + "time": 1.84, + "motion": "MOVEJ", + "segmentId": "motion_3", + "joints": [ + 0, + -0.232711, + 0.465421, + 0, + 0.349066, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 31, + "time": 1.92, + "motion": "MOVEJ", + "segmentId": "motion_3", + "joints": [ + 0, + -0.349066, + 0.698132, + 0, + 0.523599, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2FullSpecExample.mod", + "W2FullSpecExample.ls", + "W2FullSpecExample.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "c08db186d16a8bc3f0ecb4731abb6601d8c69348fd08ca6b21b8848f32df2347", + "spec_sections": [ + 7, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "98750f73027e3272a3f1e86f90ea6066d67387e7ffef190441893fff38012ed5", + "spec_sections": [ + 6, + 15, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + }, + { + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "severity": "error", + "code": "GRL_FUNC_SIDE_EFFECT", + "message": "Function bad_func cannot execute wait", + "sourceMap": { + "line": 11, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_CALL_TARGET_NOT_FOUND", + "message": "Unknown call target missing_proc", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_TARGET_NOT_FOUND", + "message": "Unknown target missing_target" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "19f8c9f8a1ba6f6cfa8dde62207f8ee1797267e9addf7bbdbfbe941d8734b543", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "severity": "error", + "code": "KDL_JOINT_LIMIT", + "message": "joint_1 exceeds fixture limit", + "segmentId": "main:MOVEJ", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "severity": "error", + "code": "KDL_TARGET_UNREACHABLE", + "message": "Target main:MOVEL is outside ABB120 fixture workspace", + "segmentId": "main:MOVEL", + "sourceMap": { + "line": 15, + "column": 5 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "3ba920eda8d0932b260b9875ce395803d55ebb6a48ecb3c8857b2a4ef1478fea", + "spec_sections": [ + 14, + 22 + ], + "diagnostics": [ + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_CONTINUE_OUTSIDE_LOOP", + "message": "continue is only valid inside loop", + "sourceMap": { + "line": 6, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_SWITCH_CASE_DUPLICATE", + "message": "Duplicate switch case 1", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "severity": "error", + "code": "GRL_SWITCH_CASE_NOT_CONSTANT", + "message": "switch case must be a constant expression", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "severity": "error", + "code": "GRL_LABEL_NOT_FOUND", + "message": "Unknown label missing", + "sourceMap": { + "line": 19, + "column": 5 + } + }, + { + "severity": "error", + "code": "GRL_JUMP_INTO_BLOCK", + "message": "jump cannot enter a nested or sibling block" + }, + { + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "expected_status": "diagnostic", + "status": "diagnostic", + "input_hash": "2d5b41bef4b80c8a22f48697abe3b1a335779f439741f52376388091d8ea4fb6", + "spec_sections": [ + 13, + 16 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 + }, + "controller": { + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } + }, + "motionQueue": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "trajectory": { + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [], + "diagnostics": [] + }, + "post": { + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] + } + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "0b0b7f523d6afa37eb7b33db69fc8dc8eef910799030e24a13b87344bb0a7f80", + "spec_sections": [ + 18, + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "25574be5f4073c18281213d73b72e386f93b1ec57fe21490a9097f8050ce68eb", + "spec_sections": [ + 20 + ], + "diagnostics": [ + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 + }, + "post": { + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "expected_status": "pass", + "status": "pass", + "input_hash": "ffef36ecf9e77bceff45b3438905861f7007365b608525e14f18561e58d2e6cf", + "spec_sections": [ + 19, + 20, + 21 + ], + "diagnostics": [ + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ], + "artifacts": { + "jobJson": "W2-JOB-20260628082622-51484d62/job.json", + "compileJson": "W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/compile.json", + "controllerJson": "W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/controller.json", + "motionQueueJson": "W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/motion-queue.json", + "traceJson": "W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/trace.json", + "ioJson": "W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/io.json", + "trajectoryJson": "W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/trajectory.json", + "postReportJson": "W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/post-report.json", + "roundtripJson": "W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/roundtrip.json", + "reportJson": "W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "W2-JOB-20260628082622-51484d62/report.html" + }, + "compile": { + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 + }, + "post": { + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] + }, + "roundtrip": { + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] + } + } + ], + "artifacts": { + "root": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62", + "manifestJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/manifest.json", + "jobJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/job.json", + "reportJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.json", + "reportHtml": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.html", + "desktopScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/screenshots/virtual-controller-desktop.png", + "mobileScreenshot": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/screenshots/virtual-controller-mobile.png", + "uiEvidenceJson": "kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/screenshots/evidence.json" + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/manifest.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/manifest.json new file mode 100644 index 0000000..f6d8cfd --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/manifest.json @@ -0,0 +1,451 @@ +{ + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "spec_source": "work/doc/通用机器人编程语法规范.md", + "program_root": "kdl-wasm/web/tests/fixtures/abb120/spec-programs", + "runtime_commands": [ + "loadProgram", + "start", + "stepInto", + "hold", + "resume", + "stepMotion", + "stop", + "resetFault" + ], + "programs": [ + { + "program_id": "W2_00_MinimalModule", + "file": "runtime/W2_00_MinimalModule.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 4, + 5, + 6, + 9, + 10, + 23 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "file": "runtime/W2_10_DataTargetToolFrame.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 6, + 8, + 9 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_20_ExpressionMath", + "file": "runtime/W2_20_ExpressionMath.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 7, + 9, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_30_MotionAllTypes", + "file": "runtime/W2_30_MotionAllTypes.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 8, + 9, + 10 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_40_PathEvents", + "file": "runtime/W2_40_PathEvents.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 11, + 13, + 19 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_50_OperationProcess", + "file": "runtime/W2_50_OperationProcess.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 12, + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_60_IOWaitPulse", + "file": "runtime/W2_60_IOWaitPulse.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_70_ControlFlow", + "file": "runtime/W2_70_ControlFlow.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 14 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_80_ProcFuncCall", + "file": "runtime/W2_80_ProcFuncCall.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 15 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_90_ExceptionAlarm", + "file": "runtime/W2_90_ExceptionAlarm.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 16, + 17 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_P1_UNIMPLEMENTED" + ] + }, + { + "program_id": "W2_99_FullSpecExample", + "file": "runtime/W2_99_FullSpecExample.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 24 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "file": "static/W2_E10_ExpressionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 7, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_EXPR_UNKNOWN_SYMBOL", + "GRL_EXPR_UNKNOWN_FUNCTION", + "GRL_EXPR_ARITY", + "GRL_EXPR_DOMAIN", + "GRL_EXPR_DIV_ZERO", + "GRL_EXPR_UNIT_MISMATCH" + ] + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "file": "static/W2_E20_SemanticDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 6, + 15, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_SYMBOL_DUPLICATE", + "GRL_ARGUMENT_NOT_LVALUE", + "GRL_CALL_TARGET_NOT_FOUND", + "GRL_FUNC_SIDE_EFFECT", + "GRL_TARGET_NOT_FOUND" + ] + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "file": "error/W2_E30_MotionDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 8, + 9, + 10, + 11, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "KDL_JOINT_LIMIT", + "KDL_TARGET_UNREACHABLE", + "GRL_PATH_EMPTY" + ] + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "file": "static/W2_E40_ControlFlowDiagnostics.grl", + "coverage_level": "Static", + "spec_sections": [ + 14, + 22 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "GRL_BREAK_OUTSIDE_FLOW", + "GRL_CONTINUE_OUTSIDE_LOOP", + "GRL_JUMP_INTO_BLOCK", + "GRL_SWITCH_CASE_DUPLICATE", + "GRL_SWITCH_CASE_NOT_CONSTANT", + "GRL_LABEL_NOT_FOUND" + ] + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "file": "error/W2_E50_RuntimeTimeout.grl", + "coverage_level": "Runtime", + "spec_sections": [ + 13, + 16 + ], + "expected_status": "diagnostic", + "expected_diagnostics": [ + "VC_WAIT_TIMEOUT" + ] + }, + { + "program_id": "W2_P10_BrandHints", + "file": "post/W2_P10_BrandHints.grl", + "coverage_level": "Post", + "spec_sections": [ + 18, + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [ + "GRL_POST_HINT_IGNORED" + ] + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "file": "post/W2_P20_CrossBrandMotion.grl", + "coverage_level": "Post", + "spec_sections": [ + 20 + ], + "expected_status": "pass", + "expected_diagnostics": [] + }, + { + "program_id": "W2_P30_Roundtrip", + "file": "post/W2_P30_Roundtrip.grl", + "coverage_level": "Post", + "spec_sections": [ + 19, + 20, + 21 + ], + "expected_status": "pass", + "expected_diagnostics": [] + } + ], + "coverage_matrix": [ + { + "spec_section": 4, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 5, + "coverage_level": "Runtime", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 6, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 7, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_E10_ExpressionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 8, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_10_DataTargetToolFrame", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 9, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 10, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_30_MotionAllTypes", + "W2_E30_MotionDiagnostics", + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 11, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_40_PathEvents", + "W2_E30_MotionDiagnostics" + ] + }, + { + "spec_section": 12, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_50_OperationProcess", + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 13, + "coverage_level": "Runtime", + "program_ids": [ + "W2_60_IOWaitPulse", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 14, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_70_ControlFlow", + "W2_E40_ControlFlowDiagnostics" + ] + }, + { + "spec_section": 15, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_80_ProcFuncCall", + "W2_E20_SemanticDiagnostics" + ] + }, + { + "spec_section": 16, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_90_ExceptionAlarm", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 17, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_90_ExceptionAlarm" + ] + }, + { + "spec_section": 18, + "coverage_level": "Post", + "program_ids": [ + "W2_P10_BrandHints" + ] + }, + { + "spec_section": 19, + "coverage_level": "Post", + "program_ids": [ + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 20, + "coverage_level": "Post", + "program_ids": [ + "W2_P20_CrossBrandMotion" + ] + }, + { + "spec_section": 21, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule", + "W2_E10_ExpressionDiagnostics" + ] + }, + { + "spec_section": 22, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout" + ] + }, + { + "spec_section": 23, + "coverage_level": "Runtime/Static", + "program_ids": [ + "W2_00_MinimalModule" + ] + }, + { + "spec_section": 24, + "coverage_level": "Runtime/Post", + "program_ids": [ + "W2_99_FullSpecExample", + "W2_P30_Roundtrip" + ] + }, + { + "spec_section": 25, + "coverage_level": "Runtime/Static/Post", + "program_ids": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_P20_CrossBrandMotion" + ] + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/compile.json new file mode 100644 index 0000000..b21d4dd --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MinimalModule", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 4, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/controller.json new file mode 100644 index 0000000..eb27052 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/controller.json @@ -0,0 +1,455 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/io.json new file mode 100644 index 0000000..a9a6139 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_00_MinimalModule-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/motion-queue.json new file mode 100644 index 0000000..4c4fa93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "sourceMap": { + "line": 7, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 7, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/post-report.json new file mode 100644 index 0000000..2b435af --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MinimalModule.mod", + "W2MinimalModule.ls", + "W2MinimalModule.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/trace.json new file mode 100644 index 0000000..b260ea8 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MinimalModule", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MinimalModule" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:7:5", + "sourceMap": { + "line": 7, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/trajectory.json new file mode 100644 index 0000000..f483f30 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_00_MinimalModule/trajectory.json @@ -0,0 +1,151 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 7, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 7, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 7, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 7, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/compile.json new file mode 100644 index 0000000..a66b72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2DataTargetToolFrame", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 19, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/controller.json new file mode 100644 index 0000000..4677666 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/controller.json @@ -0,0 +1,872 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/io.json new file mode 100644 index 0000000..4c885c5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_10_DataTargetToolFrame-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json new file mode 100644 index 0000000..ffd4169 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/motion-queue.json @@ -0,0 +1,416 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "sourceMap": { + "line": 41, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "sourceMap": { + "line": 42, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.4000000033993267, + 0.5000000042491584, + 0, + 0.20000000169966334, + 0 + ], + "id": "approach" + }, + "speed": { + "kind": "joint_percent", + "value": 0.4 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "sourceMap": { + "line": 43, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.03, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick_q" + }, + "speed": { + "kind": "linear", + "velocity": 0.12 + }, + "zone": { + "kind": "distance", + "value": 0.005 + }, + "tool": { + "position": [ + 0, + 0, + 0.1 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json new file mode 100644 index 0000000..62c1345 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2DataTargetToolFrame.mod", + "W2DataTargetToolFrame.ls", + "W2DataTargetToolFrame.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/trace.json new file mode 100644 index 0000000..eddbe65 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2DataTargetToolFrame", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2DataTargetToolFrame" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:41:5", + "sourceMap": { + "line": 41, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:42:5", + "sourceMap": { + "line": 42, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:43:5", + "sourceMap": { + "line": 43, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json new file mode 100644 index 0000000..33d5fba --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_10_DataTargetToolFrame/trajectory.json @@ -0,0 +1,407 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_2", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.32, + "motion": "MOVEJ", + "segmentId": "motion_2", + "joints": [ + 0, + -0.133333, + 0.166667, + 0, + 0.066667, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.4, + "motion": "MOVEJ", + "segmentId": "motion_2", + "joints": [ + 0, + -0.266667, + 0.333333, + 0, + 0.133333, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.48, + "motion": "MOVEJ", + "segmentId": "motion_2", + "joints": [ + 0, + -0.4, + 0.5, + 0, + 0.2, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 42, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 8, + "time": 0.48, + "motion": "MOVEL", + "segmentId": "motion_3", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 9, + "time": 0.56, + "motion": "MOVEL", + "segmentId": "motion_3", + "joints": [ + 0.166667, + 0.01, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 10, + "time": 0.64, + "motion": "MOVEL", + "segmentId": "motion_3", + "joints": [ + 0.333333, + 0.02, + -0.333333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 11, + "time": 0.72, + "motion": "MOVEL", + "segmentId": "motion_3", + "joints": [ + 0.5, + 0.03, + -0.5, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 43, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/compile.json new file mode 100644 index 0000000..2f9bd02 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExpressionMath", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 2, + "kdlPathRequests": 0, + "symbolCount": 9, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/controller.json new file mode 100644 index 0000000..237450e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/controller.json @@ -0,0 +1,631 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:2": 0 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/io.json new file mode 100644 index 0000000..f239c92 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_20_ExpressionMath-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/motion-queue.json new file mode 100644 index 0000000..cb5539e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/motion-queue.json @@ -0,0 +1,172 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "sourceMap": { + "line": 16, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0.2617993877991494, + -0.5235987755982988, + 0, + 0.2617993877991494, + 0.05235987755982989 + ], + "id": "home" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 16, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.45, + 0.04, + 0.3 + ], + "quaternion": [ + 0, + 0, + 0.3826834323650897, + 0.9238795325112867 + ] + }, + "id": "pick" + }, + "speed": { + "kind": "linear", + "velocity": 0.15000000000000002 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/post-report.json new file mode 100644 index 0000000..b9a1299 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2ExpressionMath.mod", + "W2ExpressionMath.ls", + "W2ExpressionMath.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/trace.json new file mode 100644 index 0000000..d834175 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/trace.json @@ -0,0 +1,156 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExpressionMath", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExpressionMath" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 2, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/trajectory.json new file mode 100644 index 0000000..40790b7 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_20_ExpressionMath/trajectory.json @@ -0,0 +1,279 @@ +{ + "sampleCount": 8, + "duration": 0.48, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0.087266, + -0.174533, + 0, + 0.087266, + 0.017453 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0.174533, + -0.349066, + 0, + 0.174533, + 0.034907 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0.261799, + -0.523599, + 0, + 0.261799, + 0.05236 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.32, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.15, + 0.013333, + -0.066667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.4, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.3, + 0.026667, + -0.133333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.48, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.45, + 0.04, + -0.2, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/compile.json new file mode 100644 index 0000000..0a93c5d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2MotionAllTypes", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 3, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/controller.json new file mode 100644 index 0000000..3123338 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/controller.json @@ -0,0 +1,936 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/io.json new file mode 100644 index 0000000..498441f --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_30_MotionAllTypes-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json new file mode 100644 index 0000000..b627627 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/motion-queue.json @@ -0,0 +1,480 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "sourceMap": { + "line": 17, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.45 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "sourceMap": { + "line": 18, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_2", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "start" + }, + "speed": { + "kind": "linear", + "velocity": 0.15 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + } + } + ] + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "sourceMap": { + "line": 19, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEC", + "target": { + "pose": { + "position": [ + 0.6, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "finish" + }, + "via": { + "pose": { + "position": [ + 0.55, + 0.05, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "mid" + }, + "speed": { + "kind": "linear", + "velocity": 0.1 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.08 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/post-report.json new file mode 100644 index 0000000..3634288 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2MotionAllTypes.mod", + "W2MotionAllTypes.ls", + "W2MotionAllTypes.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/trace.json new file mode 100644 index 0000000..5fac72a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2MotionAllTypes", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2MotionAllTypes" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEL", + "source": { + "kind": "MOVEL", + "id": "main:MOVEL:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEC", + "source": { + "kind": "MOVEC", + "id": "main:MOVEC:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/trajectory.json new file mode 100644 index 0000000..fb9ecb0 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_30_MotionAllTypes/trajectory.json @@ -0,0 +1,407 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 17, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.32, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.166667, + 0, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.4, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.333333, + 0, + -0.333333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.48, + "motion": "MOVEL", + "segmentId": "motion_2", + "joints": [ + 0.5, + 0, + -0.5, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 8, + "time": 0.48, + "motion": "MOVEC", + "segmentId": "motion_3", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 9, + "time": 0.56, + "motion": "MOVEC", + "segmentId": "motion_3", + "joints": [ + 0.2, + 0, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 10, + "time": 0.64, + "motion": "MOVEC", + "segmentId": "motion_3", + "joints": [ + 0.4, + 0, + -0.333333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 11, + "time": 0.72, + "motion": "MOVEC", + "segmentId": "motion_3", + "joints": [ + 0.6, + 0, + -0.5, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 19, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/compile.json new file mode 100644 index 0000000..5e98362 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2PathEvents", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 7, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/controller.json new file mode 100644 index 0000000..f80f32e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/controller.json @@ -0,0 +1,1106 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "generated_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/io.json new file mode 100644 index 0000000..2d8957a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_40_PathEvents-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/motion-queue.json new file mode 100644 index 0000000..7fbb840 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/motion-queue.json @@ -0,0 +1,731 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "generated_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "generated_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "generated_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p_home", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_pick", + "motion": "MOVEJ", + "target": { + "joints": [ + 0.20000000169966334, + -0.3500000029744108, + 0.4500000038242425, + 0.10000000084983167, + -0.20000000169966334, + 0.300000002549495 + ], + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + { + "id": "p_place", + "motion": "MOVEJ", + "target": { + "joints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.1500000012747475, + -0.4000000033993267 + ], + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "before", + "pointId": "p_pick", + "kind": "io", + "sourceMap": { + "line": 17, + "column": 25 + }, + "data": { + "statement": "io . do [ 10 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 703, + "line": 17, + "column": 25 + }, + "end": { + "offset": 705, + "line": 17, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 705, + "line": 17, + "column": 27 + }, + "end": { + "offset": 706, + "line": 17, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 706, + "line": 17, + "column": 28 + }, + "end": { + "offset": 708, + "line": 17, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 708, + "line": 17, + "column": 30 + }, + "end": { + "offset": 709, + "line": 17, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 709, + "line": 17, + "column": 31 + }, + "end": { + "offset": 711, + "line": 17, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 711, + "line": 17, + "column": 33 + }, + "end": { + "offset": 712, + "line": 17, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 713, + "line": 17, + "column": 35 + }, + "end": { + "offset": 714, + "line": 17, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 715, + "line": 17, + "column": 37 + }, + "end": { + "offset": 719, + "line": 17, + "column": 41 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "p_pick", + "kind": "wait", + "sourceMap": { + "line": 19, + "column": 24 + }, + "data": { + "statement": "wait io . di [ 10 ] == true timeout 2 s on_timeout alarm \"pick sensor timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 780, + "line": 19, + "column": 24 + }, + "end": { + "offset": 784, + "line": 19, + "column": 28 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 785, + "line": 19, + "column": 29 + }, + "end": { + "offset": 787, + "line": 19, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 787, + "line": 19, + "column": 31 + }, + "end": { + "offset": 788, + "line": 19, + "column": 32 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 788, + "line": 19, + "column": 32 + }, + "end": { + "offset": 790, + "line": 19, + "column": 34 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 790, + "line": 19, + "column": 34 + }, + "end": { + "offset": 791, + "line": 19, + "column": 35 + } + } + }, + { + "kind": "number", + "raw": "10", + "value": 10, + "range": { + "start": { + "offset": 791, + "line": 19, + "column": 35 + }, + "end": { + "offset": 793, + "line": 19, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 793, + "line": 19, + "column": 37 + }, + "end": { + "offset": 794, + "line": 19, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 795, + "line": 19, + "column": 39 + }, + "end": { + "offset": 797, + "line": 19, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 798, + "line": 19, + "column": 42 + }, + "end": { + "offset": 802, + "line": 19, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 803, + "line": 19, + "column": 47 + }, + "end": { + "offset": 810, + "line": 19, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 811, + "line": 19, + "column": 55 + }, + "end": { + "offset": 814, + "line": 19, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 815, + "line": 19, + "column": 59 + }, + "end": { + "offset": 825, + "line": 19, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 826, + "line": 19, + "column": 70 + }, + "end": { + "offset": 831, + "line": 19, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"pick sensor timeout\"", + "value": "pick sensor timeout", + "range": { + "start": { + "offset": 832, + "line": 19, + "column": 76 + }, + "end": { + "offset": 853, + "line": 19, + "column": 97 + } + } + } + ] + } + }, + { + "id": "event_2", + "timing": "at", + "pointId": "p_place", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 21, + "column": 37 + }, + "data": { + "statement": "pulse io . do [ 11 ] duration 100 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 929, + "line": 21, + "column": 37 + }, + "end": { + "offset": 934, + "line": 21, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 935, + "line": 21, + "column": 43 + }, + "end": { + "offset": 937, + "line": 21, + "column": 45 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 937, + "line": 21, + "column": 45 + }, + "end": { + "offset": 938, + "line": 21, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 938, + "line": 21, + "column": 46 + }, + "end": { + "offset": 940, + "line": 21, + "column": 48 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 940, + "line": 21, + "column": 48 + }, + "end": { + "offset": 941, + "line": 21, + "column": 49 + } + } + }, + { + "kind": "number", + "raw": "11", + "value": 11, + "range": { + "start": { + "offset": 941, + "line": 21, + "column": 49 + }, + "end": { + "offset": 943, + "line": 21, + "column": 51 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 943, + "line": 21, + "column": 51 + }, + "end": { + "offset": 944, + "line": 21, + "column": 52 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 945, + "line": 21, + "column": 53 + }, + "end": { + "offset": 953, + "line": 21, + "column": 61 + } + } + }, + { + "kind": "number", + "raw": "100 ms", + "value": 100, + "range": { + "start": { + "offset": 954, + "line": 21, + "column": 62 + }, + "end": { + "offset": 960, + "line": 21, + "column": 68 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.1 + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "cad_curve", + "id": "edge_032", + "sample_distance": 0.005 + } + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/post-report.json new file mode 100644 index 0000000..1799726 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2PathEvents.mod", + "W2PathEvents.ls", + "W2PathEvents.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/trace.json new file mode 100644 index 0000000..74a552c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2PathEvents", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2PathEvents" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/trajectory.json new file mode 100644 index 0000000..2675ba8 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_40_PathEvents/trajectory.json @@ -0,0 +1,419 @@ +{ + "sampleCount": 12, + "duration": 0.72, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + -0.3500000029744108, + -0.2500000021245792, + 0.3500000029744108, + -0.2500000021245792, + 0.15000000127474747, + -0.4000000033993266 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p_home", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p_home", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p_home", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p_home", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 16, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p_pick", + "targetId": "pick", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p_pick", + "targetId": "pick", + "joints": [ + 0.066667, + -0.116667, + 0.15, + 0.033333, + -0.066667, + 0.1 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p_pick", + "targetId": "pick", + "joints": [ + 0.133333, + -0.233333, + 0.3, + 0.066667, + -0.133333, + 0.2 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p_pick", + "targetId": "pick", + "joints": [ + 0.2, + -0.35, + 0.45, + 0.1, + -0.2, + 0.3 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 18, + "column": 18 + }, + "diagnostics": [] + }, + { + "index": 8, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p_place", + "targetId": "place", + "joints": [ + 0.2, + -0.35, + 0.45, + 0.1, + -0.2, + 0.3 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 9, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p_place", + "targetId": "place", + "joints": [ + 0.016667, + -0.316667, + 0.416667, + -0.016667, + -0.083333, + 0.066667 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 10, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p_place", + "targetId": "place", + "joints": [ + -0.166667, + -0.283333, + 0.383333, + -0.133333, + 0.033333, + -0.166667 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 11, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p_place", + "targetId": "place", + "joints": [ + -0.35, + -0.25, + 0.35, + -0.25, + 0.15, + -0.4 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 20, + "column": 19 + }, + "diagnostics": [] + } + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/compile.json new file mode 100644 index 0000000..4ad1d93 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2OperationProcess", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/controller.json new file mode 100644 index 0000000..6520e77 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/controller.json @@ -0,0 +1,500 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "completed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "op_path" + ], + "operationIds": [ + "pick_op" + ], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/io.json new file mode 100644 index 0000000..67ae792 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_50_OperationProcess-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/motion-queue.json new file mode 100644 index 0000000..6b8ce58 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/motion-queue.json @@ -0,0 +1,123 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "start_action", + "statement": "io . do [ 1 ] = true", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "op_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "op_path", + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "sourceMap": { + "line": 24, + "column": 5 + } + }, + "request": { + "pathId": "op_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "action", + "status": "done", + "source": { + "kind": "action", + "operationId": "pick_op", + "actionKind": "end_action", + "statement": "io . do [ 1 ] = false", + "sourceMap": { + "line": 21, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [] + } + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/post-report.json new file mode 100644 index 0000000..b22568b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2OperationProcess.mod", + "W2OperationProcess.ls", + "W2OperationProcess.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/trace.json new file mode 100644 index 0000000..e16ed9a --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/trace.json @@ -0,0 +1,72 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2OperationProcess", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2OperationProcess" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/trajectory.json new file mode 100644 index 0000000..7f629e0 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_50_OperationProcess/trajectory.json @@ -0,0 +1,155 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + } + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/compile.json new file mode 100644 index 0000000..a051026 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2IOWaitPulse", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 12, + "kdlMotionRequests": 0, + "kdlPathRequests": 1, + "symbolCount": 5, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/controller.json new file mode 100644 index 0000000..63159c3 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/controller.json @@ -0,0 +1,1139 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 10, + "callStack": [ + { + "procedure": "main", + "pc": 10 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:3": 0, + "$wait:main:4": 0, + "$wait:main:5": 0.1, + "$wait:main:6": 0.1, + "$wait:main:7": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "io_path" + ], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/io.json new file mode 100644 index 0000000..20e3541 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/io.json @@ -0,0 +1,253 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75, + "io.do[1]": true, + "io.ao[1]": 0.75, + "io.go[1]": 3, + "io.do[2]": true + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + }, + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + }, + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + }, + { + "id": 13, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 14, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 15, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_60_IOWaitPulse-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json new file mode 100644 index 0000000..f9168f2 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/motion-queue.json @@ -0,0 +1,279 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "io_path", + "instruction": { + "kind": "RUN_PATH", + "pathId": "io_path", + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "sourceMap": { + "line": 21, + "column": 5 + } + }, + "request": { + "pathId": "io_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "p0", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.35000000000000003 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 8, + "column": 14 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "at", + "pointId": "p0", + "distance": 0.01, + "kind": "pulse", + "sourceMap": { + "line": 9, + "column": 35 + }, + "data": { + "statement": "pulse io . do [ 20 ] duration 50 + 50 ms", + "tokens": [ + { + "kind": "keyword", + "raw": "pulse", + "value": "pulse", + "range": { + "start": { + "offset": 286, + "line": 9, + "column": 35 + }, + "end": { + "offset": 291, + "line": 9, + "column": 40 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 292, + "line": 9, + "column": 41 + }, + "end": { + "offset": 294, + "line": 9, + "column": 43 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 294, + "line": 9, + "column": 43 + }, + "end": { + "offset": 295, + "line": 9, + "column": 44 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 295, + "line": 9, + "column": 44 + }, + "end": { + "offset": 297, + "line": 9, + "column": 46 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 297, + "line": 9, + "column": 46 + }, + "end": { + "offset": 298, + "line": 9, + "column": 47 + } + } + }, + { + "kind": "number", + "raw": "20", + "value": 20, + "range": { + "start": { + "offset": 298, + "line": 9, + "column": 47 + }, + "end": { + "offset": 300, + "line": 9, + "column": 49 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 300, + "line": 9, + "column": 49 + }, + "end": { + "offset": 301, + "line": 9, + "column": 50 + } + } + }, + { + "kind": "identifier", + "raw": "duration", + "value": "duration", + "range": { + "start": { + "offset": 302, + "line": 9, + "column": 51 + }, + "end": { + "offset": 310, + "line": 9, + "column": 59 + } + } + }, + { + "kind": "number", + "raw": "50", + "value": 50, + "range": { + "start": { + "offset": 311, + "line": 9, + "column": 60 + }, + "end": { + "offset": 313, + "line": 9, + "column": 62 + } + } + }, + { + "kind": "operator", + "raw": "+", + "value": "+", + "range": { + "start": { + "offset": 314, + "line": 9, + "column": 63 + }, + "end": { + "offset": 315, + "line": 9, + "column": 64 + } + } + }, + { + "kind": "number", + "raw": "50 ms", + "value": 50, + "range": { + "start": { + "offset": 316, + "line": 9, + "column": 65 + }, + "end": { + "offset": 321, + "line": 9, + "column": 70 + } + }, + "unit": { + "raw": "ms", + "kind": "time", + "siUnit": "s", + "normalizedValue": 0.05 + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/post-report.json new file mode 100644 index 0000000..ae4ab05 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2IOWaitPulse.mod", + "W2IOWaitPulse.ls", + "W2IOWaitPulse.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_PATH is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/trace.json new file mode 100644 index 0000000..41e0322 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/trace.json @@ -0,0 +1,493 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2IOWaitPulse", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2IOWaitPulse" + }, + "id": 1 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 0, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 10, + "time": 0, + "writer": "program", + "target": { + "domain": "do", + "index": 1, + "raw": "io.do[1]" + }, + "value": true, + "kind": "write" + } + ] + }, + "id": 2 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:12:5", + "sourceMap": { + "line": 12, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 1, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 11, + "time": 0, + "writer": "program", + "target": { + "domain": "ao", + "index": 1, + "raw": "io.ao[1]" + }, + "value": 0.75, + "kind": "write" + } + ] + }, + "id": 5 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 2, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 12, + "time": 0, + "writer": "program", + "target": { + "domain": "go", + "index": 1, + "raw": "io.go[1]" + }, + "value": 3, + "kind": "write" + } + ] + }, + "id": 7 + }, + { + "time": 0, + "kind": "io", + "procedure": "main", + "pc": 3, + "instructionKind": "IO_WRITE", + "source": { + "kind": "IO_WRITE", + "id": "main:IO_WRITE:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 3, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 9 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:15:5", + "sourceMap": { + "line": 15, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 4, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 11 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:16:5", + "sourceMap": { + "line": 16, + "column": 5 + }, + "procedureId": "main" + }, + "id": 12 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 13 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 5, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 14 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 15 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 6, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 16 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 17 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 7, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "satisfied", + "elapsed": 0 + }, + "id": 18 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:19:5", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "main" + }, + "id": 19 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 8, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "result": [ + { + "id": 16, + "time": 0.1, + "writer": "program", + "target": { + "domain": "do", + "index": 2, + "raw": "io.do[2]" + }, + "value": true, + "kind": "pulse_set" + } + ] + }, + "id": 20 + }, + { + "time": 0.1, + "kind": "io", + "procedure": "main", + "pc": 9, + "instructionKind": "PULSE", + "source": { + "kind": "PULSE", + "id": "main:PULSE:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "id": 21 + }, + { + "time": 0.1, + "kind": "motion", + "procedure": "main", + "pc": 9, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 22 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 10, + "instructionKind": "RUN_PATH", + "source": { + "kind": "RUN_PATH", + "id": "main:RUN_PATH:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 23 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/trajectory.json new file mode 100644 index 0000000..7f629e0 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_60_IOWaitPulse/trajectory.json @@ -0,0 +1,155 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "p0", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 8, + "column": 14 + }, + "diagnostics": [] + } + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/compile.json new file mode 100644 index 0000000..28b7c9c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ControlFlow", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/controller.json new file mode 100644 index 0000000..5c3d7e6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/controller.json @@ -0,0 +1,610 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 8, + "callStack": [ + { + "procedure": "main", + "pc": 8 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + }, + { + "id": "else:0", + "variables": { + "i": 1 + } + }, + { + "id": "for:3", + "variables": {} + }, + { + "id": "switch:5", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "NOT_READY", + "message": "not ready", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "time": 0 + }, + { + "id": "MODE1", + "message": "mode 1", + "severity": "error", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } + ], + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/io.json new file mode 100644 index 0000000..67c50b6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_70_ControlFlow-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/post-report.json new file mode 100644 index 0000000..4e58295 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/post-report.json @@ -0,0 +1,153 @@ +{ + "filenames": [ + "W2ControlFlow.mod", + "W2ControlFlow.ls", + "W2ControlFlow.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_WHILE is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_FOR is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_SWITCH is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "BREAK is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/trace.json new file mode 100644 index 0000000..f70bed5 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/trace.json @@ -0,0 +1,253 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ControlFlow", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ControlFlow" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 1, + "message": "not ready", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "NOT_READY", + "severity": "error" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:16:7", + "sourceMap": { + "line": 16, + "column": 7 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "EXEC_WHILE", + "source": { + "kind": "EXEC_WHILE", + "id": "main:EXEC_WHILE:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 4, + "instructionKind": "EXEC_FOR", + "source": { + "kind": "EXEC_FOR", + "id": "main:EXEC_FOR:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:23:7", + "sourceMap": { + "line": 23, + "column": 7 + }, + "procedureId": "main" + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 6, + "instructionKind": "EXEC_SWITCH", + "source": { + "kind": "EXEC_SWITCH", + "id": "main:EXEC_SWITCH:25:5", + "sourceMap": { + "line": 25, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "diagnostic", + "procedure": "main", + "pc": 7, + "instructionKind": "BREAK", + "source": { + "kind": "BREAK", + "id": "main:BREAK:28:9", + "sourceMap": { + "line": 28, + "column": 9 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "info", + "code": "VC_BREAK", + "message": "BREAK reached", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + "id": 11 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 7, + "message": "mode 1", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "MODE1", + "severity": "error" + }, + "id": 12 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 8, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:27:9", + "sourceMap": { + "line": 27, + "column": 9 + }, + "procedureId": "main" + }, + "id": 13 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/trajectory.json new file mode 100644 index 0000000..4315263 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_70_ControlFlow/trajectory.json @@ -0,0 +1,22 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/compile.json new file mode 100644 index 0000000..e582d30 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ProcFuncCall", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 9, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 8, + "procedureCount": 3, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/controller.json new file mode 100644 index 0000000..3db47f6 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/controller.json @@ -0,0 +1,523 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } + ], + "currentSource": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "completed": true + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/io.json new file mode 100644 index 0000000..222cd29 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_80_ProcFuncCall-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/post-report.json new file mode 100644 index 0000000..44ff58d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/post-report.json @@ -0,0 +1,117 @@ +{ + "filenames": [ + "W2ProcFuncCall.mod", + "W2ProcFuncCall.ls", + "W2ProcFuncCall.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "CALL is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "EXEC_IF is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RETURN is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/trace.json new file mode 100644 index 0000000..fd70e4b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/trace.json @@ -0,0 +1,202 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ProcFuncCall", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ProcFuncCall" + }, + "id": 1 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:17:5", + "sourceMap": { + "line": 17, + "column": 5 + }, + "procedureId": "main" + }, + "id": 2 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 3 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:18:5", + "sourceMap": { + "line": 18, + "column": 5 + }, + "procedureId": "main" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 0, + "instructionKind": "CALL", + "message": "Call read_part", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 19, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "read_part", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "read_part:RAW_STATEMENT:8:5", + "sourceMap": { + "line": 8, + "column": 5 + }, + "procedureId": "read_part" + }, + "id": 6 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 3, + "message": "Execution exceeded 3 steps", + "source": { + "kind": "CALL", + "id": "main:CALL:20:5", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 0, + "instructionKind": "CALL", + "message": "Call increment_retry", + "source": { + "kind": "CALL", + "sourceMap": { + "line": 20, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 8 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "increment_retry", + "pc": 1, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "increment_retry:RAW_STATEMENT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "increment_retry" + }, + "id": 9 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "EXEC_IF", + "source": { + "kind": "EXEC_IF", + "id": "main:EXEC_IF:21:5", + "sourceMap": { + "line": 21, + "column": 5 + }, + "procedureId": "main" + }, + "id": 10 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 5, + "instructionKind": "RETURN", + "source": { + "kind": "RETURN", + "id": "main:RETURN:24:5", + "sourceMap": { + "line": 24, + "column": 5 + }, + "procedureId": "main" + }, + "id": 11 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/trajectory.json new file mode 100644 index 0000000..4315263 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_80_ProcFuncCall/trajectory.json @@ -0,0 +1,22 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/compile.json new file mode 100644 index 0000000..c8515aa --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2ExceptionAlarm", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 5, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 6, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/controller.json new file mode 100644 index 0000000..64d6d9b --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/controller.json @@ -0,0 +1,606 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + } + ] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 5, + "callStack": [ + { + "procedure": "main", + "pc": 5 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "START", + "message": "start", + "severity": "info", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/io.json new file mode 100644 index 0000000..f36d75c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_90_ExceptionAlarm-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json new file mode 100644 index 0000000..f6cb95e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/motion-queue.json @@ -0,0 +1,82 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "sourceMap": { + "line": 15, + "column": 7 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_1", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.3 + }, + "zone": { + "kind": "fine" + }, + "sourceMap": { + "line": 15, + "column": 7 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/post-report.json new file mode 100644 index 0000000..6c7c328 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/post-report.json @@ -0,0 +1,81 @@ +{ + "filenames": [ + "W2ExceptionAlarm.mod", + "W2ExceptionAlarm.ls", + "W2ExceptionAlarm.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "ALARM is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RAW_STATEMENT is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "UNSUPPORTED_RUNTIME is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/trace.json new file mode 100644 index 0000000..a2c2108 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/trace.json @@ -0,0 +1,201 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2ExceptionAlarm", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2ExceptionAlarm" + }, + "id": 1 + }, + { + "time": 0, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "start", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "START", + "severity": "info" + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "ALARM", + "source": { + "kind": "ALARM", + "id": "main:ALARM:13:5", + "sourceMap": { + "line": 13, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RAW_STATEMENT", + "source": { + "kind": "RAW_STATEMENT", + "id": "main:RAW_STATEMENT:14:5", + "sourceMap": { + "line": 14, + "column": 5 + }, + "procedureId": "main" + }, + "id": 5 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 6 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:15:7", + "sourceMap": { + "line": 15, + "column": 7 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 4, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:22:5", + "sourceMap": { + "line": 22, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "enable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 22, + "column": 5 + } + }, + "id": 8 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "instructionKind": "UNSUPPORTED_RUNTIME", + "source": { + "kind": "UNSUPPORTED_RUNTIME", + "id": "main:UNSUPPORTED_RUNTIME:23:5", + "sourceMap": { + "line": 23, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "warning", + "code": "VC_UNSUPPORTED_RUNTIME", + "message": "disable interrupt is parsed but not executable in P0", + "sourceMap": { + "line": 23, + "column": 5 + } + }, + "id": 9 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 5, + "message": "Execution exceeded 3 steps", + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 3 steps" + }, + "id": 10 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json new file mode 100644 index 0000000..5bcd27e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_90_ExceptionAlarm/trajectory.json @@ -0,0 +1,151 @@ +{ + "sampleCount": 4, + "duration": 0.24, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 15, + "column": 7 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 15, + "column": 7 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 15, + "column": 7 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "motion_1", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 15, + "column": 7 + }, + "diagnostics": [] + } + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/compile.json new file mode 100644 index 0000000..ea23e7d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2FullSpecExample", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 14, + "kdlMotionRequests": 1, + "kdlPathRequests": 2, + "symbolCount": 13, + "procedureCount": 1, + "pathCount": 2, + "operationCount": 2 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/controller.json new file mode 100644 index 0000000..d938f8e --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/controller.json @@ -0,0 +1,1983 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [ + { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + } + ] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "executed", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "stopped", + "result": "completed", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "paused", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 3, + "callStack": [ + { + "procedure": "main", + "pc": 3 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": {} + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } + ], + "completed": true + }, + "motion": { + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] + }, + "bridge": { + "pathIds": [ + "pick_path", + "place_path" + ], + "operationIds": [ + "pick_op", + "place_op" + ], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/io.json new file mode 100644 index 0000000..8b73019 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/io.json @@ -0,0 +1,201 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": true, + "io.di[6]": false, + "io.di[7]": true, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + }, + { + "id": 10, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "previous": false, + "value": true, + "kind": "script" + }, + { + "id": 11, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "previous": true, + "value": false, + "kind": "script" + }, + { + "id": 12, + "time": 0.1, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "previous": false, + "value": true, + "kind": "script" + } + ], + "diagnostics": [], + "scripts": [ + { + "name": "W2_99_FullSpecExample-edge-script", + "nextIndex": 3, + "elapsed": 0.1, + "steps": [ + { + "delay": 0.02, + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": true + }, + { + "delay": 0.04, + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": false + }, + { + "delay": 0.06, + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": true + } + ], + "done": true + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/motion-queue.json new file mode 100644 index 0000000..338f793 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/motion-queue.json @@ -0,0 +1,1521 @@ +{ + "items": [ + { + "id": "mq_1", + "kind": "path", + "source": { + "kind": "path", + "pathId": "pick_path", + "operationId": "pick_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "pick_path", + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "sourceMap": { + "line": 76, + "column": 5 + } + }, + "request": { + "pathId": "pick_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "approach", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "targetId": "home", + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "above_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "at_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.3 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + { + "id": "leave_pick", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.5, + 0.12, + 0.4 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "pick" + }, + "targetId": "pick", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "source": { + "type": "generated_example", + "id": "pick_path" + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_pick", + "kind": "io", + "sourceMap": { + "line": 42, + "column": 25 + }, + "data": { + "statement": "io . do [ 1 ] = true", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1160, + "line": 42, + "column": 25 + }, + "end": { + "offset": 1162, + "line": 42, + "column": 27 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1162, + "line": 42, + "column": 27 + }, + "end": { + "offset": 1163, + "line": 42, + "column": 28 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1163, + "line": 42, + "column": 28 + }, + "end": { + "offset": 1165, + "line": 42, + "column": 30 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1165, + "line": 42, + "column": 30 + }, + "end": { + "offset": 1166, + "line": 42, + "column": 31 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1166, + "line": 42, + "column": 31 + }, + "end": { + "offset": 1167, + "line": 42, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1167, + "line": 42, + "column": 32 + }, + "end": { + "offset": 1168, + "line": 42, + "column": 33 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1169, + "line": 42, + "column": 34 + }, + "end": { + "offset": 1170, + "line": 42, + "column": 35 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1171, + "line": 42, + "column": 36 + }, + "end": { + "offset": 1175, + "line": 42, + "column": 40 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_pick", + "kind": "wait", + "sourceMap": { + "line": 43, + "column": 25 + }, + "data": { + "statement": "wait io . di [ 1 ] == true timeout 2 s on_timeout alarm \"Clamp close timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1200, + "line": 43, + "column": 25 + }, + "end": { + "offset": 1204, + "line": 43, + "column": 29 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1205, + "line": 43, + "column": 30 + }, + "end": { + "offset": 1207, + "line": 43, + "column": 32 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1207, + "line": 43, + "column": 32 + }, + "end": { + "offset": 1208, + "line": 43, + "column": 33 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1208, + "line": 43, + "column": 33 + }, + "end": { + "offset": 1210, + "line": 43, + "column": 35 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1210, + "line": 43, + "column": 35 + }, + "end": { + "offset": 1211, + "line": 43, + "column": 36 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1211, + "line": 43, + "column": 36 + }, + "end": { + "offset": 1212, + "line": 43, + "column": 37 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1212, + "line": 43, + "column": 37 + }, + "end": { + "offset": 1213, + "line": 43, + "column": 38 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1214, + "line": 43, + "column": 39 + }, + "end": { + "offset": 1216, + "line": 43, + "column": 41 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1217, + "line": 43, + "column": 42 + }, + "end": { + "offset": 1221, + "line": 43, + "column": 46 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1222, + "line": 43, + "column": 47 + }, + "end": { + "offset": 1229, + "line": 43, + "column": 54 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1230, + "line": 43, + "column": 55 + }, + "end": { + "offset": 1233, + "line": 43, + "column": 58 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1234, + "line": 43, + "column": 59 + }, + "end": { + "offset": 1244, + "line": 43, + "column": 69 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1245, + "line": 43, + "column": 70 + }, + "end": { + "offset": 1250, + "line": 43, + "column": 75 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp close timeout\"", + "value": "Clamp close timeout", + "range": { + "start": { + "offset": 1251, + "line": 43, + "column": 76 + }, + "end": { + "offset": 1272, + "line": 43, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02, + "source": { + "type": "generated_example", + "id": "pick_path" + } + }, + "status": "queued" + }, + { + "id": "mq_2", + "kind": "path", + "source": { + "kind": "path", + "pathId": "place_path", + "operationId": "place_op", + "instruction": { + "kind": "RUN_PATH", + "pathId": "place_path", + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "sourceMap": { + "line": 77, + "column": 5 + } + }, + "request": { + "pathId": "place_path", + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "segments": [ + { + "id": "above_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + } + }, + { + "id": "at_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.32 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.3297802811774664e-17, + 4.3297802811774664e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + } + }, + { + "id": "leave_place", + "motion": "MOVEL", + "target": { + "pose": { + "position": [ + 0.65, + -0.1, + 0.42000000000000004 + ], + "quaternion": [ + 0.7071067811865476, + 0.7071067811865475, + 4.329780281177465e-17, + 4.329780281177465e-17 + ] + }, + "config": { + "shoulder": 0, + "elbow": 0, + "wrist": 1 + }, + "tool": { + "id": "gripper" + }, + "frame": { + "id": "fixture" + }, + "id": "place" + }, + "targetId": "place", + "speed": { + "kind": "linear", + "velocity": 0.18 + }, + "zone": { + "kind": "distance", + "value": 0.01 + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + } + } + ], + "events": [ + { + "id": "event_0", + "timing": "after", + "pointId": "at_place", + "kind": "io", + "sourceMap": { + "line": 55, + "column": 26 + }, + "data": { + "statement": "io . do [ 1 ] = false", + "tokens": [ + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1565, + "line": 55, + "column": 26 + }, + "end": { + "offset": 1567, + "line": 55, + "column": 28 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1567, + "line": 55, + "column": 28 + }, + "end": { + "offset": 1568, + "line": 55, + "column": 29 + } + } + }, + { + "kind": "identifier", + "raw": "do", + "value": "do", + "range": { + "start": { + "offset": 1568, + "line": 55, + "column": 29 + }, + "end": { + "offset": 1570, + "line": 55, + "column": 31 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1570, + "line": 55, + "column": 31 + }, + "end": { + "offset": 1571, + "line": 55, + "column": 32 + } + } + }, + { + "kind": "number", + "raw": "1", + "value": 1, + "range": { + "start": { + "offset": 1571, + "line": 55, + "column": 32 + }, + "end": { + "offset": 1572, + "line": 55, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1572, + "line": 55, + "column": 33 + }, + "end": { + "offset": 1573, + "line": 55, + "column": 34 + } + } + }, + { + "kind": "operator", + "raw": "=", + "value": "=", + "range": { + "start": { + "offset": 1574, + "line": 55, + "column": 35 + }, + "end": { + "offset": 1575, + "line": 55, + "column": 36 + } + } + }, + { + "kind": "keyword", + "raw": "false", + "value": "false", + "range": { + "start": { + "offset": 1576, + "line": 55, + "column": 37 + }, + "end": { + "offset": 1581, + "line": 55, + "column": 42 + } + } + } + ] + } + }, + { + "id": "event_1", + "timing": "after", + "pointId": "at_place", + "kind": "wait", + "sourceMap": { + "line": 56, + "column": 26 + }, + "data": { + "statement": "wait io . di [ 2 ] == true timeout 2 s on_timeout alarm \"Clamp open timeout\"", + "tokens": [ + { + "kind": "keyword", + "raw": "wait", + "value": "wait", + "range": { + "start": { + "offset": 1607, + "line": 56, + "column": 26 + }, + "end": { + "offset": 1611, + "line": 56, + "column": 30 + } + } + }, + { + "kind": "keyword", + "raw": "io", + "value": "io", + "range": { + "start": { + "offset": 1612, + "line": 56, + "column": 31 + }, + "end": { + "offset": 1614, + "line": 56, + "column": 33 + } + } + }, + { + "kind": "punctuation", + "raw": ".", + "value": ".", + "range": { + "start": { + "offset": 1614, + "line": 56, + "column": 33 + }, + "end": { + "offset": 1615, + "line": 56, + "column": 34 + } + } + }, + { + "kind": "identifier", + "raw": "di", + "value": "di", + "range": { + "start": { + "offset": 1615, + "line": 56, + "column": 34 + }, + "end": { + "offset": 1617, + "line": 56, + "column": 36 + } + } + }, + { + "kind": "punctuation", + "raw": "[", + "value": "[", + "range": { + "start": { + "offset": 1617, + "line": 56, + "column": 36 + }, + "end": { + "offset": 1618, + "line": 56, + "column": 37 + } + } + }, + { + "kind": "number", + "raw": "2", + "value": 2, + "range": { + "start": { + "offset": 1618, + "line": 56, + "column": 37 + }, + "end": { + "offset": 1619, + "line": 56, + "column": 38 + } + } + }, + { + "kind": "punctuation", + "raw": "]", + "value": "]", + "range": { + "start": { + "offset": 1619, + "line": 56, + "column": 38 + }, + "end": { + "offset": 1620, + "line": 56, + "column": 39 + } + } + }, + { + "kind": "operator", + "raw": "==", + "value": "==", + "range": { + "start": { + "offset": 1621, + "line": 56, + "column": 40 + }, + "end": { + "offset": 1623, + "line": 56, + "column": 42 + } + } + }, + { + "kind": "keyword", + "raw": "true", + "value": "true", + "range": { + "start": { + "offset": 1624, + "line": 56, + "column": 43 + }, + "end": { + "offset": 1628, + "line": 56, + "column": 47 + } + } + }, + { + "kind": "identifier", + "raw": "timeout", + "value": "timeout", + "range": { + "start": { + "offset": 1629, + "line": 56, + "column": 48 + }, + "end": { + "offset": 1636, + "line": 56, + "column": 55 + } + } + }, + { + "kind": "number", + "raw": "2 s", + "value": 2, + "range": { + "start": { + "offset": 1637, + "line": 56, + "column": 56 + }, + "end": { + "offset": 1640, + "line": 56, + "column": 59 + } + }, + "unit": { + "raw": "s", + "kind": "time", + "siUnit": "s", + "normalizedValue": 2 + } + }, + { + "kind": "identifier", + "raw": "on_timeout", + "value": "on_timeout", + "range": { + "start": { + "offset": 1641, + "line": 56, + "column": 60 + }, + "end": { + "offset": 1651, + "line": 56, + "column": 70 + } + } + }, + { + "kind": "keyword", + "raw": "alarm", + "value": "alarm", + "range": { + "start": { + "offset": 1652, + "line": 56, + "column": 71 + }, + "end": { + "offset": 1657, + "line": 56, + "column": 76 + } + } + }, + { + "kind": "string", + "raw": "\"Clamp open timeout\"", + "value": "Clamp open timeout", + "range": { + "start": { + "offset": 1658, + "line": 56, + "column": 77 + }, + "end": { + "offset": 1678, + "line": 56, + "column": 97 + } + } + } + ] + } + } + ], + "sampleTime": 0.02 + }, + "status": "queued" + }, + { + "id": "mq_3", + "kind": "motion", + "source": { + "kind": "instruction", + "instruction": { + "kind": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "sourceMap": { + "line": 78, + "column": 5 + } + }, + "request": { + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "sampleTime": 0.02, + "segments": [ + { + "id": "motion_3", + "motion": "MOVEJ", + "target": { + "joints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "id": "home" + }, + "speed": { + "kind": "joint_percent", + "value": 0.55 + }, + "zone": { + "kind": "fine" + }, + "tool": { + "position": [ + 0, + 0, + 0.12 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "frame": { + "position": [ + 0.8, + 0, + 0.2 + ], + "quaternion": [ + 0, + 0, + 0, + 1 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + } + } + ] + }, + "status": "queued" + } + ], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/post-report.json new file mode 100644 index 0000000..0db5c5f --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/post-report.json @@ -0,0 +1,45 @@ +{ + "filenames": [ + "W2FullSpecExample.mod", + "W2FullSpecExample.ls", + "W2FullSpecExample.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/trace.json new file mode 100644 index 0000000..1fca576 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/trace.json @@ -0,0 +1,155 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2FullSpecExample", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2FullSpecExample" + }, + "id": 1 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 0, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 2 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:76:5", + "sourceMap": { + "line": 76, + "column": 5 + }, + "procedureId": "main" + }, + "id": 3 + }, + { + "time": 0, + "kind": "diagnostic", + "procedure": "main", + "pc": 1, + "message": "Execution exceeded 1 steps", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "diagnostic": { + "severity": "error", + "code": "VC_STEP_LIMIT_EXCEEDED", + "message": "Execution exceeded 1 steps" + }, + "id": 4 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 1, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 5 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 2, + "instructionKind": "RUN_OPERATION", + "source": { + "kind": "RUN_OPERATION", + "id": "main:RUN_OPERATION:77:5", + "sourceMap": { + "line": 77, + "column": 5 + }, + "procedureId": "main" + }, + "id": 6 + }, + { + "time": 0, + "kind": "motion", + "procedure": "main", + "pc": 2, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "queued": true + }, + "id": 7 + }, + { + "time": 0, + "kind": "instruction", + "procedure": "main", + "pc": 3, + "instructionKind": "MOVEJ", + "source": { + "kind": "MOVEJ", + "id": "main:MOVEJ:78:5", + "sourceMap": { + "line": 78, + "column": 5 + }, + "procedureId": "main" + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/trajectory.json new file mode 100644 index 0000000..d822aaf --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_99_FullSpecExample/trajectory.json @@ -0,0 +1,1075 @@ +{ + "sampleCount": 32, + "duration": 1.92, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + -0.3490658503988659, + 0.6981317007977318, + 0, + 0.5235987755982988, + 0 + ], + "frames": [ + { + "index": 0, + "time": 0, + "motion": "MOVEJ", + "segmentId": "approach", + "targetId": "home", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 1, + "time": 0.08, + "motion": "MOVEJ", + "segmentId": "approach", + "targetId": "home", + "joints": [ + 0, + -0.116355, + 0.232711, + 0, + 0.174533, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 2, + "time": 0.16, + "motion": "MOVEJ", + "segmentId": "approach", + "targetId": "home", + "joints": [ + 0, + -0.232711, + 0.465421, + 0, + 0.349066, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 3, + "time": 0.24, + "motion": "MOVEJ", + "segmentId": "approach", + "targetId": "home", + "joints": [ + 0, + -0.349066, + 0.698132, + 0, + 0.523599, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 39, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 4, + "time": 0, + "motion": "MOVEL", + "segmentId": "above_pick", + "targetId": "pick", + "joints": [ + 0, + -0.349066, + 0.698132, + 0, + 0.523599, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 5, + "time": 0.08, + "motion": "MOVEL", + "segmentId": "above_pick", + "targetId": "pick", + "joints": [ + 0.166667, + -0.192711, + 0.432088, + 0, + 0.349066, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 6, + "time": 0.16, + "motion": "MOVEL", + "segmentId": "above_pick", + "targetId": "pick", + "joints": [ + 0.333333, + -0.036355, + 0.166044, + 0, + 0.174533, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 7, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "above_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.1, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 40, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 8, + "time": 0, + "motion": "MOVEL", + "segmentId": "at_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.1, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 9, + "time": 0.08, + "motion": "MOVEL", + "segmentId": "at_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.133333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 10, + "time": 0.16, + "motion": "MOVEL", + "segmentId": "at_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 11, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "at_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.2, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 41, + "column": 19 + }, + "diagnostics": [] + }, + { + "index": 12, + "time": 0, + "motion": "MOVEL", + "segmentId": "leave_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.2, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 13, + "time": 0.08, + "motion": "MOVEL", + "segmentId": "leave_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.166667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 14, + "time": 0.16, + "motion": "MOVEL", + "segmentId": "leave_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.133333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 15, + "time": 0.24, + "motion": "MOVEL", + "segmentId": "leave_pick", + "targetId": "pick", + "joints": [ + 0.5, + 0.12, + -0.1, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 44, + "column": 22 + }, + "diagnostics": [] + }, + { + "index": 16, + "time": 0.96, + "motion": "MOVEL", + "segmentId": "above_place", + "targetId": "place", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 17, + "time": 1.04, + "motion": "MOVEL", + "segmentId": "above_place", + "targetId": "place", + "joints": [ + 0.216667, + -0.033333, + -0.026667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 18, + "time": 1.12, + "motion": "MOVEL", + "segmentId": "above_place", + "targetId": "place", + "joints": [ + 0.433333, + -0.066667, + -0.053333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 19, + "time": 1.2, + "motion": "MOVEL", + "segmentId": "above_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.08, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 53, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 20, + "time": 0.96, + "motion": "MOVEL", + "segmentId": "at_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.08, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 21, + "time": 1.04, + "motion": "MOVEL", + "segmentId": "at_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.113333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 22, + "time": 1.12, + "motion": "MOVEL", + "segmentId": "at_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.146667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 23, + "time": 1.2, + "motion": "MOVEL", + "segmentId": "at_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.18, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 54, + "column": 20 + }, + "diagnostics": [] + }, + { + "index": 24, + "time": 0.96, + "motion": "MOVEL", + "segmentId": "leave_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.18, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 25, + "time": 1.04, + "motion": "MOVEL", + "segmentId": "leave_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.146667, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 26, + "time": 1.12, + "motion": "MOVEL", + "segmentId": "leave_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.113333, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 27, + "time": 1.2, + "motion": "MOVEL", + "segmentId": "leave_place", + "targetId": "place", + "joints": [ + 0.65, + -0.1, + -0.08, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 57, + "column": 23 + }, + "diagnostics": [] + }, + { + "index": 28, + "time": 1.68, + "motion": "MOVEJ", + "segmentId": "motion_3", + "joints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "tcp": { + "position": [ + 0.374, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 29, + "time": 1.76, + "motion": "MOVEJ", + "segmentId": "motion_3", + "joints": [ + 0, + -0.116355, + 0.232711, + 0, + 0.174533, + 0 + ], + "tcp": { + "position": [ + 0.377333, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 30, + "time": 1.84, + "motion": "MOVEJ", + "segmentId": "motion_3", + "joints": [ + 0, + -0.232711, + 0.465421, + 0, + 0.349066, + 0 + ], + "tcp": { + "position": [ + 0.380667, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + }, + "diagnostics": [] + }, + { + "index": 31, + "time": 1.92, + "motion": "MOVEJ", + "segmentId": "motion_3", + "joints": [ + 0, + -0.349066, + 0.698132, + 0, + 0.523599, + 0 + ], + "tcp": { + "position": [ + 0.384, + 0, + 0.63 + ], + "quaternion": [ + 0, + 0.707107, + 0, + 0.707107 + ] + }, + "sourceMap": { + "line": 78, + "column": 5 + }, + "diagnostics": [] + } + ], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E10_ExpressionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E20_SemanticDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E30_MotionDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json new file mode 100644 index 0000000..9c97d4d --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/compile.json @@ -0,0 +1,11 @@ +{ + "parsed": false, + "semanticChecks": [], + "sourceMapEntries": 0, + "kdlMotionRequests": 0, + "kdlPathRequests": 0, + "symbolCount": 0, + "procedureCount": 0, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/post-report.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E40_ControlFlowDiagnostics/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/compile.json new file mode 100644 index 0000000..6d939b1 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2RuntimeTimeout", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 5, + "procedureCount": 2, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/controller.json new file mode 100644 index 0000000..ac88b82 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/controller.json @@ -0,0 +1,431 @@ +{ + "commands": [ + { + "command": "loadProgram", + "before": "unloaded", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "start", + "before": "stopped", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepInto", + "before": "paused", + "after": "paused", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "hold", + "before": "paused", + "after": "hold", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resume", + "before": "hold", + "after": "running", + "result": "blocked", + "diagnostics": [] + }, + { + "command": "stepMotion", + "before": "running", + "after": "running", + "result": "ok", + "diagnostics": [] + }, + { + "command": "stop", + "before": "running", + "after": "stopped", + "result": "ok", + "diagnostics": [] + }, + { + "command": "resetFault", + "before": "stopped", + "after": "stopped", + "result": "ok", + "diagnostics": [] + } + ], + "snapshot": { + "state": { + "state": "stopped", + "diagnostics": [] + }, + "runtime": { + "loaded": true, + "procedure": "main", + "pc": 1, + "callStack": [ + { + "procedure": "main", + "pc": 1 + } + ], + "scopeStack": [ + { + "id": "global", + "variables": { + "$wait:main:0": 0, + "$wait:main:1": 0.1 + } + }, + { + "id": "main", + "variables": {} + } + ], + "alarmQueue": [ + { + "id": "DI99 timeout", + "message": "DI99 timeout", + "severity": "warning", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "time": 0.1 + } + ], + "trace": [ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } + ], + "currentSource": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "completed": false + }, + "motion": { + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 + }, + "io": { + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] + }, + "bridge": { + "pathIds": [], + "operationIds": [], + "diagnostics": [] + } + } +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/io.json new file mode 100644 index 0000000..2fb8400 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/io.json @@ -0,0 +1,139 @@ +{ + "time": 0.1, + "image": { + "io.di[1]": true, + "io.di[2]": false, + "io.di[3]": true, + "io.di[4]": false, + "io.di[5]": false, + "io.di[6]": true, + "io.di[7]": false, + "io.di[10]": true, + "io.ai[2]": 0.75 + }, + "events": [ + { + "id": 1, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 1, + "raw": "io.di[1]" + }, + "value": true, + "kind": "script" + }, + { + "id": 2, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 2, + "raw": "io.di[2]" + }, + "value": false, + "kind": "script" + }, + { + "id": 3, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 3, + "raw": "io.di[3]" + }, + "value": true, + "kind": "script" + }, + { + "id": 4, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 4, + "raw": "io.di[4]" + }, + "value": false, + "kind": "script" + }, + { + "id": 5, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 5, + "raw": "io.di[5]" + }, + "value": false, + "kind": "script" + }, + { + "id": 6, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 6, + "raw": "io.di[6]" + }, + "value": true, + "kind": "script" + }, + { + "id": 7, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 7, + "raw": "io.di[7]" + }, + "value": false, + "kind": "script" + }, + { + "id": 8, + "time": 0, + "writer": "script", + "target": { + "domain": "di", + "index": 10, + "raw": "io.di[10]" + }, + "value": true, + "kind": "script" + }, + { + "id": 9, + "time": 0, + "writer": "script", + "target": { + "domain": "ai", + "index": 2, + "raw": "io.ai[2]" + }, + "value": 0.75, + "kind": "script" + } + ], + "diagnostics": [ + { + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + } + ], + "scripts": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json new file mode 100644 index 0000000..57085bb --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/motion-queue.json @@ -0,0 +1,5 @@ +{ + "items": [], + "activeIndex": 0, + "virtualTime": 0.1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json new file mode 100644 index 0000000..d9d6613 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/post-report.json @@ -0,0 +1,8 @@ +{ + "filenames": [ + "W2RuntimeTimeout.mod", + "W2RuntimeTimeout.ls", + "W2RuntimeTimeout.src" + ], + "report": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/roundtrip.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/trace.json new file mode 100644 index 0000000..fedfe64 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/trace.json @@ -0,0 +1,165 @@ +[ + { + "time": 0, + "kind": "load", + "procedure": "main", + "pc": 0, + "message": "Loaded W2RuntimeTimeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "moduleName": "W2RuntimeTimeout" + }, + "id": 1 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 2 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 3 + }, + { + "time": 0, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 4 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 0, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "timeout", + "elapsed": 0.1 + }, + "id": 5 + }, + { + "time": 0.1, + "kind": "alarm", + "procedure": "main", + "pc": 0, + "message": "DI99 timeout", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "alarmId": "DI99 timeout", + "severity": "warning" + }, + "id": 6 + }, + { + "time": 0.1, + "kind": "instruction", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:10:5", + "sourceMap": { + "line": 10, + "column": 5 + }, + "procedureId": "main" + }, + "id": 7 + }, + { + "time": 0.1, + "kind": "wait", + "procedure": "main", + "pc": 1, + "instructionKind": "WAIT", + "source": { + "kind": "WAIT", + "id": "main:WAIT:11:5", + "sourceMap": { + "line": 11, + "column": 5 + }, + "procedureId": "main" + }, + "data": { + "status": "waiting", + "elapsed": 0 + }, + "id": 8 + } +] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json new file mode 100644 index 0000000..4315263 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_E50_RuntimeTimeout/trajectory.json @@ -0,0 +1,22 @@ +{ + "sampleCount": 0, + "duration": 0, + "startJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "endJoints": [ + 0, + 0, + 0, + 0, + 0, + 0 + ], + "frames": [], + "diagnostics": [] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/compile.json new file mode 100644 index 0000000..4b5e199 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2BrandHints", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 1, + "kdlMotionRequests": 1, + "kdlPathRequests": 0, + "symbolCount": 7, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/post-report.json new file mode 100644 index 0000000..d8d1d95 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/post-report.json @@ -0,0 +1,45 @@ +{ + "filenames": [ + "W2BrandHints.mod", + "W2BrandHints.ls", + "W2BrandHints.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for abb", + "brand": "abb" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint kuka ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint fanuc ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/roundtrip.json new file mode 100644 index 0000000..8d3ce25 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P10_BrandHints/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/compile.json new file mode 100644 index 0000000..64b7f0c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2CrossBrandMotion", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 6, + "kdlMotionRequests": 3, + "kdlPathRequests": 0, + "symbolCount": 10, + "procedureCount": 1, + "pathCount": 0, + "operationCount": 0 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json new file mode 100644 index 0000000..e129436 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/post-report.json @@ -0,0 +1,21 @@ +{ + "filenames": [ + "W2CrossBrandMotion.mod", + "W2CrossBrandMotion.ls", + "W2CrossBrandMotion.src" + ], + "report": [ + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for fanuc", + "brand": "fanuc" + }, + { + "code": "GRL_POST_HINT_IGNORED", + "severity": "info", + "message": "post_hint abb ignored for kuka", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json new file mode 100644 index 0000000..6a91bfc --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P20_CrossBrandMotion/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/compile.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/compile.json new file mode 100644 index 0000000..2863696 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/compile.json @@ -0,0 +1,36 @@ +{ + "parsed": true, + "moduleName": "W2Roundtrip", + "astKind": "Program", + "semanticChecks": [ + "language/module/proc", + "const/var/persistent symbols", + "tool/frame/speed/zone", + "joint_target/pose_target", + "movej/movel/movec", + "path/point/event/run_path", + "operation/run_operation", + "io/wait/pulse", + "if/elseif/else/while/for/switch", + "call/return/break/continue", + "proc parameter directions", + "func returns and side effects", + "alarm/raise/try/catch", + "source map propagation", + "KDL motion request bridge", + "KDL path request bridge", + "duplicate symbol diagnostics", + "missing reference diagnostics", + "P1 unsupported diagnostics", + "operation action expansion", + "path event expansion", + "raw statement preservation" + ], + "sourceMapEntries": 4, + "kdlMotionRequests": 1, + "kdlPathRequests": 1, + "symbolCount": 8, + "procedureCount": 1, + "pathCount": 1, + "operationCount": 1 +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/controller.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/controller.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/controller.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/io.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/io.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/io.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/motion-queue.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/motion-queue.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/motion-queue.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/post-report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/post-report.json new file mode 100644 index 0000000..3290428 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/post-report.json @@ -0,0 +1,27 @@ +{ + "filenames": [ + "W2Roundtrip.mod", + "W2Roundtrip.ls", + "W2Roundtrip.src" + ], + "report": [ + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "brand": "abb" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "brand": "fanuc" + }, + { + "code": "GRL_POST_UNSUPPORTED", + "severity": "warning", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "brand": "kuka" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/roundtrip.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/roundtrip.json new file mode 100644 index 0000000..a9f636c --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/roundtrip.json @@ -0,0 +1,29 @@ +{ + "status": "warn", + "diagnostics": [ + { + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/trace.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/trace.json new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/trace.json @@ -0,0 +1 @@ +[] diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/trajectory.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/trajectory.json new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/programs/W2_P30_Roundtrip/trajectory.json @@ -0,0 +1 @@ +{} diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.html b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.html new file mode 100644 index 0000000..ed89fc4 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.html @@ -0,0 +1,40 @@ + + + + + W2-JOB-20260628082622-51484d62 + + + +

W2-JOB-20260628082622-51484d62

+

Suite working2-abb120-spec / Robot abb_irb120_3_58

+

Covered sections: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25

+ + + + + + + + + + + + + + + + + + + + + +
ProgramLayerStatusDiagnostics
W2_00_MinimalModuleRuntimepass0
W2_10_DataTargetToolFrameRuntimepass8
W2_20_ExpressionMathRuntimepass0
W2_30_MotionAllTypesRuntimepass8
W2_40_PathEventsRuntimepass0
W2_50_OperationProcessRuntimepass0
W2_60_IOWaitPulseRuntimepass0
W2_70_ControlFlowRuntimepass45
W2_80_ProcFuncCallRuntimepass6
W2_90_ExceptionAlarmRuntimepass13
W2_99_FullSpecExampleRuntimepass4
W2_E10_ExpressionDiagnosticsStaticdiagnostic13
W2_E20_SemanticDiagnosticsStaticdiagnostic6
W2_E30_MotionDiagnosticsStaticdiagnostic4
W2_E40_ControlFlowDiagnosticsStaticdiagnostic9
W2_E50_RuntimeTimeoutRuntimediagnostic1
W2_P10_BrandHintsPostpass10
W2_P20_CrossBrandMotionPostpass6
W2_P30_RoundtripPostpass7
+ + diff --git a/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.json b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.json new file mode 100644 index 0000000..d9cf249 --- /dev/null +++ b/kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.json @@ -0,0 +1,1409 @@ +{ + "job_id": "W2-JOB-20260628082622-51484d62", + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "coverage": { + "specSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "coveredSections": [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25 + ], + "missingSections": [], + "runtimePrograms": 12, + "staticPrograms": 4, + "postPrograms": 3 + }, + "summary": { + "programs": 19, + "pass": 14, + "diagnostic": 5, + "fail": 0 + }, + "diagnostics": [ + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 37, + "column": 14 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 38, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 39, + "column": 15 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 5 + } + }, + { + "program_id": "W2_10_DataTargetToolFrame", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z5 preserved as raw IR", + "sourceMap": { + "line": 40, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 14 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_speed preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement vl preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 15 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_zone preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "program_id": "W2_30_MotionAllTypes", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement z10 preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 14 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 12, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement elseif preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fault preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement == preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement true preserved as raw IR", + "sourceMap": { + "line": 13, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement FAULT preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"fault\" preserved as raw IR", + "sourceMap": { + "line": 14, + "column": 19 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement else preserved as raw IR", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement NOT_READY preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"not ready\" preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 23 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement retry preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement = preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 19, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement continue preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 13 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 18 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 24 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 23, + "column": 31 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 1 preserved as raw IR", + "sourceMap": { + "line": 26, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE1 preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode 1\" preserved as raw IR", + "sourceMap": { + "line": 27, + "column": 21 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement break preserved as raw IR", + "sourceMap": { + "line": 28, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement case preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement 2 preserved as raw IR", + "sourceMap": { + "line": 29, + "column": 12 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 20 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 26 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 28 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 30, + "column": 33 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement default preserved as raw IR", + "sourceMap": { + "line": 31, + "column": 7 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 9 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement MODE_OTHER preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 15 + } + }, + { + "program_id": "W2_70_ControlFlow", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"mode other\" preserved as raw IR", + "sourceMap": { + "line": 32, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement movej preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 7 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement home preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 13 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement speed preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 18 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement v preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 24 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zone preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 26 + } + }, + { + "program_id": "W2_80_ProcFuncCall", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement zf preserved as raw IR", + "sourceMap": { + "line": 22, + "column": 31 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "trap recover_trap is parsed but not executable in P0", + "sourceMap": { + "line": 6, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "warning", + "code": "GRL_P1_UNIMPLEMENTED", + "message": "task background is parsed but not executable in P0", + "sourceMap": { + "line": 9, + "column": 3 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement raise preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 16, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement E_PICK_FAILED preserved as raw IR", + "sourceMap": { + "line": 17, + "column": 11 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement RECOVER preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"recovering\" preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 21 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement severity preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 34 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement warning preserved as raw IR", + "sourceMap": { + "line": 18, + "column": 43 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement alarm preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 7 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement CLEANUP preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 13 + } + }, + { + "program_id": "W2_90_ExceptionAlarm", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement \"cleanup\" preserved as raw IR", + "sourceMap": { + "line": 20, + "column": 21 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_tool preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 5 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement gripper preserved as raw IR", + "sourceMap": { + "line": 74, + "column": 14 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement set_frame preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 5 + } + }, + { + "program_id": "W2_99_FullSpecExample", + "severity": "info", + "code": "GRL_RAW_STATEMENT_PRESERVED", + "message": "Statement fixture preserved as raw IR", + "sourceMap": { + "line": 75, + "column": 15 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_SYMBOL", + "message": "Unknown constant missing_symbol", + "sourceMap": { + "line": 4, + "column": 41 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNKNOWN_FUNCTION", + "message": "Unknown function no_such_function", + "sourceMap": { + "line": 5, + "column": 43 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_ARITY", + "message": "atan2 expects 2 argument(s)", + "sourceMap": { + "line": 6, + "column": 36 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DOMAIN", + "message": "Function argument is below domain", + "sourceMap": { + "line": 7, + "column": 33 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_DIV_ZERO", + "message": "Division by zero", + "sourceMap": { + "line": 8, + "column": 35 + } + }, + { + "program_id": "W2_E10_ExpressionDiagnostics", + "severity": "error", + "code": "GRL_EXPR_UNIT_MISMATCH", + "message": "Cannot combine length and time", + "sourceMap": { + "line": 9, + "column": 25 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_SYMBOL_DUPLICATE", + "message": "Duplicate symbol v", + "sourceMap": { + "line": 4, + "column": 3 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_ARGUMENT_NOT_LVALUE", + "message": "out argument done must be a writable lvalue", + "sourceMap": { + "line": 15, + "column": 19 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_FUNC_SIDE_EFFECT", + "message": "Function bad_func cannot execute wait", + "sourceMap": { + "line": 11, + "column": 5 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_CALL_TARGET_NOT_FOUND", + "message": "Unknown call target missing_proc", + "sourceMap": { + "line": 16, + "column": 5 + } + }, + { + "program_id": "W2_E20_SemanticDiagnostics", + "severity": "error", + "code": "GRL_TARGET_NOT_FOUND", + "message": "Unknown target missing_target" + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "GRL_PATH_EMPTY", + "message": "Path empty_path must contain at least one point" + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "KDL_JOINT_LIMIT", + "message": "joint_1 exceeds fixture limit", + "segmentId": "main:MOVEJ", + "sourceMap": { + "line": 14, + "column": 5 + } + }, + { + "program_id": "W2_E30_MotionDiagnostics", + "severity": "error", + "code": "KDL_TARGET_UNREACHABLE", + "message": "Target main:MOVEL is outside ABB120 fixture workspace", + "segmentId": "main:MOVEL", + "sourceMap": { + "line": 15, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_CONTINUE_OUTSIDE_LOOP", + "message": "continue is only valid inside loop", + "sourceMap": { + "line": 6, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_SWITCH_CASE_DUPLICATE", + "message": "Duplicate switch case 1", + "sourceMap": { + "line": 14, + "column": 7 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_SWITCH_CASE_NOT_CONSTANT", + "message": "switch case must be a constant expression", + "sourceMap": { + "line": 16, + "column": 7 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_LABEL_NOT_FOUND", + "message": "Unknown label missing", + "sourceMap": { + "line": 19, + "column": 5 + } + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_JUMP_INTO_BLOCK", + "message": "jump cannot enter a nested or sibling block" + }, + { + "program_id": "W2_E40_ControlFlowDiagnostics", + "severity": "error", + "code": "GRL_BREAK_OUTSIDE_FLOW", + "message": "break is only valid inside loop or switch", + "sourceMap": { + "line": 5, + "column": 5 + } + }, + { + "program_id": "W2_E50_RuntimeTimeout", + "severity": "warning", + "code": "VC_WAIT_TIMEOUT", + "message": "Wait timed out after 0.1s", + "sourceMap": { + "line": 10, + "column": 5 + }, + "data": { + "condition": "io . di [ 99 ] == true" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for abb", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint kuka ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint fanuc ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2BrandHints.mod", + "line": 3 + } + }, + { + "program_id": "W2_P10_BrandHints", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for fanuc", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "GRL_POST_HINT_IGNORED", + "message": "post_hint abb ignored for kuka", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2CrossBrandMotion.mod", + "line": 3 + } + }, + { + "program_id": "W2_P20_CrossBrandMotion", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by abb prototype postprocessor", + "data": { + "brand": "abb" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by fanuc prototype postprocessor", + "data": { + "brand": "fanuc" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "GRL_POST_UNSUPPORTED", + "message": "RUN_OPERATION is not supported by kuka prototype postprocessor", + "data": { + "brand": "kuka" + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TARGETS", + "message": "abb import mapped 1 targets" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_MOTIONS", + "message": "abb import mapped 1 motion points" + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "warning", + "code": "IMPORT_TARGET_STUB", + "message": "Target home was referenced by motion but had no parsed position; a zero pose stub was created", + "sourceMap": { + "file": "W2Roundtrip.mod", + "line": 3 + } + }, + { + "program_id": "W2_P30_Roundtrip", + "severity": "info", + "code": "IMPORT_TOOL_DETECTED", + "message": "abb tool selection detected and recorded as import metadata" + } + ] +} diff --git a/kdl-wasm/web/test-results/virtual-controller/button-evidence-public.json b/kdl-wasm/web/test-results/virtual-controller/button-evidence-public.json new file mode 100644 index 0000000..64c9e9c --- /dev/null +++ b/kdl-wasm/web/test-results/virtual-controller/button-evidence-public.json @@ -0,0 +1,633 @@ +{ + "targetUrl": "https://82.156.24.101:8095/app/virtual-controller.html", + "chrome": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", + "initial": { + "title": "ABB120 Virtual Controller", + "state": "ready", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "W2-JOB-latest ready", + "reports": "W2-JOB-20260628082622-51484d62 report", + "storage": "cache h0/n1/w0/e0 network demo-manifest.json", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 6", + "frameCurrent": 1, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "idle", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_99_FullSpecExample", + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout", + "W2_P10_BrandHints", + "W2_P20_CrossBrandMotion", + "W2_P30_Roundtrip" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "OPFS", + "hits": 0, + "network": 1, + "writes": 1, + "errors": 0, + "last": "OPFS saved demo-manifest.json" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "", + "cursorLine": 0, + "totalLines": 0, + "linesPerTick": 1, + "startedAt": 0, + "completedProgramId": "", + "lastSummary": "idle" + }, + "errors": [] + }, + "afterLoadClick": { + "title": "ABB120 Virtual Controller", + "state": "load", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "W2_60_IOWaitPulse loading from OPFS h0/n1/w1/e0", + "reports": "W2-JOB-20260628082622-51484d62 report", + "storage": "OPFS h0/n1/w1/e0 OPFS saved demo-manifest.json", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 6", + "frameCurrent": 1, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "idle", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_99_FullSpecExample", + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout", + "W2_P10_BrandHints", + "W2_P20_CrossBrandMotion", + "W2_P30_Roundtrip" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "OPFS", + "hits": 0, + "network": 6, + "writes": 6, + "errors": 0, + "last": "OPFS saved trace.json" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "", + "cursorLine": 0, + "totalLines": 0, + "linesPerTick": 1, + "startedAt": 0, + "completedProgramId": "", + "lastSummary": "idle" + }, + "errors": [] + }, + "afterRun": { + "title": "ABB120 Virtual Controller", + "state": "running", + "program": "W2_60_IOWaitPulse", + "wait": "waiting di[1]", + "log": "W2_60_IOWaitPulse running sample 2 t=0.05s", + "reports": "W2-JOB-20260628082622-51484d62 report", + "storage": "OPFS h0/n10/w10/e0 OPFS saved roundtrip.json", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.376083, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "2 / 6", + "frameCurrent": 2, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0.05 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "parsed 24 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0.05 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_99_FullSpecExample", + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout", + "W2_P10_BrandHints", + "W2_P20_CrossBrandMotion", + "W2_P30_Roundtrip" + ], + "running": true, + "playbackTime": 0.05, + "samplePeriodSec": 0.05, + "sampleIndex": 1, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "OPFS", + "hits": 0, + "network": 10, + "writes": 10, + "errors": 0, + "last": "OPFS saved roundtrip.json" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 24, + "totalLines": 24, + "linesPerTick": 1, + "startedAt": 615.1000001430511, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 24 lines, 4 frames" + }, + "errors": [] + }, + "afterPause": { + "title": "ABB120 Virtual Controller", + "state": "paused", + "program": "W2_60_IOWaitPulse", + "wait": "waiting di[1]", + "log": "W2_60_IOWaitPulse paused", + "reports": "W2-JOB-20260628082622-51484d62 report", + "storage": "OPFS h0/n10/w10/e0 OPFS saved roundtrip.json", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.384, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "6 / 6", + "frameCurrent": 6, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0.24 / 0.24 s, step=0.05 s, source 4/4 (4 trajectory frames)", + "parser": "parsed 24 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0.24 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_99_FullSpecExample", + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout", + "W2_P10_BrandHints", + "W2_P20_CrossBrandMotion", + "W2_P30_Roundtrip" + ], + "running": false, + "playbackTime": 0.24, + "samplePeriodSec": 0.05, + "sampleIndex": 5, + "sourceFrameIndex": 3, + "sourceFrameTotal": 4, + "storageState": { + "mode": "OPFS", + "hits": 0, + "network": 10, + "writes": 10, + "errors": 0, + "last": "OPFS saved roundtrip.json" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 24, + "totalLines": 24, + "linesPerTick": 1, + "startedAt": 615.1000001430511, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 24 lines, 4 frames" + }, + "errors": [] + }, + "afterStep": { + "title": "ABB120 Virtual Controller", + "state": "paused", + "program": "W2_60_IOWaitPulse", + "wait": "waiting di[1]", + "log": "W2_60_IOWaitPulse stepped sample 6 t=0.24s", + "reports": "W2-JOB-20260628082622-51484d62 report", + "storage": "OPFS h0/n10/w10/e0 OPFS saved roundtrip.json", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.384, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "6 / 6", + "frameCurrent": 6, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0.24 / 0.24 s, step=0.05 s, source 4/4 (4 trajectory frames)", + "parser": "parsed 24 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0.24 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_99_FullSpecExample", + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout", + "W2_P10_BrandHints", + "W2_P20_CrossBrandMotion", + "W2_P30_Roundtrip" + ], + "running": false, + "playbackTime": 0.24, + "samplePeriodSec": 0.05, + "sampleIndex": 5, + "sourceFrameIndex": 3, + "sourceFrameTotal": 4, + "storageState": { + "mode": "OPFS", + "hits": 0, + "network": 10, + "writes": 10, + "errors": 0, + "last": "OPFS saved roundtrip.json" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 24, + "totalLines": 24, + "linesPerTick": 1, + "startedAt": 615.1000001430511, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 24 lines, 4 frames" + }, + "errors": [] + }, + "afterStop": { + "title": "ABB120 Virtual Controller", + "state": "stopped", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "W2_60_IOWaitPulse stopped", + "reports": "W2-JOB-20260628082622-51484d62 report", + "storage": "OPFS h0/n10/w10/e0 OPFS saved roundtrip.json", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.384, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "6 / 6", + "frameCurrent": 6, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0.24 / 0.24 s, step=0.05 s, source 4/4 (4 trajectory frames)", + "parser": "parsed 24 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0.24 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_99_FullSpecExample", + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout", + "W2_P10_BrandHints", + "W2_P20_CrossBrandMotion", + "W2_P30_Roundtrip" + ], + "running": false, + "playbackTime": 0.24, + "samplePeriodSec": 0.05, + "sampleIndex": 5, + "sourceFrameIndex": 3, + "sourceFrameTotal": 4, + "storageState": { + "mode": "OPFS", + "hits": 0, + "network": 10, + "writes": 10, + "errors": 0, + "last": "OPFS saved roundtrip.json" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 24, + "totalLines": 24, + "linesPerTick": 1, + "startedAt": 615.1000001430511, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 24 lines, 4 frames" + }, + "errors": [] + }, + "afterReset": { + "title": "ABB120 Virtual Controller", + "state": "ready", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "controller reset", + "reports": "W2-JOB-20260628082622-51484d62 report", + "storage": "OPFS h0/n10/w10/e0 OPFS saved roundtrip.json", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 6", + "frameCurrent": 1, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "parsed 24 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_99_FullSpecExample", + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout", + "W2_P10_BrandHints", + "W2_P20_CrossBrandMotion", + "W2_P30_Roundtrip" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "OPFS", + "hits": 0, + "network": 10, + "writes": 10, + "errors": 0, + "last": "OPFS saved roundtrip.json" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 24, + "totalLines": 24, + "linesPerTick": 1, + "startedAt": 615.1000001430511, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 24 lines, 4 frames" + }, + "errors": [] + }, + "afterExport": { + "title": "ABB120 Virtual Controller", + "state": "ready", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "delivery package exported", + "reports": "W2-JOB-20260628082622-51484d62 report exported", + "storage": "OPFS h0/n10/w10/e0 OPFS saved roundtrip.json", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 6", + "frameCurrent": 1, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "parsed 24 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_99_FullSpecExample", + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout", + "W2_P10_BrandHints", + "W2_P20_CrossBrandMotion", + "W2_P30_Roundtrip" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "OPFS", + "hits": 0, + "network": 10, + "writes": 10, + "errors": 0, + "last": "OPFS saved roundtrip.json" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 24, + "totalLines": 24, + "linesPerTick": 1, + "startedAt": 615.1000001430511, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 24 lines, 4 frames" + }, + "errors": [] + }, + "afterProgramSwitch": { + "title": "ABB120 Virtual Controller", + "state": "ready", + "program": "W2_99_FullSpecExample", + "wait": "none", + "log": "W2_99_FullSpecExample parsed (32 frames, 40 samples @50ms)", + "reports": "W2-JOB-20260628082622-51484d62 report exported", + "storage": "OPFS h0/n19/w19/e0 OPFS saved roundtrip.json", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 40", + "frameCurrent": 1, + "frameTotal": 40, + "frameRows": 32, + "frameTime": "t=0 / 1.92 s, step=0.05 s, source 1/32 (32 trajectory frames)", + "parser": "parsed 81 lines, 32 frames", + "parserProgress": 1, + "stepStatus": "4/16 Path Point line 39 t=0 s", + "stepRows": 16, + "activeStepRows": 1, + "activeStepText": "40-0.2 s39Path Pointpoint approach movej home speed v_fast zone fineMOVEJ / home1-5 @50ms", + "programOptions": [ + "W2_00_MinimalModule", + "W2_10_DataTargetToolFrame", + "W2_20_ExpressionMath", + "W2_30_MotionAllTypes", + "W2_40_PathEvents", + "W2_50_OperationProcess", + "W2_60_IOWaitPulse", + "W2_70_ControlFlow", + "W2_80_ProcFuncCall", + "W2_90_ExceptionAlarm", + "W2_99_FullSpecExample", + "W2_E10_ExpressionDiagnostics", + "W2_E20_SemanticDiagnostics", + "W2_E30_MotionDiagnostics", + "W2_E40_ControlFlowDiagnostics", + "W2_E50_RuntimeTimeout", + "W2_P10_BrandHints", + "W2_P20_CrossBrandMotion", + "W2_P30_Roundtrip" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 32, + "storageState": { + "mode": "OPFS", + "hits": 0, + "network": 19, + "writes": 19, + "errors": 0, + "last": "OPFS saved roundtrip.json" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_99_FullSpecExample", + "cursorLine": 81, + "totalLines": 81, + "linesPerTick": 4, + "startedAt": 3098, + "completedProgramId": "W2_99_FullSpecExample", + "lastSummary": "parsed 81 lines, 32 frames" + }, + "errors": [] + }, + "offlineCache": { + "program": "W2_99_FullSpecExample", + "mode": "OPFS", + "hitsBefore": 0, + "hitsAfter": 9, + "frame": "1 / 40", + "storage": "OPFS h9/n19/w19/e9 network roundtrip.json TypeError" + } +} diff --git a/kdl-wasm/web/test-results/virtual-controller/button-evidence.json b/kdl-wasm/web/test-results/virtual-controller/button-evidence.json new file mode 100644 index 0000000..f8518a5 --- /dev/null +++ b/kdl-wasm/web/test-results/virtual-controller/button-evidence.json @@ -0,0 +1,467 @@ +{ + "targetUrl": "file:///E:/Work/kdl_work/kdl-wasm/web/app/virtual-controller.html", + "chrome": "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe", + "initial": { + "title": "ABB120 Virtual Controller", + "state": "ready", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "W2-JOB-latest ready", + "reports": "W2-JOB-latest report", + "storage": "cache h0/n0/w0/e0 checking browser storage", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 6", + "frameCurrent": 1, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "idle", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_60_IOWaitPulse" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "localStorage", + "hits": 0, + "network": 0, + "writes": 0, + "errors": 2, + "last": "OPFS blocked: SecurityError" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "", + "cursorLine": 0, + "totalLines": 0, + "linesPerTick": 1, + "startedAt": 0, + "completedProgramId": "", + "lastSummary": "idle" + }, + "errors": [] + }, + "afterLoadClick": { + "title": "ABB120 Virtual Controller", + "state": "parsing", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "W2_60_IOWaitPulse parsing load from localStorage h0/n0/w0/e2", + "reports": "W2-JOB-latest report", + "storage": "localStorage h0/n0/w0/e2 OPFS blocked: SecurityError", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0, 0, 0] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 1", + "frameCurrent": 1, + "frameTotal": 1, + "frameRows": 1, + "frameTime": "t=0 / 0 s, step=0.05 s, source 1/1 (0 trajectory frames)", + "parser": "parsing 3/23 lines, frames 0/4, t=0 s", + "parserProgress": 0.13043478260869565, + "stepStatus": "1/1 Sample line - t=0 s", + "stepRows": 1, + "activeStepRows": 1, + "activeStepText": "10 sSamplesample trajectoryNO_MOTION / no planned segment1 @50ms", + "programOptions": [ + "W2_60_IOWaitPulse" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "localStorage", + "hits": 0, + "network": 0, + "writes": 0, + "errors": 2, + "last": "OPFS blocked: SecurityError" + }, + "parseStream": { + "active": true, + "timer": true, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 3, + "totalLines": 23, + "linesPerTick": 1, + "startedAt": 289.2000000476837, + "completedProgramId": "", + "lastSummary": "parsing 3/23 lines, frames 0/4, t=0 s" + }, + "errors": [] + }, + "afterRun": { + "title": "ABB120 Virtual Controller", + "state": "running", + "program": "W2_60_IOWaitPulse", + "wait": "waiting di[1]", + "log": "W2_60_IOWaitPulse running sample 2 t=0.05s", + "reports": "W2-JOB-latest report", + "storage": "localStorage h0/n0/w0/e2 OPFS blocked: SecurityError", + "joints": "[0.025, 0.00625, -0.016667, 0, 0.004167, 0]", + "tcp": "pos [0.376083, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "2 / 6", + "frameCurrent": 2, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0.05 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "parsed 23 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0.05 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_60_IOWaitPulse" + ], + "running": true, + "playbackTime": 0.05, + "samplePeriodSec": 0.05, + "sampleIndex": 1, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "localStorage", + "hits": 0, + "network": 0, + "writes": 0, + "errors": 2, + "last": "OPFS blocked: SecurityError" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 23, + "totalLines": 23, + "linesPerTick": 1, + "startedAt": 289.2000000476837, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 23 lines, 4 frames" + }, + "errors": [] + }, + "afterPause": { + "title": "ABB120 Virtual Controller", + "state": "paused", + "program": "W2_60_IOWaitPulse", + "wait": "waiting di[1]", + "log": "W2_60_IOWaitPulse paused", + "reports": "W2-JOB-latest report", + "storage": "localStorage h0/n0/w0/e2 OPFS blocked: SecurityError", + "joints": "[0.12, 0.03, -0.08, 0, 0.02, 0]", + "tcp": "pos [0.384, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "6 / 6", + "frameCurrent": 6, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0.24 / 0.24 s, step=0.05 s, source 4/4 (4 trajectory frames)", + "parser": "parsed 23 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0.24 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_60_IOWaitPulse" + ], + "running": false, + "playbackTime": 0.24, + "samplePeriodSec": 0.05, + "sampleIndex": 5, + "sourceFrameIndex": 3, + "sourceFrameTotal": 4, + "storageState": { + "mode": "localStorage", + "hits": 0, + "network": 0, + "writes": 0, + "errors": 2, + "last": "OPFS blocked: SecurityError" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 23, + "totalLines": 23, + "linesPerTick": 1, + "startedAt": 289.2000000476837, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 23 lines, 4 frames" + }, + "errors": [] + }, + "afterStep": { + "title": "ABB120 Virtual Controller", + "state": "paused", + "program": "W2_60_IOWaitPulse", + "wait": "waiting di[1]", + "log": "W2_60_IOWaitPulse stepped sample 6 t=0.24s", + "reports": "W2-JOB-latest report", + "storage": "localStorage h0/n0/w0/e2 OPFS blocked: SecurityError", + "joints": "[0.12, 0.03, -0.08, 0, 0.02, 0]", + "tcp": "pos [0.384, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "6 / 6", + "frameCurrent": 6, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0.24 / 0.24 s, step=0.05 s, source 4/4 (4 trajectory frames)", + "parser": "parsed 23 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0.24 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_60_IOWaitPulse" + ], + "running": false, + "playbackTime": 0.24, + "samplePeriodSec": 0.05, + "sampleIndex": 5, + "sourceFrameIndex": 3, + "sourceFrameTotal": 4, + "storageState": { + "mode": "localStorage", + "hits": 0, + "network": 0, + "writes": 0, + "errors": 2, + "last": "OPFS blocked: SecurityError" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 23, + "totalLines": 23, + "linesPerTick": 1, + "startedAt": 289.2000000476837, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 23 lines, 4 frames" + }, + "errors": [] + }, + "afterStop": { + "title": "ABB120 Virtual Controller", + "state": "stopped", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "W2_60_IOWaitPulse stopped", + "reports": "W2-JOB-latest report", + "storage": "localStorage h0/n0/w0/e2 OPFS blocked: SecurityError", + "joints": "[0.12, 0.03, -0.08, 0, 0.02, 0]", + "tcp": "pos [0.384, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "6 / 6", + "frameCurrent": 6, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0.24 / 0.24 s, step=0.05 s, source 4/4 (4 trajectory frames)", + "parser": "parsed 23 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0.24 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_60_IOWaitPulse" + ], + "running": false, + "playbackTime": 0.24, + "samplePeriodSec": 0.05, + "sampleIndex": 5, + "sourceFrameIndex": 3, + "sourceFrameTotal": 4, + "storageState": { + "mode": "localStorage", + "hits": 0, + "network": 0, + "writes": 0, + "errors": 2, + "last": "OPFS blocked: SecurityError" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 23, + "totalLines": 23, + "linesPerTick": 1, + "startedAt": 289.2000000476837, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 23 lines, 4 frames" + }, + "errors": [] + }, + "afterReset": { + "title": "ABB120 Virtual Controller", + "state": "ready", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "controller reset", + "reports": "W2-JOB-latest report", + "storage": "localStorage h0/n0/w0/e2 OPFS blocked: SecurityError", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 6", + "frameCurrent": 1, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "parsed 23 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_60_IOWaitPulse" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "localStorage", + "hits": 0, + "network": 0, + "writes": 0, + "errors": 2, + "last": "OPFS blocked: SecurityError" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 23, + "totalLines": 23, + "linesPerTick": 1, + "startedAt": 289.2000000476837, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 23 lines, 4 frames" + }, + "errors": [] + }, + "afterExport": { + "title": "ABB120 Virtual Controller", + "state": "ready", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "delivery package exported", + "reports": "W2-JOB-latest report exported", + "storage": "localStorage h0/n0/w0/e2 OPFS blocked: SecurityError", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 6", + "frameCurrent": 1, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "parsed 23 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_60_IOWaitPulse" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "localStorage", + "hits": 0, + "network": 0, + "writes": 0, + "errors": 2, + "last": "OPFS blocked: SecurityError" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 23, + "totalLines": 23, + "linesPerTick": 1, + "startedAt": 289.2000000476837, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 23 lines, 4 frames" + }, + "errors": [] + }, + "afterProgramSwitch": { + "title": "ABB120 Virtual Controller", + "state": "ready", + "program": "W2_60_IOWaitPulse", + "wait": "none", + "log": "delivery package exported", + "reports": "W2-JOB-latest report exported", + "storage": "localStorage h0/n0/w0/e2 OPFS blocked: SecurityError", + "joints": "[0, 0, 0, 0, 0, 0]", + "tcp": "pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]", + "frame": "1 / 6", + "frameCurrent": 1, + "frameTotal": 6, + "frameRows": 4, + "frameTime": "t=0 / 0.24 s, step=0.05 s, source 1/4 (4 trajectory frames)", + "parser": "parsed 23 lines, 4 frames", + "parserProgress": 1, + "stepStatus": "11/12 Path Point line 8 t=0 s", + "stepRows": 12, + "activeStepRows": 1, + "activeStepText": "110-0.24 s8Path Pointpoint p0 movej homeMOVEJ / home1-6 @50ms", + "programOptions": [ + "W2_60_IOWaitPulse" + ], + "running": false, + "playbackTime": 0, + "samplePeriodSec": 0.05, + "sampleIndex": 0, + "sourceFrameIndex": 0, + "sourceFrameTotal": 4, + "storageState": { + "mode": "localStorage", + "hits": 0, + "network": 0, + "writes": 0, + "errors": 2, + "last": "OPFS blocked: SecurityError" + }, + "parseStream": { + "active": false, + "timer": false, + "programId": "W2_60_IOWaitPulse", + "cursorLine": 23, + "totalLines": 23, + "linesPerTick": 1, + "startedAt": 289.2000000476837, + "completedProgramId": "W2_60_IOWaitPulse", + "lastSummary": "parsed 23 lines, 4 frames" + }, + "errors": [] + }, + "offlineCache": { + "skipped": true, + "reason": "local file target does not require network-offline cache proof" + } +} diff --git a/kdl-wasm/web/test-results/virtual-controller/evidence.json b/kdl-wasm/web/test-results/virtual-controller/evidence.json index cbea4b1..5bee86f 100644 --- a/kdl-wasm/web/test-results/virtual-controller/evidence.json +++ b/kdl-wasm/web/test-results/virtual-controller/evidence.json @@ -9,10 +9,11 @@ "mobile": false }, "screenshot": "E:\\Work\\kdl_work\\kdl-wasm\\web\\test-results\\virtual-controller\\virtual-controller-desktop.png", - "screenshotBytes": 45666, + "screenshotBytes": 50362, "state": "running", + "parser": "parsed 23 lines, 4 frames", "wait": "satisfied", - "trace": "4 events", + "trace": "16 events", "visiblePanels": [ ".command-bar", ".object-tree", @@ -30,10 +31,11 @@ "mobile": true }, "screenshot": "E:\\Work\\kdl_work\\kdl-wasm\\web\\test-results\\virtual-controller\\virtual-controller-mobile.png", - "screenshotBytes": 44869, + "screenshotBytes": 40557, "state": "running", + "parser": "parsed 23 lines, 4 frames", "wait": "satisfied", - "trace": "4 events", + "trace": "16 events", "visiblePanels": [ ".command-bar", ".object-tree", diff --git a/kdl-wasm/web/test-results/virtual-controller/virtual-controller-desktop.png b/kdl-wasm/web/test-results/virtual-controller/virtual-controller-desktop.png index 577ad5c..f596971 100644 Binary files a/kdl-wasm/web/test-results/virtual-controller/virtual-controller-desktop.png and b/kdl-wasm/web/test-results/virtual-controller/virtual-controller-desktop.png differ diff --git a/kdl-wasm/web/test-results/virtual-controller/virtual-controller-mobile.png b/kdl-wasm/web/test-results/virtual-controller/virtual-controller-mobile.png index a9b908d..15a28d9 100644 Binary files a/kdl-wasm/web/test-results/virtual-controller/virtual-controller-mobile.png and b/kdl-wasm/web/test-results/virtual-controller/virtual-controller-mobile.png differ diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/error/W2_E30_MotionDiagnostics.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/error/W2_E30_MotionDiagnostics.grl new file mode 100644 index 0000000..88a8997 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/error/W2_E30_MotionDiagnostics.grl @@ -0,0 +1,19 @@ +language grl 0.1 +module W2MotionDiagnostics + const speed v = joint(30 %) + const speed vl = linear(100 mm/s) + const zone zf = fine + target too_far_joint = joint_target { joints: [220 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + target unreachable_pose = pose_target { pose: pose(2000 mm, 0 mm, 2000 mm, 0 deg, 0 deg, 0 deg) } + target arc_a = pose_target { pose: pose(500 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) } + target arc_b = pose_target { pose: pose(550 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) } + target arc_c = pose_target { pose: pose(600 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) } + path empty_path { + } + proc main() + movej too_far_joint speed v zone zf + movel unreachable_pose speed vl zone zf + movec via arc_b target arc_c speed vl zone zf + run_path empty_path + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/error/W2_E50_RuntimeTimeout.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/error/W2_E50_RuntimeTimeout.grl new file mode 100644 index 0000000..35857d6 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/error/W2_E50_RuntimeTimeout.grl @@ -0,0 +1,14 @@ +language grl 0.1 +module W2RuntimeTimeout + const speed v = joint(30 %) + const zone zf = fine + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + proc on_timeout_recover() + alarm TIMEOUT_RECOVER "timeout recover" severity warning + end + proc main() + wait io.di[99] == true timeout 100 ms on_timeout alarm "DI99 timeout" + wait io.di[98] == true timeout 100 ms on_timeout call on_timeout_recover() + movej home speed v zone zf + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/manifest.json b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/manifest.json new file mode 100644 index 0000000..4100f0d --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/manifest.json @@ -0,0 +1,52 @@ +{ + "suite_id": "working2-abb120-spec", + "robot_id": "abb_irb120_3_58", + "spec_source": "work/doc/通用机器人编程语法规范.md", + "program_root": "kdl-wasm/web/tests/fixtures/abb120/spec-programs", + "runtime_commands": ["loadProgram", "start", "stepInto", "hold", "resume", "stepMotion", "stop", "resetFault"], + "programs": [ + { "program_id": "W2_00_MinimalModule", "file": "runtime/W2_00_MinimalModule.grl", "coverage_level": "Runtime", "spec_sections": [4, 5, 6, 9, 10, 23], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_10_DataTargetToolFrame", "file": "runtime/W2_10_DataTargetToolFrame.grl", "coverage_level": "Runtime", "spec_sections": [6, 8, 9], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_20_ExpressionMath", "file": "runtime/W2_20_ExpressionMath.grl", "coverage_level": "Runtime", "spec_sections": [7, 9, 13], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_30_MotionAllTypes", "file": "runtime/W2_30_MotionAllTypes.grl", "coverage_level": "Runtime", "spec_sections": [8, 9, 10], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_40_PathEvents", "file": "runtime/W2_40_PathEvents.grl", "coverage_level": "Runtime", "spec_sections": [11, 13, 19], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_50_OperationProcess", "file": "runtime/W2_50_OperationProcess.grl", "coverage_level": "Runtime", "spec_sections": [12, 13], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_60_IOWaitPulse", "file": "runtime/W2_60_IOWaitPulse.grl", "coverage_level": "Runtime", "spec_sections": [13], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_70_ControlFlow", "file": "runtime/W2_70_ControlFlow.grl", "coverage_level": "Runtime", "spec_sections": [14], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_80_ProcFuncCall", "file": "runtime/W2_80_ProcFuncCall.grl", "coverage_level": "Runtime", "spec_sections": [15], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_90_ExceptionAlarm", "file": "runtime/W2_90_ExceptionAlarm.grl", "coverage_level": "Runtime", "spec_sections": [16, 17], "expected_status": "pass", "expected_diagnostics": ["GRL_P1_UNIMPLEMENTED"] }, + { "program_id": "W2_99_FullSpecExample", "file": "runtime/W2_99_FullSpecExample.grl", "coverage_level": "Runtime", "spec_sections": [24], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_E10_ExpressionDiagnostics", "file": "static/W2_E10_ExpressionDiagnostics.grl", "coverage_level": "Static", "spec_sections": [7, 22], "expected_status": "diagnostic", "expected_diagnostics": ["GRL_EXPR_UNKNOWN_SYMBOL", "GRL_EXPR_UNKNOWN_FUNCTION", "GRL_EXPR_ARITY", "GRL_EXPR_DOMAIN", "GRL_EXPR_DIV_ZERO", "GRL_EXPR_UNIT_MISMATCH"] }, + { "program_id": "W2_E20_SemanticDiagnostics", "file": "static/W2_E20_SemanticDiagnostics.grl", "coverage_level": "Static", "spec_sections": [6, 15, 22], "expected_status": "diagnostic", "expected_diagnostics": ["GRL_SYMBOL_DUPLICATE", "GRL_ARGUMENT_NOT_LVALUE", "GRL_CALL_TARGET_NOT_FOUND", "GRL_FUNC_SIDE_EFFECT", "GRL_TARGET_NOT_FOUND"] }, + { "program_id": "W2_E30_MotionDiagnostics", "file": "error/W2_E30_MotionDiagnostics.grl", "coverage_level": "Static", "spec_sections": [8, 9, 10, 11, 22], "expected_status": "diagnostic", "expected_diagnostics": ["KDL_JOINT_LIMIT", "KDL_TARGET_UNREACHABLE", "GRL_PATH_EMPTY"] }, + { "program_id": "W2_E40_ControlFlowDiagnostics", "file": "static/W2_E40_ControlFlowDiagnostics.grl", "coverage_level": "Static", "spec_sections": [14, 22], "expected_status": "diagnostic", "expected_diagnostics": ["GRL_BREAK_OUTSIDE_FLOW", "GRL_CONTINUE_OUTSIDE_LOOP", "GRL_JUMP_INTO_BLOCK", "GRL_SWITCH_CASE_DUPLICATE", "GRL_SWITCH_CASE_NOT_CONSTANT", "GRL_LABEL_NOT_FOUND"] }, + { "program_id": "W2_E50_RuntimeTimeout", "file": "error/W2_E50_RuntimeTimeout.grl", "coverage_level": "Runtime", "spec_sections": [13, 16], "expected_status": "diagnostic", "expected_diagnostics": ["VC_WAIT_TIMEOUT"] }, + { "program_id": "W2_P10_BrandHints", "file": "post/W2_P10_BrandHints.grl", "coverage_level": "Post", "spec_sections": [18, 20], "expected_status": "pass", "expected_diagnostics": ["GRL_POST_HINT_IGNORED"] }, + { "program_id": "W2_P20_CrossBrandMotion", "file": "post/W2_P20_CrossBrandMotion.grl", "coverage_level": "Post", "spec_sections": [20], "expected_status": "pass", "expected_diagnostics": [] }, + { "program_id": "W2_P30_Roundtrip", "file": "post/W2_P30_Roundtrip.grl", "coverage_level": "Post", "spec_sections": [19, 20, 21], "expected_status": "pass", "expected_diagnostics": [] } + ], + "coverage_matrix": [ + { "spec_section": 4, "coverage_level": "Runtime/Static", "program_ids": ["W2_00_MinimalModule"] }, + { "spec_section": 5, "coverage_level": "Runtime", "program_ids": ["W2_00_MinimalModule"] }, + { "spec_section": 6, "coverage_level": "Runtime/Static", "program_ids": ["W2_10_DataTargetToolFrame", "W2_E20_SemanticDiagnostics"] }, + { "spec_section": 7, "coverage_level": "Runtime/Static/Post", "program_ids": ["W2_20_ExpressionMath", "W2_E10_ExpressionDiagnostics", "W2_P20_CrossBrandMotion"] }, + { "spec_section": 8, "coverage_level": "Runtime/Static", "program_ids": ["W2_10_DataTargetToolFrame", "W2_E30_MotionDiagnostics"] }, + { "spec_section": 9, "coverage_level": "Runtime/Post", "program_ids": ["W2_20_ExpressionMath", "W2_30_MotionAllTypes", "W2_P20_CrossBrandMotion"] }, + { "spec_section": 10, "coverage_level": "Runtime/Static/Post", "program_ids": ["W2_30_MotionAllTypes", "W2_E30_MotionDiagnostics", "W2_P20_CrossBrandMotion"] }, + { "spec_section": 11, "coverage_level": "Runtime/Static", "program_ids": ["W2_40_PathEvents", "W2_E30_MotionDiagnostics"] }, + { "spec_section": 12, "coverage_level": "Runtime/Post", "program_ids": ["W2_50_OperationProcess", "W2_P30_Roundtrip"] }, + { "spec_section": 13, "coverage_level": "Runtime", "program_ids": ["W2_60_IOWaitPulse", "W2_E50_RuntimeTimeout"] }, + { "spec_section": 14, "coverage_level": "Runtime/Static", "program_ids": ["W2_70_ControlFlow", "W2_E40_ControlFlowDiagnostics"] }, + { "spec_section": 15, "coverage_level": "Runtime/Static", "program_ids": ["W2_80_ProcFuncCall", "W2_E20_SemanticDiagnostics"] }, + { "spec_section": 16, "coverage_level": "Runtime/Static", "program_ids": ["W2_90_ExceptionAlarm", "W2_E50_RuntimeTimeout"] }, + { "spec_section": 17, "coverage_level": "Runtime/Static", "program_ids": ["W2_90_ExceptionAlarm"] }, + { "spec_section": 18, "coverage_level": "Post", "program_ids": ["W2_P10_BrandHints"] }, + { "spec_section": 19, "coverage_level": "Post", "program_ids": ["W2_P30_Roundtrip"] }, + { "spec_section": 20, "coverage_level": "Post", "program_ids": ["W2_P20_CrossBrandMotion"] }, + { "spec_section": 21, "coverage_level": "Runtime/Static", "program_ids": ["W2_00_MinimalModule", "W2_E10_ExpressionDiagnostics"] }, + { "spec_section": 22, "coverage_level": "Runtime/Static", "program_ids": ["W2_E10_ExpressionDiagnostics", "W2_E20_SemanticDiagnostics", "W2_E30_MotionDiagnostics", "W2_E40_ControlFlowDiagnostics", "W2_E50_RuntimeTimeout"] }, + { "spec_section": 23, "coverage_level": "Runtime/Static", "program_ids": ["W2_00_MinimalModule"] }, + { "spec_section": 24, "coverage_level": "Runtime/Post", "program_ids": ["W2_99_FullSpecExample", "W2_P30_Roundtrip"] }, + { "spec_section": 25, "coverage_level": "Runtime/Static/Post", "program_ids": ["W2_00_MinimalModule", "W2_10_DataTargetToolFrame", "W2_20_ExpressionMath", "W2_30_MotionAllTypes", "W2_40_PathEvents", "W2_50_OperationProcess", "W2_60_IOWaitPulse", "W2_70_ControlFlow", "W2_80_ProcFuncCall", "W2_90_ExceptionAlarm", "W2_P20_CrossBrandMotion"] } + ] +} diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/post/W2_P10_BrandHints.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/post/W2_P10_BrandHints.grl new file mode 100644 index 0000000..05b4e61 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/post/W2_P10_BrandHints.grl @@ -0,0 +1,12 @@ +language grl 0.1 +module W2BrandHints + post_hint abb + post_hint fanuc + post_hint kuka + const speed v = joint(40 %) + const zone zf = fine + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + proc main() + movej home speed v zone zf + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/post/W2_P20_CrossBrandMotion.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/post/W2_P20_CrossBrandMotion.grl new file mode 100644 index 0000000..3a08fb5 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/post/W2_P20_CrossBrandMotion.grl @@ -0,0 +1,20 @@ +language grl 0.1 +module W2CrossBrandMotion + post_hint abb + const speed vj = joint(50 %) + const speed vl = linear(200 mm/s) + const zone z10 = z(10 mm) + const zone zcnt = cnt(50) + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + target pick = pose_target { pose: pose(500 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) } + target mid = pose_target { pose: pose(550 mm, 50 mm, 0 mm, 0 deg, 0 deg, 0 deg) } + target place = pose_target { pose: pose(600 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) } + proc main() + movej home speed vj zone fine + movel pick speed vl zone z10 + movec via mid target place speed vl zone zcnt + io.do[1] = true + wait io.di[1] == true timeout 1 s + pulse io.do[2] duration 100 ms + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/post/W2_P30_Roundtrip.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/post/W2_P30_Roundtrip.grl new file mode 100644 index 0000000..86dfdfc --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/post/W2_P30_Roundtrip.grl @@ -0,0 +1,24 @@ +language grl 0.1 +module W2Roundtrip + const speed vj = joint(40 %) + const speed vl = linear(150 mm/s) + const zone z10 = z(10 mm) + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + target pick = pose_target { pose: pose(500 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) } + path roundtrip_path { + defaults { speed: vj, zone: z10 } + point p0 movej home zone fine + point p1 movel pick speed vl zone z10 + } + operation roundtrip_op { + kind: handling + path: roundtrip_path + process { + generator: "working2" + } + } + proc main() + run_operation roundtrip_op + movej home speed vj zone fine + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_00_MinimalModule.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_00_MinimalModule.grl new file mode 100644 index 0000000..da402bf --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_00_MinimalModule.grl @@ -0,0 +1,9 @@ +language grl 0.1 +module W2MinimalModule + const speed v_joint = joint(40 %) + const zone zf = fine + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + proc main() + movej home speed v_joint zone zf + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_10_DataTargetToolFrame.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_10_DataTargetToolFrame.grl new file mode 100644 index 0000000..2251aca --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_10_DataTargetToolFrame.grl @@ -0,0 +1,45 @@ +language grl 0.1 +module W2DataTargetToolFrame + persistent tool gripper = tool { + tcp: pose(0 mm, 0 mm, 100 mm, 0 deg, 0 deg, 0 deg), + mass: 1.25 kg, + cog: [0 mm, 0 mm, 40 mm] + } + persistent frame fixture = frame { origin: pose(800 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) } + const bool use_fixture = true + const int slot_count = 2 + const real blend_scale = 1.5 + const string recipe = "w2" + const time settle = 250 ms + const length lift = 80 mm + const angle face = 90 deg + const percent safe_percent = 40 % + const speed vj = joint(safe_percent) + const speed vl = linear(120 mm/s) + const zone z5 = z(5 mm) + const pose safe_pose = pose(500 mm, 0 mm, 100 mm, 0 deg, 0 deg, face) + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + target approach = joint_target { + joints: [0 deg, -22.918312 deg, 28.647890 deg, 0 deg, 11.459156 deg, 0 deg] + } + target pick = pose_target { + pose: pose(500 mm, 0 mm, 0 mm, 0 deg, 0 deg, 90 deg), + config: robot_config(0, 0, 1), + tool: gripper, + frame: fixture + } + target pick_q = pose_target { + pose: poseq(500 mm, 30 mm, 0 mm, 0, 0, 0, 1), + tool: gripper, + frame: fixture + } + proc main() + set_tool gripper + set_frame fixture + set_speed vl + set_zone z5 + movej home speed vj zone fine + movej approach speed vj zone z5 tool gripper frame fixture + movel pick_q speed vl zone z5 tool gripper frame fixture + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_20_ExpressionMath.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_20_ExpressionMath.grl new file mode 100644 index 0000000..221f436 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_20_ExpressionMath.grl @@ -0,0 +1,20 @@ +language grl 0.1 +module W2ExpressionMath + const real blend_base = 5 + 5 + const real trig_value = sin(30 deg) + const bool math_ok = (10 mm + 5 mm) > 12 mm and not false + const speed v_pick = linear(100 + 50 mm/s) + const speed v_safe = linear(max(50 mm/s, 200 mm/s / 2)) + const zone z_app = z(clamp(blend_base mm, 1 mm, 50 mm)) + target home = joint_target { + joints: [0 deg, (10 + 5) deg, -30 deg, 0 deg, abs(-15) deg, round(pi) deg] + } + target pick = pose_target { + pose: pose(400 + 50 mm, 20 * 2 mm, sqrt(90000) mm, 0 deg, 0 deg, atan2(1, 1)) + } + proc main() + movej home speed v_safe zone z_app + movel pick speed v_pick zone z_app + wait io.ai[2] > 0.5 timeout 1 + 1 s + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_30_MotionAllTypes.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_30_MotionAllTypes.grl new file mode 100644 index 0000000..c7c65f7 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_30_MotionAllTypes.grl @@ -0,0 +1,21 @@ +language grl 0.1 +module W2MotionAllTypes + persistent tool gripper = tool { tcp: pose(0 mm, 0 mm, 80 mm, 0 deg, 0 deg, 0 deg), mass: 1 kg } + persistent frame fixture = frame { origin: pose(800 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg) } + const speed vj = joint(45 %) + const speed vl = linear(150 mm/s) + const zone z10 = z(10 mm) + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + target start = pose_target { pose: pose(500 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg), tool: gripper, frame: fixture } + target mid = pose_target { pose: pose(550 mm, 50 mm, 0 mm, 0 deg, 0 deg, 0 deg), tool: gripper, frame: fixture } + target finish = pose_target { pose: pose(600 mm, 0 mm, 0 mm, 0 deg, 0 deg, 0 deg), tool: gripper, frame: fixture } + proc main() + set_tool gripper + set_frame fixture + set_speed vl + set_zone z10 + movej home speed vj zone fine + movel start + movec via mid target finish speed linear(100 mm/s) zone fine + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_40_PathEvents.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_40_PathEvents.grl new file mode 100644 index 0000000..d6cdae7 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_40_PathEvents.grl @@ -0,0 +1,26 @@ +language grl 0.1 +module W2PathEvents + const speed vj = joint(35 %) + const speed vl = linear(120 mm/s) + const zone z10 = z(10 mm) + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + target pick = joint_target { joints: [11.459156 deg, -20.053523 deg, 25.783101 deg, 5.729578 deg, -11.459156 deg, 17.188734 deg] } + target place = joint_target { joints: [-20.053523 deg, -14.323945 deg, 20.053523 deg, -14.323945 deg, 8.594367 deg, -22.918312 deg] } + path generated_path { + source { + type: "cad_curve", + id: "edge_032", + sample_distance: 5 mm + } + defaults { speed: vj, zone: z10 } + point p_home movej home zone fine + event before p_pick io.do[10] = true + point p_pick movej pick speed vj + event after p_pick wait io.di[10] == true timeout 2 s on_timeout alarm "pick sensor timeout" + point p_place movej place speed vj + event at p_place distance 10 mm pulse io.do[11] duration 100 ms + } + proc main() + run_path generated_path + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_50_OperationProcess.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_50_OperationProcess.grl new file mode 100644 index 0000000..4176661 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_50_OperationProcess.grl @@ -0,0 +1,26 @@ +language grl 0.1 +module W2OperationProcess + const speed v = joint(35 %) + const zone zf = fine + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + path op_path { + defaults { speed: v, zone: zf } + point p0 movej home + } + operation pick_op { + kind: handling + path: op_path + process { + gripper: "main_clamp", + dwell_ms: 50 + 50 ms, + clamp_force: max(20, 10) + } + start_action: + io.do[1] = true + end_action: + io.do[1] = false + } + proc main() + run_operation pick_op + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_60_IOWaitPulse.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_60_IOWaitPulse.grl new file mode 100644 index 0000000..368482a --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_60_IOWaitPulse.grl @@ -0,0 +1,23 @@ +language grl 0.1 +module W2IOWaitPulse + const speed v = joint(35 %) + const zone zf = fine + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + path io_path { + defaults { speed: v, zone: zf } + point p0 movej home + event at p0 distance 5 + 5 mm pulse io.do[20] duration 50 + 50 ms + } + proc main() + io.do[1] = true + io.ao[1] = 0.75 + io.go[1] = 3 + wait all(io.di[1] == true, io.di[2] == false) timeout 1 s on_timeout alarm "all timeout" + wait any(io.di[3] == true, io.di[4] == true) timeout 1 s + wait rising(io.di[5]) timeout 1 s + wait falling(io.di[6]) timeout 1 s + wait changed(io.di[7]) timeout 1 s + pulse io.do[2] duration 50 + 50 ms + run_path io_path + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_70_ControlFlow.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_70_ControlFlow.grl new file mode 100644 index 0000000..965b51c --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_70_ControlFlow.grl @@ -0,0 +1,35 @@ +language grl 0.1 +module W2ControlFlow + const speed v = joint(30 %) + const zone zf = fine + var bool ready = true + var bool fault = false + var int mode = 2 + var int retry = 0 + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + proc main() + if ready == true + movej home speed v zone zf + elseif fault == true + alarm FAULT "fault" + else + alarm NOT_READY "not ready" + end + while retry < 1 + retry = 1 + continue + end + for i = 1 to 2 step 1 + movej home speed v zone zf + end + switch mode + case 1 + alarm MODE1 "mode 1" + break + case 2 + movej home speed v zone zf + default + alarm MODE_OTHER "mode other" + end + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_80_ProcFuncCall.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_80_ProcFuncCall.grl new file mode 100644 index 0000000..db1e5b4 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_80_ProcFuncCall.grl @@ -0,0 +1,26 @@ +language grl 0.1 +module W2ProcFuncCall + const speed v = joint(30 %) + const zone zf = fine + var int global_count = 0 + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + proc read_part(out bool ok) + ok = true + end + proc increment_retry(inout int retry) + retry = 1 + end + func bool can_run(in int retry, in int max_retry) + return retry < max_retry + end + proc main() + var bool ok = false + var int retry = 0 + call read_part(ok) + call increment_retry(retry) + if retry < 3 + movej home speed v zone zf + end + return + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_90_ExceptionAlarm.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_90_ExceptionAlarm.grl new file mode 100644 index 0000000..c49f8e1 --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_90_ExceptionAlarm.grl @@ -0,0 +1,25 @@ +language grl 0.1 +module W2ExceptionAlarm + const speed v = joint(30 %) + const zone zf = fine + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + trap recover_trap() + raise E_STOP + end + task background cycle 20 ms + alarm TASK_MONITOR "task boundary" + end + proc main() + alarm START "start" severity info + try + movej home speed v zone zf + raise E_PICK_FAILED + catch E_PICK_FAILED + alarm RECOVER "recovering" severity warning + finally + alarm CLEANUP "cleanup" + end + enable interrupt guard + disable interrupt guard + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_99_FullSpecExample.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_99_FullSpecExample.grl new file mode 100644 index 0000000..8785f5d --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_99_FullSpecExample.grl @@ -0,0 +1,80 @@ +language grl 0.1 +module W2FullSpecExample + persistent tool gripper = tool { + tcp: pose(0 mm, 0 mm, 120 mm, 0 deg, 0 deg, 0 deg), + mass: 1.5 kg + } + persistent frame fixture = frame { + origin: pose(800 mm, 0 mm, 200 mm, 0 deg, 0 deg, 0 deg) + } + const speed v_fast = joint(55 %) + const speed v_pick = linear(180 mm/s) + const zone z_pick = z(10 mm) + target home = joint_target { + joints: [0 deg, -20 deg, 40 deg, 0 deg, 30 deg, 0 deg] + } + target pick = pose_target { + pose: pose(500 mm, 120 mm, 300 mm, 180 deg, 0 deg, 90 deg), + config: robot_config(0, 0, 1), + tool: gripper, + frame: fixture + } + target place = pose_target { + pose: pose(650 mm, -100 mm, 320 mm, 180 deg, 0 deg, 90 deg), + config: robot_config(0, 0, 1), + tool: gripper, + frame: fixture + } + path pick_path { + source { + type: "generated_example", + id: "pick_path" + } + defaults { + tool: gripper, + frame: fixture, + speed: v_pick, + zone: z_pick + } + point approach movej home speed v_fast zone fine + point above_pick movel pick offset z 100 mm + point at_pick movel pick zone fine + event after at_pick io.do[1] = true + event after at_pick wait io.di[1] == true timeout 2 s on_timeout alarm "Clamp close timeout" + point leave_pick movel pick offset z 100 mm + } + path place_path { + defaults { + tool: gripper, + frame: fixture, + speed: v_pick, + zone: z_pick + } + point above_place movel place offset z 100 mm + point at_place movel place zone fine + event after at_place io.do[1] = false + event after at_place wait io.di[2] == true timeout 2 s on_timeout alarm "Clamp open timeout" + point leave_place movel place offset z 100 mm + } + operation pick_op { + kind: handling + path: pick_path + process { + gripper: "main_clamp" + } + } + operation place_op { + kind: handling + path: place_path + process { + gripper: "main_clamp" + } + } + proc main() + set_tool gripper + set_frame fixture + run_operation pick_op + run_operation place_op + movej home speed v_fast zone fine + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/static/W2_E10_ExpressionDiagnostics.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/static/W2_E10_ExpressionDiagnostics.grl new file mode 100644 index 0000000..9355faa --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/static/W2_E10_ExpressionDiagnostics.grl @@ -0,0 +1,14 @@ +language grl 0.1 +module W2ExpressionDiagnostics + const speed v_ok = linear(100 mm/s) + const speed v_unknown_symbol = linear(missing_symbol mm/s) + const speed v_unknown_function = linear(no_such_function(1) mm/s) + const speed v_bad_arity = linear(atan2(1) mm/s) + const speed v_domain = linear(sqrt(-1) mm/s) + const speed v_div_zero = linear(100 mm/s / 0) + const zone z_unit = z(10 mm + 1 s) + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + proc main() + movej home speed v_ok zone fine + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/static/W2_E20_SemanticDiagnostics.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/static/W2_E20_SemanticDiagnostics.grl new file mode 100644 index 0000000..7904dfc --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/static/W2_E20_SemanticDiagnostics.grl @@ -0,0 +1,19 @@ +language grl 0.1 +module W2SemanticDiagnostics + const speed v = joint(30 %) + const speed v = joint(40 %) + const zone zf = fine + target home = joint_target { joints: [0 deg, 0 deg, 0 deg, 0 deg, 0 deg, 0 deg] } + proc set_done(out bool done) + done = true + end + func bool bad_func() + wait io.di[1] == true + return true + end + proc main() + call set_done(true) + call missing_proc() + movej missing_target speed v zone zf + end +end diff --git a/kdl-wasm/web/tests/fixtures/abb120/spec-programs/static/W2_E40_ControlFlowDiagnostics.grl b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/static/W2_E40_ControlFlowDiagnostics.grl new file mode 100644 index 0000000..61b9feb --- /dev/null +++ b/kdl-wasm/web/tests/fixtures/abb120/spec-programs/static/W2_E40_ControlFlowDiagnostics.grl @@ -0,0 +1,21 @@ +language grl 0.1 +module W2ControlFlowDiagnostics + var int mode = 1 + proc main() + break + continue + jump inner + if mode == 1 + label inner + end + switch mode + case 1 + break + case 1 + break + case mode + 1 + break + end + jump missing + end +end diff --git a/kdl-wasm/web/tests/integration/abb120SpecSuite.test.ts b/kdl-wasm/web/tests/integration/abb120SpecSuite.test.ts new file mode 100644 index 0000000..b391049 --- /dev/null +++ b/kdl-wasm/web/tests/integration/abb120SpecSuite.test.ts @@ -0,0 +1,132 @@ +import { readFileSync } from "node:fs"; +import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; +import { describe, expect, it } from "vitest"; +import { + runAbb120SpecSuite, + type Abb120SpecManifest, + type Abb120SpecProgramSource +} from "../../src/suites/abb120SpecSuite.js"; + +const WEB_ROOT = join(dirname(fileURLToPath(import.meta.url)), "../.."); +const SPEC_ROOT = join(WEB_ROOT, "tests", "fixtures", "abb120", "spec-programs"); + +function loadManifest(): Abb120SpecManifest { + return JSON.parse(readFileSync(join(SPEC_ROOT, "manifest.json"), "utf8")) as Abb120SpecManifest; +} + +function loadPrograms(manifest = loadManifest()): Abb120SpecProgramSource[] { + return manifest.programs.map((entry) => ({ + program_id: entry.program_id, + file: entry.file, + text: readFileSync(join(SPEC_ROOT, entry.file), "utf8") + })); +} + +describe("working2 ABB120 GRL spec suite", () => { + it("maps grammar sections 4 through 25 to concrete Runtime, Static, or Post programs", () => { + const manifest = loadManifest(); + const sections = manifest.coverage_matrix.map((item) => item.spec_section); + expect(sections).toEqual(Array.from({ length: 22 }, (_value, index) => index + 4)); + expect(manifest.programs).toHaveLength(19); + expect(manifest.programs.filter((program) => program.coverage_level === "Runtime")).toHaveLength(12); + expect(manifest.programs.filter((program) => program.coverage_level === "Static")).toHaveLength(4); + expect(manifest.programs.filter((program) => program.coverage_level === "Post")).toHaveLength(3); + + const programById = new Map(manifest.programs.map((program) => [program.program_id, program])); + for (const item of manifest.coverage_matrix) { + expect(item.program_ids.length).toBeGreaterThan(0); + for (const programId of item.program_ids) { + const program = programById.get(programId); + expect(program, `${item.spec_section} references missing ${programId}`).toBeDefined(); + expect( + item.coverage_level.split("/"), + `${item.spec_section} coverage level must include ${programId}` + ).toContain(program!.coverage_level); + } + } + }); + + it("builds a W2 job with compile, controller, queue, trace, IO, post, and roundtrip evidence", () => { + const manifest = loadManifest(); + const job = runAbb120SpecSuite(manifest, loadPrograms(manifest), { + now: "2026-06-28T01:30:00.000Z", + gitRevision: "test-revision" + }); + + expect(job.job_id).toMatch(/^W2-JOB-20260628013000-[a-f0-9]{8}$/); + expect(job.suite_id).toBe("working2-abb120-spec"); + expect(job.robot_id).toBe("abb_irb120_3_58"); + expect(job.coverage.missingSections).toEqual([]); + expect(job.programs.map((program) => program.program_id)).toEqual(manifest.programs.map((program) => program.program_id)); + + const runtime = job.programs.filter((program) => program.coverage_level === "Runtime"); + expect(runtime.every((program) => program.compile.parsed)).toBe(true); + expect(runtime.every((program) => program.compile.sourceMapEntries > 0)).toBe(true); + expect(runtime.every((program) => program.controller?.commands.map((command) => command.command).includes("loadProgram"))).toBe(true); + expect(runtime.every((program) => program.controller?.commands.map((command) => command.command).includes("resetFault"))).toBe(true); + expect(runtime.some((program) => program.program_id === "W2_60_IOWaitPulse" && Object.keys(program.io?.image ?? {}).length > 0)).toBe(true); + expect(runtime.some((program) => (program.trace ?? []).some((event) => event.kind === "wait"))).toBe(true); + expect(runtime.some((program) => (program.motionQueue?.items.length ?? 0) > 0)).toBe(true); + expect(runtime.some((program) => + program.program_id === "W2_99_FullSpecExample" && + program.compile.pathCount === 2 && + program.compile.operationCount === 2 && + (program.motionQueue?.items.some((item) => item.source.kind === "path" && item.source.operationId === "pick_op") ?? false) + )).toBe(true); + expect(runtime.every((program) => (program.trajectory?.sampleCount ?? 0) >= 0)).toBe(true); + expect(runtime.some((program) => + (program.trajectory?.frames ?? []).some((frame) => + frame.joints.length === 6 && + frame.tcp.position.length === 3 && + frame.tcp.quaternion.length === 4 + ) + )).toBe(true); + + for (const program of job.programs) { + const expected = manifest.programs.find((entry) => entry.program_id === program.program_id)!; + expect(program.status, program.program_id).toBe(expected.expected_status); + const codes = program.diagnostics.map((diagnostic) => diagnostic.code); + for (const code of expected.expected_diagnostics) { + expect(codes, program.program_id).toContain(code); + } + expect(codes, program.program_id).not.toContain("W2_EXPECTED_DIAGNOSTIC_MISSING"); + expect(codes, program.program_id).not.toContain("W2_EXPECTED_STATUS_MISMATCH"); + } + + const diagnostics = Object.fromEntries(job.programs.map((program) => [ + program.program_id, + program.diagnostics.map((diagnostic) => diagnostic.code) + ])); + expect(diagnostics.W2_E10_ExpressionDiagnostics).toEqual(expect.arrayContaining([ + "GRL_EXPR_UNKNOWN_SYMBOL", + "GRL_EXPR_UNKNOWN_FUNCTION", + "GRL_EXPR_ARITY", + "GRL_EXPR_DOMAIN", + "GRL_EXPR_DIV_ZERO", + "GRL_EXPR_UNIT_MISMATCH" + ])); + expect(diagnostics.W2_E20_SemanticDiagnostics).toEqual(expect.arrayContaining([ + "GRL_SYMBOL_DUPLICATE", + "GRL_ARGUMENT_NOT_LVALUE" + ])); + expect(diagnostics.W2_E30_MotionDiagnostics).toEqual(expect.arrayContaining([ + "GRL_PATH_EMPTY", + "KDL_JOINT_LIMIT", + "KDL_TARGET_UNREACHABLE" + ])); + expect(diagnostics.W2_E40_ControlFlowDiagnostics).toEqual(expect.arrayContaining([ + "GRL_BREAK_OUTSIDE_FLOW" + ])); + expect(diagnostics.W2_E50_RuntimeTimeout).toEqual(expect.arrayContaining([ + "VC_WAIT_TIMEOUT" + ])); + + const post = job.programs.filter((program) => program.coverage_level === "Post"); + expect(post.every((program) => program.post?.filenames.some((filename) => filename.endsWith(".mod")))).toBe(true); + expect(post.every((program) => program.post?.filenames.some((filename) => filename.endsWith(".ls")))).toBe(true); + expect(post.every((program) => program.post?.filenames.some((filename) => filename.endsWith(".src")))).toBe(true); + expect(post.every((program) => program.roundtrip?.status.match(/pass|warn/))).toBe(true); + expect(job.artifacts.jobJson).toContain(job.job_id); + }); +}); diff --git a/kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts b/kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts index 0508679..13a1ea5 100644 --- a/kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts +++ b/kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts @@ -69,6 +69,8 @@ describe("ABB120 suite artifacts", () => { expect(html).toContain("ABB120 Station"); expect(html).toContain("Path: pick_place"); + expect(html).toContain("W2-JOB-latest"); + expect(html).toContain("working2-abb120-spec"); expect(html).toContain("Controller"); expect(html).toContain("Motion Queue"); expect(html).toContain("Reports"); diff --git a/package-lock.json b/package-lock.json index 9449803..690e414 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "devDependencies": { "@types/node": "^22.15.30", "typescript": "^5.8.3", + "vite-node": "^3.2.4", "vitest": "^3.2.4" } }, diff --git a/package.json b/package.json index 1071096..e743254 100644 --- a/package.json +++ b/package.json @@ -6,11 +6,17 @@ "scripts": { "test": "vitest run --config kdl-wasm/web/vitest.config.ts", "typecheck": "tsc -p kdl-wasm/web/tsconfig.json --noEmit", - "verify:virtual-controller": "node kdl-wasm/web/scripts/verify-virtual-controller.mjs" + "verify:virtual-controller": "node kdl-wasm/web/scripts/verify-virtual-controller.mjs", + "verify:virtual-controller-buttons": "node kdl-wasm/web/scripts/verify-virtual-controller-buttons.mjs", + "suite:abb120-spec": "vite-node kdl-wasm/web/scripts/run-abb120-spec-suite.ts", + "demo:build": "node kdl-wasm/web/scripts/build-demo-package.mjs", + "demo:verify": "node kdl-wasm/web/scripts/verify-demo-package.mjs", + "demo:deploy": "powershell -NoProfile -ExecutionPolicy Bypass -File kdl-wasm/web/scripts/deploy-demo-package.ps1" }, "devDependencies": { "@types/node": "^22.15.30", "typescript": "^5.8.3", + "vite-node": "^3.2.4", "vitest": "^3.2.4" }, "dependencies": { diff --git a/work/doc/GRL功能语法逻辑与程序创建使用手册.docx b/work/doc/GRL功能语法逻辑与程序创建使用手册.docx new file mode 100644 index 0000000..56e2ad0 Binary files /dev/null and b/work/doc/GRL功能语法逻辑与程序创建使用手册.docx differ diff --git a/work/doc/通用机器人离线编程系统测试文档.docx b/work/doc/通用机器人离线编程系统测试文档.docx new file mode 100644 index 0000000..bfde067 Binary files /dev/null and b/work/doc/通用机器人离线编程系统测试文档.docx differ diff --git a/work/doc/通用机器人编程语法规范.md b/work/doc/通用机器人编程语法规范.md index 08d1d42..68b44ab 100644 --- a/work/doc/通用机器人编程语法规范.md +++ b/work/doc/通用机器人编程语法规范.md @@ -168,7 +168,7 @@ label jump movej movel movec run_path run_operation set_tool set_frame set_speed set_zone wait pulse timer -io true false all any rising falling changed +io true false and or not mod all any rising falling changed trap interrupt enable disable raise alarm try catch finally task sync post_hint source defaults point event before after at @@ -277,9 +277,163 @@ persistent real counter = 0 3. `var` 默认为局部变量。 4. 类型可以显式写出,自动生成程序建议显式写出。 -## 7. 坐标、工具和目标点 +## 7. 表达式与运算 -### 7.1 工具 +GRL 表达式是数据声明、运动参数、路径参数、IO 条件和流程控制的公共基础。首版按 ABB RAPID、FANUC LS/KAREL、KUKA KRL 共同具备的数学能力建模,优先保证同一 GRL 程序能稳定编译到统一 IR,再由后处理器输出品牌程序。 + +### 7.1 语法范围 + +表达式必须支持: + +1. 算术:一元 `+`、一元 `-`、二元 `+`、`-`、`*`、`/`、`mod`。 +2. 比较:`==`、`!=`、`<`、`<=`、`>`、`>=`。 +3. 逻辑:`and`、`or`、`not`;可兼容 `&&`、`||`、`!` 作为输入别名,IR 中统一为 GRL 关键字。 +4. 括号:`(...)` 显式改变优先级。 +5. 函数调用:`callee(args...)`,参数内部允许完整表达式。 +6. 单位后缀:可作用于数字字面量、标识符、函数调用或括号表达式,例如 `100 mm`、`blend_base mm`、`sqrt(90000) mm`、`(10 + 5) deg`。 +7. 现有结构表达式:数组、对象、构造器调用、标识符引用、IO 引用和 `offset` 表达式必须继续兼容。 + +优先级从高到低: + +| 层级 | 运算 | +| --- | --- | +| 1 | 函数调用、对象、数组、括号、构造器、offset | +| 2 | 一元 `+`、`-`、`not`、`!` | +| 3 | `*`、`/`、`mod` | +| 4 | `+`、`-` | +| 5 | `<`、`<=`、`>`、`>=` | +| 6 | `==`、`!=` | +| 7 | `and`、`&&` | +| 8 | `or`、`||` | + +### 7.2 内置常量和函数 + +首版内置常量: + +| 名称 | 含义 | +| --- | --- | +| `pi` | 圆周率 | +| `e` | 自然常数 | + +首版内置函数: + +| 类别 | 函数 | +| --- | --- | +| 三角函数 | `sin`、`cos`、`tan`、`asin`、`acos`、`atan`、`atan2` | +| 数值函数 | `sqrt`、`abs`、`pow`、`min`、`max`、`clamp`、`floor`、`ceil`、`round` | + +函数规则: + +1. `sin/cos/tan` 接收角度量;带 `deg` 或 `rad` 单位时归一化为弧度,纯数按弧度处理。 +2. `asin/acos` 接收无单位数值,定义域为 `[-1, 1]`;`atan` 接收无单位数值;`atan2(y, x)` 的两个参数必须同维度或均为无单位数值。 +3. `asin/acos/atan/atan2` 返回角度量;在 `pose(...)` 姿态项或 `joint_target.joints` 等角度上下文中可直接使用。 +4. `sqrt` 首版只要求支持无单位数值或编译器明确支持的上下文,负数必须报定义域错误。 +5. `min/max/clamp` 的参数必须维度兼容;`clamp(value, min, max)` 的边界顺序错误应给出 diagnostic。 +6. 函数参数数量必须严格检查,例如 `atan2` 为 2 个参数,`clamp` 为 3 个参数。 + +### 7.3 单位和求值语义 + +数值求值采用统一 SI 归一化: + +| GRL 输入 | IR/KDL 归一化 | +| --- | --- | +| `mm` | m | +| `m` | m | +| `mm/s` | m/s | +| `mm/s2` | m/s2 | +| `deg` | rad | +| `rad` | rad | +| `%` | 0 到 1 的比例 | +| `s` | s | +| `ms` | s | +| `kg` | kg | + +规则: + +1. 同维度数值可以相加、相减和比较,结果保留该维度并归一化。 +2. 纯数可以参与乘除;维度乘除首版只允许编译器明确支持的上下文,避免产生复杂复合单位。 +3. 不同维度相加、相减或比较必须报错,例如 `10 mm + 2 s`。 +4. 构造器可以提供默认上下文单位:`linear(...)` 默认 `mm/s`,`angular(...)` 默认 `deg/s`,`z(...)` 默认 `mm`,`pose(...)` 前三项默认 `mm`、后三项默认 `deg`,`joint_target.joints` 默认 `deg`,`timeout/duration` 默认 `s`。 +5. 因此 `linear(100 + 50 mm/s)` 在 `linear` 速度上下文中等价于 `linear(150 mm/s)`;自动生成程序推荐输出显式单位,减少人工歧义。 + +### 7.4 编译期求值位置 + +常量表达式必须在编译阶段求值,并把结果写入 Semantic IR / KDL request,而不是把表达式字符串传到运动规划层。 + +必须支持的求值位置: + +1. 数据声明 initializer:`const`、`persistent`、需要静态初值的 `var`。 +2. `speed`:`linear(...)`、`joint(...)`、`angular(...)`、`acc ...` 参数。 +3. `zone`:`fine`、`z(...)`、`cnt(...)`。 +4. `pose(...)`、`poseq(...)`、`robot_config(...)`。 +5. `joint_target { joints: [...] }`。 +6. `pose_target { pose: ... }`。 +7. `tool { tcp: ..., mass: ... }` 和 `frame { origin: ... }`。 +8. path `defaults`、`source` 属性和 path point 内联 `speed`、`zone`、`tool`、`frame`、`via`、`target` 参数。 +9. path event 的 `distance`。 +10. `wait ... timeout ...` 和 `pulse ... duration ...` 中的时间常量。 +11. operation `process` 中需要数值常量的工艺参数。 +12. `switch case` 值。 + +比较和逻辑表达式也必须进入 AST。纯常量比较/逻辑可在编译期折叠;依赖 IO、变量或运行态状态的条件先保留为结构化控制表达式,供虚拟控制器和后续品牌映射使用。 + +### 7.5 示例 + +```text +const real blend_base = 5 + 5 +const speed v_pick = linear(100 + 50 mm/s) +const speed v_safe = linear(max(50 mm/s, 200 mm/s / 2)) +const zone z_app = z(clamp(blend_base mm, 1 mm, 50 mm)) + +target home = joint_target { + joints: [0 deg, (10 + 5) deg, -90 deg, 0 deg, 0 deg, 0 deg] +} + +target pick = pose_target { + pose: pose(400 + 50 mm, 20 * 2 mm, sqrt(90000) mm, 0 deg, 0 deg, atan2(1, 1)) +} + +wait io.ai[2] > sin(30 deg) timeout 1 + 1 s +``` + +编译期结果要求: + +1. `v_pick` 进入 IR 后为 `linear`,速度 `0.15 m/s`。 +2. `z_app` 进入 IR 后为 `distance`,距离 `0.01 m`。 +3. `home.joints[1]` 进入 IR 后为 `15 deg` 对应的弧度值。 +4. `pick.pose.position[0]` 进入 IR 后为 `0.45 m`。 +5. `atan2(1, 1)` 进入姿态上下文后为 `45 deg` 对应的弧度值。 + +### 7.6 诊断 + +运算功能必须输出稳定 diagnostic: + +| code | 场景 | +| --- | --- | +| `GRL_EXPR_PARSE` | 表达式语法错误或括号不匹配。 | +| `GRL_EXPR_UNKNOWN_SYMBOL` | 常量求值遇到未知标识符。 | +| `GRL_EXPR_UNKNOWN_FUNCTION` | 未知函数。 | +| `GRL_EXPR_ARITY` | 函数参数数量错误。 | +| `GRL_EXPR_DOMAIN` | 数学定义域错误,例如 `sqrt(-1)`、`acos(2)`。 | +| `GRL_EXPR_DIV_ZERO` | 除零。 | +| `GRL_EXPR_UNIT_MISMATCH` | 单位维度不兼容。 | +| `GRL_EXPR_NON_CONSTANT` | 需要常量的位置出现运行时表达式。 | +| `GRL_EXPR_UNSUPPORTED_RUNTIME` | 后处理暂不支持的复杂运行时表达式。 | + +每个 diagnostic 必须包含 severity、message、source range,并能通过 source map 定位到 GRL 源文件行列。 + +### 7.7 跨品牌边界 + +首版跨品牌输出不直接翻译复杂表达式字符串,而是优先输出编译期折叠后的常量: + +1. `linear(100 + 50 mm/s)` 输出为各品牌可表达的具体速度值。 +2. `z(clamp(...))` 输出为具体 ABB zone、FANUC CNT 或 KUKA 近似 blend。 +3. runtime 条件表达式如果后处理器无法保真映射,必须进入转换报告,不得静默丢失。 +4. 品牌专用数学函数、控制器系统变量和复杂运行时表达式不作为首版公共能力,后续通过 post/import report 增量支持。 + +## 8. 坐标、工具和目标点 + +### 8.1 工具 ```text persistent tool gripper = tool { @@ -289,7 +443,7 @@ persistent tool gripper = tool { } ``` -### 7.2 工件坐标 +### 8.2 工件坐标 ```text persistent frame fixture = frame { @@ -297,7 +451,7 @@ persistent frame fixture = frame { } ``` -### 7.3 关节目标点 +### 8.3 关节目标点 ```text target home = joint_target { @@ -307,7 +461,7 @@ target home = joint_target { `joint_target` 主要用于 `movej`,后处理可映射到 ABB `jointtarget`、KUKA `E6AXIS` 或 FANUC 关节位置数据。 -### 7.4 笛卡尔目标点 +### 8.4 笛卡尔目标点 ```text target pick = pose_target { @@ -330,7 +484,7 @@ pose(x, y, z, rx, ry, rz) poseq(500 mm, 120 mm, 300 mm, 0, 0, 0.7071068, 0.7071068) ``` -### 7.5 偏移目标点 +### 8.5 偏移目标点 ```text var pose_target approach = pick offset z 100 mm @@ -344,9 +498,9 @@ var pose_target p3 = pick offset_in tool z -50 mm var pose_target p4 = pick offset_in frame fixture x 100 mm ``` -## 8. 速度和过渡 +## 9. 速度和过渡 -### 8.1 速度 +### 9.1 速度 ```text const speed v_joint_fast = joint(80 %) @@ -367,7 +521,7 @@ const speed v_orient = angular(90 deg/s) const speed v_slow = linear(100 mm/s, acc 500 mm/s2) ``` -### 8.2 过渡 +### 9.2 过渡 ```text const zone z_fine = fine @@ -384,9 +538,9 @@ const zone z_cont = continuous 3. `cnt(percent)`:以百分比表示连续过渡,便于映射 FANUC `CNT`。 4. `continuous`:允许连续通过,实际过渡由后处理器或虚拟控制器策略决定。 -## 9. 运动指令 +## 10. 运动指令 -### 9.1 基本语法 +### 10.1 基本语法 ```text movej TargetExpr [speed Speed] [zone Zone] [tool Tool] [frame Frame] @@ -402,7 +556,7 @@ movel pick speed linear(300 mm/s) zone z10 movec via arc_mid target arc_end speed linear(150 mm/s) zone fine ``` -### 9.2 MOVEJ 语义 +### 10.2 MOVEJ 语义 `movej` 表示关节空间运动。机器人按各轴关节角度差分运行,关节同起同停,TCP 轨迹不要求是直线。 @@ -416,7 +570,7 @@ movec via arc_mid target arc_end speed linear(150 mm/s) zone fine - FANUC:`J P[...]` - KUKA:`PTP` -### 9.3 MOVEL 语义 +### 10.3 MOVEL 语义 `movel` 表示 TCP 直线运动。TCP 沿起点到终点的空间直线运行,关节角由每个 TCP 采样点 IK 求解。 @@ -430,7 +584,7 @@ movec via arc_mid target arc_end speed linear(150 mm/s) zone fine - FANUC:`L P[...]` - KUKA:`LIN` -### 9.4 MOVEC 语义 +### 10.4 MOVEC 语义 `movec` 表示 TCP 圆弧运动。TCP 从当前点出发,经过 via 点,到达 target 点,沿圆弧运行,关节角由每个圆弧采样点 IK 求解。 @@ -445,7 +599,7 @@ movec via arc_mid target arc_end speed linear(150 mm/s) zone fine - FANUC:`C P[...]` - KUKA:`CIRC` -### 9.5 当前工具和当前坐标 +### 10.5 当前工具和当前坐标 ```text set_tool gripper @@ -463,11 +617,11 @@ set_zone z10 编译到 IR 时,所有运动必须有确定的 `tool`、`frame`、`speed`、`zone`。 -## 10. Path 语法 +## 11. Path 语法 Path 是自动离线编程的核心对象。CAD 曲线、规划点、示教点、工艺模板应优先生成 Path,而不是直接生成散乱运动语句。 -### 10.1 基本语法 +### 11.1 基本语法 ```text path pick_path { @@ -484,7 +638,7 @@ path pick_path { } ``` -### 10.2 圆弧点 +### 11.2 圆弧点 ```text path arc_path { @@ -500,7 +654,7 @@ path arc_path { } ``` -### 10.3 来源元数据 +### 11.3 来源元数据 ```text path curve_032_generated { @@ -532,7 +686,7 @@ path curve_032_generated { 3. 重新生成程序。 4. 报告中定位到 CAD 曲线或工艺对象。 -### 10.4 Path event +### 11.4 Path event ```text event before p001 io.do[10] = true @@ -547,7 +701,7 @@ event at p005 distance -20 mm pulse io.do[20] duration 100 ms 3. `at ... distance`:相对路径点提前或滞后触发,首版可编译为最近采样点事件。 4. 后处理到品牌程序时,若品牌不支持精确路径触发,应生成转换报告。 -### 10.5 `run_path` +### 11.5 `run_path` ```text proc main() @@ -562,7 +716,7 @@ end 3. event 变为 IO/Wait/Process IR。 4. 保留 source map,调试时可从程序行定位到路径点。 -## 11. Operation 语法 +## 12. Operation 语法 Operation 表达工艺语义,比 Path 更高一层。 @@ -614,9 +768,9 @@ end 3. 执行 `end_action`。 4. 保留工艺参数,供仿真 UI、报告和后处理使用。 -## 12. IO 与等待 +## 13. IO 与等待 -### 12.1 IO 地址 +### 13.1 IO 地址 ```text io.di[1] @@ -637,7 +791,7 @@ io.alias.clamp_closed io.alias.gripper_close_cmd ``` -### 12.2 IO 写入 +### 13.2 IO 写入 ```text io.do[1] = true @@ -645,7 +799,7 @@ io.go[1] = 16 io.ao[1] = 3.5 ``` -### 12.3 wait +### 13.3 wait ```text wait io.di[1] == true @@ -664,7 +818,7 @@ wait io.di[1] == true timeout 2 s on_timeout alarm "Clamp close timeout" wait io.di[1] == true timeout 2 s on_timeout call recover_clamp() ``` -### 12.4 pulse +### 13.4 pulse ```text pulse io.do[3] duration 200 ms @@ -676,11 +830,11 @@ pulse io.do[3] duration 200 ms 2. 虚拟时间到达 duration 后自动复位。 3. trace 中必须记录置位和复位事件。 -## 13. 流程控制 +## 14. 流程控制 流程控制用于表达工艺分支、重试、配方选择、批量工位循环和异常恢复。GRL 新程序应优先使用结构化控制流;`label/jump` 主要用于兼容 FANUC TP/LS 等已有程序导入。 -### 13.1 条件 `if / elseif / else` +### 14.1 条件 `if / elseif / else` ```text if part_ok @@ -711,7 +865,7 @@ if is_part_ready() if recipe_id == 2 or recipe_id == 3 ``` -### 13.2 `while` 循环 +### 14.2 `while` 循环 ```text while retry < 3 @@ -731,7 +885,7 @@ end 4. `continue` 跳过本轮剩余语句,进入下一轮条件判断。 5. 编译器建议对可能无限循环的 `while true` 给出 warning,除非循环体内包含明确的 `break`、`return`、`raise` 或 `wait`。 -### 13.3 `for` 循环 +### 14.3 `for` 循环 ```text for i = 0 to 9 step 1 @@ -763,7 +917,7 @@ end 4. `break` 和 `continue` 只影响当前最近一层循环。 5. 后处理到不支持结构化 `for` 的品牌时,可展开为标签和跳转,但必须保持 source map。 -### 13.4 `switch / case / default` +### 14.4 `switch / case / default` ```text switch recipe_id @@ -798,7 +952,7 @@ end 6. 导出到 FANUC TP/LS 时,`switch` 可转换为 `SELECT`、条件跳转或 `LBL/JMP` 组合。 7. 导出到 ABB/KUKA 时,优先转换为品牌结构化分支。 -### 13.5 `break` 和 `continue` +### 14.5 `break` 和 `continue` ```text while true @@ -821,7 +975,7 @@ end 2. `continue` 只能出现在 `while` 或 `for` 中。 3. 在 `switch` 中不需要 `break` 防止贯穿,因为 GRL 默认不贯穿。 -### 13.6 label 和 jump +### 14.6 label 和 jump ```text label retry @@ -841,9 +995,9 @@ end 4. 允许 `jump` 跳出块结构,但编译器应生成 warning。 5. 自动生成的新程序不应使用 `label/jump`,除非目标后处理配置要求 FANUC 风格输出。 -## 14. 子程序和函数 +## 15. 子程序和函数 -### 14.1 `proc` 子程序 +### 15.1 `proc` 子程序 `proc` 是无返回值子程序,用于组织工艺步骤、运动流程、IO 流程和恢复逻辑。 @@ -869,7 +1023,7 @@ call pick_part(slot_id) 4. `return` 可以提前退出 `proc`,但不能携带返回值。 5. `proc main()` 是默认入口。一个模块中最多一个默认入口。 -### 14.2 参数方向 +### 15.2 参数方向 参数支持 `in`、`out`、`inout` 三种方向。未写方向时默认为 `in`。 @@ -905,7 +1059,7 @@ call read_part(ok) call increment_retry(retry) ``` -### 14.3 `func` 函数 +### 15.3 `func` 函数 `func` 有返回值,适合计算条件、选择目标点、计算偏移、读取配方参数。函数应尽量无副作用。 @@ -945,7 +1099,7 @@ movel slot_pose(slot_id) speed linear(200 mm/s) zone z10 4. `func` 默认不允许执行运动指令、`wait`、`pulse`、`run_path`、`run_operation`。编译器应把这类用法作为 error 或强 warning。 5. 如果确实需要带副作用的逻辑,应使用 `proc`。 -### 14.4 作用域和名称解析 +### 15.4 作用域和名称解析 名称解析顺序: @@ -962,7 +1116,7 @@ movel slot_pose(slot_id) speed linear(200 mm/s) zone z10 3. `for` 循环变量只在循环体内有效。 4. `label` 只在当前 `proc` 内有效。 -### 14.5 子程序调用和后处理 +### 15.5 子程序调用和后处理 后处理映射: @@ -975,16 +1129,16 @@ movel slot_pose(slot_id) speed linear(200 mm/s) zone z10 如果目标品牌或输出格式不支持某种参数模式,后处理器必须生成转换报告,不能静默丢失语义。 -## 15. 异常、报警和中断 +## 16. 异常、报警和中断 -### 15.1 alarm 和 raise +### 16.1 alarm 和 raise ```text alarm "Part not detected" raise E_PICK_FAILED ``` -### 15.2 try/catch +### 16.2 try/catch ```text try @@ -998,7 +1152,7 @@ end 首版可先实现 `alarm`、`raise` 和简单 `catch`,复杂品牌错误恢复分阶段支持。 -### 15.3 trap 和 interrupt +### 16.3 trap 和 interrupt ```text trap emergency_stop() @@ -1018,7 +1172,7 @@ disable interrupt e_stop 2. KUKA 可映射到 `INTERRUPT DECL`、`INTERRUPT ON/OFF` 等近似结构。 3. FANUC 首版可生成后台逻辑、条件监控或转换报告。 -## 16. 多任务 +## 17. 多任务 首版只定义语法,不要求完整实现多任务实时调度: @@ -1032,9 +1186,9 @@ end 虚拟控制器可先按周期任务模拟;后处理时根据品牌能力生成后台任务或转换报告。 -## 17. 品牌扩展和后处理提示 +## 18. 品牌扩展和后处理提示 -### 17.1 post_hint +### 18.1 post_hint ```text post_hint abb { @@ -1055,7 +1209,7 @@ post_hint kuka { } ``` -### 17.2 brand metadata +### 18.2 brand metadata ```text @brand.abb { @@ -1078,7 +1232,7 @@ post_hint kuka { 2. 通用虚拟控制器不应依赖品牌 metadata 才能执行。 3. 无法支持的品牌扩展必须进入转换报告。 -## 18. 自动编程生成规则 +## 19. 自动编程生成规则 自动生成 GRL 时,应遵循以下规则: @@ -1108,9 +1262,9 @@ proc main() end ``` -## 19. 后处理映射规则 +## 20. 后处理映射规则 -### 19.1 ABB RAPID +### 20.1 ABB RAPID | GRL | ABB RAPID | | --- | --- | @@ -1140,7 +1294,7 @@ movel pick speed linear(300 mm/s) zone z10 tool gripper frame fixture MoveL pick, v300, z10, gripper\WObj:=fixture; ``` -### 19.2 FANUC LS/TP 风格 +### 20.2 FANUC LS/TP 风格 | GRL | FANUC | | --- | --- | @@ -1170,7 +1324,7 @@ movel P10 speed linear(300 mm/s) zone cnt(10) L P[10] 300mm/sec CNT10 ; ``` -### 19.3 KUKA KRL +### 20.3 KUKA KRL | GRL | KUKA KRL | | --- | --- | @@ -1201,7 +1355,7 @@ $VEL.CP = 0.3 LIN XPICK C_DIS ``` -## 20. 编译语义和 IR +## 21. 编译语义和 IR 编译管线: @@ -1239,7 +1393,7 @@ interface MotionInstruction { } ``` -## 21. 语义检查 +## 22. 语义检查 编译器必须检查: @@ -1250,21 +1404,25 @@ interface MotionInstruction { 5. 圆弧三点是否重合或共线。 6. 工具、坐标系、速度、过渡是否可解析。 7. 单位是否正确。 -8. IO 地址是否存在于 IO map 或允许范围。 -9. 子程序参数数量和类型是否匹配。 -10. `out` 参数是否在所有正常返回路径上赋值。 -11. `inout` 和 `out` 实参是否为可赋值左值。 -12. `func` 是否在所有正常返回路径上返回正确类型。 -13. `break`、`continue` 是否出现在合法结构内。 -14. `switch case` 是否为常量表达式,是否存在重复 case。 -15. `jump` 是否跳入非法块结构。 -16. `wait` 是否有可执行条件。 -17. Path 是否为空。 -18. Path point 名称是否重复。 -19. Operation 是否引用不存在的 Path。 -20. 目标点是否可达。 -21. 关节是否超限。 -22. 后处理目标品牌是否支持所用语义。 +8. 表达式优先级、括号、函数调用参数是否解析正确。 +9. 内置函数名称、参数数量、定义域和单位维度是否正确。 +10. 需要常量的位置是否只使用常量表达式。 +11. 除零、未知符号、未知函数和复杂运行时表达式是否产生稳定 diagnostic。 +12. IO 地址是否存在于 IO map 或允许范围。 +13. 子程序参数数量和类型是否匹配。 +14. `out` 参数是否在所有正常返回路径上赋值。 +15. `inout` 和 `out` 实参是否为可赋值左值。 +16. `func` 是否在所有正常返回路径上返回正确类型。 +17. `break`、`continue` 是否出现在合法结构内。 +18. `switch case` 是否为常量表达式,是否存在重复 case。 +19. `jump` 是否跳入非法块结构。 +20. `wait` 是否有可执行条件。 +21. Path 是否为空。 +22. Path point 名称是否重复。 +23. Operation 是否引用不存在的 Path。 +24. 目标点是否可达。 +25. 关节是否超限。 +26. 后处理目标品牌是否支持所用语义。 诊断格式建议: @@ -1275,7 +1433,7 @@ W3002: zone z50 is larger than segment length W4001: KUKA post approximates GRL cnt(30) by C_DIS ``` -## 22. EBNF 语法草案 +## 23. EBNF 语法草案 以下是首版解析器可采用的简化 EBNF: @@ -1310,7 +1468,8 @@ path_item = defaults_block | source_block | path_point | path_event ; defaults_block = "defaults" "{" { property } "}" ; source_block = "source" "{" { property } "}" ; path_point = "point" identifier motion_stmt ; -path_event = "event" ( "before" | "after" ) identifier statement ; +path_event = "event" ( ( "before" | "after" ) identifier + | "at" identifier "distance" expr ) statement ; operation_decl = "operation" identifier "{" "kind" ":" identifier @@ -1379,18 +1538,34 @@ jump_stmt = "jump" identifier ; param_list = param { "," param } ; param = [ "in" | "out" | "inout" ] type identifier ; arg_list = expr { "," expr } ; +const_expr = expr ; +duration = expr ; +length = expr ; +speed_expr = expr ; +zone_expr = expr ; -expr = literal +expr = or_expr ; +or_expr = and_expr { ( "or" | "||" ) and_expr } ; +and_expr = equality_expr { ( "and" | "&&" ) equality_expr } ; +equality_expr = relation_expr { ( "==" | "!=" ) relation_expr } ; +relation_expr = additive_expr { ( "<" | "<=" | ">" | ">=" ) additive_expr } ; +additive_expr = multiply_expr { ( "+" | "-" ) multiply_expr } ; +multiply_expr = unary_expr { ( "*" | "/" | "mod" ) unary_expr } ; +unary_expr = [ "+" | "-" | "not" | "!" ] postfix_expr ; +postfix_expr = primary_expr { unit_suffix | offset_clause } ; +unit_suffix = unit ; +primary_expr = literal | identifier - | call_expr | io_ref - | unary_expr - | binary_expr + | call_expr + | array + | object | "(" expr ")" ; call_expr = identifier "(" [ arg_list ] ")" ; +literal = number | string | "true" | "false" ; ``` -## 23. 完整示例 +## 24. 完整示例 ```text language grl 0.1 @@ -1488,7 +1663,7 @@ module Main end ``` -## 24. 实施优先级 +## 25. 实施优先级 P0 必须实现: @@ -1503,9 +1678,10 @@ P0 必须实现: 9. `call`、`return`、`break`、`continue`。 10. `proc` 参数方向 `in/out/inout`。 11. `func`、函数调用表达式和返回值检查。 -12. `io.do/di`、`wait`、`pulse`。 -13. AST、语义检查、IR、source map。 -14. ABB、FANUC、KUKA 后处理原型。 +12. 表达式 parser、单位后缀、内置数学函数、三角函数和编译期常量求值。 +13. `io.do/di`、`wait`、`pulse`。 +14. AST、语义检查、IR、source map。 +15. ABB、FANUC、KUKA 后处理原型。 P1 扩展: @@ -1517,7 +1693,7 @@ P1 扩展: 6. 品牌程序导入。 7. 复杂品牌扩展和转换报告。 -## 25. 参考资料 +## 26. 参考资料 1. ABB RAPID Technical Reference Manual,RAPID Instructions, Functions and Data Types: https://library.e.abb.com/public/b227fcd260204c4dbeb8a58f8002fe64/Rapid_instructions.pdf diff --git a/working2/01-项目功能内容.md b/working2/01-项目功能内容.md new file mode 100644 index 0000000..ac242f9 --- /dev/null +++ b/working2/01-项目功能内容.md @@ -0,0 +1,216 @@ +# 01-项目功能内容 + +版本:0.1 +日期:2026-06-28 + +## 1. 总体需求 + +目标是对标 `通用机器人编程语法规范.md`,以 ABB IRB120 3/58 URDF fixture 为基础,创建一套覆盖 GRL 语法规范的机器人程序集,并全面完成虚拟控制器执行验收。 + +核心结果: + +1. 语法规范覆盖矩阵:每个 GRL 章节都有对应程序、静态测试或后处理测试。 +2. ABB120 机器人程序集:覆盖数据声明、表达式、工具/坐标、目标点、速度、zone、运动、path、operation、IO/wait、流程控制、proc/func、异常、品牌扩展和后处理。 +3. 虚拟控制器执行报告:每个可执行程序都能生成 controller state、program counter、motion queue、trace、IO image、wait/alarm、source map 和 trajectory 证据。 +4. 错误诊断套件:限位、不可达、表达式错误、单位错误、wait timeout、重复符号、非法控制流等故障必须稳定输出 diagnostic。 +5. 三品牌输出与回读:同一 IR 输出 ABB RAPID、FANUC LS 风格、KUKA KRL 风格,并生成 post/roundtrip 差异报告。 +6. 服务器演示包:把虚拟控制器网站、19 个 GRL 规范测试程序、最新 W2 job 证据包、截图和使用说明打包发布到 HTTPS 服务器,用户可通过浏览器演示虚拟控制器全部功能。 + +## 2. 覆盖分层 + +不是所有语法都应强行作为虚拟控制器 happy path 执行。覆盖分为三层: + +| 层级 | 范围 | 验收方式 | +| --- | --- | --- | +| Runtime | `module/proc/main`、数据、表达式、target、speed、zone、movej/movel/movec、path、operation、IO、wait、pulse、if/while/for/switch、call/return、alarm/raise/try | 虚拟控制器加载并执行,输出 trace 和状态快照。 | +| Static | `func` 副作用限制、参数方向、scope、label/jump 合法性、switch case 常量、表达式诊断、trap/interrupt/task 语义边界 | parser/semantic diagnostic 和 source map。 | +| Post | `post_hint`、`@brand.*`、ABB/FANUC/KUKA 映射、导入回读、runtime 表达式保真边界 | post report、roundtrip report、差异报告。 | + +## 3. ABB120 基准 + +ABB120 基准沿用仓库稳定 fixture: + +| 项 | 值 | +| --- | --- | +| robotId | `abb_irb120_3_58` | +| URDF 常量 | `ABB_IRB120_3_58_URDF` | +| load options | `ABB_IRB120_LOAD_OPTIONS` | +| baseLink | `base_link` | +| tipLink | `tool0` | +| active joints | `joint_1` 到 `joint_6` | +| 标准关节位 | `home`、`approach`、`pick`、`place` | + +程序中的 reachable pose target 应优先由 ABB120 FK 生成并固化为 snapshot。不可达 pose、限位和奇异姿态只进入 error suite。 + +## 4. 机器人程序集 + +程序集建议落在: + +```text +kdl-wasm/web/tests/fixtures/abb120/spec-programs/ + runtime/ + static/ + post/ + error/ + expected/ +``` + +### 4.1 Runtime happy path + +| 程序 | 覆盖目标 | +| --- | --- | +| `W2_00_MinimalModule.grl` | language、module、proc main、const speed/zone、movej。 | +| `W2_10_DataTargetToolFrame.grl` | tool、frame、load、joint_target、pose_target、pose、poseq、robot_config、ext_axis 边界。 | +| `W2_20_ExpressionMath.grl` | 算术、比较、逻辑、单位后缀、pi/e、三角函数、数值函数、编译期求值。 | +| `W2_30_MotionAllTypes.grl` | movej、movel、movec、set_tool、set_frame、set_speed、set_zone、inline speed/zone。 | +| `W2_40_PathEvents.grl` | path defaults/source、point、event before/after/at distance、run_path。 | +| `W2_50_OperationProcess.grl` | operation kind/process/start_action/end_action/run_operation。 | +| `W2_60_IOWaitPulse.grl` | io 地址、DO 写入、wait、timeout、on_timeout、pulse、all/any/rising/falling/changed。 | +| `W2_70_ControlFlow.grl` | if/elseif/else、while、for、switch、break、continue。 | +| `W2_80_ProcFuncCall.grl` | proc 参数、in/out/inout、call、return、func 返回值和函数调用表达式。 | +| `W2_90_ExceptionAlarm.grl` | alarm、raise、try/catch/finally 可执行边界。 | +| `W2_99_FullSpecExample.grl` | 完整示例的 tool/frame、path、operation、IO event、run_operation 和回 home。 | + +### 4.2 Static/error suite + +| 程序 | 覆盖目标 | +| --- | --- | +| `W2_E10_ExpressionDiagnostics.grl` | `GRL_EXPR_PARSE/DOMAIN/DIV_ZERO/UNIT_MISMATCH/NON_CONSTANT/UNKNOWN_*`。 | +| `W2_E20_SemanticDiagnostics.grl` | 重复符号、缺失引用、类型不匹配、非法 out/inout 实参。 | +| `W2_E30_MotionDiagnostics.grl` | 关节限位、不可达 pose、movec 共线、缺少 tool/frame/speed/zone。 | +| `W2_E40_ControlFlowDiagnostics.grl` | 非法 break/continue、jump 进入块、重复 case、非常量 case。 | +| `W2_E50_RuntimeTimeout.grl` | wait timeout、on_timeout alarm/call、trace 和报警 source map。 | + +### 4.3 Post/import suite + +| 程序 | 覆盖目标 | +| --- | --- | +| `W2_P10_BrandHints.grl` | `post_hint`、`@brand.abb/fanuc/kuka` 元数据和转换报告。 | +| `W2_P20_CrossBrandMotion.grl` | ABB/FANUC/KUKA 的 move、speed、zone、IO、wait 映射。 | +| `W2_P30_Roundtrip.grl` | post 后重新导入,比较 target/path/motion/operation 等价性。 | + +## 5. 虚拟控制器执行要求 + +每个 runtime 程序必须执行以下控制器命令序列: + +1. `loadProgram` +2. `start` +3. `stepInto` +4. `hold` +5. `resume` +6. `stepMotion` +7. `stop` +8. `resetFault` + +每次运行必须输出: + +| 证据 | 内容 | +| --- | --- | +| `job.json` | job_id、suite_id、program_id、robot_id、git revision、输入文件 hash。 | +| `compile.json` | AST/IR 摘要、diagnostics、source map 统计。 | +| `controller.json` | 状态机转换、mode、program pointer、scope、变量快照。 | +| `motion-queue.json` | 队列项、activeIndex、duration、blend、planner diagnostic。 | +| `trace.json` | motion、IO、wait、pulse、alarm、call/return、source map。 | +| `io.json` | DI/DO/AI/AO/GI/GO/RI/RO 初值、脚本变化和最终状态。 | +| `trajectory.json` | 采样点数、起止关节、TCP 路径、限位和奇异诊断。 | +| `report.html/json` | 汇总报告、失败摘要、可追溯链接。 | + +## 6. 全面验收 + +验收不只看测试通过,还必须证明“覆盖了语法规范”: + +1. `programs/manifest.md` 中每个规范章节至少有一项程序或测试覆盖。 +2. 每个 Runtime 程序有虚拟控制器执行证据。 +3. 每个 Static/error 程序有稳定 diagnostic。 +4. 每个 Post/import 程序有 post report 或 roundtrip report。 +5. HTML 虚拟控制器可以打开 ABB120 suite 最新 job,显示程序、队列、trace、IO、wait、报警和报告。 + +## 7. 服务器演示包功能要求 + +服务器演示包用于对外展示虚拟控制器能力,不能只发布静态 HTML。包内必须包含可被页面读取和人工检查的测试程序、运行证据和说明文档。 + +### 7.1 发布目标 + +| 项 | 值 | +| --- | --- | +| HTTPS 访问地址 | `https://82.156.24.101:8095/` | +| 服务端口 | `8095` | +| 推荐服务器目录 | `/opt/kdl-olp-demo/8095/current` | +| 发布包归档目录 | `/opt/kdl-olp-demo/8095/releases/` | +| 回滚链接 | `/opt/kdl-olp-demo/8095/previous` 或保留上一个 release 目录 | + +### 7.2 演示包内容 + +```text +demo-package/ + app/ + virtual-controller.html + virtual-controller.css + virtual-controller.js + spec-programs/ + manifest.json + runtime/*.grl + static/*.grl + error/*.grl + post/*.grl + test-results/ + abb120-spec// + job.json + report.json + report.html + programs//*.json + virtual-controller/ + evidence.json + virtual-controller-desktop.png + virtual-controller-mobile.png + docs/ + GRL功能语法逻辑与程序创建使用手册.docx + 通用机器人离线编程系统测试文档.docx + index.html + demo-manifest.json + README.md +``` + +### 7.3 演示能力清单 + +| 能力 | 演示程序或证据 | +| --- | --- | +| 最小加载和 MoveJ | `W2_00_MinimalModule.grl` | +| 数据、目标点、工具和坐标系 | `W2_10_DataTargetToolFrame.grl` | +| 表达式、单位和数学函数 | `W2_20_ExpressionMath.grl` | +| MoveJ/MoveL/MoveC | `W2_30_MotionAllTypes.grl` | +| Path 和事件 | `W2_40_PathEvents.grl` | +| Operation 工艺封装 | `W2_50_OperationProcess.grl` | +| IO、wait、pulse、边沿 | `W2_60_IOWaitPulse.grl` | +| 流程控制 | `W2_70_ControlFlow.grl` | +| proc/func/call/return | `W2_80_ProcFuncCall.grl` | +| 异常和报警 | `W2_90_ExceptionAlarm.grl` | +| 完整示例 | `W2_99_FullSpecExample.grl` | +| 表达式错误诊断 | `W2_E10_ExpressionDiagnostics.grl` | +| 语义错误诊断 | `W2_E20_SemanticDiagnostics.grl` | +| 运动错误诊断 | `W2_E30_MotionDiagnostics.grl` | +| 控制流错误诊断 | `W2_E40_ControlFlowDiagnostics.grl` | +| wait timeout | `W2_E50_RuntimeTimeout.grl` | +| 品牌 hint/post report | `W2_P10_BrandHints.grl` | +| 跨品牌 motion/IO/wait 输出 | `W2_P20_CrossBrandMotion.grl` | +| post 后导入回读 | `W2_P30_Roundtrip.grl` | + +### 7.4 页面演示要求 + +1. 首页必须能进入虚拟控制器页面。 +2. 页面必须能看到当前 suite、job_id、程序数量、通过/诊断/失败统计。 +3. 页面必须列出 19 个程序,并支持查看源码或证据摘要。 +4. 对 Runtime 程序,必须能展示 controller commands、trace、motion queue、IO image、trajectory。 +5. 对 Static/error 程序,必须能展示 expected diagnostics 和实际 diagnostics。 +6. 对 Post 程序,必须能展示 ABB/FANUC/KUKA 文件名、post report 和 roundtrip 状态。 +7. 页面必须保留桌面和移动端截图证据,便于远程验收。 + +### 7.5 验收结论口径 + +只有同时满足以下条件,服务器演示包才可以标记为通过: + +1. 本地 `npm run typecheck`、`npm test`、`npm run suite:abb120-spec`、`npm run verify:virtual-controller` 通过。 +2. 演示包包含 19 个 `.grl` 程序和最新 `W2-JOB-*` 证据。 +3. 远程 `https://82.156.24.101:8095/` 可打开,无证书阻断以外的页面错误。 +4. 远程页面能访问 `demo-manifest.json`、`report.json`、`virtual-controller.html` 和截图文件。 +5. 远程 smoke test 记录到 `working2/05-验收证据.md`。 diff --git a/working2/02-项目程序开发详细步骤.md b/working2/02-项目程序开发详细步骤.md new file mode 100644 index 0000000..f80dd24 --- /dev/null +++ b/working2/02-项目程序开发详细步骤.md @@ -0,0 +1,378 @@ +# 02-项目程序开发详细步骤 + +版本:0.1 +日期:2026-06-28 + +## 1. 开发原则 + +1. 以 `通用机器人编程语法规范.md` 为覆盖源,不以现有测试数量作为完成标准。 +2. ABB120 URDF 使用仓库内稳定 fixture,不引入未验证机器人模型。 +3. happy path 必须可执行;error path 必须可诊断;post path 必须可报告。 +4. 虚拟控制器只执行 Semantic IR,不直接解释品牌文本。 +5. 所有新增程序都要保留 source map,报告必须能定位到 GRL 文件行列。 + +## 2. 阶段 0:规范覆盖矩阵 + +### W2-SPEC-001:解析语法规范章节 + +步骤: + +1. 从 `work/doc/通用机器人编程语法规范.md` 抽取章节、关键语法、示例和语义规则。 +2. 建立 coverage item,字段包含 `spec_section`、`syntax`、`runtime_level`、`program_id`、`test_id`、`evidence`。 +3. 把覆盖矩阵写入 `working2/programs/manifest.md`。 + +验收:章节 4 到 23 均有覆盖项;章节 25 的 P0 项全部映射到 runtime 或 static 测试。 + +### W2-SPEC-002:定义执行边界 + +步骤: + +1. 标记虚拟控制器必须执行的 Runtime 语义。 +2. 标记只做 semantic diagnostic 的 Static 语义。 +3. 标记只做后处理/导入报告的 Post 语义。 +4. 对 trap、interrupt、task、brand metadata 等非 P0 执行项写清楚边界。 + +验收:覆盖矩阵中每项都有 `Runtime/Static/Post` 分类,不允许空白。 + +## 3. 阶段 1:ABB120 程序集 + +### W2-PROG-001:建立 spec-programs 目录 + +建议目录: + +```text +kdl-wasm/web/tests/fixtures/abb120/spec-programs/ + runtime/ + static/ + error/ + post/ + expected/ +``` + +验收:测试 helper 可以枚举所有 `.grl` 并读取 manifest。 + +### W2-PROG-010:Runtime 程序 + +步骤: + +1. 创建 `W2_00` 到 `W2_90` 十个 runtime 程序,并以 `W2_99_FullSpecExample` 覆盖第 24 章完整示例。 +2. 所有运动目标使用 ABB120 标准关节位或 FK 固化 pose。 +3. 每个程序顶部注释写明覆盖的 spec section。 +4. 每个程序必须可 parse、compile、load 到虚拟控制器。 + +验收:runtime 程序全部生成 AST/IR/source map snapshot。 + +### W2-PROG-020:Static/error 程序 + +步骤: + +1. 创建表达式、语义、运动、控制流、runtime timeout 五类 error 程序。 +2. 每个 error 程序只聚焦一类错误,避免多个错误互相遮蔽。 +3. expected diagnostic 固化 `code/severity/message/sourceRange`。 + +验收:diagnostic snapshot 稳定,新增或消失的错误会导致测试失败。 + +### W2-PROG-030:Post/import 程序 + +步骤: + +1. 创建品牌 hint 和跨品牌 motion 程序。 +2. 覆盖 ABB/FANUC/KUKA speed、zone、IO、wait、operation 输出。 +3. 固化 roundtrip 输入和差异报告。 + +验收:三品牌输出非空,近似和不支持项进入 report。 + +## 4. 阶段 2:编译和 KDL 验证 + +### W2-RUN-001:统一 suite runner + +步骤: + +1. 扩展或新增 `runAbb120SpecSuite`。 +2. 输入:program root、suite id、ABB120 fixture、output root。 +3. 输出:`job_id`、程序 manifest、每个程序的 compile/run/post 结果。 +4. job id 格式:`W2-JOB-YYYYMMDD-HHMMSS-`。 + +验收:单条命令可生成完整 suite 证据目录。 + +### W2-RUN-010:编译链路 + +步骤: + +1. `parseGrl` 生成 AST。 +2. `compileSemanticProgram` 生成 IR。 +3. 对 data/target/path/operation 建 source map 索引。 +4. 保存 AST/IR 摘要,不保存过大的重复文本。 + +验收:每个 runtime/post 程序 compile 无 error;每个 error 程序 compile 输出预期 diagnostic。 + +### W2-RUN-020:ABB120 KDL 检查 + +步骤: + +1. 加载 ABB120 URDF。 +2. 对所有 joint target 做 limit check。 +3. 对所有 pose target 做 IK 或记录当前实现边界 diagnostic。 +4. 对每条 motion/path 生成 planner request。 + +验收:happy path 没有关节限位错误;不可达或不支持 IK 只能出现在 error suite。 + +## 5. 阶段 3:虚拟控制器执行 + +### W2-RUN-030:状态机命令覆盖 + +步骤: + +1. 对每个 runtime 程序执行 `load/start/step/hold/resume/stepMotion/stop/resetFault`。 +2. 记录每次命令前后状态。 +3. 非法命令转移必须产生明确 diagnostic。 + +验收:状态机转换符合控制器规则,trace 可回放。 + +### W2-RUN-040:Motion Queue 和轨迹 + +步骤: + +1. 将 `movej/movel/movec/run_path/run_operation` 展开到 motion queue。 +2. 记录 queue item、activeIndex、duration、planner result。 +3. 对轨迹采样点做 limit 和 singularity 检查。 + +验收:motion queue 与程序 source map 对齐;轨迹结果可进入报告。 + +### W2-RUN-050:IO、wait、pulse 和报警 + +步骤: + +1. 为 `W2_60_IOWaitPulse` 注入 DI 脚本。 +2. 覆盖 wait satisfied、waiting、timeout、on_timeout alarm/call。 +3. 覆盖 pulse 自动复位。 +4. 覆盖 all/any/rising/falling/changed。 + +验收:trace 中可看到 IO 写入、DI 变化、wait 状态、pulse reset 和 alarm。 + +### W2-RUN-060:流程控制和调用栈 + +步骤: + +1. 执行 if/elseif/else、while、for、switch。 +2. 记录局部变量、循环变量、call stack、return。 +3. out/inout 参数回写进入变量快照。 + +验收:最终变量状态符合预期,source map 可定位当前执行语句。 + +## 6. 阶段 4:后处理和导入回读 + +### W2-POST-010:三品牌 post + +步骤: + +1. 对 runtime/post 程序调用 `postProcessAllBrands`。 +2. 保存 ABB `.mod`、FANUC `.ls`、KUKA `.src/.dat`。 +3. 保存 post report,记录近似和 unsupported。 + +验收:所有品牌输出包含对应 motion、IO、wait 和 proc 结构。 + +### W2-POST-020:roundtrip + +步骤: + +1. 将三品牌输出重新导入。 +2. 对比 motion 顺序、target 数量、path/operation 结构。 +3. 对差异生成 `roundtrip.json`。 + +验收:happy path 结构等价;不可逆项全部进入 diff。 + +## 7. 阶段 5:HTML 虚拟控制器验收 + +### W2-UI-010:加载最新 job + +步骤: + +1. HTML 页面支持选择或加载 `W2-JOB-*` 证据。 +2. 显示程序列表、当前程序、controller snapshot、queue、trace、diagnostics。 +3. 点击 trace/source map 能定位 GRL 行。 + +验收:页面能展示 working2 suite 证据,不只展示静态 mock 数据。 + +### W2-UI-020:截图验证 + +步骤: + +1. 使用现有 `verify-virtual-controller.mjs` 或新增参数打开 working2 job。 +2. 截桌面和移动视口。 +3. 检查 command bar、object tree、viewport、pendant、editor、bottom panel 可见。 +4. 检查无横向溢出和文字重叠。 + +验收:生成 desktop/mobile 截图和 `evidence.json`。 + +## 8. 阶段 6:全量 CI + +建议命令: + +```powershell +cd E:\Work\kdl_work +npm run typecheck +npm test -- grl abb120 virtual controller runtime post import +npm run verify:virtual-controller +``` + +如果需要 WASM native 验证: + +```powershell +cmake --build kdl-wasm/build-wasm -j16 +``` + +验收:所有命令通过,`working2/05-验收证据.md` 记录实际命令、时间、job_id、report_id 和产物路径。 + +## 9. 阶段 7:服务器演示包和 HTTPS 发布 + +### W2-DEPLOY-001:生成演示包 manifest + +步骤: + +1. 读取 `kdl-wasm/web/tests/fixtures/abb120/spec-programs/manifest.json`。 +2. 读取最新 `kdl-wasm/web/test-results/abb120-spec/W2-JOB-*`。 +3. 读取 `kdl-wasm/web/test-results/virtual-controller/evidence.json`。 +4. 生成 `demo-manifest.json`,字段至少包含: + - `release_id` + - `generated_at` + - `suite_id` + - `job_id` + - `program_count` + - `programs` + - `report_json` + - `virtual_controller_entry` + - `screenshots` + - `docs` +5. manifest 中路径必须是相对发布根目录的 URL 路径,不能写本机绝对路径。 + +验收:`demo-manifest.json` 可被浏览器直接打开,能定位 19 个程序、最新报告和截图。 + +### W2-DEPLOY-010:收集演示包文件 + +建议目录: + +```text +kdl-wasm/web/test-results/deploy/kdl-olp-demo-/ + app/ + spec-programs/ + test-results/ + docs/ + index.html + demo-manifest.json + README.md +``` + +步骤: + +1. 复制 `kdl-wasm/web/app/virtual-controller.html/css/js` 到 `app/`。 +2. 复制 `spec-programs/manifest.json` 和所有 `.grl` 程序。 +3. 复制最新 W2 job 目录。 +4. 复制虚拟控制器截图和 `evidence.json`。 +5. 复制 Word 手册和测试文档: + - `work/doc/GRL功能语法逻辑与程序创建使用手册.docx` + - `work/doc/通用机器人离线编程系统测试文档.docx` +6. 生成 `index.html`,至少提供: + - 虚拟控制器入口 + - 最新 job 报告入口 + - 程序清单入口 + - 截图入口 + - 文档下载入口 + +验收:本地打开发布包根目录时,所有链接不依赖开发机绝对路径。 + +### W2-DEPLOY-020:打包发布归档 + +步骤: + +1. 将演示包目录压缩为 `kdl-olp-demo-.zip`。 +2. 计算 zip 文件大小和 hash。 +3. 将 zip、release_id、job_id 写入 `working2/05-验收证据.md`。 + +验收:zip 可解压,解压后包含 `index.html`、`demo-manifest.json`、19 个 `.grl` 和最新 job。 + +### W2-DEPLOY-030:上传到服务器 + +目标: + +```text +https://82.156.24.101:8095/ +/opt/kdl-olp-demo/8095/releases/ +/opt/kdl-olp-demo/8095/current -> releases/ +``` + +步骤: + +1. 使用 `scp` 或等效方式上传 zip 到服务器临时目录。 +2. 在服务器创建 release 目录并解压。 +3. 更新 `current` 软链接指向新 release。 +4. 确认 Web 服务根目录指向 `current`。 +5. 不在仓库文档中记录服务器密码;凭据只保留在部署人员本地。 + +验收:服务器上存在 release 目录,`current` 指向最新 release。 + +### W2-DEPLOY-040:HTTPS 服务验证 + +步骤: + +1. 打开 `https://82.156.24.101:8095/`。 +2. 验证 `index.html` 能加载。 +3. 验证以下 URL 可访问: + - `/demo-manifest.json` + - `/app/virtual-controller.html` + - `/test-results/abb120-spec//report.json` + - `/test-results/abb120-spec//report.html` + - `/test-results/virtual-controller/virtual-controller-desktop.png` + - `/spec-programs/manifest.json` +4. 在浏览器中进入虚拟控制器页面,检查页面显示 suite/job/program/trace/queue/IO/diagnostics。 +5. 如证书为自签名,记录浏览器安全提示为环境说明,不作为功能失败;如页面资源 404 或 JS 错误,则发布失败。 + +验收:远程页面可演示 19 个程序和最新 job 证据。 + +### W2-DEPLOY-050:远程 smoke test + +建议命令: + +```powershell +$base = "https://82.156.24.101:8095" +curl.exe -k "$base/" +curl.exe -k "$base/demo-manifest.json" +curl.exe -k "$base/spec-programs/manifest.json" +curl.exe -k "$base/app/virtual-controller.html" +curl.exe -k "$base/test-results/abb120-spec//report.json" +``` + +检查: + +1. HTTP 状态为 200。 +2. `demo-manifest.json` 中 `program_count` 为 19。 +3. `report.json` 中 `fail` 为 0。 +4. 页面资源无 404。 + +验收:命令输出摘要写入 `working2/05-验收证据.md`。 + +### W2-DEPLOY-060:回滚 + +步骤: + +1. 服务器保留至少最近 2 个 release。 +2. 新版本验证失败时,将 `current` 重新指向上一个 release。 +3. 再次访问 `https://82.156.24.101:8095/` 验证旧版本恢复。 +4. 在 `working2/03-推进台账.md` 记录回滚原因和 release_id。 + +验收:回滚后远程页面恢复到上一个可用版本。 + +## 10. 后续完善程序时的固定流程 + +每次新增或修改虚拟测试程序,都按以下顺序推进: + +1. 修改 `.grl` 程序和 `spec-programs/manifest.json`。 +2. 更新 `working2/programs/manifest.md` 的覆盖矩阵。 +3. 执行 `npm run typecheck`。 +4. 执行 `npm test`。 +5. 执行 `npm run suite:abb120-spec`,生成新 `W2-JOB-*`。 +6. 执行 `npm run verify:virtual-controller`,刷新截图。 +7. 重新生成 Word 测试文档和 GRL 使用手册,如内容发生变化。 +8. 重新生成服务器演示包并发布到 HTTPS。 +9. 更新 `working2/03-推进台账.md`、`04-任务矩阵.md`、`05-验收证据.md`。 +10. 提交代码并上传云仓库。 diff --git a/working2/03-推进台账.md b/working2/03-推进台账.md new file mode 100644 index 0000000..8b52170 --- /dev/null +++ b/working2/03-推进台账.md @@ -0,0 +1,183 @@ +# 03-推进台账 + +版本:0.1 +日期:2026-06-28 + +## 轮次 001:创建 working2 任务整合包 + +### 本轮目标 + +根据用户要求,将“对标 `通用机器人编程语法规范.md`、以 ABB120 URDF 为基础创建覆盖语法规范的机器人程序集、全面完成虚拟控制器执行测试”的功能任务整合到 `working2`,并参考 `working1` 的文档组织方式。 + +### 已读取和确认 + +1. `working2` 原本只有 `README.md`,内容为“空任务集审计”。 +2. `working1` 已有 ABB120 fixture、GRL 程序集、运算表达式、虚拟控制器、后处理、验收证据和决策记录的完整文档。 +3. 当前语法规范已包含新增的 `## 7. 表达式与运算`,并顺延到 `## 26. 参考资料`。 +4. 仓库中已有 `kdl-wasm/web/src/fixtures/abb120.ts`、`kdl-wasm/web/tests/fixtures/abb120/programs`、`kdl-wasm/web/src/suites/abb120Suite.ts`、`kdl-wasm/web/app/virtual-controller.html/css/js`。 + +### 本轮产出 + +1. 重写 `working2/README.md`。 +2. 新增 `working2/01-项目功能内容.md`。 +3. 新增 `working2/02-项目程序开发详细步骤.md`。 +4. 新增 `working2/04-任务矩阵.md`。 +5. 新增 `working2/05-验收证据.md`。 +6. 新增 `working2/06-决策记录.md`。 +7. 新增 `working2/programs/manifest.md`。 + +### 当前边界 + +1. 本轮只做任务整合和实施规范,不新增产品代码和 `.grl` 程序文件。 +2. `working2` 的任务状态默认 `Todo`,不沿用 `working1` 的 `Done` 状态。 +3. 已有 `working1` 实现可以作为依赖和参考,但 `working2` 必须按完整语法规范重新证明覆盖。 +4. trap、interrupt、task、brand metadata 不强行列入虚拟控制器 happy path;使用 static/post 证据覆盖。 + +### 下一步 + +1. 创建 `kdl-wasm/web/tests/fixtures/abb120/spec-programs` 目录和首批 `W2_*.grl`。 +2. 实现 `runAbb120SpecSuite` 或扩展 `runAbb120Suite` 支持 working2 manifest。 +3. 添加 coverage test,确保 `manifest.md` 中每个 spec section 有对应程序和证据。 +4. 执行 `npm test -- grl abb120 virtual controller runtime post import` 并记录实际结果。 + +## 轮次 002:实现 working2 程序集、runner 和验收证据 + +### 本轮目标 + +把轮次 001 的任务包落到仓库实现:创建 ABB120 spec-programs 程序集,新增 W2 suite runner,接入测试、HTML 页面和证据包生成命令。 + +### 本轮产出 + +1. 新增 `kdl-wasm/web/tests/fixtures/abb120/spec-programs/manifest.json`。 +2. 新增 `runtime/W2_00` 到 `runtime/W2_90` 共 10 个 runtime 程序。 +3. 新增 `static/error` 诊断程序 `W2_E10` 到 `W2_E50` 共 5 个,其中 `W2_E50` 作为 runtime timeout error 进入 Runtime 层级。 +4. 新增 `post/W2_P10` 到 `post/W2_P30` 共 3 个 post/import 程序。 +5. 新增 `kdl-wasm/web/src/suites/abb120SpecSuite.ts` 和 `kdl-wasm/web/scripts/run-abb120-spec-suite.ts`。 +6. 新增 `kdl-wasm/web/tests/integration/abb120SpecSuite.test.ts`。 +7. 更新 HTML 虚拟控制器显示 `working2-abb120-spec` 和 `W2-JOB-latest`。 +8. 修复 `compileIo` 在 wait 无 `on_timeout` 时越界的问题;控制流 parser 对 `try` 块改为 raw boundary,由 exception parser 负责异常语义。 + +### 验收摘要 + +1. `npm run suite:abb120-spec` 通过,生成 `W2-JOB-20260628013857-19b5a2c7`。 +2. `npm run typecheck` 通过。 +3. `npm test` 通过,41 个测试文件、155 个测试。 +4. `npm run verify:virtual-controller` 通过,生成桌面和移动截图。 + +### 当前边界 + +1. `trap`、`interrupt`、`task` 仍按 P1 unsupported/runtime boundary 记录 warning,不作为 happy path 实时执行。 +2. `@brand.*` 语法尚未作为 lexer/parser 原生结构实现,本轮以后处理 `post_hint` 和 report 边界覆盖品牌扩展。 +3. W2 runner 的 motion trajectory 使用同步 fixture planner 生成审计证据;真实 ABB120 KDL 规划仍由既有 `abb120Programs.test.ts` 覆盖。 + +## 轮次 003:补齐完整示例和 manifest 机器校验 + +### 本轮目标 + +接续轮次 002,对 working2 的“文档已 Done 但机器校验不足”部分做收口:把规范第 24 章完整示例落为实际 runtime 程序,并让 manifest 的层级、程序引用、预期诊断和 job 结果成为自动测试合同。 + +### 本轮产出 + +1. 新增 `runtime/W2_99_FullSpecExample.grl`,覆盖完整示例的 tool/frame、path、operation、IO event、run_operation 和回 home。 +2. 更新 `spec-programs/manifest.json`,程序总数为 19;coverage 章节 4 到 25 缺失为空;层级统计 Runtime 12、Static 4、Post 3。 +3. 强化 `abb120SpecSuite.test.ts`,检查 coverage matrix 引用存在、层级自一致、expected status 和 expected diagnostics 全部出现在 job 结果中。 +4. 强化 `runAbb120SpecSuite` 静态预检,补充表达式、多 motion/KDL 边界、proc/function 和 control-flow 多诊断采集。 +5. 新增最新证据包 `W2-JOB-20260628022836-51484d62`。 + +### 验收摘要 + +1. `npm test -- abb120SpecSuite` 通过。 +2. `npm run typecheck` 通过。 +3. `npm run suite:abb120-spec` 通过,生成 19 个程序的 job,missingSections 为空。 + +### 当前边界 + +1. `@brand.*` 仍为后续 parser 原生语法扩展边界,当前通过 `post_hint` 和 post report 覆盖。 +2. suite runner 的 KDL 诊断仍使用同步 fixture planner;真实 KDL/URDF 规划由既有 ABB120 集成测试覆盖。 + +## 轮次 004:补充服务器演示包和 HTTPS 发布实施文档 + +### 本轮目标 + +根据“虚拟测试程序打包到服务器,能通过这些程序演示虚拟控制器全部功能”的要求,完善 `working2` 实施文档,形成后续程序完善、打包、发布、远程验收和回滚的固定流程。 + +### 本轮产出 + +1. 更新 `working2/README.md`,增加服务器演示包目标、文档入口和 `W2-DEPLOY-*` 任务范围。 +2. 更新 `working2/01-项目功能内容.md`,增加服务器演示包功能要求、发布目标、包内容、演示能力清单和验收口径。 +3. 更新 `working2/02-项目程序开发详细步骤.md`,增加阶段 7:演示包 manifest、文件收集、zip、上传、HTTPS 验证、远程 smoke test 和回滚。 +4. 更新 `working2/04-任务矩阵.md`,新增 `W2-DEPLOY-001` 到 `W2-DEPLOY-060` 任务和子任务。 +5. 更新 `working2/05-验收证据.md`,新增部署证据项、远程 smoke test 命令、发布记录模板和人工验收模板。 +6. 新增 `working2/07-服务器发布与演示包实施方案.md`,作为发布实施主文档。 +7. 更新 `working2/06-决策记录.md`,新增服务器发布包 ADR。 + +### 当前边界 + +1. 本轮只完善项目实施文档,没有实际上传服务器。 +2. 服务器凭据不写入仓库文档;文档只记录发布地址、端口、目录规范和验收要求。 +3. 后续需要新增 `build-demo-package.mjs`、`verify-demo-package.mjs`、`deploy-demo-package.ps1` 等脚本,才能把 `W2-DEPLOY-*` 推进到 Done。 +4. HTTPS 证书若为自签名,浏览器安全提示记录为环境说明;资源 404、JS 错误或 report fail 非 0 才视为发布失败。 + +### 下一步 + +1. 实现演示包构建脚本,生成 `demo-manifest.json`、首页和 zip。 +2. 实现本地 zip 校验脚本,检查 19 个程序、最新 job、截图和 Word 文档。 +3. 上传到 `https://82.156.24.101:8095/` 对应服务器目录并执行远程 smoke test。 +4. 将发布证据写入 `working2/05-验收证据.md`。 + +## 轮次 005:实现演示包自动化并发布 HTTPS 服务器 + +### 本轮目标 + +把轮次 004 文档中的 `W2-DEPLOY-*` 从待实现推进到可验收:生成服务器演示包、校验 zip、上传 HTTPS 服务器、切换 current、保留 previous 并完成远程 smoke test。 + +### 本轮产出 + +1. 新增 `kdl-wasm/web/scripts/build-demo-package.mjs`,收集虚拟控制器 app、19 个 `spec-programs`、最新 W2 job、截图、Word 文档和 working2 文档,生成 `demo-manifest.json`、`index.html`、README 和 zip。 +2. 新增 `kdl-wasm/web/scripts/verify-demo-package.mjs`,解压 zip 并校验 19 个 `.grl`、`report.json`、截图、2 份 Word 文档、相对 URL 和 `summary.fail=0`。 +3. 新增 `kdl-wasm/web/scripts/deploy-demo-package.ps1`,提供上传 zip、远程解压、切换 current、保留 previous 和 HTTPS smoke test 的可复用发布脚本。 +4. 更新 `package.json`,新增 `npm run demo:build`、`npm run demo:verify`、`npm run demo:deploy`。 +5. 修正演示包 zip 生成为跨平台 `/` 路径条目,避免 Windows zip 在 Linux `unzip` 后出现反斜杠路径。 +6. 发布 release `20260628-120601-W2-JOB-20260628024709-51484d62` 到 `https://82.156.24.101:8095/`。 + +### 验收摘要 + +1. `npm run demo:build` 通过,生成 `kdl-wasm/web/test-results/deploy/kdl-olp-demo-20260628-120601-W2-JOB-20260628024709-51484d62.zip`。 +2. `npm run demo:verify -- kdl-wasm/web/test-results/deploy/kdl-olp-demo-20260628-120601-W2-JOB-20260628024709-51484d62.zip` 通过,`program_count=19`、`.grl=19`、`summary.fail=0`。 +3. 服务器 `/opt/kdl-olp-demo/8095/current` 指向 `/opt/kdl-olp-demo/8095/releases/20260628-120601-W2-JOB-20260628024709-51484d62`。 +4. 服务器 `/opt/kdl-olp-demo/8095/previous` 指向 `/opt/kdl-olp-demo/8095/releases/20260628-120357-W2-JOB-20260628024709-51484d62`。 +5. HTTPS smoke test 通过:`/`、`/demo-manifest.json`、`/spec-programs/manifest.json`、`/app/virtual-controller.html`、`report.json`、`report.html`、desktop/mobile png 全部返回 200。 + +### 当前边界 + +1. 8095 服务使用服务器现有自签名证书,浏览器可能提示证书风险;资源访问和报告验证已通过。 +2. 发布时使用本地凭据完成服务器操作,但凭据不写入仓库脚本或 working2 文档。 + +## 轮次 006:补齐程序切换和逐帧 TCP/关节轨迹展示 + +### 本轮目标 + +回应远程页面验收问题:`/app/virtual-controller.html` 不能只展示静态模拟状态,必须能切换 19 个 W2 程序,并显示程序实际执行产物中的每一帧 TCP 和 6 轴关节值。 + +### 本轮产出 + +1. 更新 `runAbb120SpecSuite` 轨迹摘要,`trajectory.json` 新增 `frames[]`,每帧包含 `index`、`time`、`motion`、`segmentId/targetId`、`joints[6]`、`tcp.position[3]`、`tcp.quaternion[4]`、`sourceMap` 和 diagnostics。 +2. 更新 `abb120SpecSuite.test.ts`,要求至少一个 Runtime 程序产出带 6 轴关节和 TCP 姿态的逐帧轨迹。 +3. 重构 `virtual-controller.html/css/js`,页面从 `demo-manifest.json` 读取 19 个程序,通过顶部 Program 下拉切换程序;`Load/Run/Step` 操作当前程序轨迹帧;底部 `Trajectory Frames` 表格展示每帧 TCP XYZ、TCP Q 和 J1-J6。 +4. 更新 `verify-demo-package.mjs`,新增 `runtime_trajectory_frames` 检查,防止发布包里的 Runtime 轨迹退化成只有摘要字段。 +5. 修复 `deploy-demo-package.ps1`:函数调用顺序、远端命令拼接、服务重启、自签名 HTTPS smoke test 和 `previous` 回滚指针处理。 +6. 重新生成 W2 job `W2-JOB-20260628082622-51484d62`,发布最终 release `20260628-164048-W2-JOB-20260628082622-51484d62` 到 `https://82.156.24.101:8095/`。 + +### 验收摘要 + +1. `npm run typecheck` 通过。 +2. `npm test -- kdl-wasm/web/tests/integration/abb120SpecSuite.test.ts kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts` 通过。 +3. `npm run suite:abb120-spec` 通过,生成 19 个程序的 job,missingSections 为空。 +4. `npm run verify:virtual-controller` 通过;桌面/移动截图均无横向溢出,`Run` 后状态为 `running`,DI wait 为 `satisfied`。 +5. `npm run demo:verify -- ` 通过,`runtime_trajectory_frames=9/12`。 +6. 远程抽查通过:`W2_30_MotionAllTypes` 有 12 帧,`W2_60_IOWaitPulse` 有 4 帧,`W2_99_FullSpecExample` 有 32 帧,均包含 joints 和 TCP。 + +### 当前边界 + +1. 没有可规划运动段的 Runtime/Static/Post 程序不会伪造轨迹;页面显示 `NO_MOTION` 单帧占位,并保留编译、诊断、trace、post/roundtrip 产物。 +2. 8095 HTTPS 仍使用现有自签名证书;自动 smoke test 使用不校验证书的发布验证路径。 diff --git a/working2/04-任务矩阵.md b/working2/04-任务矩阵.md new file mode 100644 index 0000000..2043f9a --- /dev/null +++ b/working2/04-任务矩阵.md @@ -0,0 +1,88 @@ +# 04-任务矩阵 + +版本:0.1 +日期:2026-06-28 + +## 1. 状态定义 + +| 状态 | 含义 | +| --- | --- | +| Todo | 尚未开始实现。 | +| Doing | 正在执行。 | +| Blocked | 被依赖、环境或设计问题阻塞。 | +| Review | 已实现,等待复核或补证据。 | +| Done | 已实现且验收证据完整。 | + +## 2. 任务总表 + +| 编号 | 任务 | 状态 | 依赖 | 验收标准 | +| --- | --- | --- | --- | --- | +| W2-SPEC-000 | 创建 working2 任务文档 | Done | 无 | README、功能、步骤、台账、矩阵、证据、决策、manifest 均存在。 | +| W2-SPEC-001 | 语法规范覆盖矩阵 | Done | W2-SPEC-000 | 规范章节 4 到 25 已映射到 Runtime/Static/Post 覆盖项。 | +| W2-SPEC-002 | 执行边界分类 | Done | W2-SPEC-001 | 每项语义已标明虚拟执行、静态诊断或后处理验收方式。 | +| W2-PROG-001 | 建立 spec-programs 目录 | Done | W2-SPEC-001 | runtime/static/error/post/expected 目录和 `manifest.json` 可被测试读取。 | +| W2-PROG-010 | Runtime 覆盖项 12 个 | Done | W2-PROG-001 | `W2_00` 到 `W2_99` happy path 和 `W2_E50` runtime timeout 可 parse、compile、load。 | +| W2-PROG-020 | Static/error 程序 5 类 | Done | W2-PROG-001 | 4 类 static diagnostic 和 1 类 runtime timeout 输出 stable diagnostic 证据。 | +| W2-PROG-030 | Post/import 程序 3 个 | Done | W2-PROG-001 | 三品牌输出和 roundtrip 差异可验证。 | +| W2-RUN-001 | ABB120 spec suite runner | Done | W2-PROG-010 | `npm run suite:abb120-spec` 输出 `W2-JOB-*` 证据目录。 | +| W2-RUN-010 | 编译链路证据 | Done | W2-RUN-001 | AST/IR 摘要、source map、diagnostics 产物完整。 | +| W2-RUN-020 | ABB120 KDL 检查 | Done | W2-RUN-001 | limit、reachability/边界和 planner request 结果可审计;真实 KDL 由既有 ABB120 集成测试覆盖。 | +| W2-RUN-030 | 虚拟控制器状态机覆盖 | Done | W2-RUN-010 | load/start/step/hold/resume/stepMotion/stop/resetFault 均有命令记录。 | +| W2-RUN-040 | Motion Queue 和轨迹证据 | Done | W2-RUN-020, W2-RUN-030 | queue、activeIndex、duration、trajectory、planner diagnostics 完整;Runtime 轨迹产物包含逐帧 joints[6] 和 TCP position/quaternion。 | +| W2-RUN-050 | IO/wait/pulse/alarm 执行 | Done | W2-RUN-030 | wait satisfied/timeout、pulse reset、边沿检测和报警可验证。 | +| W2-RUN-060 | 流程控制和调用栈执行 | Done | W2-RUN-030 | if/while/for/switch/call/return/out/inout 有编译和 runtime trace 证据。 | +| W2-POST-010 | 三品牌后处理 | Done | W2-PROG-030, W2-RUN-010 | ABB/FANUC/KUKA 输出和 post report 完整。 | +| W2-POST-020 | 品牌导入回读 | Done | W2-POST-010 | roundtrip diff 记录等价和不可逆项。 | +| W2-UI-010 | HTML 虚拟控制器加载 W2 job | Done | W2-RUN-001 | 页面从 demo-manifest 读取 19 个 W2 程序,支持 Program 下拉切换,并展示 suite/job、program、queue、trace、IO、diagnostics、report。 | +| W2-UI-020 | HTML 截图和交互验证 | Done | W2-UI-010 | desktop/mobile 截图、evidence.json、无横向溢出。 | +| W2-UI-030 | HTML 逐帧 TCP/关节展示 | Done | W2-RUN-040, W2-UI-010 | `Trajectory Frames` 表格展示当前程序每帧 time、motion、target、TCP XYZ、TCP Q 和 J1-J6;Run/Step/Frame slider 可切换当前帧。 | +| W2-DEPLOY-001 | 服务器演示包 manifest | Done | W2-RUN-001, W2-UI-020 | 已生成 `demo-manifest.json`,包含 release_id、job_id、19 个程序、报告、截图和文档入口,路径均为相对 URL。 | +| W2-DEPLOY-010 | 演示包文件收集 | Done | W2-DEPLOY-001 | 已包含 app、spec-programs、latest job、virtual-controller screenshots、Word 手册、测试文档和首页。 | +| W2-DEPLOY-020 | 演示包 zip 和校验 | Done | W2-DEPLOY-010 | 已生成并校验 `kdl-olp-demo-20260628-164048-W2-JOB-20260628082622-51484d62.zip`,解压后 19 个 `.grl`、`report.json`、逐帧轨迹、截图、文档均存在。 | +| W2-DEPLOY-030 | 上传服务器并切换 current | Done | W2-DEPLOY-020 | 服务器 `/opt/kdl-olp-demo/8095/current` 已指向最新 release,HTTPS 服务读取新包。 | +| W2-DEPLOY-040 | HTTPS 远程页面验证 | Done | W2-DEPLOY-030 | `https://82.156.24.101:8095/`、`demo-manifest.json`、`virtual-controller.html`、`report.json`、截图均返回 200。 | +| W2-DEPLOY-050 | 远程 smoke test 证据 | Done | W2-DEPLOY-040 | 远程验证结果已写入 `working2/05-验收证据.md`,`program_count=19` 且 `fail=0`。 | +| W2-DEPLOY-060 | 发布回滚机制 | Done | W2-DEPLOY-030 | 服务器保留 previous release 指针,最终部署前一版为 `20260628-163458-W2-JOB-20260628082622-51484d62`。 | +| W2-CI-900 | 全量 CI 验收 | Done | W2-RUN-060, W2-POST-020, W2-UI-020 | typecheck、test、verify 全部通过;WASM build 未执行,沿用既有可选边界。 | + +## 3. Runtime 程序子任务 + +| 子任务 | 程序 | 覆盖章节 | 状态 | 验收 | +| --- | --- | --- | --- | --- | +| W2-PROG-010.1 | `W2_00_MinimalModule.grl` | 4、5、6、9、10、23 | Done | 最小 movej 可执行。 | +| W2-PROG-010.2 | `W2_10_DataTargetToolFrame.grl` | 6、8、9 | Done | tool/frame/target 编译为 IR。 | +| W2-PROG-010.3 | `W2_20_ExpressionMath.grl` | 7 | Done | 表达式折叠结果进入 speed/zone/pose/wait。 | +| W2-PROG-010.4 | `W2_30_MotionAllTypes.grl` | 10 | Done | movej/movel/movec 和 set_* 执行。 | +| W2-PROG-010.5 | `W2_40_PathEvents.grl` | 11 | Done | before/after/at distance event 进入 trace。 | +| W2-PROG-010.6 | `W2_50_OperationProcess.grl` | 12 | Done | operation 展开为 start/path/end。 | +| W2-PROG-010.7 | `W2_60_IOWaitPulse.grl` | 13 | Done | IO、wait、pulse、边沿检测执行。 | +| W2-PROG-010.8 | `W2_70_ControlFlow.grl` | 14 | Done | 分支、循环、switch 状态正确。 | +| W2-PROG-010.9 | `W2_80_ProcFuncCall.grl` | 15 | Done | 参数方向、call stack、return 正确。 | +| W2-PROG-010.10 | `W2_90_ExceptionAlarm.grl` | 16 | Done | alarm/raise/try/catch/finally trace 正确;trap/task 为 P1 warning。 | +| W2-PROG-010.11 | `W2_99_FullSpecExample.grl` | 24 | Done | 完整示例 path/operation/proc/run_operation 可执行并输出 queue 证据。 | + +## 4. Static/Post 子任务 + +| 子任务 | 程序 | 层级 | 状态 | 验收 | +| --- | --- | --- | --- | --- | +| W2-PROG-020.1 | `W2_E10_ExpressionDiagnostics.grl` | Static | Done | 表达式 diagnostic 覆盖。 | +| W2-PROG-020.2 | `W2_E20_SemanticDiagnostics.grl` | Static | Done | 语义检查 diagnostic 覆盖。 | +| W2-PROG-020.3 | `W2_E30_MotionDiagnostics.grl` | Static/KDL | Done | 限位、不可达、空 path 诊断稳定。 | +| W2-PROG-020.4 | `W2_E40_ControlFlowDiagnostics.grl` | Static | Done | 非法控制流诊断稳定。 | +| W2-PROG-020.5 | `W2_E50_RuntimeTimeout.grl` | Runtime error | Done | wait timeout 和 on_timeout 证据完整。 | +| W2-PROG-030.1 | `W2_P10_BrandHints.grl` | Post | Done | post_hint 进入 report;`@brand.*` 为后续 parser 扩展边界。 | +| W2-PROG-030.2 | `W2_P20_CrossBrandMotion.grl` | Post | Done | 三品牌 motion/IO/wait 输出完整。 | +| W2-PROG-030.3 | `W2_P30_Roundtrip.grl` | Post | Done | 导入回读结构等价或 diff 明确。 | + +## 5. 服务器演示子任务 + +| 子任务 | 内容 | 状态 | 验收 | +| --- | --- | --- | --- | +| W2-DEPLOY-001.1 | 定义 `demo-manifest.json` schema | Done | schema 能表达 release、suite、job、program、report、screenshot、doc。 | +| W2-DEPLOY-001.2 | 生成首页 `index.html` | Done | 首页可跳转虚拟控制器、报告、程序清单、截图和文档。 | +| W2-DEPLOY-010.1 | 收集 19 个 GRL 程序 | Done | zip 内 `spec-programs` 与 manifest 数量一致。 | +| W2-DEPLOY-010.2 | 收集最新 W2 job | Done | zip 内存在 `job.json`、`report.json`、`programs//*.json`。 | +| W2-DEPLOY-010.3 | 收集截图和 Word 文档 | Done | zip 内存在 2 张截图和 2 份 Word 文档。 | +| W2-DEPLOY-040.1 | 浏览器人工验证 | Done | 远程首页、虚拟控制器入口、报告、截图和程序清单均可打开。 | +| W2-DEPLOY-050.1 | curl 自动 smoke test | Done | 关键 URL 返回 200,report fail=0。 | +| W2-DEPLOY-050.2 | 逐帧轨迹远程抽查 | Done | `W2_30_MotionAllTypes`、`W2_60_IOWaitPulse`、`W2_99_FullSpecExample` 的远程 `trajectory.json` 均返回 frames、joints 和 TCP。 | diff --git a/working2/05-验收证据.md b/working2/05-验收证据.md new file mode 100644 index 0000000..4beb40a --- /dev/null +++ b/working2/05-验收证据.md @@ -0,0 +1,220 @@ +# 05-验收证据 + +版本:0.1 +日期:2026-06-28 + +## 1. 证据状态 + +| 状态 | 含义 | +| --- | --- | +| 待验证 | 任务尚未执行或未产生产物。 | +| 通过 | 已执行且满足验收标准。 | +| 不通过 | 已执行但不满足验收标准。 | +| 跳过 | 因明确边界暂不执行,必须说明原因。 | + +## 2. 基准证据项 + +| 证据 | 状态 | 目标产物 | +| --- | --- | --- | +| EV-W2-SPEC-001:语法覆盖矩阵 | 通过 | `working2/programs/manifest.md` 和 `spec-programs/manifest.json` 已覆盖章节 4 到 25。 | +| EV-W2-PROG-010:Runtime 程序创建 | 通过 | `kdl-wasm/web/tests/fixtures/abb120/spec-programs/runtime/W2_*.grl` 共 11 个;manifest Runtime 层级共 12 项。 | +| EV-W2-PROG-020:Error 程序创建 | 通过 | `static/error/W2_E*.grl` 共 5 个,其中 4 个 Static、1 个 Runtime timeout error。 | +| EV-W2-PROG-030:Post 程序创建 | 通过 | `post/W2_P*.grl` 共 3 个。 | +| EV-W2-RUN-001:suite runner | 通过 | `kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/job.json`。 | +| EV-W2-RUN-030:虚拟控制器执行 | 通过 | 每个 runtime 程序输出 `controller.json`、`trace.json`、`motion-queue.json`。 | +| EV-W2-RUN-040:逐帧轨迹 | 通过 | Runtime 轨迹 `trajectory.json` 包含 `frames[]`,每帧包含 joints[6]、TCP position[3] 和 TCP quaternion[4]。 | +| EV-W2-RUN-050:IO/wait/pulse | 通过 | `W2_60_IOWaitPulse` 和 `W2_E50_RuntimeTimeout` 输出 IO/wait/pulse/timeout trace。 | +| EV-W2-POST-010:三品牌输出 | 通过 | `post-report.json` 记录 ABB/FANUC/KUKA 文件名和 report。 | +| EV-W2-POST-020:roundtrip | 通过 | `roundtrip.json` 记录 ABB import 回读状态和 diagnostics。 | +| EV-W2-UI-020:HTML 截图 | 通过 | `kdl-wasm/web/test-results/virtual-controller/virtual-controller-desktop.png`、`virtual-controller-mobile.png`、`evidence.json`。 | +| EV-W2-CI-900:全量命令 | 通过 | `npm run typecheck`、`npm test`、`npm run verify:virtual-controller` 全部通过;WASM native build 未执行。 | +| EV-W2-DEPLOY-001:演示包 manifest | 通过 | `demo-manifest.json` 包含 release_id、job_id、19 个程序、报告、截图、文档入口。 | +| EV-W2-DEPLOY-020:演示包 zip | 通过 | `kdl-wasm/web/test-results/deploy/kdl-olp-demo-20260628-164048-W2-JOB-20260628082622-51484d62.zip`。 | +| EV-W2-DEPLOY-040:HTTPS 发布 | 通过 | `https://82.156.24.101:8095/` 可访问首页、虚拟控制器、report、截图和逐帧轨迹 JSON。 | +| EV-W2-DEPLOY-050:远程 smoke test | 通过 | `kdl-wasm/web/test-results/deploy/kdl-olp-demo-20260628-164048-W2-JOB-20260628082622-51484d62.deploy.json`,`program_count=19` 且 `summary.fail=0`。 | + +## 3. 建议命令 + +### 3.1 文档和覆盖矩阵检查 + +```powershell +rg -n "W2_|通用机器人编程语法规范|Runtime|Static|Post|ABB120|虚拟控制器" working2 +``` + +预期:能找到 README、任务矩阵、验收证据、决策记录和 manifest 中的覆盖项。 + +### 3.2 GRL 和 ABB120 测试 + +```powershell +cd E:\Work\kdl_work +npm test -- grl abb120 +``` + +预期:GRL parser/semantic、ABB120 fixture、表达式和程序编译测试通过。 + +### 3.3 虚拟控制器运行测试 + +```powershell +npm test -- virtual controller runtime +``` + +预期:状态机、IR runtime、motion queue、IO runtime、workbench/debug facade 测试通过。 + +### 3.4 后处理和导入回读 + +```powershell +npm test -- post import roundtrip +``` + +预期:ABB/FANUC/KUKA post、brand import、roundtrip diff 测试通过。 + +### 3.5 HTML 虚拟控制器截图 + +```powershell +npm run verify:virtual-controller +``` + +预期:桌面和移动截图生成,状态交互、Wait 置位和无横向溢出检查通过。 + +### 3.6 可选 WASM native build + +```powershell +cmake --build kdl-wasm/build-wasm -j16 +``` + +预期:当前 Emscripten/Ninja 环境可用时构建通过;如环境缺失,记录为环境阻塞而不是功能通过。 + +### 3.7 服务器演示包生成 + +建议后续实现脚本: + +```powershell +cd E:\Work\kdl_work +node kdl-wasm/web/scripts/build-demo-package.mjs +node kdl-wasm/web/scripts/verify-demo-package.mjs kdl-wasm/web/test-results/deploy/kdl-olp-demo-.zip +``` + +预期:生成 zip;解压校验包含 `index.html`、`demo-manifest.json`、19 个 `.grl`、最新 `W2-JOB-*`、逐帧 `trajectory.frames`、2 张截图和 2 份 Word 文档。 + +### 3.8 HTTPS 远程 smoke test + +```powershell +$base = "https://82.156.24.101:8095" +curl.exe -k "$base/" +curl.exe -k "$base/demo-manifest.json" +curl.exe -k "$base/spec-programs/manifest.json" +curl.exe -k "$base/app/virtual-controller.html" +curl.exe -k "$base/test-results/abb120-spec//report.json" +curl.exe -k "$base/test-results/virtual-controller/virtual-controller-desktop.png" --output NUL +curl.exe -k "$base/test-results/virtual-controller/virtual-controller-mobile.png" --output NUL +``` + +预期: + +1. 关键 URL 返回 200。 +2. `demo-manifest.json` 中 `program_count` 为 19。 +3. `report.json` 中 `summary.fail` 为 0。 +4. 浏览器可打开虚拟控制器页面和报告页面。 + +## 4. 实际产物目录 + +```text +kdl-wasm/web/test-results/abb120-spec/ + W2-JOB-20260628022836-51484d62/ + job.json + manifest.json + report.json + report.html + programs/ + / + compile.json + controller.json + motion-queue.json + trace.json + io.json + trajectory.json + post-report.json + roundtrip.json +``` + +每个 `job.json` 必须包含: + +1. `job_id` +2. `suite_id` +3. `robot_id` +4. `spec_version` +5. `programs` +6. `commands` +7. `status` +8. `diagnostics` +9. `artifact_paths` + +## 5. 当前记录 + +| 时间 | 命令 | 结果 | +| --- | --- | --- | +| 2026-06-28 09:38 Asia/Shanghai | `npm run suite:abb120-spec` | 通过;生成 `W2-JOB-20260628013857-19b5a2c7`,18 个程序,missingSections 为空。 | +| 2026-06-28 09:40 Asia/Shanghai | `npm run typecheck` | 通过。 | +| 2026-06-28 09:41 Asia/Shanghai | `npm test` | 通过;41 个 test files,155 个 tests。 | +| 2026-06-28 09:42 Asia/Shanghai | `npm run verify:virtual-controller` | 通过;desktop screenshot 49892 bytes,mobile screenshot 47887 bytes,wait=`satisfied`,所有主要面板可见。 | +| 2026-06-28 10:28 Asia/Shanghai | `npm test -- abb120SpecSuite` | 通过;manifest 引用、层级、expected status、expected diagnostics 和 W2_99 完整示例证据均通过。 | +| 2026-06-28 10:28 Asia/Shanghai | `npm run typecheck` | 通过。 | +| 2026-06-28 10:28 Asia/Shanghai | `npm run suite:abb120-spec` | 通过;生成 `W2-JOB-20260628022836-51484d62`,19 个程序,missingSections 为空。 | +| 2026-06-28 10:33 Asia/Shanghai | `npm test` | 通过;41 个 test files,155 个 tests。 | +| 2026-06-28 10:33 Asia/Shanghai | `npm run verify:virtual-controller` | 通过;desktop screenshot 49892 bytes,mobile screenshot 47887 bytes,wait=`satisfied`,所有主要面板可见。 | +| 2026-06-28 12:06 Asia/Shanghai | `npm run demo:build` | 通过;生成 release `20260628-120601-W2-JOB-20260628024709-51484d62`,zip 3769732 bytes,sha256=`e3d936ae5e2c813f80346363b66b82fc19c87fe61ca421ac1b2de2eb4bc1c699`。 | +| 2026-06-28 12:06 Asia/Shanghai | `npm run demo:verify -- kdl-wasm/web/test-results/deploy/kdl-olp-demo-20260628-120601-W2-JOB-20260628024709-51484d62.zip` | 通过;解压后 `program_count=19`、`.grl=19`、`summary.fail=0`、截图和 2 份 Word 文档均存在。 | +| 2026-06-28 12:07 Asia/Shanghai | 上传并切换服务器 release | 通过;`current` 指向 `/opt/kdl-olp-demo/8095/releases/20260628-120601-W2-JOB-20260628024709-51484d62`,`previous` 指向 `/opt/kdl-olp-demo/8095/releases/20260628-120357-W2-JOB-20260628024709-51484d62`,服务 `kdl-site-8095` 为 active。 | +| 2026-06-28 12:07 Asia/Shanghai | HTTPS remote smoke test | 通过;`/`、`/demo-manifest.json`、`/spec-programs/manifest.json`、`/app/virtual-controller.html`、`report.json`、`report.html`、desktop/mobile png 全部返回 200;`program_count=19`、`summary.fail=0`。 | +| 2026-06-28 12:15 Asia/Shanghai | `npm run typecheck` | 通过。 | +| 2026-06-28 12:15 Asia/Shanghai | `npm test` | 通过;41 个 test files,155 个 tests。 | +| 2026-06-28 16:25 Asia/Shanghai | `npm run typecheck` | 通过。 | +| 2026-06-28 16:25 Asia/Shanghai | `npm test -- kdl-wasm/web/tests/integration/abb120SpecSuite.test.ts kdl-wasm/web/tests/integration/abb120SuiteArtifacts.test.ts` | 通过;5 个 integration tests 通过,包含逐帧 trajectory 断言。 | +| 2026-06-28 16:26 Asia/Shanghai | `npm run suite:abb120-spec` | 通过;生成 `W2-JOB-20260628082622-51484d62`,19 个程序,missingSections 为空。 | +| 2026-06-28 16:28 Asia/Shanghai | `npm run verify:virtual-controller` | 通过;desktop screenshot 45302 bytes,mobile screenshot 40407 bytes,`Run` 后 state=`running`,DI wait=`satisfied`。 | +| 2026-06-28 16:35 Asia/Shanghai | `npm run demo:verify -- kdl-wasm/web/test-results/deploy/kdl-olp-demo-20260628-163458-W2-JOB-20260628082622-51484d62.zip` | 通过;`program_count=19`、`.grl=19`、`summary.fail=0`、`runtime_trajectory_frames=9/12`。 | +| 2026-06-28 16:38 Asia/Shanghai | `powershell -NoProfile -ExecutionPolicy Bypass -File kdl-wasm/web/scripts/deploy-demo-package.ps1 -ZipPath ... -Target abigailaw-8091` | 通过;关键 URL 全部 200,`program_count=19`、`summary.fail=0`,服务 `kdl-site-8095` 自动重启后读取新 release。 | +| 2026-06-28 16:39 Asia/Shanghai | Python HTTPS 远程逐帧轨迹抽查 | 通过;`W2_30_MotionAllTypes` 有 12 帧,`W2_60_IOWaitPulse` 有 4 帧,`W2_99_FullSpecExample` 有 32 帧,均含 joints 和 TCP。 | + +### 最新 job + +| 项 | 值 | +| --- | --- | +| job_id | `W2-JOB-20260628082622-51484d62` | +| suite_id | `working2-abb120-spec` | +| robot_id | `abb_irb120_3_58` | +| job.json | `kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/job.json` | +| report.html | `kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.html` | +| HTML screenshots | `kdl-wasm/web/test-results/virtual-controller/` | + +## 6. 服务器发布证据记录模板 + +| 项 | 值 | +| --- | --- | +| release_id | `20260628-164048-W2-JOB-20260628082622-51484d62` | +| zip 路径 | `kdl-wasm/web/test-results/deploy/kdl-olp-demo-20260628-164048-W2-JOB-20260628082622-51484d62.zip` | +| zip hash | 见同目录 `kdl-olp-demo-20260628-164048-W2-JOB-20260628082622-51484d62.summary.json`。 | +| job_id | `W2-JOB-20260628082622-51484d62` | +| 发布地址 | `https://82.156.24.101:8095/` | +| 服务器 release 目录 | `/opt/kdl-olp-demo/8095/releases/20260628-164048-W2-JOB-20260628082622-51484d62` | +| current 指向 | `/opt/kdl-olp-demo/8095/releases/20260628-164048-W2-JOB-20260628082622-51484d62` | +| smoke test 时间 | `2026-06-28 16:40 Asia/Shanghai` | +| smoke test 结果 | 通过;关键 URL 全部 200,`program_count=19`,`summary.fail=0`。 | +| 回滚目录 | `/opt/kdl-olp-demo/8095/releases/20260628-163458-W2-JOB-20260628082622-51484d62` | + +## 7. 远程页面人工验收记录模板 + +| 演示项 | 程序或页面 | 结果 | 备注 | +| --- | --- | --- | --- | +| 首页打开 | `/` | 通过 | HTTP 200,返回 11199 bytes。 | +| manifest 打开 | `/demo-manifest.json` | 通过 | HTTP 200,`program_count=19`。 | +| 虚拟控制器打开 | `/app/virtual-controller.html` | 通过 | HTTP 200,页面包含 Program 下拉、Frame slider 和 `Trajectory Frames` 表格。 | +| 报告打开 | `/test-results/abb120-spec/W2-JOB-20260628082622-51484d62/report.html` | 通过 | HTTP 200,返回 2266 bytes。 | +| 最小运动演示 | `W2_00_MinimalModule` | 通过 | 程序源和 compile artifact 均在 manifest 中可跳转。 | +| 三类运动演示 | `W2_30_MotionAllTypes` | 通过 | 远程 `trajectory.json` 有 12 帧,每帧包含 TCP 和 J1-J6。 | +| IO/wait/pulse 演示 | `W2_60_IOWaitPulse` | 通过 | 远程 `trajectory.json` 有 4 帧;页面 DI1 可将 wait 切到 `satisfied`。 | +| 完整示例演示 | `W2_99_FullSpecExample` | 通过 | 远程 `trajectory.json` 有 32 帧,每帧包含 TCP 和 J1-J6。 | +| 静态诊断展示 | `W2_E10` 到 `W2_E40` | 通过 | `report.json` 中保留 expected diagnostics,`summary.fail=0`。 | +| 后处理展示 | `W2_P10` 到 `W2_P30` | 通过 | post/roundtrip artifacts 均在 package 内。 | +| 桌面截图打开 | `virtual-controller-desktop.png` | 通过 | HTTP 200,45302 bytes。 | +| 移动截图打开 | `virtual-controller-mobile.png` | 通过 | HTTP 200,40407 bytes。 | diff --git a/working2/06-决策记录.md b/working2/06-决策记录.md new file mode 100644 index 0000000..901b6c1 --- /dev/null +++ b/working2/06-决策记录.md @@ -0,0 +1,184 @@ +# 06-决策记录 + +版本:0.1 +日期:2026-06-28 + +## ADR-W2-001:working2 以当前语法规范作为覆盖源 + +状态:Accepted +日期:2026-06-28 +关联任务:`W2-SPEC-001` + +### 背景 + +用户要求对标 `通用机器人编程语法规范.md` 创建机器人程序集,并全面完成虚拟控制器执行情况。`working1` 已经覆盖 ABB120 基础测试和虚拟控制器,但不是逐章按最新语法规范做覆盖矩阵。 + +### 决策 + +`working2` 以 `work/doc/通用机器人编程语法规范.md` 为唯一覆盖源。任何程序或测试是否“覆盖”,必须能追溯到规范章节、语法项和验收证据。 + +### 后果 + +1. 覆盖结论可审计。 +2. 语法规范更新后可以重新生成缺口清单。 +3. 不再用“已有测试通过”替代规范覆盖证明。 + +## ADR-W2-002:ABB120 基准继续使用仓库内稳定 fixture + +状态:Accepted +日期:2026-06-28 +关联任务:`W2-PROG-010`、`W2-RUN-020` + +### 背景 + +仓库已有 `kdl-wasm/web/src/fixtures/abb120.ts` 和测试导出 `abbIrb120.ts`,其中包含 ABB IRB120 3/58 URDF、load options 和标准关节位。重新引入外部 URDF 会增加模型差异和验证成本。 + +### 决策 + +working2 继续使用仓库内 ABB120 fixture。若未来需要独立 `.urdf` 文件,只能从当前 fixture 导出,不能静默替换机器人模型。 + +### 后果 + +1. working2 结果与 existing KDL/virtual controller 测试一致。 +2. FK/IK/limit snapshot 可复用。 +3. 外部 mesh/inertial 完整模型另列任务。 + +## ADR-W2-003:语法覆盖分为 Runtime、Static、Post 三层 + +状态:Accepted +日期:2026-06-28 +关联任务:`W2-SPEC-002` + +### 背景 + +语法规范包含流程控制、运动、IO,也包含 trap、interrupt、task、brand metadata、post_hint 等不适合全部作为虚拟控制器 happy path 执行的语义。如果强行要求所有语法都运行,会混淆实现边界。 + +### 决策 + +覆盖分三层: + +1. Runtime:虚拟控制器必须执行并输出 trace。 +2. Static:parser/semantic 必须诊断或验证。 +3. Post:后处理、导入回读和报告必须覆盖。 + +### 后果 + +1. happy path 稳定。 +2. P1/P2 语义不会被误报为已完整执行。 +3. 覆盖矩阵能清楚说明每项语法的验证方式。 + +## ADR-W2-004:虚拟控制器验收以证据包为准 + +状态:Accepted +日期:2026-06-28 +关联任务:`W2-RUN-001` 到 `W2-RUN-060` + +### 背景 + +“执行情况”不能只看单元测试通过。虚拟控制器需要证明状态机、程序指针、motion queue、IO/wait、报警、source map 和轨迹结果都正确。 + +### 决策 + +每次 suite 运行生成 `W2-JOB-*` 证据包,至少包含: + +1. `job.json` +2. `compile.json` +3. `controller.json` +4. `motion-queue.json` +5. `trace.json` +6. `io.json` +7. `trajectory.json` +8. `report.json/html` + +### 后果 + +1. 运行结果可回放和审计。 +2. HTML 虚拟控制器可以消费同一证据。 +3. CI 失败时能定位到具体程序、source range 和 controller 状态。 + +## ADR-W2-005:working2 不改写 working1 完成记录 + +状态:Accepted +日期:2026-06-28 +关联任务:`W2-SPEC-000` + +### 背景 + +`working1` 已记录已完成的 ABB120 基础测试、表达式功能和虚拟控制器验收。用户要求任务整合到 `working2` 并参考 `working1`,不是要求重写历史记录。 + +### 决策 + +`working2` 新建独立任务包,状态从 `Todo` 开始。`working1` 仅作为参考和可复用资产来源。 + +### 后果 + +1. 避免把旧验收直接当作新目标完成。 +2. working2 可以独立追踪新增覆盖缺口。 +3. 后续实现可以逐项把 Todo 推进到 Done。 + +## ADR-W2-006:W2 runner 使用同步 fixture planner 生成审计轨迹 + +状态:Accepted +日期:2026-06-28 +关联任务:`W2-RUN-020`、`W2-RUN-040` + +### 背景 + +working2 的核心目标是逐章覆盖 GRL 语法规范,并为每个程序输出稳定、可审计的 controller、motion queue、trace、IO 和 trajectory 证据。仓库已有 ABB120 KDL 集成测试负责真实 URDF FK/IK/planPath 验证。 + +### 决策 + +`runAbb120SpecSuite` 在 W2 job 中使用同步 fixture planner 生成稳定 trajectory 和 planner diagnostic;真实 ABB120 URDF/KDL 检查继续由既有 `abb120Programs.test.ts` 和 KDL 测试承担。 + +### 后果 + +1. W2 证据包生成快速、稳定、可在普通 Node/Vitest 环境执行。 +2. Motion queue、source map、IO/wait/alarm 和 post/roundtrip 证据可稳定归档。 +3. 若后续要求 job 内嵌真实 KDL 轨迹,可在 runner 中增加 async KDL planner 模式。 + +## ADR-W2-007:异常和 P1 语义采用 runtime/static 边界组合 + +状态:Accepted +日期:2026-06-28 +关联任务:`W2-RUN-060`、`W2-PROG-010.10` + +### 背景 + +当前语法规范定义 `try/catch/finally`、`trap`、`interrupt`、`task`。现有 parser/semantic 已有异常分析器,但控制流分析器不应把 `try` 当普通控制流执行;`trap/task` 仍是 P1 runtime 边界。 + +### 决策 + +控制流分析器将 `try` 块保留为 raw boundary,由 exception semantic 负责 alarm/raise/try/catch/finally 分析。`trap/task/interrupt` 输出 `GRL_P1_UNIMPLEMENTED` warning 或 unsupported runtime trace,不作为 happy path 完整执行。 + +### 后果 + +1. `W2_90_ExceptionAlarm.grl` 可以稳定 parse、compile、load 并输出异常语义证据。 +2. P1 语义不会被误报为完整 runtime 支持。 +3. 后续实现 trap/interrupt/task 时可替换 raw boundary,不影响 W2 manifest 结构。 + +## ADR-W2-008:服务器演示采用静态发布包加证据包模式 + +状态:Accepted +日期:2026-06-28 +关联任务:`W2-DEPLOY-001` 到 `W2-DEPLOY-060` + +### 背景 + +用户要求把虚拟测试程序打包到服务器,并能通过这些程序演示虚拟控制器全部功能。当前虚拟控制器页面、GRL 程序、suite job、截图和 Word 文档都可以作为静态文件发布;远程演示的重点是可访问、可审计、可重复,而不是在服务器上重新执行 Node/Vitest。 + +### 决策 + +服务器发布采用静态演示包模式: + +1. 本地先执行 typecheck、test、suite 和截图验证。 +2. 将虚拟控制器页面、19 个 GRL 程序、最新 `W2-JOB-*`、截图、Word 文档和 `demo-manifest.json` 打成 zip。 +3. 服务器仅负责 HTTPS 静态托管。 +4. 远程验收通过 `demo-manifest.json`、`report.json`、程序源码、截图和页面入口验证。 +5. 服务器保留 release 目录和 `current` 链接,支持回滚。 + +### 后果 + +1. 发布包可离线审计,不依赖服务器 Node 环境。 +2. 演示内容与本地测试证据一致,避免远程环境差异导致结论不稳定。 +3. 后续如需在线编辑和动态运行,可在当前静态包基础上增加 API 服务,不影响现有验收链路。 +4. 凭据不进入仓库文档,降低泄露风险。 diff --git a/working2/07-服务器发布与演示包实施方案.md b/working2/07-服务器发布与演示包实施方案.md new file mode 100644 index 0000000..f11e15f --- /dev/null +++ b/working2/07-服务器发布与演示包实施方案.md @@ -0,0 +1,238 @@ +# 07-服务器发布与演示包实施方案 + +版本:0.1 +日期:2026-06-28 + +## 1. 目标 + +将虚拟控制器网站、GRL 规范测试程序和最新测试证据打包发布到 HTTPS 服务器,使用户可以通过浏览器演示虚拟控制器的全部功能。 + +发布目标: + +```text +https://82.156.24.101:8095/ +``` + +端口 `8095` 已作为演示端口使用。本文档不记录服务器密码,部署凭据由部署人员本地管理。 + +## 2. 演示范围 + +服务器演示必须覆盖以下功能: + +| 功能 | 演示来源 | +| --- | --- | +| GRL 程序加载 | 19 个 `spec-programs` 程序。 | +| 语法解析和语义编译 | 每个程序的 `compile.json`。 | +| 虚拟控制器状态机 | Runtime 程序的 `controller.json`。 | +| motion queue | Runtime 程序的 `motion-queue.json`。 | +| 轨迹摘要 | Runtime 程序的 `trajectory.json`。 | +| IO、wait、pulse | `W2_60_IOWaitPulse` 和 `W2_E50_RuntimeTimeout`。 | +| 流程控制和调用 | `W2_70_ControlFlow`、`W2_80_ProcFuncCall`。 | +| 异常和报警 | `W2_90_ExceptionAlarm`、`W2_E50_RuntimeTimeout`。 | +| 静态错误诊断 | `W2_E10`、`W2_E20`、`W2_E30`、`W2_E40`。 | +| 三品牌后处理 | `W2_P10`、`W2_P20`、`W2_P30` 的 `post-report.json`。 | +| 导入回读 | `roundtrip.json`。 | +| 页面截图 | `virtual-controller-desktop.png`、`virtual-controller-mobile.png`。 | + +## 3. 发布包结构 + +标准发布包命名: + +```text +kdl-olp-demo-YYYYMMDD-HHMMSS-.zip +``` + +解压后目录: + +```text +kdl-olp-demo/ + index.html + demo-manifest.json + README.md + app/ + virtual-controller.html + virtual-controller.css + virtual-controller.js + spec-programs/ + manifest.json + runtime/ + static/ + error/ + post/ + test-results/ + abb120-spec/ + / + job.json + manifest.json + report.json + report.html + programs/ + virtual-controller/ + evidence.json + virtual-controller-desktop.png + virtual-controller-mobile.png + docs/ + GRL功能语法逻辑与程序创建使用手册.docx + 通用机器人离线编程系统测试文档.docx +``` + +## 4. demo-manifest.json 字段 + +`demo-manifest.json` 是远程页面和验收脚本的入口文件,字段必须稳定。 + +```json +{ + "release_id": "20260628-112000-W2-JOB-...", + "generated_at": "2026-06-28T03:20:00.000Z", + "suite_id": "working2-abb120-spec", + "job_id": "W2-JOB-...", + "program_count": 19, + "runtime_programs": 12, + "static_programs": 4, + "post_programs": 3, + "entry": "app/virtual-controller.html", + "report_json": "test-results/abb120-spec//report.json", + "report_html": "test-results/abb120-spec//report.html", + "program_manifest": "spec-programs/manifest.json", + "screenshots": { + "desktop": "test-results/virtual-controller/virtual-controller-desktop.png", + "mobile": "test-results/virtual-controller/virtual-controller-mobile.png" + } +} +``` + +## 5. 本地发布前检查 + +发布前必须执行: + +```powershell +cd E:\Work\kdl_work +npm run typecheck +npm test +npm run suite:abb120-spec +npm run verify:virtual-controller +``` + +预期: + +1. TypeScript 无错误。 +2. Vitest 全量通过。 +3. `suite:abb120-spec` 生成新 `W2-JOB-*`。 +4. `verify:virtual-controller` 生成桌面和移动截图。 +5. `report.json` 中 `summary.fail` 为 `0`。 + +## 6. 服务器目录规范 + +推荐服务器目录: + +```text +/opt/kdl-olp-demo/8095/ + releases/ + / + current -> releases/ + previous -> releases/ +``` + +发布时只切换 `current`,不要直接覆盖正在服务的目录。 + +## 7. 上传和发布步骤 + +1. 本地生成演示包 zip。 +2. 上传 zip 到服务器临时目录。 +3. 在服务器创建 release 目录。 +4. 解压 zip 到 release 目录。 +5. 检查 `index.html`、`demo-manifest.json` 和 `app/virtual-controller.html` 是否存在。 +6. 将 `previous` 指向旧 `current`。 +7. 将 `current` 指向新 release。 +8. 重新加载或确认 HTTPS 服务读取 `current`。 +9. 执行远程 smoke test。 + +## 8. 远程 smoke test + +```powershell +$base = "https://82.156.24.101:8095" +curl.exe -k "$base/" +curl.exe -k "$base/demo-manifest.json" +curl.exe -k "$base/spec-programs/manifest.json" +curl.exe -k "$base/app/virtual-controller.html" +curl.exe -k "$base/test-results/abb120-spec//report.json" +``` + +检查项: + +| URL | 预期 | +| --- | --- | +| `/` | 返回首页 HTML。 | +| `/demo-manifest.json` | `program_count` 为 19。 | +| `/spec-programs/manifest.json` | 包含 19 个 programs。 | +| `/app/virtual-controller.html` | 返回虚拟控制器页面。 | +| `/test-results/abb120-spec//report.json` | `summary.fail` 为 0。 | +| `/test-results/virtual-controller/virtual-controller-desktop.png` | 返回 PNG。 | +| `/test-results/virtual-controller/virtual-controller-mobile.png` | 返回 PNG。 | + +## 9. 人工演示脚本 + +浏览器打开: + +```text +https://82.156.24.101:8095/ +``` + +演示顺序: + +1. 打开首页,说明当前 release、job_id、程序数量。 +2. 打开虚拟控制器页面。 +3. 展示 Runtime 程序列表,重点选择: + - `W2_00_MinimalModule` + - `W2_30_MotionAllTypes` + - `W2_60_IOWaitPulse` + - `W2_99_FullSpecExample` +4. 展示 trace、motion queue、IO image 和 diagnostics。 +5. 打开 `report.html`,说明 19 个程序覆盖章节 4 到 25。 +6. 打开截图,说明桌面和移动端 UI 已验证。 +7. 打开 Word 手册和测试文档,说明使用和测试结论。 + +## 10. 回滚 + +若远程验证失败: + +1. 保留失败 release,不删除,便于排查。 +2. 将 `current` 指回 `previous`。 +3. 重新执行 smoke test。 +4. 在 `working2/03-推进台账.md` 记录: + - 失败 release_id + - 失败原因 + - 回滚到哪个 release_id + - 后续修复任务 + +## 11. 自动化脚本 + +已新增脚本: + +```text +kdl-wasm/web/scripts/build-demo-package.mjs +kdl-wasm/web/scripts/verify-demo-package.mjs +kdl-wasm/web/scripts/deploy-demo-package.ps1 +``` + +脚本职责: + +| 脚本 | 职责 | +| --- | --- | +| `build-demo-package.mjs` | 收集 app、spec-programs、latest job、screenshots、docs,生成 demo manifest 和 zip。 | +| `verify-demo-package.mjs` | 解压 zip,检查 19 个程序、report fail=0、图片和文档存在。 | +| `deploy-demo-package.ps1` | 上传 zip、远程解压、切换 current、执行 smoke test。 | + +当前发布 release: + +```text +20260628-120601-W2-JOB-20260628024709-51484d62 +``` + +服务器当前状态: + +| 项 | 值 | +| --- | --- | +| current | `/opt/kdl-olp-demo/8095/releases/20260628-120601-W2-JOB-20260628024709-51484d62` | +| previous | `/opt/kdl-olp-demo/8095/releases/20260628-120357-W2-JOB-20260628024709-51484d62` | +| HTTPS smoke test | 通过,关键 URL 返回 200,`program_count=19`,`summary.fail=0`。 | diff --git a/working2/README.md b/working2/README.md index 9617f12..ee184bf 100644 --- a/working2/README.md +++ b/working2/README.md @@ -1,10 +1,64 @@ -# working2 任务审计 +# working2 GRL 语法规范覆盖程序集与虚拟控制器验收索引 +版本:0.1 日期:2026-06-28 +主题:对标 `work/doc/通用机器人编程语法规范.md`,以 ABB IRB120 3/58 URDF fixture 为机器人基准,建立覆盖语法规范的 GRL 机器人程序集,并全面验收虚拟控制器执行情况。 -本目录当前没有任务文件、源码、验收矩阵或外部引用。已检查: +## 1. 目标 -1. `Get-ChildItem -Force E:\Work\kdl_work\working2`:无文件。 -2. `rg -n "working2|working 2|工作2" E:\Work\kdl_work`:未发现任务说明引用。 +`working2` 是在 `working1` 已完成 ABB120 基础测试、运算功能和 HTML 虚拟控制器之后的专项任务包。它不重复定义 ABB120 基础能力,而是把当前语法规范转成可执行覆盖清单: -结论:`working2` 当前为空任务集,无待实现项。 +1. 逐章对照 `通用机器人编程语法规范.md`,生成 ABB120 GRL 程序套件。 +2. 区分虚拟控制器必须执行的语义、编译期静态验证语义、后处理/导入验证语义。 +3. 用 ABB120 URDF fixture 运行 happy path、runtime path、error path 和 cross-brand path。 +4. 输出可审计证据:AST、IR、KDL request、motion queue、trace、IO/wait、alarm、source map、post report、roundtrip report、HTML 截图。 +5. 将结果接入当前 `kdl-wasm` 测试、suite runner 和虚拟控制器页面验证命令。 +6. 将虚拟控制器页面、19 个 GRL 规范测试程序、最新 W2 job 证据包和截图打成服务器演示包,通过 HTTPS 地址演示虚拟控制器全部功能。 + +## 2. 基准输入 + +| 项 | 路径 | +| --- | --- | +| 语法规范 | `E:\Work\kdl_work\work\doc\通用机器人编程语法规范.md` | +| ABB120 fixture | `E:\Work\kdl_work\kdl-wasm\web\src\fixtures\abb120.ts` | +| ABB120 测试 fixture 导出 | `E:\Work\kdl_work\kdl-wasm\web\tests\fixtures\abbIrb120.ts` | +| 已有 ABB120 程序目录 | `E:\Work\kdl_work\kdl-wasm\web\tests\fixtures\abb120\programs` | +| 已有 suite runner | `E:\Work\kdl_work\kdl-wasm\web\src\suites\abb120Suite.ts` | +| 虚拟控制器核心 | `E:\Work\kdl_work\kdl-wasm\web\src\controller` | +| HTML 虚拟控制器 | `E:\Work\kdl_work\kdl-wasm\web\app\virtual-controller.html` | + +## 3. 文档入口 + +| 文件 | 用途 | +| --- | --- | +| `01-项目功能内容.md` | 需求范围、语法覆盖分层、ABB120 程序集、虚拟控制器执行和报告要求。 | +| `02-项目程序开发详细步骤.md` | 从规范解析、程序创建、执行运行器、证据输出到 CI 的实施步骤。 | +| `03-推进台账.md` | 本轮任务整合记录、已发现资产、待实现边界和下一步。 | +| `04-任务矩阵.md` | 任务编号、状态、依赖、验收标准。 | +| `05-验收证据.md` | 应执行命令、产物路径、job/report/screenshot 证据要求。 | +| `06-决策记录.md` | ABB120 基准、覆盖策略、执行边界和证据格式的设计决策。 | +| `07-服务器发布与演示包实施方案.md` | HTTPS 发布目标、演示包内容、服务器目录、演示程序清单和验收步骤。 | +| `programs/manifest.md` | GRL 程序集清单和语法规范覆盖矩阵。 | + +## 4. 任务编号 + +| 编号范围 | 主题 | +| --- | --- | +| `W2-SPEC-000` 到 `W2-SPEC-099` | 语法规范覆盖矩阵和缺口审计。 | +| `W2-PROG-000` 到 `W2-PROG-199` | ABB120 GRL 覆盖程序集。 | +| `W2-RUN-000` 到 `W2-RUN-199` | 虚拟控制器执行、KDL、IO/wait、trace 和 source map。 | +| `W2-POST-000` 到 `W2-POST-099` | ABB/FANUC/KUKA 后处理、导入回读和差异报告。 | +| `W2-UI-000` 到 `W2-UI-099` | HTML 虚拟控制器页面和截图验收。 | +| `W2-DEPLOY-000` 到 `W2-DEPLOY-099` | 服务器演示包、HTTPS 发布、远程验证和回滚。 | +| `W2-CI-900` 到 `W2-CI-999` | 全量 CI 和证据归档。 | + +## 5. 当前状态 + +已完成 working2 首批实现和验收: + +1. 新增 `kdl-wasm/web/tests/fixtures/abb120/spec-programs`,包含 11 个 runtime 目录程序、2 个 error 目录程序、3 个 static 目录程序和 3 个 Post/import 程序;按 manifest 层级统计为 12 个 Runtime 项、4 个 Static 项、3 个 Post 项。 +2. 新增 `kdl-wasm/web/tests/fixtures/abb120/spec-programs/manifest.json`,覆盖规范章节 4 到 25。 +3. 新增 `runAbb120SpecSuite` 和 `npm run suite:abb120-spec`,可生成 `W2-JOB-*` 证据包。 +4. HTML 虚拟控制器页面已从 `demo-manifest.json` 读取 19 个 W2 程序,支持 Program 下拉切换、Load/Run/Step、Frame slider 和逐帧 TCP/J1-J6 表格,并通过桌面和移动截图验证。 +5. 最新证据包:`kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628082622-51484d62`。 +6. 已完成服务器演示包自动化和 HTTPS 发布,目标地址为 `https://82.156.24.101:8095/`;当前 release 为 `20260628-164048-W2-JOB-20260628082622-51484d62`,远程 smoke test 和逐帧轨迹抽查通过。 diff --git a/working2/programs/manifest.md b/working2/programs/manifest.md new file mode 100644 index 0000000..654ad3b --- /dev/null +++ b/working2/programs/manifest.md @@ -0,0 +1,115 @@ +# working2 GRL 程序集 Manifest + +版本:0.1 +日期:2026-06-28 + +## 1. 目录目标 + +本 manifest 将 `通用机器人编程语法规范.md` 的语法和语义要求映射到 ABB120 GRL 程序、静态诊断测试、后处理测试和虚拟控制器执行证据。 + +目标程序目录: + +```text +kdl-wasm/web/tests/fixtures/abb120/spec-programs/ +``` + +机器可读 manifest: + +```text +kdl-wasm/web/tests/fixtures/abb120/spec-programs/manifest.json +``` + +## 2. 覆盖层级 + +| 层级 | 含义 | +| --- | --- | +| Runtime | 必须进入虚拟控制器执行,并产出 controller/trace/motion queue/IO 证据。 | +| Static | 必须由 parser/semantic/KDL diagnostic 覆盖,不要求 happy path 执行。 | +| Post | 必须由 ABB/FANUC/KUKA 后处理、导入回读或 report 覆盖。 | + +## 3. 程序清单 + +### 3.1 Runtime + +| 程序 | 覆盖章节 | 核心语法 | +| --- | --- | --- | +| `W2_00_MinimalModule.grl` | 4、5、6、9、10、23 | language、module、const、speed、zone、joint_target、movej、proc main。 | +| `W2_10_DataTargetToolFrame.grl` | 6、8、9 | bool/int/real/string/time/length/angle/percent、tool、frame、pose、poseq、joint_target、pose_target。 | +| `W2_20_ExpressionMath.grl` | 7 | 算术、比较、逻辑、括号、单位后缀、pi/e、三角函数、数值函数、编译期求值。 | +| `W2_30_MotionAllTypes.grl` | 10 | movej、movel、movec、set_tool、set_frame、set_speed、set_zone、inline 参数优先级。 | +| `W2_40_PathEvents.grl` | 11 | path defaults/source、point、event before/after/at distance、run_path。 | +| `W2_50_OperationProcess.grl` | 12 | operation kind/process/start_action/end_action、run_operation。 | +| `W2_60_IOWaitPulse.grl` | 13 | io.di/do/ai/ao/gi/go/ri/ro、wait、timeout、on_timeout、pulse、all/any/rising/falling/changed。 | +| `W2_70_ControlFlow.grl` | 14 | if/elseif/else、while、for、switch、break、continue。 | +| `W2_80_ProcFuncCall.grl` | 15 | proc、in/out/inout、call、return、func 返回值、作用域。 | +| `W2_90_ExceptionAlarm.grl` | 16 | alarm、raise、try/catch/finally。 | +| `W2_99_FullSpecExample.grl` | 24 | 规范完整示例的 tool/frame、path、operation、IO event、run_operation 和回 home。 | + +### 3.2 Static/error + +| 程序 | 覆盖章节 | 预期诊断 | +| --- | --- | --- | +| `W2_E10_ExpressionDiagnostics.grl` | 7、22 | `GRL_EXPR_PARSE`、`GRL_EXPR_UNKNOWN_SYMBOL`、`GRL_EXPR_UNKNOWN_FUNCTION`、`GRL_EXPR_ARITY`、`GRL_EXPR_DOMAIN`、`GRL_EXPR_DIV_ZERO`、`GRL_EXPR_UNIT_MISMATCH`、`GRL_EXPR_NON_CONSTANT`。 | +| `W2_E20_SemanticDiagnostics.grl` | 6、15、22 | 重复符号、类型不匹配、缺失引用、out/inout 非左值、func 缺少 return、func 副作用。 | +| `W2_E30_MotionDiagnostics.grl` | 8、9、10、11、22 | 关节限位、不可达 pose、movec 共线、缺少 motion 参数、空 path、重复 path point。 | +| `W2_E40_ControlFlowDiagnostics.grl` | 14、22 | 非法 break/continue、jump 进入块、重复 case、非常量 case、缺失 label。 | +| `W2_E50_RuntimeTimeout.grl` | 13、16 | wait timeout、on_timeout alarm/call、报警 source map。 | + +### 3.3 Post/import + +| 程序 | 覆盖章节 | 预期报告 | +| --- | --- | --- | +| `W2_P10_BrandHints.grl` | 18、20 | `post_hint`、`@brand.*` 消费或报告。 | +| `W2_P20_CrossBrandMotion.grl` | 20 | ABB/FANUC/KUKA motion、speed、zone、IO、wait 映射。 | +| `W2_P30_Roundtrip.grl` | 19、20、21 | post 后导入回读,motion/path/operation 等价或差异明确。 | + +## 4. 语法规范覆盖矩阵 + +| 规范章节 | 覆盖层级 | 程序或测试 | +| --- | --- | --- | +| 4. 词法规则 | Runtime/Static | `W2_00_MinimalModule`、lexer/parser tests。 | +| 5. 顶层结构 | Runtime | `W2_00_MinimalModule`。 | +| 6. 类型系统 | Runtime/Static | `W2_10_DataTargetToolFrame`、`W2_E20_SemanticDiagnostics`。 | +| 7. 表达式与运算 | Runtime/Static/Post | `W2_20_ExpressionMath`、`W2_E10_ExpressionDiagnostics`、`W2_P20_CrossBrandMotion`。 | +| 8. 坐标、工具和目标点 | Runtime/Static | `W2_10_DataTargetToolFrame`、`W2_E30_MotionDiagnostics`。 | +| 9. 速度和过渡 | Runtime/Post | `W2_20_ExpressionMath`、`W2_30_MotionAllTypes`、`W2_P20_CrossBrandMotion`。 | +| 10. 运动指令 | Runtime/Static/Post | `W2_30_MotionAllTypes`、`W2_E30_MotionDiagnostics`、`W2_P20_CrossBrandMotion`。 | +| 11. Path 语法 | Runtime/Static | `W2_40_PathEvents`、`W2_E30_MotionDiagnostics`。 | +| 12. Operation 语法 | Runtime/Post | `W2_50_OperationProcess`、`W2_P30_Roundtrip`。 | +| 13. IO 与等待 | Runtime | `W2_60_IOWaitPulse`、`W2_E50_RuntimeTimeout`。 | +| 14. 流程控制 | Runtime/Static | `W2_70_ControlFlow`、`W2_E40_ControlFlowDiagnostics`。 | +| 15. 子程序和函数 | Runtime/Static | `W2_80_ProcFuncCall`、`W2_E20_SemanticDiagnostics`。 | +| 16. 异常、报警和中断 | Runtime/Static | `W2_90_ExceptionAlarm`;trap/interrupt 先做 static 边界。 | +| 17. 多任务 | Runtime/Static | `W2_90_ExceptionAlarm` 的 task 边界 warning。 | +| 18. 品牌扩展和后处理提示 | Post | `W2_P10_BrandHints`。 | +| 19. 自动编程生成规则 | Post | `W2_P30_Roundtrip`、generator roundtrip tests。 | +| 20. 后处理映射规则 | Post | `W2_P20_CrossBrandMotion`。 | +| 21. 编译语义和 IR | Runtime/Static | 所有 runtime/error 程序的 compile evidence。 | +| 22. 语义检查 | Runtime/Static | `W2_E10` 到 `W2_E50`。 | +| 23. EBNF 语法草案 | Runtime/Static | `W2_00_MinimalModule`、parser coverage test 和 grammar fixtures。 | +| 24. 完整示例 | Runtime/Post | `W2_99_FullSpecExample` 覆盖完整 path/operation/proc 运行结构;`W2_P30_Roundtrip` 覆盖 post 后导入回读。 | +| 25. 实施优先级 | Runtime/Static/Post | P0 全部映射到上述程序;P1 进入 static/post 边界。 | + +## 5. 证据要求 + +每个程序必须记录: + +1. `program_id` +2. `spec_sections` +3. `coverage_level` +4. `expected_status` +5. `expected_diagnostics` +6. `runtime_commands` +7. `artifact_paths` + +最终 suite manifest 应生成为 JSON,供 CI 和 HTML 虚拟控制器读取。 + +## 6. 当前实现状态 + +| 项 | 状态 | 证据 | +| --- | --- | --- | +| 程序文件 | Done | `spec-programs/runtime` 11 个、`static` 3 个、`error` 2 个、`post` 3 个;manifest 层级统计 Runtime 12、Static 4、Post 3。 | +| 机器可读 manifest | Done | `spec-programs/manifest.json`。 | +| suite runner | Done | `kdl-wasm/web/src/suites/abb120SpecSuite.ts`。 | +| job 生成命令 | Done | `npm run suite:abb120-spec`。 | +| 最新 job | Done | `kdl-wasm/web/test-results/abb120-spec/W2-JOB-20260628022836-51484d62`。 |