> Agent-readable docs index: /llms.txt. Download /docs.zip to grep all markdown files locally.

---
$schema: https://holocron.so/frontmatter.json
title: RoboC++ Studio
description: Browser IDE for IEC 61131-3 projects. Edit PLC source, check errors, simulate scans, and preview generated C.
icon: lucide:layout-panel-left
---

<Aside full>
  <Warning>
    Studio is a **prototype**, not a certified commercial PLC IDE. Validate timing, I/O, retained state, and safety behavior on your target before production use. See [Getting started with Studio](/studio-getting-started) for local setup.
  </Warning>
</Aside>

**RoboC++ Studio** is a browser-hosted IDE prototype in the compiler repository under **`ide/web`**. It wraps the same compiler pipeline as the **`rbcpp` CLI** through a Rust/WASM **language service**, with a React shell for editing, diagnostics, simulation traces, and generated C preview.

## What Studio provides

| Area                                                                                | Status                          |
| ----------------------------------------------------------------------------------- | ------------------------------- |
| Text editing for `.st`, `.il`, `.sfc`, `.ld`, `.fbd`, `.xml`                        | Supported                       |
| Check, simulate, build C, compliance review                                         | Supported (toolbar + shortcuts) |
| Diagnostics table with `RBCPP-*` codes                                              | Supported                       |
| Symbol inspector, completions list, hover cards                                     | Supported                       |
| Scan trace, watches, access-path values, SFC active steps                           | Supported                       |
| PLCopen import and export                                                           | Supported                       |
| Read-only LD/FBD/SFC diagram previews with scan energization                        | Supported                       |
| Partial graphical toolbar edits (append rungs/networks, NOT/SET/RESET, FBD connect) | Partial                         |
| Target bridge (Simulator / Modbus TCP via `rbcpp-target-bridge`)                    | Partial                         |
| Cloud-hosted Studio URL                                                             | Not shipped (run locally today) |

Projects are stored in **browser `localStorage`**. A built-in **PackagingLine** sample workspace ships with counter, ladder, SFC, FBD, PLCopen XML, and a `target/mapping.toml` stub.

## Shell layout

Studio is a single-page app with resizable panels:

* **Explorer:** searchable file tree with rename, delete, drag-and-drop reorder, and new-file templates.
* **Editor:** syntax-highlighted source editor; LD/FBD/SFC and PLCopen XML also show a diagram card above the text.
* **Inspector:** symbols, completions, hover details, and target mapping fields.
* **Bottom panels:** Diagnostics, Scan Trace, Generated C, and Output log (command history with timestamps).
* **Settings:** compiler profile, cycle time, selected program/configuration, watch list, generated C output path, target bridge URL, and workspace root.
* **Target connection bar:** connect to **Simulator** or **Hardware** (Modbus TCP) through the local **`rbcpp-target-bridge`** HTTP service; refresh I/O, deploy, run, stop, and reset when connected.

## Commands and shortcuts

| Action                  | Shortcut       | Backend                                                |
| ----------------------- | -------------- | ------------------------------------------------------ |
| Check                   | **F7**         | `analyze_document_json`                                |
| Run / simulate          | **F5**         | `debug_document_json`                                  |
| Compliance review       | **Shift+F7**   | compliance profile note                                |
| Build C                 | toolbar        | `generated_c_artifact_json`                            |
| Import / export PLCopen | toolbar        | PLCopen I/O helpers                                    |
| Deploy package          | toolbar        | JSON download, or POST to target bridge when connected |
| Save project            | **Cmd/Ctrl+S** | `localStorage`                                         |

When the WASM language-service package is missing, Studio falls back to a **local TypeScript analysis stub** so UI development still works. Run **`npm run wasm:build`** in `ide/web` for real compiler results.

## Language service layer

Studio does not call `rbcpp_cli` directly. It uses:

* **`iec_language_service`**: workspace analysis, symbols, completions, hover, graph models, simulation, debug traces, generated C metadata, refactor plans, and capabilities.
* **`iec_language_service_wasm`**: JSON WASM bindings consumed by the web shell.

See [Architecture](/architecture#language-service-and-studio) for how these crates sit in the pipeline.

## Graphical editing status

LD, FBD, and SFC canvases are **read-first** with scan-trace energization. Toolbar actions can append rungs or networks, toggle NOT contacts, SET/RESET coils, and connect FBD outputs. Full power-flow LD editing, formal FBD pin wiring, SFC divergence/convergence, and PLCopen geometry round-trip remain open work.

## Deployment and target bridge

Studio builds a **deploy package** after **Build C** and a valid **`target/mapping.toml`**. The package includes source file names, parsed mapping, generated C metadata, and adapter hook stubs.

* **Offline:** download the JSON package to disk.
* **Connected:** when **`rbcpp-target-bridge`** is running, Studio can POST the package to **`/api/v1/deploy`**, refresh I/O through **`/api/v1/io`**, and send run/stop/reset through **`/api/v1/session/control`**.

The bridge defaults to **`http://127.0.0.1:8787`**. It supports file-backed **Simulator** I/O and **Modbus TCP hardware** targets. This is integration scaffolding, not a certified online-change runtime. See [Targets and Generated C](/targets) and [Studio getting started](/studio-getting-started#optional-target-bridge).

## Related

* [Getting started with Studio](/studio-getting-started): install, WASM build, verification
* [CLI reference](/cli): equivalent terminal commands
* [Diagnostics](/diagnostics): stable `RBCPP-*` codes Studio surfaces
* [Native LD and FBD](/native-ld-fbd): textual ladder and FBD syntax in the editor
* [PLCopen](/plcopen): XML import/export from Studio


---

*Powered by [holocron.so](https://holocron.so)*
