Skip to main content

scada-tag-audit

Pre-commissioning cross-vendor tag database drift audit for SCADA integrators.

Reads an Ignition HMI tag CSV export + a Rockwell Studio 5000 L5X export, reconciles them, and produces a self-contained HTML report flagging the drift patterns that break faceplates at commissioning-week: orphaned HMI bindings, type mismatches, and naming-convention drift between what the PLC exports and what the HMI references.

Runs on the integrator's laptop. No cloud upload. No vendor API dependency. No client data leaves the machine.

Install

Windows .exe (recommended for integrators): download the latest from Releases.

Double-click to run (opens file-picker dialogs for both inputs), or invoke from a terminal with arguments.

Python package (for CLI-culture users):

pip install scada-tag-audit

Requires Python 3.10+.

Quick start

Double-click scada-tag-audit.exe and select the two exports when prompted. Report opens in your default browser.

Or from a terminal:

scada-tag-audit --ignition path/to/tags.csv --rockwell path/to/routine.L5X --output drift-report.html

The HTML report is self-contained (no external dependencies), safe to email or archive.

What it flags

Category Color Severity Meaning
Orphaned HMI binding Red High HMI references a PLC tag that does not exist. Faceplate breaks at go-live.
Type mismatch Purple High Same tag, incompatible data types PLC-side vs HMI-side (e.g. PLC REAL, HMI Int4).
Naming convention drift Yellow Medium Reference resolves under normalization but not exact match (e.g. Pump2_Run vs Pump_2_Run).
Unit mismatch Blue Info HMI declares engineering units; PLC counterpart has no EU metadata.
Orphaned PLC tag Orange Info PLC tag exists but no HMI tag references it. Cleanup opportunity.
Exact match Green None Reference resolves cleanly with compatible types.

How it works

The engine extracts PLC-side references from Ignition's OPC Item Paths (e.g. [Global_PLC]Motor1_RunMotor1_Run) and matches them against Rockwell tag names from the L5X. When exact matches fail, it retries under name normalization (case-fold, prefix strip, separator collapse, letter-digit boundary insertion). Every reference that fails to resolve becomes an orphan. Every match with incompatible data types becomes a type-mismatch finding.

The HTML report groups findings by severity: actionable drift (commissioning breakers) at the top, informational rows below, exact matches collapsed at the bottom.

Development

git clone https://github.com/Yveshby27/scada-tag-audit
cd scada-tag-audit
pip install -e ".[dev]"
pytest

v0.1 scope + roadmap

Alpha. Ignition tag CSV + Rockwell L5X only. Wonderware .aaGDB, Kepware XML, FactoryTalk, Iconics, and OPC UA custom information models are on the v0.2+ roadmap if the wedge holds.

Background

Notes on why this exists: What small SCADA integrators actually ship when the tag database drifts.

If you run a small integrator shop (2-15 EE) delivering multi-vendor projects and the pain shape matches what you see, reach out. LinkedIn or email in the article.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scada_tag_audit-0.1.0.tar.gz (30.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scada_tag_audit-0.1.0-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file scada_tag_audit-0.1.0.tar.gz.

File metadata

  • Download URL: scada_tag_audit-0.1.0.tar.gz
  • Upload date:
  • Size: 30.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.9

File hashes

Hashes for scada_tag_audit-0.1.0.tar.gz
Algorithm Hash digest
SHA256 debb8c4de80718d7eb31cd4b763116bfa02fbc7667f507586bd4e02616e416a5
MD5 410a683bbcaf4f3b7b74e4f6fab42ec1
BLAKE2b-256 554ed1d26ea129ff31edca607b7a7749b5f1a2a4ba7cd698b4f06fa519d5e7d1

See more details on using hashes here.

File details

Details for the file scada_tag_audit-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for scada_tag_audit-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7ed04e62b0b821ac82c8ace99a52bd3eb24bbfc1b589691d6ec1176c85231704
MD5 da9f93c02a4de5ce5deac8dbaa2ebea8
BLAKE2b-256 2c00ddb34583761f27b471686785069308eb852ff3e8e9c796509b46edabfc31

See more details on using hashes here.

Release history Release notifications | RSS feed

0.1.1

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page