Skip to content

Observables

Named signals vs. observables

A named signal is any monitored value you've given a name — a current, a power, an angle, a controller output, a labeled wire. Names live in one flat namespace shared across the whole circuit, and that list of names is what every "pick a signal" box suggests: the scope / plot / meter signal pickers, and the fields where a component reads a signal by name (the From block, the synchronous machine's rotor-lock gate, and so on).

An observable is a named signal that the simulator also records — it streams to the scope while the run is in flight and lands as a column in the result CSV. So every observable is a named signal, but not every named signal has to be recorded: a signal can exist purely to route a value from one component to another. (Today, anything you name is recorded; the distinction matters as circuits grow and you may want to route without recording.)

The rest of this page is about the recorded kind — observables.

Three ways to declare an observable

  1. Label a wire. Click on a wire and give it a name. The label becomes an observable that emits the signal flowing through it.
  2. Probe a component's built-in output. Many components expose measurements (a capacitor's branch current, a meter's reading) that you can turn on via a checkbox in the properties dialog. The name you give the measurement becomes the observable id.
  3. Define one explicitly. Open the observables panel (in the main menu) and add an entry directly. Useful when you want to alias an automatically-generated id to something friendlier.

Monitoring a bus voltage

Double-click a bus to open its properties dialog. The Voltage monitoring selector controls what the bus records:

  • None — no voltage observable.
  • Instantaneous — one observable per phase, each carrying that phase's instantaneous node voltage. Name the phases you care about (leave a phase blank to skip it).
  • RMS — a single observable carrying the RMS magnitude of the bus voltage. Pick Line-to-line (LL) or Per-phase (LN). The raw phase voltages stay unobserved; only the RMS value is recorded.
  • RMS (pu) — same as RMS, but reported in per-unit on the bus's base voltage (V_base).

The RMS modes work by quietly inserting an RMS meter that reads the three phase voltages behind the scenes — you only see the one named RMS observable.

Naming rules

  • Names must be unique across the whole circuit. The validator flags duplicates and refuses to run.
  • Names live in a single flat namespace shared with From / GoTo signal routing. Pick something descriptive (e.g. v_bus_3 instead of v1) — when your circuit grows past a dozen signals you'll thank yourself.

How observables flow through the system

When you click Run:

  1. The front-end exports the circuit to a netlist. Every observable gets a stable id and a binding to either a wire signal, a named port, or a component-internal measurement.
  2. The simulator's scheduler routes those signals into a CSV writer AND into the streaming-results channel that the scope reads from.
  3. As chunks arrive, the scope panel updates in real time. When the run finishes, the full CSV is available for download.

See also