Skip to main content

Kanoa Tags

Kanoa MES uses two tag providers:

ProviderTypeWhat it holds
KanoaStandard, created by youThe tags Kanoa runs on: one folder per asset with its assetOEE, counter and measure UDT instances, the kanoa system folder (timers and debug flags), and the Kanoa tag UDT definitions
kanoaMESManaged, created by the moduleRead-only installation and license information

The Kanoa tag provider​

Setting it up​

The Kanoa provider is a standard Ignition tag provider that you create once, before installing or starting the kanoaAPP module. See Configure the Tag Provider for the steps. In short:

  • Type: Standard
  • Mode: Realtime
  • Name: Kanoa. The name is required: the UDTs and Kanoa scripts expect it.

Whenever the module is installed or restarted, Kanoa installs or updates the kanoa system folder and the Kanoa UDT definitions under _types_/Kanoa. Your own tags in the provider are left alone.

In scripts, get the provider name from system.kanoa.config.getTagProvider() rather than hard-coding [Kanoa]:

mesTagProvider = system.kanoa.config.getTagProvider('mes') # '[Kanoa]'
debug = system.tag.readBlocking([mesTagProvider + 'kanoa/debug/tags/debugStates'])[0].value
Updates overwrite the Kanoa UDTs

Don't edit the UDT definitions under _types_/Kanoa, or the tags in the kanoa folder, directly. A module update replaces them. To change behavior, override the instance (for example a tag change script on one asset's tag), or create your own UDT that inherits from the Kanoa one.

What's in it​

[Kanoa]
├── <Enterprise>/<Site>/<Area>/<Line> one folder per OEE Enabled asset
│ ├── Line assetOEE UDT instance
│ ├── counters/<counter name> counter UDT instances (Counters tab, Tag ticked)
│ └── measures/<measure name> measure UDT instances (Measures, Tag ticked)
├── kanoa
│ ├── timers tagTimer instances that run Kanoa's background jobs
│ ├── debug logging switches
│ ├── qds/config Kanoa Quality settings
│ └── marquees marquee refresh timestamp
└── _types_
├── Kanoa Kanoa tag UDT definitions
└── assetSimulator simple asset simulator UDT

Other folders you see, such as CoreForge Sim or erpSim on a training gateway, are your own tags. Kanoa doesn't manage them.

Asset folders​

When you tick OEE Enabled on an asset, Kanoa creates a folder that mirrors the asset's path, with an assetOEE instance named Line inside it. For example, CoreForge\Philadelphia\Machining\Machine 1 becomes:

[Kanoa]CoreForge/Philadelphia/Machining/Machine 1/Line

Counters and measures created with Tag ticked are added next to it, in counters and measures folders. Use system.kanoa.asset.getAssetTagPath({'assetPath': ...}) to get an asset's folder from its path.

The kanoa folder​

Timers​

Each tag in kanoa/timers is a tagTimer instance that runs one of Kanoa's background jobs. Don't disable them unless Kanoa support asks you to. Several features stop updating without them.

TimerDefault intervalWhat it does
updateAssetOEETimer60 sWrites the current run's mode, order, item, counts and OEE into each asset's Line/OEE folder
updateAssetShiftTimer60 sWrites each asset's current shift into its Line/OEE folder
getAssetShiftOEETimer60 sGets OEE by shift for the last day for each asset
checkAssetScheduleTimer60 sChecks the schedule to see whether an asset's mode should change, for scheduled runs
getActiveAssetScheduleTimer60 sRefreshes the active asset schedule
getActiveOrdersTimer60 sRefreshes the list of active production orders
shiftEventTimer3600 sAdds upcoming entries to the shift event table
checkForDuplicateEvents360 sChecks the mode event table for duplicate entries
checkZeroCounts300 sDeletes counter events with a zero value that are more than 60 minutes old
qdsIntervalTimer60 sKanoa Quality: checks whether any interval-based quality checks are due
qdsScheduleChecks60 sKanoa Quality: stores the actively scheduled quality checks
checkCMMSSchedule60 sKanoa Maintenance: checks work order schedules and conditions

Each timer's lastUpdated, error and data tags show when it last ran and what happened. Set its debug tag to true to log how long each run takes.

Debug​

Set a flag in kanoa/debug/tags to true to write detailed logs for that area to the Gateway console. Set it back to false when you're done: debug logging is verbose.

TagLogs
debugAssetsAsset functions
debugCountsCount events
debugDashboardsDashboards
debugDTAnalysisDowntime analysis
debugFlagState changes from the assetOEE State tag
debugLotsLot functions
debugModesMode changes
debugOrdersProduction orders
debugQualityQuality functions
debugQualityChecksQuality check scheduling
debugSchedulerThe scheduler
debugShiftsShifts
debugSimulatorThe asset simulator
debugStatesState functions
debugUsersUsers and security

kanoa/debug/LoggerName sets the logger name (default Kanoa), so you can filter the Gateway logs on it.

Other settings​

TagPurpose
kanoa/qds/config/enableDivisionLimitsKanoa Quality: turns on the division limits (ldl, udl) in attribute tolerances
kanoa/marquees/lastUpdatedWhen the marquee data was last refreshed

The kanoaMES tag provider​

kanoaMES is a managed tag provider that the module creates and keeps up to date. It's read-only: you don't create or edit anything in it. Use it to check what's installed and licensed, from a screen or a script.

installationInfo​

TagExampleMeaning
kanoaMESVersion1.15.9-beta1Installed Kanoa MES version, including any -beta or -rc suffix
previouslyInstalledVersionReinstalling 1.15.9The version that was installed before this one
installationDate2026-10-04T21:04:01When this version was installed
hawthornStatusHawthorn SuccessResult of the database update the installer ran
ignitionVersion8.1.54Ignition version
ignitionSystemNameIgnition-gatewayGateway system name
systemTimeZoneEtc/UTCGateway time zone
dbProduct, dbVersionMicrosoft SQL Server, 16.00.4255The Kanoa database server
driverName, driverVersionMicrosoft JDBC Driver 9.4 for SQL Server, 9.4.0.0The JDBC driver in use

licenseInfo​

Two flags per product: <product>Licensed means a license is installed, and <product>Active means the product is running (licensed or in trial).

ProductTags
Kanoa OpsopsLicensed, opsActive
Kanoa QualityqdsLicensed, qdsActive
Kanoa TracetraceLicensed, traceActive
Kanoa MaintenancecmmsLicensed, cmmsActive
Kanoa InventoryinvLicensed, invActive
TrialtrialActive
qv = system.tag.readBlocking(['[kanoaMES]licenseInfo/opsActive', '[kanoaMES]installationInfo/kanoaMESVersion'])
print 'Ops active:', qv[0].value, 'version:', qv[1].value

Kanoa tag UDTs​

The UDT definitions live in [Kanoa]_types_/Kanoa. Most are created for you by Kanoa configuration screens; a few (the lot and quality trigger UDTs) you add yourself where you need them.

UDTCreated byUse it for
assetOEEKanoa, when an asset is OEE EnabledThe interface between equipment data and Kanoa Ops
assetInputsYouA staging area for an asset's inputs, read by assetOEE through its MQTT path
counters/counterKanoa, from the Counters tabExtra infeed, outfeed, waste and general counters
measureKanoa, from the Measures screenCollecting and summarizing a process value
tagTimerKanoa (kanoa/timers), or youRunning a script on an interval
timerYouA simple once-a-minute script trigger
qds/chkShtTriggerYouStarting a check sheet from a tag change
qds/chkEventsYouA live list of due and recent check sheet events
lotTrackerYouRecording a lot operation when a lot name is scanned or written
lotOperationManagerYouStarting a lot operation event from a tag
lotAccumulatorYouBuilding an output lot from a count
lotQueueFIFOYouConsuming input lots first-in, first-out from a count
counter, generalCounterOlder versionsKept for existing instances

assetOEE​

One instance, named Line, per OEE Enabled asset. It receives the equipment's state, counts and production context, turns changes into Kanoa events, and holds live OEE values for screens and dashboards. Its one parameter, MQTTPath, links all its inputs to a source structure such as an assetInputs instance.

See Data Interface Tag for every folder and tag, how to connect it, and what Kanoa does when each input changes.

assetInputs​

A staging UDT with the same Inputs tags as assetOEE, all memory or expression tags. Use it where you calculate or combine values before Kanoa records them (for example, deriving outfeed from two sensors), then point the assetOEE MQTTPath at it. The definition's default expressions read Ignition's Generic Simulator, so override them on each instance.

counters/counter​

Created under <asset>/counters/<counter name> when you add a counter with Tag ticked on the Counters tab.

TagPurpose
countValueReference tag. Point it at your count source. Each change is recorded as a counter event, with resets handled as for assetOEE
counterTypeinfeed, outfeed, waste or general
counterId, assetIdSet on startup from the tag's folder and name, creating the counter if needed
itemId, itemStateId, workOrderIdOptional. Written with each count, for example an itemStateId to record waste against a reason
updateSet to true to look up assetId and counterId again

measure​

Created under <asset>/measures/<measure name> when you tick Tag on a measure. See Measures for the full reference.

TagPurpose
measureValuePoint it at the value to measure. Each change is added to data while enabled is true
enabledStarts and stops collecting
maxSampleCount, maxSampleDurationSecsWhen the window is full by either count or time, update fires and one record (mean, min, max, standard deviation, sample count, duration) is written to the database
dataThe samples collected so far. Cleared after each record
spcCheckEnabledRuns SPC rules (individuals chart, Western Electric and Nelson) on the window as samples arrive
outOfControl, ruleViolationsThe result of the SPC check
specThe linked attribute's limits for this asset and the item running. Set spec/refresh to true to reload them; it also reloads when the item changes
measureId, lastUpdated, error, debugHousekeeping

tagTimer​

The timer behind every tag in kanoa/timers, and a good base for your own interval jobs.

TagPurpose
enableTurns the timer on or off
intervalSecsHow often it runs (default 60)
updateSet to true when the timer fires. The instance's update script does the work, then resets it. Write true to run it now
lastUpdated, errorWhen it last ran, and the error if it failed
description, data, debugA note on what it does, a dataset for results, and logging of each run's duration

To make your own, create an instance, override the update tag's change script with your work in place of the pass line, and set enable and intervalSecs.

timer​

A simpler timer that sets update once a minute while enabled is true. Override the update script the same way as tagTimer.

qds/chkShtTrigger​

Starts a Kanoa Quality check sheet from a tag. Place the instance in an asset's folder, next to Line. Set chkShtVersionGroupId to the check sheet, then either set trigger to true or point referenceTag at a tag whose change should start it (at most once every intervalSecs). The released version of the check sheet is started for the asset, with its current item and shift.

qds/chkEvents​

Keeps chkEventData filled with check sheets that are Due, Overdue or Coming Due, plus those completed in the last day. It refreshes once a minute, or when updateChkEventData is set to true. Useful as a data source for a quality screen.

lotTracker​

Place it in an asset's folder, next to Line. Set lotOperationName, then write a lot name to lotName (for example from a scanner). Kanoa records the lot operation on the asset, creating the lot for the running item if it doesn't exist. message shows success or the reason it failed.

lotOperationManager​

Parameters: assetId, lotOperationName. Changing setupLotOperation starts a new lot operation event for the asset and writes its ID to lotOperationEventId, for lotAccumulator and lotQueueFIFO instances to use.

lotAccumulator​

Builds an output lot from a count. Parameters: assetPath (the asset's tag folder), lotOperationPath (a lotOperationManager instance), countOnIncrease, alwaysMakeNewOutputLot. Point sourceTag at a count and set enabled to true. Each increase is added to the output lot for the current lot operation event, which is created from outputLotInfo (item, units, a lot name root numbered -001, -002 and so on) and outputLotEventInfo (state, reason, order, shift).

lotQueueFIFO​

Consumes input lots in first-in, first-out order from a count. Parameters: inputAssetId, assetPath, lotOperationPath, countOnIncrease. Each increase of sourceTag is drawn from the oldest lots with quantity on the input asset, moving to the next lot when one runs out. inputLotEventFilter limits which lots are used by state and reason.

Older counter UDTs​

counter and generalCounter in _types_/Kanoa are earlier counter UDTs, kept so existing instances keep working. Use counters/counter for new counters.

assetSimulator​

[Kanoa]_types_/assetSimulator generates simple states and counts for an asset without equipment. See Simulator.