Energy, utilities and offshoreMuvia Industrial
From tag names to assets
Five hundred control-system tags, with names such as KP2_P201A_VT01, read by a Python function the way a technician would read them: machine code, instrument, unit. Every match to an asset variable comes with a confidence and a reason, and the doubtful ones go to a person.
Illustrative scenario: it describes a typical case, not a customer project.
The control system has five hundred tags. Only whoever wrote them understands them.
Every plant carries years of conventions: ISA codes, abbreviations from the old system, alarm thresholds and commands mixed in with the measures. Before anything can be analysed, someone has to read hundreds of names and say which machine and which quantity each one belongs to.
In Muvia that work is done by a Python function your team writes, the way a technician would do it: it reads the code, instrument, suffix, description and unit, gives a score and explains why. Confident matches are applied, doubtful ones go to a person.
- Who it's for
- Automation engineers, system integrators, industrial data engineers and anyone who has to give context to an existing plant's data.
In Muvia, step by step
Real product screens, recorded on a project with sample data.
The video · Five hundred control-system tags, with names such as KP2_P201A_VT01, read by a Python function the way a technician would read them: machine code, instrument, unit. Every match to an asset variable comes with a confidence and a reason, and the doubtful ones go to a person.
What you get
- Reading tags, automated
- A function reads hundreds of names as a technician would; people only look at the doubtful cases.
- Every match explains itself
- Confidence and reason come with every row: you can see why a tag ended up on a variable.
- Non-measures stay out
- Alarm thresholds, commands and spare channels are recognised and kept out of the analysis.
- Rules that stay yours
- The plant's conventions live in the function's code: correct them and apply them again to every new export.
For the technical team
How it is built in Muvia
- 1
Load the tag list
The control system's export enters as a source and becomes a table with its own query: name, description, unit, originating system.
- 2
Read the tags in Python
A Python function recognises the machine code, the instrument letters and the suffixes that are not measures, such as thresholds and commands. Each clue is worth points: the sum is the confidence, and the reason says which clues decided it.
- 3
Run and check
A flow applies the function and writes the matches to a table. The dashboard shows how many tags are matched, how many need review and how many are not measures.
- 4
Link the variables
Confirmed matches link the fields of a certified dataset to the assets' variables: every pump receives its signals.
Python function
import re
import pandas as pd
INSTRUMENTS = {"VT": ("vibration", "mm/s"), "TT": ("temperature", "°C"),
"FT": ("flow", "m3/h"), "IT": ("current", "A")}
NOT_MEASURES = {"AH": "an alarm threshold", "SP": "a setpoint",
"CMD": "a command", "FB": "a status feedback"}
TAG = re.compile(r"^KP\d_([PM])(\d{3}[AB])_([A-Z]+)\d\d(?:_([A-Z]+))?$")
def transform(inputs, params, ctx):
rows = []
for tag, unit in inputs["rows"][["tag", "unit"]].itertuples(index=False):
m = TAG.match(tag.upper())
if not m:
rows.append((tag, None, None, 0, "to review", "code not recognised"))
continue
asset = f"{m[1]}-{m[2]}"
if m[4] in NOT_MEASURES:
rows.append((tag, asset, None, 0, "not a measure", f"it is {NOT_MEASURES[m[4]]}"))
continue
variable, expected = INSTRUMENTS.get(m[3], (None, None))
points = 45 + (35 if variable else 0) + (20 if unit == expected else 0)
outcome = "matched" if points >= params["threshold"] else "to review"
rows.append((tag, asset, variable, points, outcome, "code, instrument and unit"))
columns = ["tag", "asset", "variable", "confidence", "outcome", "reason"]
return {"rows": pd.DataFrame(rows, columns=columns)}- The data it needs
- The control system's tag list, with description and unit
- The old system's names, from an Excel export
- The plant model: assets and variables of pumps, motors, valves and tanks
- The pumps' signals, read by the edge node over OPC UA
- Parts of Muvia used
More cases in this line
All use cases- Anomalies and predictive maintenanceVibration, temperature and current read from the PLC become a deviation from normal, a health index and, if you want, a score from a model of your own, in the cloud or on the node next to the machine. When a signal drifts, an alarm goes off and maintenance hears about it.
- Energy use per line and per pieceMeters and power analysers read over Modbus TCP, joined with the pieces produced and the orders in the ERP: how much energy each line, each shift and each piece takes, with an alarm when consumption looks out of the ordinary.
- The pumping station in 3DPump hall, sump, headers and tanks in the 3D model, every machine carrying its asset's name and its signals alongside. You search for a pump by name, see it in the model and read its vibration against the manual's limits, next to that of its twin.
Tell us which machines you run. We'll tell you how to read them.
PLC brand, protocol, how the floor is connected: with those three answers, in a demo with one of our engineers, we show you how Muvia Industrial puts line data next to the rest of the business.