Hi all,
Repo / Marketplace: RAPID Live — ABB Robotics for VS Code - Visual Studio Marketplace
Source: GitHub - ichbinmeraj/abb-rws-vscode: VS Code extension to monitor and control ABB IRC5 robots — live status, joint positions, RAPID execution and module management via RWS · GitHub
npm package (the protocol layer, reusable on its own): npm i abb-rws-client
What it covers
- Both protocols — RWS 1.0 (IRC5 / RW6.x, HTTP Digest, JSON) and RWS 2.0 (OmniCore / RW7.x, HTTPS Basic, XHTML;v=2.0).
Auto-detects from the WWW-Authenticate challenge. - Live-tested on RobotWare 7.21 (OmniCore VC) and RobotWare 6.16 (IRC5 VC). 116 unit tests + 339 live
protocol-coverage tests pass against both. - Real-time state via WebSocket subscriptions where supported, polling fallback otherwise (RWS 2.0 VCs reject the
robapi2_subscription subprotocol — this is a known VC limitation). - ~90 commands covering: panel state, RAPID exec, modules, variables, motion, jog (where allowed), I/O signals, file
system, event log, CFG database, mastership, RMMP, backup/restore, DIPC, IK + FK, service routine call, etc.
Editor-side features (this is where it stops being just a remote)
- Hover docs for all documented RAPID instructions / functions / data types — 705 entries parsed from the Technical
Reference Manual (3HAC050917-001 Rev F). - Inlay hints showing live controller values inline next to VAR / PERS / CONST declarations.
- Program-pointer indicator in the editor gutter — moves as the controller executes.
- Go to Definition / Find References / Document Outline across the workspace.
- CodeLens “▶ Run this routine” above every PROC.
- Push / Pull / Diff for .mod files — fits a normal git workflow.
Things I learned the hard way (and documented, in case anyone else hits them)
- RWS 2.0 mastership domains collapse: rapid and cfg both → edit. The old name returns 404.
- RWS 2.0 file service root is HOME, not $HOME.
- RWS 2.0 symbol API is suffix-style: /rw/rapid/symbol/{symburl}/data, not prefix.
- RWS 2.0 unloadModule is POST /rw/rapid/tasks/{task}/unloadmod, not DELETE.
- RWS 2.0 setSpeedRatio keeps the legacy ?action=setspeedratio form with body speed-ratio=N. The bare endpoint
returns 400. - RWS 2.0 setOperationMode wire format is lowercase: auto / man / manf (note: manf, not manfs like RWS 1.0).
- AUTO ↔ MANF transitions go through MANR — direct AUTO ↔ MANF returns 500.
- The /users/rmmp POST requires UAS grants the default user often doesn’t have. Admin works on most controllers.
- IRC5 /ctrl/clock is GET-only on RW6.16 (POST/PUT return 405).
- About 30 more quirks documented in the npm package’s protocol-findings notes.
What it can’t do (deliberately, per ABB safety design)
- Bypass the FlexPendant op-mode-change confirmation popup.
- Bypass the RMMP grant prompt.
- Modify UAS user grants from RWS (/users/grant-status is read-only).
- Override the FlexPendant key switch on real hardware.
- Jog in AUTO mode (ISO 10218 violation).
These are protocol-level walls, not extension limitations — verified by probing.
What’s next
- WebSocket-based real-time state on RWS 2.0 (currently 1 s polling on VC).
- Step debugging UI (Step Into / Over / Out + breakpoint sync).
- Hot-edit / ModPos.
It’s open source. If you find protocol behavior I got wrong, or a quirk I didn’t document, please open an issue or PR
— this is meant to grow with the community.
-– Meraj Safari