Skip to content

Repository files navigation

IEC101Scop Master

IEC101Scop Master is a free IEC 60870-5-101 controlling-station tool with a modern, dockable Dear ImGui interface — part of the Scop family alongside ModbusScop, DNPScop, and IEC104Scop, sharing their look and feel. It talks to real controlled stations over a serial line (FT1.2) or through a TCP tunnel (terminal servers and serial-to-Ethernet gateways), in unbalanced or balanced link mode, so engineers can interrogate, monitor, command, and troubleshoot legacy RTUs without a full SCADA front end.

The complete IEC 101 stack — the FT1.2 link layer with its primary-station procedures and the ASDU / information-object codec shared with IEC104Scop — is hand-rolled over Asio, with no third-party protocol library.

Free to use and redistribute under the permissive BSD 2-Clause License.

Developed by Carlos Nardi.

Buy Me A Coffee

IEC101Scop Master

Concept

IEC101Scop Master is organized as a tree: Channels → RTUs → Points.

  • A Channel is one link to a secondary station: a Serial COM port (baud, parity, stop bits) or a TCP (FT1.2 tunnel) connection. Each channel sets the slave link address, the link mode (unbalanced / polled, or balanced / point-to-point), the -101 field sizes (link address, cause of transmission, common address, and information-object address), poll delay, reply timeout and retries, and its own interrogation / clock-sync schedule. Each channel runs on its own I/O thread; start and stop them independently.
  • An RTU is one common address (CA) behind a channel. A channel can host many RTUs — a gateway fronting several stations — and every ASDU is routed to the RTU whose common address matches. Each RTU shows a live online / offline indicator.
  • Each RTU carries a point map — named information objects in Indications (single-point, double-point, step position), Measurands (normalized, scaled, float), Counters (integrated totals), and Controls (single, double, and regulating-step commands, setpoints) — and a Live Data Map of everything the station has actually sent.

Features

  • Complete hand-rolled IEC 101 stack over Asio (no third-party library): FT1.2 single-character, fixed-length, and variable-length frames with checksum; primary-station procedures Request Status → Reset Link, SEND / CONFIRM user data with FCB / FCV toggling and timeout/retry resend, Request Class 1 / Class 2 polling that switches to Class 1 while the station raises ACD, and balanced-mode operation with Test Link keep-alive.
  • Serial and TCP tunnel — connect over a real COM port or over a TCP connection carrying FT1.2 frames, chosen per channel.
  • Configurable -101 profile — link address size (0 / 1 / 2 octets), cause of transmission (1 octet or 2 with originator), common address (1 / 2 octets), and IOA (1 / 2 / 3 octets) per channel, matching whatever the RTU was engineered with.
  • Full monitor-direction decode — single-point, double-point, step-position, normalized / scaled / float measured values and integrated totals, each in its plain, CP24Time2a, and CP56Time2a time-tagged forms (M_SP, M_DP, M_ST, M_ME_NA/NB/NC, M_IT and their twins).
  • Interrogation & clock syncGeneral Interrogation (C_IC) and Counter Interrogation (C_CI) on demand from the tree, interrogate on connect once the link is reset, and periodic cyclic GI and clock synchronization (C_CS) with configurable periods.
  • Commands — Single (C_SC), Double (C_DC), Regulating Step (C_RC) with qualifier (short pulse / long pulse / persistent), and Setpoints as normalized (C_SE_NA), scaled (C_SE_NB), or float (C_SE_NC), in Direct execute or Select then execute mode, optionally with a CP56 time tag (the _TA/_TB/_TC twins). An Auto toggle option flips ON/OFF or LOWER/HIGHER after each send; confirmations and negative replies are reported per command.
  • Live Data Map — the raw received image of any RTU (IOA, type, value, quality, cause of transmission, device time) with type, IOA, and value filters.
  • Points windows — per-RTU named maps in four category tabs; sortable, multi- select editing, engineering scaling of scaled/normalized values (Eng Min / Eng Max / units, also applied when entering setpoints), and CSV export / import.
  • Events — a per-channel event list with RTU, type, IOA, name, and value filters, spontaneous events highlighted, Ignore interrogation mode, and CSV export.
  • New-value animation — point rows flash when a value arrives and the Channels tree blinks on traffic; color and fade speed are configurable under Setup → Animation.
  • Communication Monitor — a timestamped, filterable log of every frame per channel and RTU, with a layered link / ASDU decode of the selected frame using the channel's field sizes, and optional log-to-file with size-based rotation.
  • Status Messages & Dashboard — link establishment and loss, command confirmations, and live per-channel Tx / Rx counters.
  • Workspaces — save and reload your entire setup (.i1mw): channels (transport, serial parameters, link address and mode, field sizes, timing, GI / clock-sync schedule), RTUs, and point maps with scaling. Recent workspaces are one click away.
  • Themes — dark / light / classic with a customizable accent color, DPI scaling, and always-on-top; layout and preferences are remembered between runs.

Download & run

  1. Go to the Releases page and download the latest IEC101ScopMaster archive for Windows.
  2. Unzip it anywhere and run IEC101ScopMaster.exe — no installation required.

Requirements: Windows 10/11 (64-bit).

Rendering: IEC101Scop Master uses the GPU by default; you can switch to CPU (software) rendering under View → Rendering (handy over Remote Desktop or in VMs).

Getting started

  1. + Channel — choose Serial COM (port, baud, parity, stop bits) or TCP (FT1.2 tunnel) (host, port), then set the slave link address, the link mode, and the RTU common address. Each new channel starts with one RTU at that address; open Settings... to enable Interrogate on connect, set the cyclic GI and clock-sync periods, or adjust the -101 link parameters (field sizes, poll delay, reply timeout, retries).
  2. Add RTU... — add more common addresses behind the same link if the station is a gateway.
  3. Open the RTU's Points window to name the information objects you care about and enable scaling — or just watch everything arrive in the Live Data Map.
  4. Press Start on the channel. The link is reset and the general interrogation runs; class polling then keeps the image current. Watch the frames decode in the Communication Monitor and the counters in the Dashboard. Right-click an RTU for Interrogate (GI), Counter interrogation, or Clock sync, and use Operate.. on a control point to send commands.

Use File → Save Workspace (Ctrl+S) to keep the whole configuration and reload it later with Open Workspace (Ctrl+O).

Third-party libraries

IEC101Scop Master is built with these open-source components, each under its own license:

Library Used for License
Dear ImGui (docking) user interface MIT
GLFW 3 window / OpenGL context Zlib/libpng
OpenGL 3 rendering
Asio (standalone) serial / TCP transport Boost Software License 1.0
stb_image logo / splash decoding MIT / public domain

The IEC 60870-5-101 protocol stack itself (FT1.2 link layer, ASDU codec, master engine) is original code, not a third-party library.

License

IEC101Scop Master is released under the BSD 2-Clause License. It is provided "as is", without warranty of any kind; the author is not responsible for any damage or loss caused by its use.

BSD 2-Clause License

Copyright (c) 2026, Carlos Nardi
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice,
   this list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

About

A free IEC 60870-5-101 controlling-station tool with a modern, dockable Dear ImGui interface — It talks to real controlled stations over a serial line (FT1.2) or through a TCP tunnel (terminal servers and serial-to-Ethernet gateways), in unbalanced or balanced link mode.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors