151 lines
5.7 KiB
HTML
151 lines
5.7 KiB
HTML
<!doctype html>
|
|
<html lang="zh-CN">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>ABB120 Virtual Controller</title>
|
|
<link rel="stylesheet" href="./virtual-controller.css">
|
|
</head>
|
|
<body>
|
|
<main class="workbench" data-robot="abb_irb120_3_58" data-suite="working2-abb120-spec" data-job="W2-JOB-latest">
|
|
<header class="command-bar">
|
|
<div class="station-title">
|
|
<strong>ABB120 Station</strong>
|
|
<span data-field="job">W2-JOB-latest</span>
|
|
</div>
|
|
<label class="program-picker">
|
|
<span>Program</span>
|
|
<select data-program-select aria-label="Program"></select>
|
|
</label>
|
|
<button type="button" data-command="load">Load</button>
|
|
<button type="button" data-command="run">Run</button>
|
|
<button type="button" data-command="pause">Pause</button>
|
|
<button type="button" data-command="step">Step</button>
|
|
<button type="button" data-command="stop">Stop</button>
|
|
<button type="button" data-command="reset">Reset</button>
|
|
<button type="button" data-command="export">Export</button>
|
|
<label class="frame-control">
|
|
<span>Sample</span>
|
|
<input type="range" min="0" max="0" value="0" data-frame-slider aria-label="Execution sample">
|
|
<output data-field="frame">0 / 0</output>
|
|
</label>
|
|
</header>
|
|
|
|
<aside class="object-tree">
|
|
<h2>Station</h2>
|
|
<ul data-object-tree>
|
|
<li>Robot: abb_irb120_3_58</li>
|
|
<li>Tool: tool0</li>
|
|
<li>Frame: world</li>
|
|
<li>Path: pick_place</li>
|
|
<li>Program: W2_60_IOWaitPulse</li>
|
|
<li>Suite: working2-abb120-spec</li>
|
|
<li>Job: W2-JOB-latest</li>
|
|
</ul>
|
|
</aside>
|
|
|
|
<section class="viewport" aria-label="station viewport">
|
|
<div class="robot-arm" aria-hidden="true">
|
|
<span class="joint j1"></span>
|
|
<span class="link l1"></span>
|
|
<span class="joint j2"></span>
|
|
<span class="link l2"></span>
|
|
<span class="joint j3"></span>
|
|
<span class="link l3"></span>
|
|
<span class="joint j4"></span>
|
|
</div>
|
|
<svg viewBox="0 0 480 240" role="img" aria-label="path trace">
|
|
<path data-path-trace d="M70 170 C150 80 260 80 410 150" fill="none" stroke="#1f7a8c" stroke-width="4"/>
|
|
<circle data-path-start cx="70" cy="170" r="6"/>
|
|
<circle data-path-current cx="70" cy="170" r="8"/>
|
|
<circle data-path-end cx="410" cy="150" r="6"/>
|
|
</svg>
|
|
</section>
|
|
|
|
<aside class="pendant">
|
|
<h2>Controller</h2>
|
|
<dl>
|
|
<dt>State</dt><dd data-field="state">ready</dd>
|
|
<dt>Program</dt><dd data-field="program">W2_60_IOWaitPulse</dd>
|
|
<dt>Mode</dt><dd data-field="mode">auto</dd>
|
|
<dt>Motors</dt><dd data-field="motors">on</dd>
|
|
<dt>PC</dt><dd data-field="pc">main:0</dd>
|
|
<dt>Time</dt><dd data-field="runtime">0 / 0 s @ 50 ms</dd>
|
|
<dt>Joints</dt><dd data-field="joints">[0, 0, 0, 0, 0, 0]</dd>
|
|
<dt>TCP</dt><dd data-field="tcp">pos [0.374, 0, 0.63] q [0, 0.707107, 0, 0.707107]</dd>
|
|
</dl>
|
|
</aside>
|
|
|
|
<section class="editor">
|
|
<nav>
|
|
<button type="button" data-tab="grl" aria-pressed="true">GRL</button>
|
|
<button type="button" data-tab="abb">ABB</button>
|
|
<button type="button" data-tab="fanuc">FANUC</button>
|
|
<button type="button" data-tab="kuka">KUKA</button>
|
|
</nav>
|
|
<pre data-field="editor">proc main()
|
|
run_path pick_place
|
|
end</pre>
|
|
</section>
|
|
|
|
<section class="bottom-panel">
|
|
<div><strong>Log</strong><span data-field="log">ready</span></div>
|
|
<div><strong>Diagnostics</strong><span data-field="diagnostics">ready</span></div>
|
|
<div><strong>IO</strong><span data-field="io">do[1]=false, di[1]=false</span><button type="button" data-io="di1">DI1</button></div>
|
|
<div><strong>Wait</strong><span data-field="wait">none</span></div>
|
|
<div><strong>Motion Queue</strong><span data-field="queue">empty</span></div>
|
|
<div><strong>Trace</strong><span data-field="trace">0 events</span></div>
|
|
<div><strong>Reports</strong><span data-field="reports">W2-REPORT</span></div>
|
|
<div><strong>Parser</strong><span data-field="parser">idle</span><progress data-parser-progress max="1" value="0" aria-label="Parser progress"></progress></div>
|
|
<div><strong>Storage</strong><span data-field="storage">checking browser storage</span></div>
|
|
<div class="steps-panel">
|
|
<strong>Program Steps</strong>
|
|
<span data-field="step-status">step 0</span>
|
|
<div class="steps-table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>#</th>
|
|
<th>Time</th>
|
|
<th>Line</th>
|
|
<th>Step</th>
|
|
<th>Source</th>
|
|
<th>Motion/Target</th>
|
|
<th>Samples</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody data-step-table></tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="trajectory-panel">
|
|
<strong>Trajectory Frames</strong>
|
|
<span data-field="frame-time">t=0 s</span>
|
|
<div class="trajectory-table-wrap">
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>#</th>
|
|
<th>t</th>
|
|
<th>Motion</th>
|
|
<th>Target</th>
|
|
<th>TCP XYZ</th>
|
|
<th>TCP Q</th>
|
|
<th>J1</th>
|
|
<th>J2</th>
|
|
<th>J3</th>
|
|
<th>J4</th>
|
|
<th>J5</th>
|
|
<th>J6</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody data-frame-table></tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
<script src="./virtual-controller.js"></script>
|
|
</body>
|
|
</html>
|