Functions

  • Telemetry

    Introduction The Emtron telemetry system provides high speed, fully wireless telemetry services. Telemetry can connect over a 4G wireless modem or a Starlink satellite modem. Telemetry products can be purchased from the Emtron website. Data Service Remote monitoring of channel and event data.

    • Data Service

      Real-time cloud-based data streaming platform enabling vehicles to broadcast live sensor and performance data to authorized users

    • Voice Service

      Real-time audio communication feature allowing users to conduct voice calls with automatic speaker management, push-to-talk control, and priority-based communication

    • Text Service

      Real-time messaging feature for communicating with other users connected to the same vehicle or session, with automatic alerts, text commands and message history

  • Logging

    Configure on-board data logging on the display.

  • Drag Race Timing

    Measure elapsed time and speed at drag strip distance markers.

  • Counters

    Event- and condition-driven counters with wrap, follow, reset, and force.

  • Odometer

    Track total distance and trip meters.

  • Persistent Channels

    Retain channel values across power cycles.

  • Timers

    Configurable start, stop, and reset logic for time-based channels.

  • CANopen

    Configure CANopen on a CAN bus: network control, nodes, PDOs, channel packing, and diagnostics

  • Stage Timing

    Single-segment stage, rally, or hill-climb timing (arm → start → finish).

  • Timing Run Library

    Saved circuit, drag, and stage runs — reference for live deltas and review on gauges.

  • Alarms

    Alarms Alarms monitor the system at runtime and notify the operator when something requires attention. Each alarm evaluates a set of trigger conditions every update cycle and, when active, broadcasts its message through dedicated system channels. Alarm List and Priority Alarms are processed in list order — position 1 is the highest priority, position 2 is lower, and so on. When multiple alarms are active simultaneously, only the highest-priority active alarm (lowest list index) is shown on the alarm channels at any given time.

  • Conditional Logic

    Produces Channels and/or Events based on programmable conditions. The Logic Output Channel is the channel that will be produced when the condition is met. It’s value will be 1 when true, 0 when false. The On Logic True Output Event is produced when the condition becomes true. The On Logic False Output Event is produced when the condition becomes false. The Logic On Delay is the time in milliseconds that the logic output will be delayed after the condition is met. The Logic Off Delay is the time in milliseconds that the logic output will be delayed after the condition is no longer met.

  • Conditions

    Condition Setup Conditions are the trigger logic used throughout the system — in alarms, virtual inputs, conditional logic, and more. A condition set is a list of one or more individual conditions combined with logic operators. Individual Conditions Each condition compares a channel value against a threshold and returns true or false.

  • Gauges

    Comprehensive reference for all gauge types in the Emtron Displays

  • Inertial Measurement Unit

    Emtron ED Series Displays contain 6 axis Inertial Measurement Unit (IMU). Output Channels G-Force Lateral G-Force Longitude G-Force Vertical Acceleration Lateral Acceleration Longitude Acceleration Vertical Angular Velocity X Angular Velocity Y Angular Velocity Z Roll Pitch Yaw Calibration

  • Lap Timing

    The Lap Timing function outputs lap and timing data based triggered by lap beacon events. Input Channels Speed Channel: Select the channel to use as the speed input. Lap Distance Channel: Optional - Select the channel to use as the lap distance input. Note: Lap and Race distance can be calculated from the speed input channel.

  • LIN Bus

    How to configure the LIN Bus

  • Math Functions

    How to configure the real time math processing system

  • OBD-II

    User guide for configuring and using the OBD2 scanner module

  • PID Controllers

    This guide explains how to configure and manage PID (Proportional-Integral-Derivative) controllers for process control. The guide covers how to set up controllers, assign channels, define conditions, adjust limits, configure gain tables, and monitor diagnostics for effective PID control. Overview A PID controller adjusts a process by calculating an error (difference between a desired set point and the measured process variable) and applying proportional P, integral I, and derivative D corrections to produce an output. This software allows you to configure multiple PID controllers, each with customizable channels, conditions, limits, and gain tables. Real-time diagnostic plots help monitor and tune controller performance.

  • Shift Lights

    How to configure the shift lights on the device

  • Speed Fusion

    Speed Fusion Overview Speed Fusion combines data from multiple sensors to produce a single, accurate speed measurement that is more reliable than any individual source. It draws on GPS speed, drive speed (from the ECU or CAN bus), wheel speed sensors, and IMU data (accelerometer and gyroscope) to deliver a smooth, low-latency fused speed output.

  • Switch Logic

    How to configure the switching input logic on the device

  • Tables

    How to add and configure two dimensional tables

  • Track Setup

    Track Setup determines how GPS based Lap Timing functions. Lap Timing and Track Setup are separated so that other systems can also generate the lap and sector beacons. This allows the use of other timing systems such as laser beacons. Location Detection

  • Wi-Fi

    Default Network By default the ED Series Displays will broadcast the following Wi-Fi networks. Model SSID Passphrase ED10M ED10M ed10mwifi ED7M ED7M ed7mwifi ED7 ED7 ed7_wifi Settings The user can change the SSID and Passphrase freely. Note: This change is stored in the device, independent of the loaded config.

Copyright © 2026 Emtron Australia Pty Ltd

Subsections of Functions

Telemetry

Introduction

The Emtron telemetry system provides high speed, fully wireless telemetry services. Telemetry can connect over a 4G wireless modem or a Starlink satellite modem.

Telemetry products can be purchased from the Emtron website.

Data Service

Remote monitoring of channel and event data.

  • Encrypted and secure data transmission
  • Up to 64 slow channels (10Hz max)
  • Up to 64 fast channels (50Hz max)
  • Up to 50 events per second
  • Configurable start/stop conditions to prevent bandwidth waste

More Info…

Voice Service

Voice Communications (Voice Comms) is a real-time audio communication feature that allows you to talk with other users connected to the same vehicle. Whether you’re coordinating between multiple operators, communicating with remote technicians, or managing a team during testing, voice comms provides clear, direct communication with built-in priority management.

  • Encrypted and secure voice transmission
  • Real-time voice calls with other connected users
  • Automatic speaker management - System intelligently prioritizes speakers
  • Push-to-Talk (PTT) mode - Control when you transmit using a keyboard shortcut
  • Priority levels - Higher priority users can interrupt lower priority speakers
  • Audio activity detection - Know when audio is being transmitted or received

More Info…

Text Service

Text Communications is a real-time messaging feature that lets you communicate with other users who are connected to the same vehicle or session. Whether you’re using the desktop application or accessing the web interface, you can send and receive messages instantly.

  • Send and receive messages in real-time with other connected users
  • Automatic alerts/Quick Messages - Send quick messages automatically triggered by system events
  • Triggers - The display can be configured to act on certain text message commands.
  • View message history - See the last messages exchanged in your session
  • Multiple connection options - Access the feature via desktop app or web browser

More Info…


Quick Start

Activation - License Server

To activate the Telemetry feature on your device, login to EmNet. Once logged in, from your Dashboard, click the Activate Telemetry button.

  • Enter the device serial number.
  • Enter the one time user Telemetry Activation code as provided after purchase.
  • Enter the Telemetry Vehicle Name. This will be used in the telemetry authentication settings.
  • Enter the Telemetry Password. This will be used in the telemetry authentication settings. Use a password you are comfortable sharing with team members as it is used by all software connecting to the vehicle.

Once the details have been filled out, click Activate Now to complete the process.

Supported Devices

ProductDataTextVoice
ED7
ED7M
ED10M

Setup - ED7/ED7M/ED10M

Authentication

In Display Studio, the first thing to configure is the authentication settings, found in File → Telemetry Credentials.

SettingDescription
RegionSelect the region closest to you for lower latency
Vehicle NameExact vehicle name entered during the activation step above
PasswordThe same password entered during the activation step above
Use SSLMust be set to true when using official Emtron servers
Validate SSL CertificateOptional: Verifies server authenticity.
Battery Backup Required for SSL Certificate Validation

If the device is wired without a battery backup, it will lose its system clock on every power cycle. An incorrect system time will cause SSL certificate validation to fail, and the device will be unable to connect to the telemetry server.

To avoid this, either:

  • Wire the device with a battery backup to preserve the system clock, or
  • Disable Validate SSL Certificate (reduces security but allows connection without a valid clock)

Ensure to click Save Telemetry Settings as these are stored independently of the config.

PC Client — EmStream

On the PC, use EmStream to subscribe to the live telemetry stream, monitor channels, and use voice and text chat. See the Getting Started guide for connection steps.

Service Specific Setup


Architecture

The following diagram shows the relationships between systems for a telemetry data connection via a RUTM11 4G modem.

erDiagram
"License Server" ||..|| "Telemetry Server": "validates credentials"
"Telemetry Server" ||..o{ "Telemetry Modem (RUTM11)" : "4G internet"
"Telemetry Modem (RUTM11)" ||--|| "Emtron Display (ED10/ED7)" : "PUB: telemetry data"
"Telemetry Server" ||..o{ "Standard Modem" : "internet"
"Standard Modem" ||--o{ "PC with EmStream" : "SUB: telemetry data"

"PC with EmStream" {
    display-name required-text-chat
    vehicle-name REQUIRED
    password REQUIRED
    region REQUIRED
}

"Emtron Display (ED10/ED7)" {
    serial-number built-in
    display-name optional
    vehicle-name REQUIRED
    password REQUIRED
    region REQUIRED
}


Copyright © 2026 Emtron Australia Pty Ltd

Subsections of Telemetry

Data Service

Quick Start

Telemetry Provider vs Telemetry Consumer

Telemetry Provider is the standard operating mode for most applications and is the subject of this help topic.

Telemetry Consumer is for advanced usage and should be DISABLED for a standard telemetry setup.

Setup: ED7/ED7M/ED10M

Assuming you have an active telemetry license and the authentication settings configured in Display Studio, you can now configure the telemetry function.

Settings

Telemetry data settings can be accessed from the main menu: Functions → Telemetry. Ensure the Telemetry Provider tab is selected.

SettingDescription
EnableGlobally activate/deactivate telemetry streaming
Data ModeAlways set to compressed
Active WhenWhen the conditions are met, data will begin streaming. e.g. RPM > 300
Slow Tx RateTransmission Rate of the slow data set
Fast Tx RateTransmission Rate of the fast data set
Transmit EventsEnable to send all system events over telemetry
Channel ConfigurationAllocate channels you want to be sent in the appropriate group

Best practice: Only include channels you actually monitor. Unnecessary channels waste bandwidth.

Once configured, ‘Write’ the config.

Functions

FunctionDescription
Export Telemetry ConfigExports (excluding authentication) telemetry settings to a file
Import Telemetry ConfigImports (excluding authentication) telemetry settings from a file

Channels

The following channels are available to monitor the status of the system.

ChannelDescription
Telemetry Provider StatusThe connection status to the telemetry server
Telemetry Provider ErrorThe reason for connection failure on error
Telemetry Provider Raw Tx BandwidthThe current uncompressed bandwidth being transmitted
Telemetry Provider Compressed Tx BandwidthThe current compressed bandwidth being transmitted
Telemetry Provider Compression RatioThe ratio of compressed to decompressed data

Important: The connection status is the status of connection to the telemetry server. It doesn’t know if EmStream is receiving data.

Setup: EmStream

EmStream stores authentication information per service type rather than in one place for flexibility.

The data service settings can be found in File → Connection Settings.

SettingDescription
HostEnter the host from the below table based on the region configured in the device
Vehicle NameExact vehicle name entered during the activation step above
PasswordThe same password entered during the activation step above
Use SSLMust be set to true when using official Emtron servers
RegionHost
Australiatelemetry-aus.emtronaustralia.com.au
North Americatelemetry-usa.emtronaustralia.com.au

Once entered, select Connect to connect to the telemetry server. If an Emtron Display is also connected you should start seeing channel data on the right hand side panel showing with Telemetry Connected in the top right hand corner.

If connection fails, the reason will be shown in the Connection Settings popup.

Copyright © 2026 Emtron Australia Pty Ltd

Voice Service

Quick Start

Setup: ED7M/ED10M

Assuming you have an active voice license and the authentication settings configured in Display Studio, you can now configure the voice comms function.

Settings

Voice chat settings can be accessed from the main menu: Functions → Voice Comms.

SettingDescription
EnableGlobally activate/deactivate voice communications
Broadcast PrioritySpeaking priority when there are multiple users. (0 = highest priority, 10 = lowest)
Push to Talk ConditionWhen the conditions are met, voice will be transmitted.

Once configured, ‘Write’ the config.

Functions

FunctionDescription
Push to Talk OnForces push to talk on
Push to Talk OffForces push to talk off
Push to Talk ToggleToggles the push to talk state

Events

The following events can be triggered in the system to control the push to talk feature (the above function buttons emit these events).

EventAction
Push to Talk OnForces push to talk on
Push to Talk OffForces push to talk off
Push to Talk ToggleToggles the push to talk state

Channels

The following channels are available to monitor the status of the system.

ChannelDescription
Voice Connection StatusThe connection status to the voice server
Voice Connection ErrorThe reason for connection failure on error
Voice Tx StateShows either: Silent or Speaking
Voice Rx StateShows either: Silent or Speaking

Important: The connection status is the status of connection to the voice server. It doesn’t know if EmStream is also connected.

Setup: EmStream

EmStream stores authentication information per service type rather than in one place for flexibility.

The data service settings can be found in File → Voice Settings.

SettingDescription
HostEnter the host from the below table based on the region configured in the device
Vehicle NameExact vehicle name entered during the activation step above
PasswordThe same password entered during the activation step above
Use SSLMust be set to true when using official Emtron servers
PriorityYour speaking priority when there are multiple users. (0 = highest priority, 10 = lowest).
Enable Push-to-TalkIf enabled, your voice will only be transmitted when the bound button is held down.
PTT KeyThe configured push to talk key, click rebind to change this.
Enable Audio PlaybackUncheck this only if you want to be able to transmit, but not hear anything from others.
RegionHost
Australiavoice-aus.emtronaustralia.com.au
North Americavoice-usa.emtronaustralia.com.au

Once entered, select Connect to connect to the voice server. Once connected you will see Voice Connected in the top right hand corner.

If connection fails, the reason will be shown in the Voice Settings popup.

If push to talk is active, your voice will be transmitted only when the bound key is held down.

If push to talk is inactive, EmStream will attempt to detect your voice and transmit it when you are speaking. Silence will not be transmitted.

Details

Priority System

How It Works

The voice server manages multiple speakers using a priority system:

  • Your priority number is set in Voice Settings (0 = highest, 10 = lowest)
  • When multiple people try to speak:
    • Lower number = gets to speak first
    • Higher number = gets interrupted by lower numbers
    • System automatically manages silence between speakers

Practical Examples

Scenario 1: Small team (1-2 people)

  • Priority system is relaxed
  • Everyone can speak simultaneously
  • Useful for open discussion between two people

Scenario 2: Three or more people connected (3+ people)

  • Race Engineer (Priority 0) - Always gets to speak first
  • Driver (Priority 1) - Can speak if engineer is not speaking.
  • Technician (Priority 4) - Speaks only if both driver and engineer are silent
  • Priority system becomes strict
  • Only one person speaks at a time (based on priority)
  • Higher priority users can interrupt lower priority users
  • Prevents audio chaos in crowded rooms

Setting Your Priority

Use Case Guidelines:

PriorityPersonBest For
0-1Driver, Race EngineerMust speak first; critical communications
3-5Regular technician, SupervisorNormal priority
6-8Support staff, AssistantLower priority
9-10Observers, Remote listenersMinimal speaking

Copyright © 2026 Emtron Australia Pty Ltd

Text Service

Quick Start

Setup: ED7/ED10

Assuming you have an active text chat license and the authentication settings configured in Display Studio, you can now configure the text chat function.

Settings

Text chat settings can be accessed from the main menu: Functions → Text Chat.

SettingDescription
Enable Text CommunicationsGlobally activate/deactivate text communications
Display NameEnter a name for your session in the chat. e.g. John. Must be unique per vehicle
Quick MessagesQuick Messages
Message TriggersMessage Triggers

Once configured, ‘Write’ the config.

Channels

The following channels are available to monitor the status of the system.

ChannelDescription
Text Connection StatusThe connection status to the text chat server
Text ErrorThe reason for connection failure on error
Text Last Message 1-8A history of messages received (1 most recent)
Text Last Sender 1-8A history of message senders (1 most recent)

Important: The connection status is the status of connection to the text chat server. It doesn’t know if others are connected.

Events

The following events are generated by the chat system.

EventWhen
Text Message ReceivedA text message is received
Text Message SentA text message is sent

Setup: EmStream

EmStream stores authentication information per service type rather than in one place for flexibility.

The data service settings can be found in File → Text Chat Settings.

SettingDescription
HostEnter the host from the below table based on the region configured in the device
Display NameEnter a name for your session in the chat. e.g. John. Must be unique per vehicle
Vehicle NameExact vehicle name entered during the activation step above
PasswordThe same password entered during the activation step above
Use SSLMust be set to true when using official Emtron servers
RegionHost
Australiatext-aus.emtronaustralia.com.au
North Americatext-usa.emtronaustralia.com.au

Once entered, select Connect to connect to the text server. Once connected you will see Chat Connected in the top right hand corner.

If connection fails, the reason will be shown in the Text Chat Settings popup.

Once connected, you can open the *Chat Console by either clicking the icon in the top right hand corner or from the menu View → Show Chat Console.

Setup: Web Interface (Browser)

Open the chat page in your browser, depending on your region:

SettingURL
Australiahttps://text-aus.emtronaustralia.com.au/chat
North Americahttps://text-usa.emtronaustralia.com.au/chat

Log in with your credentials

SettingDescription
Your Display NameEnter a name for your session in the chat. e.g. ‘John’. Must be unique per vehicle
Telemetry Vehicle NameExact vehicle name entered during the activation step above
Telemetry PasswordThe same password entered during the activation step above

Once logged in, the chat window opens automatically.

Details

Quick Messages

You can send messages to the chat room based on events occurring.

SettingDescription
EventWhen this event occurs, the message will be sent
MessageThe text at the start of the automated messages.
Append Channel ValueThe a channel’s value to append to the messages when sending.

e.g. Set event to Engine Start, message to Engine Started, fuel level, and append channel to Fuel Level. When the vehicle starts, all connected chat clients will see a message saying the engine has started with the current fuel level.

Message Triggers

You can respond to certain patterns being received. When they are received you can publish a system event.

SettingDescription
PatternThe pattern you want, e.g. “#next-screen”.
Trigger EventThe event you want to publish in the system. e.g. “Next Screen”

With the above examples, you could change the screen on the Emtron display by sending #next-screen in a connected chat client.

Copyright © 2026 Emtron Australia Pty Ltd

Logging

Functions → Logging

The logging function records channel values and events to files on the display’s internal storage. Logged data can be downloaded from the Home view when a device is connected.

Logging Groups

Logging is organised into groups. Each group defines what to log, when to start, and when to stop.

Creating a Group

  1. Open Functions → Logging.
  2. On the Groups tab, click Add Group.
  3. Name the group and configure its settings.

Groups can be exported and imported as .lgrp files to share logging setups between configs.

Group Configuration

Each group has four main areas:

Start Conditions

Define when logging begins. Use condition sets to trigger on channel values, events, or combinations — for example, when engine RPM exceeds idle speed.

Stop Conditions

Define when logging ends. Common choices include ignition off, a manual stop event, or a timer expiry.

Logged Channels

Add channels to record and set each channel’s Log Rate. Higher rates capture more detail but produce larger files.

Logged Events

Add events to record. Event timestamps are stored when the event fires.

Settings Tab

The Settings tab configures global logging parameters such as file naming, storage limits, and post-trigger behaviour. Adjust these to match how much storage the display has available and how long you need logs retained.

Copyright © 2026 Emtron Australia Pty Ltd

Drag Race Timing

Functions → Drag Race Timing

Drag Race Timing measures elapsed time and speed from a standing start, recording results at standard drag strip distance markers. Distance is calculated by integrating the configured speed channel.

Enabling

Check Enable to activate the function.

Configuration

SettingDescription
Speed ChannelSource speed in km/h — required for distance integration
Arm ConditionsConditions that must become true before a run can start
Start ConditionsConditions that trigger the run start on a rising edge
Abort ThresholdRun is aborted if speed drops below this value (km/h)

Typical Setup

  1. Arm when the vehicle is staged (for example, a staging light input or speed below 2 km/h).
  2. Start when the vehicle begins moving (for example, speed exceeds 2 km/h, or a launch event fires).

Distance Markers

When a run is active, the function records time and speed at each marker:

MarkerDistance
0–60 ftStart line
60 ft18.3 m
330 ft100.6 m
1/8 Mile (660 ft)201.2 m
1000 ft304.8 m
1/4 Mile (1320 ft)402.3 m

The run completes automatically when the 1/4 mile distance is reached, or aborts if speed falls below the abort threshold.

Output Channels

The function writes elapsed time and trap speed at each marker, plus cumulative Drag Time and Drag Distance channels during a run. A live drag time slip preview is shown on the configuration page when a device is connected.

Displaying Results

Map the drag timing output channels to Value or Time gauges on a screen. For example, show 1/4 Mile Time and 1/4 Mile Speed on a dedicated drag page.

Drag timing can also work alongside Lap Timing — use a finish beacon on a drag strip start/finish line for point-to-point events.

Copyright © 2026 Emtron Australia Pty Ltd

Counters

Functions → Counters

Counters hold a numeric value that changes when events fire or conditions become true. Typical uses include counting gear shifts, button presses, or how many times a threshold was crossed.

Increment and decrement

Each counter can increase or decrease based on:

  • An event, or
  • A condition becoming true

Step (increment / decrement amount) controls how much the value changes each time.

Wrap

When Wrap is enabled, the counter wraps to the minimum when it exceeds the maximum (and the reverse when decreasing). When wrap is off, the value clamps at the limits if clamp options are used.

Following

A counter can follow another channel: it tracks the increments and decrements of that channel rather than copying its absolute value. Use a follow condition when the follow behaviour should only apply in certain states.

Resetting

Reset the counter to a fixed value or to the value of another channel when an event or condition becomes true.

Forced value

While a forced condition is true, the counter is held at a forced value. When the condition clears, the counter returns to its previous value.

Persistent

If Persistent is enabled, the counter value is stored on power off and restored on power up. The initial value is only used the first time, before any value has been stored.

See also Persistent Channels for retaining arbitrary channels across power cycles.

Copyright © 2026 Emtron Australia Pty Ltd

Odometer

Functions → Odometer

The odometer function integrates a speed input to track total vehicle distance and up to four independent trip meters.

Configuration

SettingDescription
Speed Input (km/h)Channel providing vehicle speed in km/h
Trip 1–4 Reset EventEvent that resets each trip meter to zero

The main Odometer channel holds total distance in km. Trip channels hold distance since their last reset event.

Resetting the Odometer

The total odometer value can only be decreased with a one-time code from Emtron support:

  1. Connect to the display.
  2. Open Functions → Odometer.
  3. Note the challenge code displayed on the page.
  4. Contact Emtron support with the code to receive a reset password.
  5. Enter the new odometer value. If the new value is higher than the current reading, no password is required.

Increasing the odometer (for example, after an instrument cluster replacement) does not require a support code.

Copyright © 2026 Emtron Australia Pty Ltd

Persistent Channels

Functions → Persistent Channels

Persistent channels save their values to non-volatile storage on the display. Values are restored when the device powers on, surviving power loss and config reloads.

Use Cases

  • Store user-adjustable settings (shift point offsets, display preferences)
  • Retain counter values that must survive ignition cycles
  • Hold calibration offsets set by the driver

Configuration

  1. Open Functions → Persistent Channels.
  2. Click Add to add a channel to the persistent list.
  3. Select the Channel to persist.

Both numeric and string channels are supported.

Behaviour

  • On startup, stored values are loaded from the device and written to the configured channels.
  • On power-down (or when a Store event is triggered), current channel values are written to storage.
  • Only channels in the persistent list are saved — other channel values are lost on power cycle.

Note: Only one function should write to a given channel. Do not configure the same channel as both a persistent channel and an active output from another function.

Copyright © 2026 Emtron Australia Pty Ltd

Timers

Functions → Timers

Timers produce a time value (seconds) on an output channel with configurable start, stop, and reset logic.

Timers Timers

Example: hide the camera view 10 seconds after reverse gear is deselected.

Settings

Output Channel

Channel that holds the running time in seconds.

On Expired Event

Event triggered when the timer reaches Max Time.

Max Time

Maximum time in seconds. 0 = no time limit.

Reset Mode

ModeBehaviour
NeverTimer never auto-resets
On Timer StartTime resets to 0 when the timer starts
On Timer StopTime resets to 0 when the timer stops
On ConditionTime resets to 0 when the Reset Condition is true

Start Condition

When the start condition is true and the stop condition is false, the timer runs. The stop condition takes precedence.

Stop Condition

When true, the timer stops. If no stop conditions are set, the result is always false (does not force a stop by itself).

Reset Condition

When true, the timer resets to 0. Only used when Reset Mode is On Condition. If no reset conditions are set, the result is always false.

Copyright © 2026 Emtron Australia Pty Ltd

CANopen

CANopen

CANopen is an industrial fieldbus protocol that runs on a standard CAN network. Use it when you need to exchange cyclic process data with drives, I/O modules, sensors, or other CANopen devices — for example fan controllers, valve drivers, or third-party modules that speak CANopen PDOs rather than a custom CAN message list.

Overview

For each CAN bus you can:

  1. Turn CANopen on and optionally act as network master (NMT).
  2. Optionally produce SYNC and heartbeat.
  3. Define nodes (devices on the bus by node address).
  4. On each node, define PDOs (process data objects) that either transmit (encode channels onto the bus) or receive (decode bus data into channels).
  5. Export / import the whole CANopen configuration for that bus as a .canopen file.
Note

CANopen here is a master-oriented process-data bridge: NMT start, cyclic/event/sync PDOs, optional heartbeat and SYNC, and SDO support in firmware for advanced use. It is not a full device object dictionary editor or EDS importer.

Where to find it

  1. Open Communications.
  2. Select the CAN bus you want to configure.
  3. On Settings, enable CANopen.
  4. Open the CANOpen tab (shown when CANopen is enabled).

Bus settings (Settings tab)

These appear under the CANOpen heading on the bus Settings tab (alongside name, bit rate, and termination).

SettingWhat it does
EnableTurns the CANopen stack on for this bus. When off, no CANopen frames are sent or decoded on that bus.
Act as Network ManagerWhen on, the device acts as an NMT master and sends Start Remote Node to each enabled CANopen node after configuration is applied (and again if a heartbeat consumer times out). When off, nodes are assumed already operational (another master on the bus).
SYNC ProducerWhen on (and a SYNC interval is set), the device periodically sends a SYNC frame (CAN ID 0x080). Use this when devices expect synchronous PDOs.
SYNC Interval (ms)Period between SYNC frames. 0 = do not produce SYNC (even if SYNC Producer is checked). Typical values: 10–100 ms.
HB Producer (ms)If non-zero, the device produces its own heartbeat at this period (milliseconds). 0 = off.
HB Producer Node IDNode address (1–127) used for the heartbeat COB-ID (0x700 + node ID). Must be a free address on the bus. 0 = invalid / off.

CAN bus basics (still required)

CANopen uses the same CAN bus settings as other traffic:

  • Bit rate — Must match all devices (commonly 250 kbit/s, 500 kbit/s, or 1 Mbit/s).
  • Termination — Enable bus termination only when this device is at a physical end of the bus (120 Ω).

CANopen tab

With CANopen enabled, the CANOpen tab configures nodes and PDOs for that bus.

Export and import

At the top of the tab:

ButtonAction
ExportSaves this bus’s full CANopen configuration to a .canopen file (enable flags, SYNC/HB, all nodes and PDOs).
ImportLoads a .canopen file into this bus, replacing the current CANopen settings for that bus only. Other CAN buses and non-CANopen settings are unchanged.

Nodes

A node is one CANopen device on the bus, identified by its node address (node-ID).

Node list

  • Lists all configured nodes.
  • Labels show address and enabled state, e.g. Node 3 [On].
  • Drag to reorder (order is for organisation only; the bus address is what matters).
  • Add Node creates a node with the next free address (1–127) and Enabled on.

Node settings

SettingWhat it does
EnabledWhen off, this node is ignored (no NMT start, no TX/RX PDOs for it).
Address (1–127)CANopen node-ID. Must be unique on the bus and match the device (often set by DIP switches or software). Address 0 is not used for devices (reserved for NMT broadcast).
Default TX interval (ms)Default period for this node’s transmit PDOs when a PDO’s own interval is 0. 0 here means use the system default (100 ms).
Heartbeat consumer (ms)If non-zero, expect a heartbeat from this node at least this often. After a timeout, the stack records a timeout and, if network manager is on, sends Start again to that node. 0 = do not monitor.
RX PDO timeout (ms)If non-zero, each receive PDO must arrive within this period or a timeout is counted. Starts counting after configuration is applied (no need for a first frame). 0 = do not monitor.
Tip

The CAN ID of a PDO on the wire is not only the COB base: it is COB base + node address. For example, TPDO1 base 0x180 + node 5 → CAN ID 0x185. The UI shows the effective ID when a PDO is selected.


PDOs (process data objects)

PDOs are the cyclic data packets of CANopen. Each PDO belongs to a node and has a direction:

Direction in the UIMeaning
Transmit (encode)We send on the bus. Values are read from input channels, packed into the frame, and transmitted. Use this to command a device (e.g. enable + target speed).
Receive (decode)We listen on the bus. Incoming frames are unpacked into output channels. Use this to read status, feedback, temperatures, etc.

Adding PDOs

  • Add TX PDO — Creates a transmit PDO with COB base 0x200 (standard RPDO1 base when you are the master writing to a slave).
  • Add RX PDO — Creates a receive PDO with COB base 0x180 (standard TPDO1 base for data from a slave).

These defaults match the common predefined connection set; change the COB base if your device datasheet specifies different IDs.

PDO settings

SettingWhat it does
COB Base (hex)Base COB-ID before adding the node address. Enter hex (with or without 0x). Effective CAN ID = base + node address (7-bit).
DirectionTransmit (encode) or Receive (decode).
Interval (ms)(TX only) How often to send when using cyclic async. 0 = use the node’s Default TX interval, or 100 ms if that is also 0.
Inhibit (ms)(TX only) Minimum time between two sends of this PDO, even if interval or event would fire sooner. 0 = no extra limit. Useful to avoid flooding the bus.
TX type(TX only) When the PDO is sent (see below).

Transmit types

Type in UIBehaviour
Cyclic async (255)Send on a timer (interval). Most common for continuous control.
Event async (254)Send when the encoded channel values change (and not more often than inhibit allows). First send happens once after enable.
Sync every 1 / 10Send after every 1st or 10th SYNC frame (when a SYNC producer exists on the bus — this device or another).
Receive PDOs

Receive PDOs do not use interval / inhibit / TX type. They decode any matching frame as it arrives.

Effective CAN ID

Displayed for the selected PDO:

Effective CAN ID = COB Base + (Node Address & 0x7F)

Example:

COB baseNodeCAN ID on the wire
0x20010x201
0x18040x184
0x280100x28A

Encode (transmit mapping)

For a TX PDO, encode entries pack channel values into the 8-byte payload.

Encode list

  • One row per field in the frame.
  • Label shows channel name and byte index (or “(no channel)” if unassigned).
  • Add Encode appends a field; the next free byte index is suggested automatically when possible.

Encode settings

SettingWhat it does
Input ChannelChannel whose live value is packed into the frame. Leave unassigned until you choose a channel.
SignedTreat the packed value as signed (two’s complement) when applying mask/shift.
Mask (hex)Bits kept after scaling (e.g. 0xFF for 8-bit, 0xFFFF for 16-bit).
Left ShiftShift left after mask (for packing bit fields into a byte/word).
MultiplierPhysical value is multiplied then rounded to an integer raw value. Example: frequency 50.5 with multiplier 10 → raw 505. Must not be zero.
Byte Index (0–7)Starting byte in the 8-byte payload (little-endian multi-byte fields).
Byte CountWidth: 1, 2, or 4 bytes.

How encoding works (simple model)

raw = round(channel_value × multiplier)
raw = (raw & mask) << left_shift
store raw in payload at byte_index for byte_count bytes (little-endian)

Multiple encode fields can share a byte (values are ORed into the payload), which is useful for bit-packed flags.

Layout

Byte index + byte count must fit in 8 bytes (e.g. byte index 7 and count 2 is invalid and will not be written).


Decode (receive mapping)

For an RX PDO, decode entries unpack the payload into channels.

Decode list

Same idea as encode: list of fields with channel + byte position.

Decode settings

SettingWhat it does
Output ChannelChannel that receives the decoded physical value.
SignedSign-extend using the highest bit of the mask.
Mask (hex)Bits kept after right-shift.
Right ShiftShift right before mask (extract bit fields).
MultiplierPhysical value = raw / multiplier. Example: raw 505 with multiplier 1050.5. Must not be zero.
Byte Index (0–7)Starting byte in the payload.
Byte Count1, 2, or 4 bytes, little-endian.

How decoding works (simple model)

raw = read little-endian integer at byte_index for byte_count
raw = (raw >> right_shift) & mask
if signed: sign-extend using mask width
channel_value = raw / multiplier

Typical setup workflow

Command a slave (master → device)

  1. Enable CANopen on the correct bus; set bit rate and termination as needed.
  2. Turn on Act as Network Manager if this unit should start the network.
  3. Add Node with the device’s node address; keep Enabled on.
  4. Add TX PDO (default base 0x200 is often correct for RPDO1).
  5. Add encode fields for enable, setpoint, etc., matching the device manual (byte layout, scaling).
  6. Optionally Add RX PDO (base 0x180 for TPDO1) and decode status feedback into channels.
  7. Optionally set heartbeat consumer on the node if the device produces heartbeats.
  8. Apply/send configuration and watch CANopen Tx/Rx Count channels and live channel values.

Example: 16-bit scaled speed at bytes 2–3

Device expects target speed × 10 as unsigned 16-bit little-endian at bytes 2–3:

Encode fieldValue
Input channelYour target speed channel
SignedOff
Mask0xFFFF
Left shift0
Multiplier10
Byte index2
Byte count2

Status channels

Per CAN bus index (1–4), the firmware publishes counters you can log or display:

Channel (pattern)Meaning
CANopen n Tx CountNumber of CANopen frames transmitted on that bus instance.
CANopen n Rx CountMatching CANopen frames received/processed (PDO/HB/EMCY etc., as counted by the stack).
CANopen n Rx Timeout CountTimeouts: RX PDO silence, heartbeat consumer loss, or receive-queue overload.

If TX count stays at zero: confirm CANopen Enable, node Enabled, PDO is Transmit, configuration has been applied to the device, and the CAN bus is online.


Quick reference — COB-ID bases (predefined set)

These are industry-standard bases; many devices use them by default:

FunctionBase (hex)Full ID
NMT0x000Always 0x000
SYNC0x0800x080
EMCY0x0800x080 + node
TPDO1 (from device)0x1800x180 + node
RPDO1 (to device)0x2000x200 + node
TPDO2 / RPDO20x280 / 0x300+ node
TPDO3 / RPDO30x380 / 0x400+ node
TPDO4 / RPDO40x480 / 0x500+ node
Heartbeat0x7000x700 + node

Always confirm against the device manual — some products use custom COB-IDs.


Troubleshooting

SymptomThings to check
Nothing on the busCANopen Enable; correct CAN bus and bit rate; termination; config applied to the unit.
TX count not increasingNode Enabled; PDO direction Transmit; at least one encode entry (payload may still send zeros).
RX channels stay staleCOB base + node address match the device; byte layout and multiplier; device is operational (NMT / power).
Heartbeat timeoutsConsumer period longer than the device’s heartbeat producer period; correct node address; master not required for HB decode.
Wrong valuesMultiplier direction (encode ×, decode ÷); signed vs unsigned; little-endian byte order; mask/shift.
Import overwrote settingsImport replaces this bus’s CANopen section only — re-export a known-good .canopen backup before experimenting.

  • Channels and Events — how channels are used across the system
  • OBD-II — diagnostics protocol on CAN (different from CANopen)
  • LIN Bus — another serial bus configuration page

Copyright © 2026 Emtron Australia Pty Ltd

Stage Timing

Functions → Timing → Stage

Stage Timing measures one continuous segment from start to finish — stage rally, hill climb, or any point-to-point run. It does not count laps. Runs save to the Timing Run Library.

Enabling

Check Enable and set the speed channel (km/h). Distance can be integrated from speed or read from a distance channel.

Arm, start, finish, abort

StageTypical use
ArmStaging before the clock (switch, edge/level conditions, event, or Auto).
StartClock starts (start line event, green light, or conditions).
FinishClock stops. Prefer Event mapped to a Finish Beacon from a geo finish line under Locations & lines, or a dedicated finish event.
AbortCondition, event, or speed-drop while running.

Unlike circuit timing, stage does use Finish Beacon for the finish line. Circuit S/F uses Lap Beacon only.

Live delta

Stage Time Delta is distance-matched against the stage run set as reference in the Run Library (current time − reference time at the same distance). Negative means ahead of the reference.

  • Requires a saved trajectory on the reference run.
  • There is no fixed “manual reference time” in stage config — use the library.
  • Without a usable reference trajectory, Stage Time Delta stays invalid (blank/NaN).

Output channels

ChannelDescription
Stage StateDisabled / Idle / Armed / Running / Finished / Aborted
Stage TimeElapsed stage time
Stage DistanceDistance covered
Stage Time DeltaLive distance-matched Δ vs library reference

Events: Stage Start, Stage Finish, Stage Abort (when those transitions occur).

Copyright © 2026 Emtron Australia Pty Ltd

Timing Run Library

Functions → Timing → Run Library

The Timing Run Library stores finished (and aborted) runs from Circuit, Drag, and Stage timing on the device. Use it to compare live runs against a past result, or to show a past result on the dash.

Legacy circuit .trk files are no longer used. Best laps and trajectories come from this library.

List and filters

When connected to a device, the page lists runs with discipline, location, time, and duration.

  • Filter by discipline (circuit / drag / stage) as needed.
  • Select a run for actions below.
  • Import / export packages for backup or transfer (where available in Studio).

Reference vs review

RolePurpose
ReferenceLive deltas while you race or stage. Circuit and drag engines load the selected run’s times and trajectory.
ReviewDisplay-only: show a past run’s times on **Timing Review *** channels without changing live delta behaviour.

Set as reference

  1. Select a finished run.
  2. Set as reference.
  3. Confirm live delta channels start tracking that run (circuit best-lap trajectory, drag splits/trajectory, or stage trajectory).

Clear reference removes the ghost so circuit Δ falls back to the current outing’s best lap, and stage/drag live library deltas stop.

You can also step reference on the device with virtual-button events (Timing Reference Next / Prev / Best / Clear) if those events are wired on a page.

Review

Set as review (or copy reference → review) fills Timing Review channels for gauges that should show a historical result without affecting live deltas.

What “time” means in the list

DisciplineDuration / reference time shown
CircuitBest lap time of the outing (not total race time).
DragElapsed strip time (typically 1/4 mile).
StageTotal stage time.

Timing Reference Time on the bus matches that representative time for the selected reference run.

Channels (overview)

Reference group (live ghost metadata): run id, label, location, time, distance, mode, plus discipline-specific splits (drag markers, circuit best lap / sectors).

Review group: same idea for display-only selection, including stage review time/distance.

Library count reflects how many runs match the current filter.

Tips

  • After a good outing, set that run as reference before the next session.
  • For circuit, ensure the reference run has a usable trajectory if you want smooth distance-matched Δt/Δv.
  • For stage, distance-matched Stage Time Delta requires a trajectory on the reference run.
  • Drag can use a full library trajectory or fall back to a sparse curve from marker times / manual timeslip.

Copyright © 2026 Emtron Australia Pty Ltd

Alarms

Alarms

Alarms monitor the system at runtime and notify the operator when something requires attention. Each alarm evaluates a set of trigger conditions every update cycle and, when active, broadcasts its message through dedicated system channels.


Alarm List and Priority

Alarms are processed in list order — position 1 is the highest priority, position 2 is lower, and so on. When multiple alarms are active simultaneously, only the highest-priority active alarm (lowest list index) is shown on the alarm channels at any given time.

The alarm list can be reordered by dragging, and individual alarms can be exported to .alarm files for reuse.


Settings

Identity

FieldDescription
MessageThe text displayed on the alarm message channel.
EnabledWhen unchecked the alarm is permanently disabled and will never fire. Disabled alarms are indicated by “(Disabled)” in the list.

Trigger Conditions

Defines when the alarm becomes active. Uses the standard condition editor — see Conditions for full details on comparisons, CH mode, and logic operators.

The alarm activates on the first update cycle where all conditions evaluate to true (subject to the hold-off timer — see Timing below).

Acknowledgement

FieldDescription
Auto AcknowledgeWhen enabled, the alarm clears itself automatically after a fixed duration.
Auto Acknowledge After (s)Duration in seconds before the alarm auto-clears. Only visible when Auto Acknowledge is on.
Acknowledge on EventAn event channel that, when it fires, immediately clears the alarm regardless of whether the trigger conditions are still true.

Manual and automatic acknowledgement both set the alarm inactive and clears the auto-acknowledge timer.

Timing

FieldDescription
Repeat Hold Off (s)Minimum time (seconds) before the same alarm can fire again after it clears. Prevents rapid re-triggering if the condition oscillates around the threshold.

With Auto Acknowledge: the hold-off starts from when the alarm auto-clears.

Without Auto Acknowledge: the hold-off starts the moment the alarm first fires, so the alarm can only re-fire this many seconds after it was last triggered.

Output

FieldDescription
Show Value FromA channel whose live value is formatted and written to the alarm value channel alongside the message. Useful for showing e.g. “Water Temp: 102.4 °C”. The format respects the channel’s configured decimal places and units.
Active Status ChannelA channel that is set to 1 while this alarm is active and 0 otherwise. Wire this to anything that needs to react to one specific alarm independently of priority.

Channels

While any alarm is active, the device writes the winning alarm’s data to system-wide channels every update cycle:

ChannelContent
Alarm MessageThe message string of the highest-priority active alarm. Set to "No Alarms" when all alarms clear.
Alarm ValueThe formatted value of the alarm’s “Show Value From” channel, e.g. "102.4 °C". Empty string if no value channel is set.
Alarm Priority1-based index of the highest-priority active alarm. Set to (total alarms + 1) when all clear.
Alarm BeginAn event fired once when the system transitions from no active alarms to one or more active alarms.
Alarm EndAn event fired once when the last active alarm clears.

These channels can be used to drive displays, overlays, logging triggers, or any other part of the system.


Tips

  • Order matters. If two alarms can be active at the same time, place the more critical one higher in the list so it takes priority on the alarm channels.
  • Use Hold Off to avoid flicker. If a channel is noisy near a threshold, set a hold-off of a few seconds to prevent repeated firing.
  • Active Status Channel for independent reactions. The alarm channels only show the highest-priority alarm. If you need a specific lower-priority alarm to also drive an output (LED, relay, log trigger), use its Active Status Channel.
  • Always False / Always True conditions. An alarm with a single “Always True” condition fires immediately on startup — useful for testing the notification pipeline. An “Always False” condition is equivalent to disabling the alarm but leaves the configuration intact.

Copyright © 2026 Emtron Australia Pty Ltd

Conditional Logic

Produces Channels and/or Events based on programmable conditions.

Conditional Logic Conditional Logic

  • The Logic Output Channel is the channel that will be produced when the condition is met. It’s value will be 1 when true, 0 when false.
  • The On Logic True Output Event is produced when the condition becomes true.
  • The On Logic False Output Event is produced when the condition becomes false.
  • The Logic On Delay is the time in milliseconds that the logic output will be delayed after the condition is met.
  • The Logic Off Delay is the time in milliseconds that the logic output will be delayed after the condition is no longer met.

Copyright © 2026 Emtron Australia Pty Ltd

Conditions

Condition Setup

Conditions are the trigger logic used throughout the system — in alarms, virtual inputs, conditional logic, and more. A condition set is a list of one or more individual conditions combined with logic operators.


Individual Conditions

Each condition compares a channel value against a threshold and returns true or false.

FieldDescription
ChannelThe channel whose live value is read as the left-hand side (LHS) of the comparison.
ComparisonThe operator to apply (see table below).
RHSThe right-hand side — either a fixed constant (# mode) or a second live channel (CH mode).

Comparison Operators

NameMeaningRHS needed
Always FalseAlways evaluates to false regardless of channel value.No
Greater ThanLHS > RHSYes
Less ThanLHS < RHSYes
EqualLHS == RHSYes
Not EqualLHS ≠ RHSYes
Greater Than Or Equal ToLHS ≥ RHSYes
Less Than Or Equal ToLHS ≤ RHSYes
Always TrueAlways evaluates to true regardless of channel value.No

Constant vs Channel RHS

The small # / CH toggle to the left of the RHS field switches modes:

  • # mode — compare against a fixed number you type in.
  • CH mode — compare against the live value of a second channel. This lets you express relationships like “Engine RPM > Target RPM” or “Oil pressure < Minimum oil pressure”.

In CH mode the live value of the RHS channel is shown alongside the LHS value so you can see both sides in real time.


Live Preview

The coloured dot at the left of each condition row shows its current evaluation result:

ColourMeaning
GreenCondition is currently true.
RedCondition is currently false.
GreyNo live data available yet (channel not yet received).

The dot updates every realtime frame — you can watch conditions transition as the system runs without needing to save or trigger anything.


Logic Operators

When a condition set contains more than one condition, a logic operator sits between each pair and controls how they are combined.

OperatorMeaning
ANDBoth sides must be true.
ORAt least one side must be true.
NORNeither side may be true (true only when both are false).

Evaluation Order — Left to Right, No Precedence

Important: Logic operators are evaluated strictly left to right. There is no AND-before-OR precedence as you might expect from mathematics or programming languages.

Given conditions A, B, C with operators between them:

A  [AND]  B  [OR]  C

Evaluates as:

(A AND B) OR C

And:

A  [OR]  B  [AND]  C

Evaluates as:

(A OR B) AND C

This means the order of your conditions matters. If you need AND to bind tighter than OR, place the AND conditions consecutively at the top of the list.

Example — Engine over-temperature alarm

You want: “Water temp high AND (RPM above idle OR load above 50%)”

With left-to-right evaluation you cannot express this directly in one flat list. Instead, split it across two condition sets, or reorder so the OR comes first:

RPM > 1000
[OR]
Load > 50
[AND]
Water > 95

Evaluates as ((RPM > 1000) OR (Load > 50)) AND (Water > 95) — which is correct for this case because the AND is last.


Copyright © 2026 Emtron Australia Pty Ltd

Gauges

Gauge Types Reference

This document provides comprehensive documentation for all gauge types available in the Emtron Displays.

Table of Contents

  1. Common Properties
  2. Text Gauge
  3. Value Gauge
  4. Time Gauge
  5. Bar Gauge
  6. Dial Gauge
  7. Image Gauge
  8. Cropped Image Gauge
  9. Cropped Circular Image Gauge
  10. Multi Image Gauge
  11. Color Fade Gauge
  12. Status Gauge
  13. Layer Group Gauge
  14. Camera Gauge

Common Properties

All gauges share these common configuration properties:

PropertyDescription
Channel IDThe channel ID to read data from
X PositionX position on screen (pixels)
Y PositionY position on screen (pixels)
WidthWidth of the gauge (pixels)
HeightHeight of the gauge (pixels)
OpacityOpacity level (0-100)
Z LayerZ-ordering layer (higher values render on top)
TestValueValue used during testing/preview
TestValueMinMinimum test value
TestValueMaxMaximum test value

Text Gauge

Displays static text on the screen. This gauge renders during the static content phase and does not change with channel values.

Configuration

PropertyDescription
ColourHex color code (e.g., “#FFFFFF”)
TextThe text to display
Pixel SizeFont size in pixels
Horizontal AlignmentHorizontal alignment (AlignLeft, AlignHCenter, AlignRight)
Vertical AlignmentVertical alignment (AlignTop, AlignVCenter, AlignBottom)
FontFont file path (empty = default font)

Usage Notes

  • Text is pre-rendered and cached for performance
  • Static content only - no dynamic updates
  • Ideal for labels, titles, and static indicators
  • Uses the fast font rendering system

Example Use Cases

  • RPM label above a value gauge
  • Screen titles
  • Unit indicators (km/h, psi, °C)
  • Static warning messages

Value Gauge

Displays numeric channel values with optional decimal places and color thresholds.

Configuration

PropertyDescription
ColourDefault text color (hex code)
Decimal PlacesNumber of decimal places to display
Pixel SizeFont size in pixels
Horizontal AlignmentHorizontal alignment
Vertical AlignmentVertical alignment
Low ColourColor when value ≤ lowColourThreshold
Low Colour ThresholdThreshold for low color
High ColourColor when value ≥ highColourThreshold
High Colour ThresholdThreshold for high color
FontFont file path (empty = default font)

Behavior

  • Displays “-” if channel doesn’t exist or value is NaN
  • Supports both numeric and string channels
  • String values use GetStringTexture for rendering
  • Numeric values use font atlas for performance
  • Color changes based on threshold comparison

Usage Notes

  • Thresholds allow for visual warnings (e.g., red for high temperature)
  • Font atlas provides fast rendering for numeric displays
  • String channels display the raw string value

Example Use Cases

  • Engine RPM display
  • Temperature readings with warning colors
  • Pressure gauges with threshold alerts
  • Boost levels

Time Gauge

Displays time values in M:SS.mmm format (minutes:seconds.milliseconds) with threshold-based coloring.

Configuration

PropertyDescription
ColourDefault text color (hex code)
Pixel SizeFont size in pixels
Horizontal AlignmentHorizontal alignment
Vertical AlignmentVertical alignment
Low ColourColor when value ≤ lowColourThreshold
Low Colour ThresholdThreshold for low color
High ColourColor when value ≥ highColourThreshold
High Colour ThresholdThreshold for high color
FontFont file path (empty = default font)

Behavior

  • Input value is in seconds (supports negative values)
  • Format: [-]M:SS.mmm
    • Minutes padded to 1 digit minimum
    • Seconds padded to 2 digits
    • Milliseconds padded to 3 digits
  • Displays “-:–.—” if channel doesn’t exist or value is NaN
  • Color changes based on threshold comparison

Usage Notes

  • Designed for lap times, timers, and duration displays
  • Supports negative times with “-” prefix
  • Millisecond precision for racing applications

Example Use Cases

  • Lap timers
  • Split times
  • Best lap comparison
  • Countdown timers

Bar Gauge

Displays a filled bar that grows/shrinks based on channel value. Supports multiple directions and color modes.

Configuration

PropertyDescription
Min ValueMinimum value for 0% fill
Max ValueMaximum value for 100% fill
ColourColor for SingleColour mode (hex code)
DirectionFill direction (Left, Right, Up, Down, etc.)
InvertInvert the fill direction (true = empty on high values)
Colour TypeSingleColour or MultiColour
Mid Lower ValueLower threshold for MultiColour mode
Mid Upper ValueUpper threshold for MultiColour mode
Min ColourColor below midLowerValue (hex code)
Mid ColourColor between midLower and midUpper (hex code)
Max ColourColor above midUpperValue (hex code)

Supported Directions

  • Left (0) - Fills from right to left
  • Right (1) - Fills from left to right
  • Up (2) - Fills from bottom to top
  • Down (3) - Fills from top to bottom
  • UpLeft (4) - Fills diagonally
  • UpRight (5) - Fills diagonally
  • DownLeft (6) - Fills diagonally
  • DownRight (7) - Fills diagonally

Behavior

  • Value is clamped between minValue and maxValue
  • Fill ratio = (value - minValue) / (maxValue - minValue)
  • invert flips the ratio (1 - ratio)
  • MultiColour mode selects color based on current value

Usage Notes

  • Perfect for analog-style gauges
  • Diagonal directions allow creative layouts
  • MultiColour provides visual zones (safe/warning/danger)

Example Use Cases

  • Fuel level indicator
  • Temperature bars
  • RPM bars with color zones
  • Battery charge indicators

Dial Gauge

Rotates an image around a pivot point based on channel value. Supports linear and non-linear angle mapping.

Configuration

PropertyDescription
File NameImage file name (from images/ directory)
Min ValueValue at minAngle
Max ValueValue at maxAngle
Min AngleStarting angle in degrees
Max AngleEnding angle in degrees
Pivot XX coordinate of rotation pivot
Pivot YY coordinate of rotation pivot
DirectionClockwise or AntiClockwise
Mapping TypeLinear or NonLinear
MapNon-linear mapping points

AngleToValueMap

PropertyDescription
AngleAngle in degrees
ValueChannel value at this angle

Behavior

  • Linear mapping: Angle interpolates linearly between min and max
  • Non-linear mapping: Uses custom mapping points for irregular scales
    • Points are sorted by value
    • Linear interpolation between mapping points
    • Angles outside range are clamped
  • Direction affects angle sign (AntiClockwise negates angle)

Usage Notes

  • Pivot point is relative to the gauge dimensions
  • Image should be designed with needle pointing at 0 degrees
  • Non-linear mapping useful for non-uniform gauge scales
  • Supports values outside min/max range (clamped to limits)

Example Use Cases

  • Traditional speedometer needles
  • Tachometer needles
  • Temperature gauge needles
  • Fuel gauge needles with non-linear sweep

Image Gauge

Displays a static image. Can render in static or dynamic phase.

Configuration

PropertyDescription
File NameImage file name (from images/ directory)
Force Foreground RenderIf true, renders in dynamic phase; if false, in static phase

Behavior

  • Static rendering (forceForegroundRender = false):
    • Renders once during RenderStaticContent
    • Image never changes
    • Best performance for backgrounds
  • Dynamic rendering (forceForegroundRender = true):
    • Renders every frame during RenderDynamicContent
    • Can layer on top of other dynamic gauges
    • Slightly lower performance

Usage Notes

  • Use static rendering for backgrounds, frames, and decorations
  • Use dynamic rendering when image needs to appear above other gauges
  • Image is scaled to fit gauge dimensions (w × h)
  • Supports transparency (PNG alpha channel)

Example Use Cases

  • Background images
  • Gauge bezels and frames
  • Logos and branding
  • Decorative elements

Cropped Image Gauge

Displays a progressively revealed image based on channel value. The image is “uncropped” as the value increases.

Configuration

PropertyDescription
File NameImage file name (from images/ directory)
Min ValueValue at 0% reveal
Max ValueValue at 100% reveal
DirectionDirection of reveal
InvertInvert the reveal direction

Behavior

  • Value is clamped between minValue and maxValue
  • Ratio = (value - minValue) / (maxValue - minValue)
  • invert flips the ratio
  • Source and destination rectangles adjusted based on direction
  • Only the visible portion is rendered

Supported Directions

Same as Bar Gauge: Left, Right, Up, Down, UpLeft, UpRight, DownLeft, DownRight

Usage Notes

  • Image gradually appears based on value
  • Different from opacity - only reveals portion of image
  • Perfect for creative fill indicators
  • Source image should represent “full” state

Example Use Cases

  • Creative fuel gauges (image of fuel tank filling)
  • Battery icons that fill up
  • Progress indicators with custom graphics
  • Temperature visuals (thermometer filling)

Cropped Circular Image Gauge

Displays an image with circular/radial cropping based on channel value. Creates a “pie chart” or “arc” effect.

Configuration

PropertyDescription
File NameImage file name (from images/ directory)
Min ValueValue at startAngle
Max ValueValue at sweepAngle
Start AngleStarting angle in degrees (0° = top)
Sweep AngleEnding angle in degrees
DirectionClockwise or AntiClockwise
Mapping TypeLinear or NonLinear
MapNon-linear mapping points

Behavior

  • Renders image using triangular geometry from center point
  • Image is UV-mapped to create circular reveal effect
  • Linear mapping: Angle interpolates linearly between start and sweep
  • Non-linear mapping: Uses custom mapping points
  • Direction affects sweep direction

Technical Details

  • Divides sweep into triangular segments
  • Handles both horizontal and vertical edge tracing
  • Supports full 360° sweeps (multiple rotations)
  • Angles wrap around 2π radians

Usage Notes

  • Best for circular gauges with image backgrounds
  • Center of gauge (w/2, h/2) is the rotation pivot
  • 0° angle points upward, increases clockwise by default

Example Use Cases

  • Circular RPM gauges with gradient backgrounds
  • Radial progress indicators
  • Speedometer arcs
  • Fuel level circles

Multi Image Gauge

Displays different images based on discrete channel values (acts like a switch statement).

Configuration

PropertyDescription
ImagesList of value-to-image mappings

ValueWithFilename

PropertyDescription
ValueChannel value to match (rounded to nearest integer)
File NameImage to display when value matches

Behavior

  • Compares channel value (rounded) to each image’s value
  • Displays first matching image
  • If no match, nothing is displayed
  • Only one image shown at a time

Usage Notes

  • Values are rounded to nearest integer before comparison
  • Useful for discrete states or modes
  • Images should be same size for consistent display
  • Order matters - first match wins

Example Use Cases

  • Gear position indicators (1, 2, 3, 4, 5, 6, N, R)
  • Drive mode displays (Eco, Sport, Race)
  • Warning icons based on error codes
  • State indicators (Off, Idle, Active, Error)

Color Fade Gauge

Fills a rectangle with color that transitions smoothly between three colors based on channel value.

Configuration

PropertyDescription
Min ValueValue at minColour
Mid Lower ValueValue where minColour → midColour transition completes
Mid Upper ValueValue where midColour → maxColour transition starts
Max ValueValue at maxColour
Min ColourColor at minimum value (hex code)
Mid ColourColor in middle range (hex code)
Max ColourColor at maximum value (hex code)

Behavior

  • Value is clamped between Min Value and Max Value
  • Three zones:
    1. Min Value to Mid Lower Value: Linear interpolation from Min Colour to Mid Colour
    2. Mid Lower Value to Mid Upper Value: Solid Mid Colour
    3. Mid Upper Value to Max Value: Linear interpolation from Mid Colour to Max Colour
  • Color interpolation is RGB lerp (linear interpolation per channel)

Usage Notes

  • Creates smooth color gradients
  • Middle zone can be zero-width (midLowerValue = midUpperValue)
  • Useful for visual feedback without numbers
  • Fills entire gauge area

Example Use Cases

  • Temperature warning lights (blue → green → yellow → red)
  • Background status indicators
  • Visual alarm states
  • Mood lighting effects

Status Gauge

Displays text with colored background based on discrete channel values. Similar to Multi Image but with text.

Configuration

PropertyDescription
Pixel SizeFont size in pixels
Horizontal AlignmentHorizontal text alignment
Vertical AlignmentVertical text alignment
TextsList of value-to-text mappings
FontFont file path (empty = default font)

StatusText

PropertyDescription
ValueChannel value to match (rounded to nearest integer)
TextText to display
Text ColourForeground text color (hex code)
Background ColourBackground fill color (hex code)

Behavior

  • Compares channel value (rounded) to each status text’s value
  • Displays first matching text with its colors
  • Background fills entire gauge area
  • Text is pre-rendered and cached

Usage Notes

  • Values are rounded to nearest integer before comparison
  • Both foreground and background colors customizable
  • Text is cached for performance
  • Order matters - first match wins

Example Use Cases

  • Gear position display (“N”, “1”, “2”, “3”)
  • System status (“OK”, “WARNING”, “ERROR”)
  • Mode indicators (“ECO”, “SPORT”, “RACE”)
  • Boolean states (“ON”/“OFF”, “ARMED”/“DISARMED”)

Layer Group Gauge

Manages multiple layers (screens within screens) that can be switched via events. Each layer contains its own set of gauges.

Configuration

PropertyDescription
Layer ConfigsList of layer definitions
Next Layer EventEvent ID to switch to next layer
Prev Layer EventEvent ID to switch to previous layer
NameName of the layer group

LayerConfig

PropertyDescription
Layer IDID of the layer to display
Is Default LayerIf true, shown on startup
Show EventEvent ID to directly show this layer

Behavior

  • Each layer has its own texture for off-screen rendering
  • Only one layer is active/visible at a time
  • Layer switching triggered by events:
    • Next Layer Event: Cycles to next layer (wraps around)
    • Prev Layer Event: Cycles to previous layer (wraps around)
    • Show Event: Jumps directly to specific layer
  • Layers are rendered to texture, then copied to screen
  • Both static and dynamic content supported per layer

Rendering Process

  1. Set render target to layer’s texture
  2. Clear texture
  3. Render layer’s gauges (static or dynamic)
  4. Restore render target
  5. Copy layer texture to screen at gauge position

Usage Notes

  • Layers are separate screens with independent gauge layouts
  • Event-driven switching enables complex UI flows
  • Each layer has its own texture (memory overhead)
  • Default layer shown initially if specified
  • Texture size matches layer dimensions (may differ from gauge size)

Example Use Cases

  • Multi-page dashboards (Main, Performance, Diagnostics)
  • Context-sensitive displays (Normal, Warning, Critical)
  • Menu systems
  • Wizard-style configuration screens

Camera Gauge

Displays live camera feed with optional flipping.

Configuration

PropertyDescription
Flip VerticalFlip image vertically
Flip HorizontalFlip image horizontally

Behavior

  • Renders camera texture provided externally
  • Does not render anything in static or dynamic phases
  • Texture alpha controlled by gauge opacity

Usage Notes

  • Camera texture provided externally (not loaded from file)
  • Flip options useful for correcting camera orientation
  • No static/dynamic rendering - only camera feed
  • Scales camera feed to gauge dimensions

Example Use Cases

  • Rear-view camera display
  • Side camera mirrors
  • Track camera feed
  • Dash cam preview

Rendering Architecture

Two-Phase Rendering

The gauge system uses a two-phase rendering approach:

  1. Static Content Phase

    • Rendered once or when screen changes
    • Text labels, backgrounds, static images
  2. Dynamic Content Phase

    • Rendered every frame
    • Values, needles, bars, etc.
    • Updated based on channel values

Z-Layer Ordering

Gauges are rendered in order of their Z Layer property:

  • Lower Z Layer values render first (background)
  • Higher Z Layer values render last (foreground)
  • Allows complex layering of gauges

Opacity and Blending

  • Opacity range: 0-100
  • Supports transparency in images and colors

Color Format

Colors are specified as hex strings:

  • Format: "#RRGGBB" (e.g., “#FF0000” for red)

Best Practices

Layout

  • Use alignment properties for precise positioning
  • Consider screen resolution and scaling
  • Group related gauges with similar zLayer values
  • Use layer groups for complex multi-screen UIs

Visual Design

  • Use color thresholds for warnings (value/time gauges)
  • Use color zones for operational ranges (bar/colorfade)
  • Maintain consistent opacity for visual hierarchy
  • Use multi-state gauges (status/multiimage) for discrete values

Configuration

  • Test with testValue during development
  • Define clear min/max ranges for accuracy
  • Use non-linear mapping for irregular scales

Troubleshooting

Common Issues

Gauge not appearing:

  • Check channelId is valid
  • Verify zLayer ordering
  • Ensure opacity > 0
  • Check xPos/yPos within screen bounds

Colors not working:

  • Verify hex color format (#RRGGBB)
  • Check opacity setting
  • Ensure blend mode supported

Images not loading:

  • Confirm file exists in images/ directory
  • Check fileName spelling and case
  • Verify image format (PNG recommended)

Performance issues:

  • Move static elements to RenderStaticContent
  • Reduce number of dynamic gauges
  • Use simpler gauge types where possible
  • Optimize image sizes

Layer group issues:

  • Verify layer IDs are correct
  • Check event IDs are unique and valid
  • Ensure at least one default layer
  • Confirm texture creation succeeded

Copyright © 2026 Emtron Australia Pty Ltd

Inertial Measurement Unit

Emtron ED Series Displays contain 6 axis Inertial Measurement Unit (IMU).

Output Channels

  • G-Force Lateral
  • G-Force Longitude
  • G-Force Vertical
  • Acceleration Lateral
  • Acceleration Longitude
  • Acceleration Vertical
  • Angular Velocity X
  • Angular Velocity Y
  • Angular Velocity Z
  • Roll
  • Pitch
  • Yaw

Calibration

IMU Config IMU Config

  1. Make sure car is parked on a flat level surface.
  2. Click Zero Calibrate to put the IMU into calibration mode. The device will take 5 seconds worth of samples and find it’s vertical orientation. The calibration is stored in permanent memory in the device.
  3. Once completed, G-Force Vertical should read close to 1.0G, while G-Force Lateral and G-Force Longitude should be 0.0G.
  4. Drive the car forward and stop. G-Force Longitude should go positive when accelerating and negative when braking. G-Force Lateral should remain near zero.
  5. If required, adjust the Yaw Orientation value until the Longitudinal and Lateral G-Forces are aligned correctly.

In Field Calibration: Conditional Logic can be used to generate the IMU Calibration Begin event. This allows the IMU to be calibrated from a keypad button or similar user input.

Filtering

Accelerometer Filter and Gyro Filter values control how filtered the IMU measurements are.Values are a percentage (0 - 99.9%). Higher filtering gives a cleaner signal, but slows down the signals rate of change. Use the least filtering you can get away with. Typical values would be 10-40 %

Copyright © 2026 Emtron Australia Pty Ltd

Lap Timing

The Lap Timing function outputs lap and timing data based triggered by lap beacon events.

Input Channels

  • Speed Channel: Select the channel to use as the speed input.
  • Lap Distance Channel: Optional - Select the channel to use as the lap distance input.

Note: Lap and Race distance can be calculated from the speed input channel.

Input Events

Three main events are used to control the lap timing function. These events can be triggered however you see fit. Typically they’re triggered by GPS position as configured in Track Setup.

Track Sectors Track Sectors

Lap Beacon

  • Triggers the start of a new lap.
  • Triggers the update of Best Lap, Previous Lap, and Time Delta related channels.

Sector Beacon

  • Triggers the start of a new sector within the current lap.

Finish Beacon

  • Triggers the end of the current lap and sector. The Lap Timing system will wait for a new race to start.

Input Channels

Lap Timing Inputs Lap Timing Inputs

Speed Channel

The selected speed channel is used to record speed data during the lap.

Lap Distance Channel

When Generate Lap & Race Distance Channels from Speed Channel is CHECKED, the Lap Distance and Race Distance channels hold values automatically calculated from the Speed Channel.

When Generate Lap & Race Distance Channels from Speed Channel is UNCHECKED, the selected Lap Distance channel is read and the data is stored in the current lap data.

Lap Count

If the Lap Count channel is generated and holds a non zero value, it is used to trigger the end of a race.

Finishing a Race

End on Lap Count

When the Lap Beacon event is triggered, and the Lap channel value equals the Lap Count channel value, the Current Lap (and sector) is ended. The Lap Timing system will wait for a new race to start.

End on Finish Beacon

When the Finish Beacon event is triggered, the Current Lap (and sector) is ended. The Lap Timing system will wait for a new race to start. This is useful for point to point or drag races.

Output Channels

The following channels are written to by the Lap Timing system.

  • Lap
  • Sector
  • Best Lap
  • Best Sector (up to 63 sectors)
  • Prev 4 lap times
  • Optimal Lap Time (sum of best sector times)
  • Current Lap Time
  • Speed Delta to Previous Lap
  • Speed Delta to Best Lap
  • Time Delta to Previous Lap
  • Time Delta to Best Lap

Copyright © 2026 Emtron Australia Pty Ltd

LIN Bus

LIN Bus Configuration

Overview

The LIN (Local Interconnect Network) Bus configuration allows you to define frames and signals for LIN communication. LIN is a serial communication bus commonly used in automotive systems for low-speed, cost-effective data exchange.

Note: Currently, master mode only is supported. The system acts as the LIN master, controlling communication with slave devices on the bus.

Settings Tab

Bus Configuration

  • Enabled: Turn the LIN bus on or off
  • Baud Rate: Set the communication speed in bits per second (e.g., 9600, 19200). Typical values are 9600 or 19200 bps

Frames

Frames are the fundamental units of LIN communication. Each frame contains a PID (Protocol ID) and carries signals.

Frame List

Displays all configured frames with their names and period (update interval in milliseconds). Use Add Frame to create a new frame, or Import Frame to load a previously saved frame.

Frame Settings

Configure the following for each frame:

  • PID (0-63): Unique identifier for the frame on the bus
  • Name: Descriptive name for the frame (optional, helps identify frames in the list)
  • Direction:
    • Publish: Master transmits, slaves receive
    • Read: Master receives from slaves
  • Length: Data payload size in bytes (1-8)
  • Period: How often the frame is transmitted (milliseconds)
  • Checksum Type:
    • Classic: Standard LIN checksum
    • Enhanced: Extended checksum format

Frame Diagram

Visual representation of your frame layout showing how signals are distributed across the data bytes. Each colored line represents a signal, with a legend showing signal names below the diagram.

Signals

Each frame can contain multiple signals carrying data values.

Signal Configuration

  • Bit Offset: Starting bit position within the frame
  • Channel: Which data channel this signal maps to (or “NO CHANNEL” for unused signals)
  • Type: Data format (Integer, Float32, Float64)
  • Endianness: Byte order
    • Little Endian: LSB first
    • Big Endian: MSB first
  • Factor: Scaling multiplier for the raw value
  • Offset: Value offset to apply
  • Length: Signal width in bits

Use Add Signal to add signals to a frame. The Export Frame button at the bottom saves the current frame configuration for reuse.

Copyright © 2026 Emtron Australia Pty Ltd

Math Functions

Settings

Evaluation

  • Continuous — expressions are evaluated constantly at 100 Hz
  • On Event — expressions are evaluated only when the assigned event occurs (uses a fixed 10 ms timeDelta)

Variable Name

This is the variable name that will become available for use in the expression. Names must match [a-zA-Z_][a-zA-Z0-9_]*.

Derivative

When checked, an additional variable will become available containing the derivative of the input channel. The derivative variable uses the standard variable name with a d prefix.

e.g. If the channel variable is EngineSpeed, then the derivative variable will be dEngineSpeed.

The derivative is computed from consecutive channel timestamps when the delta is at least 10 ms. If derivative is disabled, d{Name} is always 0.

Reset totalTime on

Optional event channel (Continuous mode only). When the event fires, totalTime is reset to 0 on the next evaluation so gen.* waveforms can restart without recompiling. This does not clear filter or integrator state.

Changing the expression text triggers recompile and a full state reset (totalTime, filters, integrators).

Expression Syntax

Expressions are written using emexpr, Emtron’s expression language for real-time signal processing. Expressions are compiled once, then evaluated each tick to produce a single numeric output channel.

Numeric Literals

TypeExamples
Integer42, 0x2A (hex), 0b1010 (binary)
Float0.5, .5, 1e-3, 2.5E+2
Booleantrue, false (stored as 1 / 0)

Line comments are supported: // everything after is ignored

Constants

NameValue
PIπ
Ee (Euler’s number)

math.PI is also available as an alias for PI.

Arithmetic Operators

OperatorDescriptionExample
+Additionrpm + 500
-Subtractiontemp - 20
*Multiplicationload * 0.5
/Divisionfuel / 4
%Modulus (remainder)counter % 10
^ or **Exponentx ^ 2

Comparison Operators

Returns 1 (true) or 0 (false).

OperatorDescription
==Equal to
!=Not equal to
<Less than
>Greater than
<=Less than or equal to
>=Greater than or equal to

Logical Operators

OperatorDescription
&& or andLogical AND
|| or orLogical OR
! or notLogical NOT

Logical operators short-circuit: in a && b, b is not evaluated if a is falsy; in a || b, b is not evaluated if a is truthy.

A value is truthy when it is not 0 and not NaN. NaN is falsy — use util.IfNaN or math.IsNaN when you need explicit handling.

Conditional (Ternary) Operator

condition ? valueIfTrue : valueIfFalse

Example: rpm > 3000 ? 1 : 0

Local Variables

Use let to declare intermediate values within an expression. Separate statements with ;.

let x = rpm / 60;
let y = x * 2;
y + offset

The last expression in the let body is the result.

Built-in Variables

NameDescription
timeDeltaTime since last evaluation of this expression, in seconds. In continuous mode this is the backend tick interval. In event mode it is 0.01 s.
totalTimeAccumulated time since the first evaluation after compile (or since the last Reset totalTime event). Used by gen.* and util.DistanceDelta.
previousResultOutput value from the previous evaluation of this expression. 0 on the first eval after compile.

Stateful Evaluation

Functions in the filter, calc, and gen namespaces maintain state across evaluations. Each call site gets its own independent state slot — two filter.Exponential calls in the same expression do not share memory:

filter.Exponential(A, 0.1) + filter.Exponential(B, 0.2)

Several filters seed their internal state from the first sample on the first tick, so the first output may equal the first input rather than a neutral value.

Math Utilities

All trig functions are in radians.

FunctionDescription
math.Sin(x)Sine of x
math.Cos(x)Cosine of x
math.Tan(x)Tangent of x
math.Asin(x)Arcsine of x
math.Acos(x)Arccosine of x
math.Atan(x)Arctangent of x
math.Atan2(y, x)Quadrant-correct arctangent
math.Hypot(p, q)Hypotenuse of p and q
math.Exp(x)Base e exponential of x
math.Abs(x)Absolute value of x
math.Log(x)Natural log of x
math.Log10(x)Base-10 log of x
math.Sqrt(x)Square root
math.Min(x, y)Minimum
math.Max(x, y)Maximum
math.Clamp(x, min, max)Clamps x between min and max
math.Pow(x, y)x to the power of y
math.Pow10(n)10 to the power of n
math.Round(x)Rounds to the nearest integer
math.Floor(x)Rounds toward −∞
math.Ceil(x)Rounds toward +∞
math.Trunc(x)Rounds toward zero
math.Sign(x)Returns −1, 0, or +1
math.Mod(x, y)Floating-point remainder
math.Deg2Rad(x)Converts degrees to radians
math.Rad2Deg(x)Converts radians to degrees
math.Blend(t, x, y)Linear blend: (1−t)·x + t·y, with t clamped to [0, 1]
math.Lerp(t, x, y)Same as math.Blend
math.Sq(x)
math.IsNaN(x)Returns 1 if x is NaN, else 0
math.IsInf(x)Returns 1 if x is ±Inf, else 0

Filter Utilities

FunctionDescription
filter.Exponential(input, alpha)Exponential moving average. alpha is the smoothing factor (0.001–0.999).
filter.MovingAverage(input, n)Moving average over the last n samples. n must be constant (clamped to 1–1024).
filter.Median(input, n)Moving median over the last n samples. n should be an odd number.
filter.RateOfChange(input, maxPositiveRatePerSecond, maxNegativeRatePerSecond)Limits the rate of change of the input. Both rate limits are positive numbers.
filter.Schmitt(input, lowValue, highValue)Schmitt trigger. Returns 1 when above highValue, 0 when below lowValue.
filter.DelayedSchmitt(input, lowValue, highValue, offTimeS, onTimeS)Schmitt trigger with time delays in seconds.
filter.LowPass(input, cutoffHz)First-order low-pass filter. cutoffHz is the −3 dB corner frequency.
filter.Deadband(input, width)Ignores changes smaller than width.
filter.Ramp(input, maxRate)Limits output rate of change to maxRate units per second.
filter.PeakHold(input, decayRate)Tracks the maximum value seen, decaying at decayRate units per second.
filter.Previous(input)Returns the previous input sample.
filter.HoldWhile(valid, input)Passes input through while valid is truthy; otherwise returns the last held value.
filter.ExponentialTau(input, tauSeconds)EMA with time constant in seconds.
filter.WindowMin(input, n)Minimum over the last n samples.
filter.WindowMax(input, n)Maximum over the last n samples.

Calculus Utilities

FunctionDescription
calc.Integrate(input, deltaTime, initial, enable)Running sum. When enable is truthy, accumulates input × deltaTime. When falsy, resets to initial. Typically deltaTime is timeDelta.
calc.IntegrateClamped(input, deltaTime, initial, min, max, enable)Same as calc.Integrate, but clamps the output between min and max.
calc.Differentiate(input)Numerical derivative: (input − previous) / timeDelta.
calc.Timer(run, reset)Elapsed-time timer in seconds. Increments while run is truthy; resets when reset is truthy.
calc.Latch(value, set, reset)Sample-and-hold latch. Captures value when set is truthy; clears when reset is truthy.
calc.Rising(condition)Returns 1 for one tick on a rising edge of condition, else 0.
calc.Falling(condition)Returns 1 for one tick on a falling edge of condition, else 0.
calc.EdgeCount(condition, reset)Counts rising edges of condition. Resets to 0 when reset is truthy.

Utility Functions

FunctionDescription
util.IfNaN(value, fallback)Returns fallback if value is NaN, else value.
util.IfInf(value, fallback)Returns fallback if value is ±Inf, else value.
util.SafeDiv(numerator, denominator, fallback)Returns numerator / denominator, or fallback if denominator == 0.
util.Scale(value, inMin, inMax, outMin, outMax)Linear map from [inMin, inMax] to [outMin, outMax].
util.Within(value, lo, hi)Returns 1 if lo ≤ value ≤ hi, else 0.
util.Coalesce(a, b, …)Returns the first argument that is not NaN (2–8 arguments).
util.PercentError(measured, target)((measured − target) / target) × 100.
util.Piecewise(x, x0, y0, x1, y1, …)Piecewise-linear lookup table (up to 6 knots).
util.DistanceDelta(speedMps)Returns speedMps × timeDelta — distance travelled over the last tick.
util.KphToMps(kph)Converts km/h to m/s.
util.MpsToKph(mps)Converts m/s to km/h.

Signal Generators

Timed waveform generators. All use totalTime (seconds since first eval after compile or last reset event).

FunctionDescription
gen.Sine(frequencyHz, amplitude, offset)Sine wave
gen.Cosine(frequencyHz, amplitude, offset)Cosine wave
gen.Square(frequencyHz, amplitude, offset)Square wave (50% duty)
gen.Square(frequencyHz, amplitude, offset, duty)Square wave with configurable duty cycle
gen.Triangle(frequencyHz, amplitude, offset)Triangle wave
gen.Sawtooth(frequencyHz, amplitude, offset)Rising sawtooth
gen.Step(timeSeconds, valueBefore, valueAfter)Step function at timeSeconds
gen.Pulse(periodSeconds, amplitude, offset, pulseWidthSeconds)Periodic pulse
gen.Ramp(slope, min, max)Ramp slope × totalTime, clamped to [min, max]
gen.Noise(amplitude, offset, seed)Deterministic pseudo-random noise
gen.Chirp(startHz, endHz, durationSeconds, amplitude)Linear frequency chirp

Example — smoothed test signal:

filter.LowPass(gen.Sine(1, 100, 0), 0.2)

Copyright © 2026 Emtron Australia Pty Ltd

OBD-II

OBD2 Scanner User Guide

Overview

The OBD2 Scanner module provides comprehensive vehicle diagnostics and data acquisition through the On-Board Diagnostics II (OBD2) protocol. This guide covers configuration, operation, and troubleshooting.

Table of Contents


Quick Start

Prerequisites

  • Vehicle with OBD2 port (1996+ vehicles in most regions)
  • CAN bus connection to vehicle OBD2 port
  • OBD2 adapter cable or direct CAN connection

Basic Setup

  1. Enable OBD2 on CAN Bus

    • Navigate to CAN Bus settings
    • Enable OBD2 scanner on desired CAN bus (typically can0)
    • Set request interval (recommended: 100-200ms for standard polling)
  2. Configure Service 0x01 (Current Data)

    • Enable Service ID: 1 (0x01)
    • Enable PID Discovery for automatic detection
    • Add PIDs you want to monitor (see Standard PIDs)
  3. Test Connection

    • Check OBD2 Service Status channel
    • Should show “Connected” when receiving data
    • Check OBD2 Poll Rate to verify polling frequency

Configuration

CAN Bus Settings

CAN Bus: can0
├── OBD2 Enabled: Yes
├── Request Interval: 100ms (adjustable 50-1000ms)
└── Services:
    └── Service 0x01 (Show Current Data)

Service Configuration

Each OBD2 service (0x01, 0x09, 0x22, etc.) can be independently configured:

SettingDescriptionDefaultNotes
EnabledEnable this serviceNoMust be enabled to poll
Service IDOBD2 service number-0x01 = Current Data, 0x09 = Vehicle Info
PID WidthBytes per PID1 for 0x01
2 for others
Auto-detected
Batch PID RequestsSend multiple PIDs per requestNoOnly for Service 0x01
PID DiscoveryAuto-detect supported PIDsYesRecommended for compatibility
TX AddressCAN transmit ID0x7E0 (physical)
0x7DF (broadcast)
Physical for multi-PID
RX Address StartResponse CAN ID range start0x7E8Standard OBD2
RX Address EndResponse CAN ID range end0x7EFSupports multiple ECUs

PID Configuration

For each PID you want to monitor:

SettingDescriptionExample
EnabledPoll this PIDYes
PIDParameter ID0x0C = Engine RPM
Channel IDOutput channel60100 (custom channel)
Byte CountData bytes for this PID2 for RPM
DescriptionHuman-readable name“Engine RPM”
Decode FormulaMath expression to convert raw data(A*256+B)/4

Status Monitoring

Status Channels

Monitor OBD2 system health through these channels:

Global Status

ChannelDescriptionValues
OBD2 Poll RateComplete polls per second0-100 Hz
OBD2 Response RateSuccess percentage0-100%

Per-Service Status (Service 1-8)

ChannelDescriptionValues
OBD2 Service N StatusConnection statusDisabled, Connected, No Response, PID Not Supported, Response Error
OBD2 Service N Response CodeLast error code0 = OK, 0x11 = Not Supported, 0x12 = Invalid, 0x31 = Out of Range
OBD2 Service N Supported PIDs 0x00-0xE0Bitmap of supported PIDsBitfield (32-bit)

Status Values

Disabled          = 0  // Service not enabled
Connected         = 1  // Receiving valid data
No Response       = 2  // Not receiving responses (timeout after 5x poll interval)
PID Not Supported = 3  // ECU reports PID not supported
Response Error    = 4  // Other communication error

Supported Services

Service 0x01: Show Current Data

Real-time engine and vehicle parameters.

Configuration:

  • PID Width: 1 byte
  • Supports batch requests (up to 6 PIDs per request)
  • Supports PID discovery (recommended)

Common Use: Engine RPM, coolant temp, throttle position, vehicle speed

Service 0x09: Vehicle Information

Static vehicle identification data.

Configuration:

  • PID Width: 2 bytes
  • Single PID per request (no batching)
  • Discovery optional

Common Use: VIN, calibration IDs, ECU name

Service 0x22: Read Data By Identifier (UDS)

Manufacturer-specific extended data.

Configuration:

  • PID Width: 2 bytes
  • Single PID per request
  • Discovery not typically supported

Common Use: Custom manufacturer parameters, advanced diagnostics


Advanced Features

Multi-PID Polling (Batch Requests)

Request multiple PIDs in a single CAN message for faster polling.

Benefits:

  • Higher effective poll rate
  • Reduced CAN bus traffic
  • Lower latency

Limitations:

  • Only Service 0x01 supports this (per SAE J1979)
  • Maximum 6 PIDs per request
  • Must use physical addressing (0x7E0) not broadcast (0x7DF)
  • Some ECUs may not support this feature

Configuration:

Service 0x01:
├── Batch PID Requests: Yes
├── TX Address: 0x7E0 (physical addressing required)
└── PIDs: [0x0C, 0x0D, 0x05, 0x0F, 0x10, 0x11]

Expected Poll Rate:

  • 6 PIDs with 100ms interval = ~10 Hz per PID
  • Without batching = ~1.6 Hz per PID

PID Discovery

Automatically detect which PIDs your vehicle supports.

How It Works:

  1. System queries PID 0x00 (supported PIDs 0x01-0x20)
  2. System queries PID 0x20 (supported PIDs 0x21-0x40)
  3. Continues for PID ranges: 0x40, 0x60, 0x80, 0xA0, 0xC0
  4. Only polls PIDs that are marked as supported
  5. Falls back to polling all configured PIDs if discovery fails

Benefits:

  • Faster polling (skips unsupported PIDs)
  • Better compatibility
  • Automatic adaptation to vehicle capabilities

Retry Logic:

  • 3 retry attempts if discovery times out
  • 2-second timeout per attempt
  • Falls back to polling mode if all retries fail

Custom Decode Formulas

Convert raw PID data to engineering units using mathematical expressions.

Formula Variables:

  • A = First data byte (0-255)
  • B = Second data byte (0-255)
  • C = Third data byte (0-255)
  • D = Fourth data byte (0-255)
  • E to H = Additional bytes if needed

Examples:

// Engine RPM (PID 0x0C, 2 bytes)
(A*256 + B) / 4

// Coolant Temperature (PID 0x05, 1 byte)
A - 40

// Throttle Position (PID 0x11, 1 byte)
A * 100 / 255

// Fuel Pressure (PID 0x0A, 1 byte, result in kPa)
A * 3

// Intake Air Temperature (PID 0x0F, 1 byte, result in °C)
A - 40

// MAF Sensor (PID 0x10, 2 bytes, result in g/s)
(A*256 + B) / 100

// O2 Sensor Voltage (PID 0x14, 2 bytes)
A / 200  // Voltage (V)
// B = Short term fuel trim (%)

// Vehicle Speed (PID 0x0D, 1 byte, result in km/h)
A

// Runtime since engine start (PID 0x1F, 2 bytes, result in seconds)
A*256 + B

// Fuel Tank Level (PID 0x2F, 1 byte, result in %)
A * 100 / 255

Standard PIDs

Service 0x01 Common PIDs

PIDDescriptionBytesFormulaUnit
0x00Supported PIDs 01-204-Bitmap
0x04Calculated Load1A*100/255%
0x05Coolant Temp1A-40°C
0x0AFuel Pressure1A*3kPa
0x0BIntake Manifold Pressure1AkPa
0x0CEngine RPM2(A*256+B)/4RPM
0x0DVehicle Speed1Akm/h
0x0ETiming Advance1(A-128)/2°
0x0FIntake Air Temp1A-40°C
0x10MAF Air Flow2(A*256+B)/100g/s
0x11Throttle Position1A*100/255%
0x1FRuntime Since Start2A*256+Bseconds
0x20Supported PIDs 21-404-Bitmap
0x2FFuel Tank Level1A*100/255%
0x33Barometric Pressure1AkPa
0x40Supported PIDs 41-604-Bitmap
0x42Control Module Voltage2(A*256+B)/1000V
0x46Ambient Air Temp1A-40°C
0x5CEngine Oil Temp1A-40°C
0x60Supported PIDs 61-804-Bitmap

Service 0x09 Common PIDs

PIDDescriptionBytesNotes
0x00Supported PIDs4Bitmap
0x02Vehicle Identification Number (VIN)17ASCII string
0x04Calibration IDVariableASCII string
0x0AECU NameVariableASCII string

Troubleshooting

Connection Issues

“No Response” Status

Symptoms: Status shows “No Response” or never connects

Causes:

  1. Vehicle not in RUN or ENGINE ON mode
  2. Incorrect CAN bus connection
  3. Wrong CAN bitrate (should be 500 kbps for OBD2)
  4. CAN termination issues

Solutions:

  1. Verify vehicle ignition is ON
  2. Check physical CAN bus wiring (CAN-H and CAN-L)
  3. Confirm CAN bitrate: 500 kbps or 1 Mbps
  4. Check CAN termination (120Ω between CAN-H and CAN-L)
  5. Try both physical (0x7E0) and broadcast (0x7DF) request addresses

“PID Not Supported” Status

Symptoms: Status shows “PID Not Supported” with error code 0x11 or 0x12

Causes:

  1. Vehicle doesn’t support the requested PID
  2. Service not available on this vehicle/ECU
  3. PID configuration error

Solutions:

  1. Enable PID Discovery to auto-detect supported PIDs
  2. Check vehicle OBD2 compliance level
  3. Try Service 0x01 PIDs first (universal)
  4. Verify PID byte count matches specification
  5. Some vehicles only support basic PIDs (0x00-0x20)

Low Poll Rate

Symptoms: OBD2 Poll Rate < 1 Hz, data updates slowly

Causes:

  1. Too many PIDs configured
  2. Request interval too high
  3. Multi-PID batching disabled

Solutions:

  1. Reduce number of active PIDs
  2. Decrease request interval (minimum 50ms recommended)
  3. Enable Batch PID Requests (Service 0x01 only)
  4. Use physical addressing (0x7E0) for faster responses
  5. Check OBD2 Response Rate - should be >80%

Low Response Rate

Symptoms: OBD2 Response Rate < 80%, intermittent data

Causes:

  1. CAN bus errors or noise
  2. ECU busy with other operations
  3. Too short request interval
  4. Poor connection quality

Solutions:

  1. Increase request interval (try 200ms)
  2. Check CAN bus wiring quality
  3. Verify CAN termination
  4. Monitor CAN bus load (should be <70%)
  5. Check for CAN errors in bus statistics

Data Issues

Incorrect Values

Symptoms: Channel values don’t match expected ranges

Causes:

  1. Wrong decode formula
  2. Incorrect byte count
  3. Byte order mismatch

Solutions:

  1. Verify formula against OBD2 specification
  2. Check byte count matches PID definition
  3. Test with known PIDs first (RPM, Speed)
  4. Compare with other scan tools
  5. Check formula syntax (use A, B, C, D for bytes)

Flickering/Unstable Values

Symptoms: Values jump erratically between readings

Causes:

  1. Poll rate too high causing data race
  2. Formula error causing invalid calculations
  3. CAN bus errors corrupting data

Solutions:

  1. Increase poll interval
  2. Verify formula produces valid output
  3. Check CAN bus quality
  4. Monitor OBD2 Response Rate for drops

Discovery Issues

Discovery Never Completes

Symptoms: Service stuck in “Disabled” state, never reaches “Connected”

Causes:

  1. Discovery timeout (vehicle doesn’t respond to PID 0x00)
  2. Vehicle doesn’t support discovery
  3. Wrong service configuration

Solutions:

  1. Wait for 3 retry attempts (6+ seconds)
  2. Disable PID Discovery to skip auto-detection
  3. Manually configure known PIDs
  4. Check logs for timeout messages
  5. Some vehicles require specific timing

Discovery Detects No PIDs

Symptoms: Discovery completes but no PIDs are polled

Causes:

  1. Vehicle returned empty bitmap
  2. No configured PIDs match supported PIDs
  3. Discovery misinterpretation

Solutions:

  1. Manually configure common PIDs (0x0C, 0x0D, 0x05)
  2. Disable discovery and poll all configured PIDs
  3. Try Service 0x01 PIDs 0x00-0x20 first
  4. Check Supported PIDs bitmap channels for values

Performance Optimization

Maximizing Poll Rate

Goal: Achieve 10+ Hz poll rate for critical parameters

Strategy:

  1. Enable Batch PID Requests (Service 0x01)
  2. Use physical addressing (0x7E0)
  3. Request only essential PIDs (6 maximum per batch)
  4. Set request interval to 100ms
  5. Ensure vehicle supports multi-PID requests

Expected Results:

  • 6 PIDs @ 100ms interval = ~10 Hz per PID
  • Total CAN messages = ~10/second
  • Response rate should be >90%

Minimizing CAN Bus Load

Goal: Reduce CAN bandwidth usage

Strategy:

  1. Increase request interval (200-500ms)
  2. Disable unused PIDs
  3. Use batch requests to consolidate messages
  4. Prioritize essential parameters

CAN Load Calculation:

Single PID request = 1 frame (~10 bytes @ 500kbps = ~200µs)
Response = 1-8 frames depending on data size
Total per poll = 2-9 frames

Example: 10 PIDs @ 100ms interval
= 10 requests/second × 2 frames avg = 20 frames/sec
= ~4 kbps out of 500 kbps = <1% bus load

Balancing Multiple Services

Scenario: Monitor Service 0x01 (current data) and Service 0x09 (VIN)

Strategy:

Service 0x01:
├── Request Interval: 100ms
├── PIDs: High-frequency data (RPM, Speed, Throttle)
└── Batch Requests: Yes

Service 0x09:
├── Request Interval: 1000ms (slower)
├── PIDs: Static data (VIN, Calibration ID)
└── Batch Requests: No

Examples

Example 1: Basic Engine Monitoring

Monitor essential engine parameters.

Configuration:

Service 0x01:
  - Enabled: Yes
  - PID Discovery: Yes
  - Batch PID Requests: Yes
  - Request Interval: 100ms
  - TX Address: 0x7E0

PIDs:
  PID 0x0C (Engine RPM):
    - Channel ID: 60100
    - Byte Count: 2
    - Formula: (A*256+B)/4

  PID 0x0D (Vehicle Speed):
    - Channel ID: 60101
    - Byte Count: 1
    - Formula: A

  PID 0x05 (Coolant Temp):
    - Channel ID: 60102
    - Byte Count: 1
    - Formula: A-40

  PID 0x11 (Throttle Position):
    - Channel ID: 60103
    - Byte Count: 1
    - Formula: A*100/255

Expected Results:

  • Poll Rate: ~10 Hz
  • Response Rate: >90%
  • 4 parameters updated 10 times per second

Example 2: Performance Logging

High-speed data acquisition for track use.

Configuration:

Service 0x01:
  - Request Interval: 50ms (20 Hz)
  - Batch PID Requests: Yes
  - TX Address: 0x7E0

PIDs (6 max per batch):
  - 0x0C: Engine RPM
  - 0x0D: Vehicle Speed
  - 0x10: MAF Air Flow
  - 0x11: Throttle Position
  - 0x0F: Intake Air Temp
  - 0x0B: Intake Manifold Pressure

Expected Results:

  • Poll Rate: 20 Hz
  • 6 channels @ 20 Hz = 120 samples/second total
  • CAN load: ~2%

Example 3: Diagnostic Scan

Complete vehicle parameter survey.

Configuration:

Service 0x01:
  - PID Discovery: Yes
  - Request Interval: 200ms
  - Batch PID Requests: No (for maximum compatibility)
  - TX Address: 0x7DF (broadcast)

PIDs: All supported PIDs (auto-detected via discovery)

Service 0x09:
  - Request Interval: 5000ms
  - PIDs: 0x02 (VIN), 0x04 (Calibration ID)

Expected Results:

  • Automatic detection of 20-40 supported PIDs
  • Poll rate: 2-5 Hz depending on PID count
  • VIN and calibration data refreshed every 5 seconds

Example 4: Manufacturer-Specific (UDS)

Access extended manufacturer parameters.

Configuration:

Service 0x22 (UDS):
  - PID Width: 2
  - PID Discovery: No
  - Batch PID Requests: No
  - TX Address: 0x7E0

PIDs (manufacturer-specific examples):
  PID 0xF190:
    - Description: "Boost Pressure"
    - Channel ID: 60200
    - Byte Count: 2
    - Formula: (A*256+B)/100

  PID 0xF191:
    - Description: "Fuel Rail Pressure"
    - Channel ID: 60201
    - Byte Count: 2
    - Formula: (A*256+B)*10

Note: Manufacturer PIDs vary by make/model. Consult manufacturer documentation.


Technical Reference

CAN Message Format

OBD2 Request (Single PID):

ID: 0x7DF (broadcast) or 0x7E0 (physical)
Data: [0x02, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00]
       │     │     │
       │     │     └─ PID (0x0C = RPM)
       │     └─────── Service (0x01)
       └───────────── Length (2 bytes)

OBD2 Request (Multi-PID):

ID: 0x7E0 (physical addressing required)
Data: [0x04, 0x01, 0x0C, 0x0D, 0x05, 0x00, 0x00, 0x00]
       │     │     │     │     │
       │     │     │     │     └─ PID 3 (0x05 = Coolant Temp)
       │     │     │     └─────── PID 2 (0x0D = Speed)
       │     │     └───────────── PID 1 (0x0C = RPM)
       │     └─────────────────── Service (0x01)
       └───────────────────────── Length (4 bytes)

OBD2 Response:

ID: 0x7E8 (or 0x7E9-0x7EF for multiple ECUs)
Data: [0x04, 0x41, 0x0C, 0x1A, 0xF8, 0x00, 0x00, 0x00]
       │     │     │     │     │
       │     │     │     └─────┴─ Data bytes (0x1AF8 = 6904 → RPM = 1726)
       │     │     └───────────── PID echo (0x0C)
       │     └─────────────────── Response mode (0x41 = 0x01 + 0x40)
       └───────────────────────── Length (4 bytes)

ISO-TP Multi-Frame

For responses >7 bytes, ISO-TP (ISO 15765-2) is used:

First Frame:

[0x10, 0x14, 0x49, 0x02, 0x01, ...]
  │     │     └─────────────────── Start of data
  │     └───────────────────────── Total length (0x14 = 20 bytes)
  └─────────────────────────────── Frame type (0x1 = First Frame)

Consecutive Frames:

[0x21, data, data, data, ...]
  │
  └─ Sequence number (0x21 = frame 1, 0x22 = frame 2, etc.)

Negative Response Codes

CodeDescriptionMeaning
0x11Service Not SupportedECU doesn’t support this service
0x12Sub-Function Not SupportedPID not supported
0x13Incorrect Message LengthWrong data size
0x31Request Out Of RangePID out of valid range
0x33Security Access DeniedRequires authentication
0x78Response PendingECU busy, will respond later

Safety and Compliance

  • Regional Compliance: OBD2 is mandated for vehicles sold in:

    • USA: 1996+
    • EU: 2001+ (gasoline), 2004+ (diesel)
    • Australia: 2006+
    • Other regions vary
  • Emissions Testing: Tampering with OBD2 data may violate emissions regulations

  • Warranty: Check vehicle warranty terms regarding aftermarket scanning

Best Practices

  1. Non-Intrusive: Read-only monitoring doesn’t affect vehicle operation
  2. Passive Scanning: This module only reads data, never writes
  3. Standard Compliant: Follows SAE J1979 and ISO 15765-2 specifications
  4. ECU Protection: Respects timeouts and retry limits to avoid ECU overload

Limitations

  • Manufacturer-Specific Data: Some parameters require proprietary protocols
  • Real-Time Constraints: Not suitable for safety-critical applications
  • CAN Bus Priority: OBD2 messages are low priority; critical vehicle systems take precedence
  • ECU Availability: Some ECUs may be busy and unable to respond immediately

Glossary

TermDefinition
ECUElectronic Control Unit - vehicle computer that manages engine/systems
PIDParameter ID - specific data point (e.g., RPM, temperature)
ISO-TPISO 15765-2 Transport Protocol - multi-frame message handling
SAE J1979Standard defining OBD2 diagnostic protocols
UDSUnified Diagnostic Services (ISO 14229) - extended diagnostics
DTCDiagnostic Trouble Code - stored fault code
Freeze FrameSnapshot of parameters when fault occurred
Bitmap32-bit field where each bit indicates support for a PID
Multi-PIDRequesting multiple parameters in single message
Physical AddressingDirect ECU communication (0x7E0) vs broadcast (0x7DF)

Additional Resources

Standards Documents

  • SAE J1979: OBD2 Diagnostic Test Modes
  • ISO 15765-2: Diagnostic communication over CAN
  • ISO 14229-1: Unified Diagnostic Services (UDS)
  • SAE J2012: Diagnostic Trouble Code Definitions

Tools and Validation

  • Use OBD2 scan tool to verify vehicle responses
  • Compare results with known-good scanner
  • Monitor CAN bus with analyzer to debug issues
  • Test with multiple vehicles for compatibility

Support

For additional help:

  1. Check system logs for detailed error messages
  2. Review CAN bus statistics for communication issues
  3. Verify configuration against examples in this guide
  4. Test with minimal configuration first (basic PIDs)

Revision History

VersionDateChanges
1.02025Initial release

Copyright © 2026 Emtron Australia Pty Ltd

PID Controllers

This guide explains how to configure and manage PID (Proportional-Integral-Derivative) controllers for process control. The guide covers how to set up controllers, assign channels, define conditions, adjust limits, configure gain tables, and monitor diagnostics for effective PID control.

Overview

A PID controller adjusts a process by calculating an error (difference between a desired set point and the measured process variable) and applying proportional P, integral I, and derivative D corrections to produce an output. This software allows you to configure multiple PID controllers, each with customizable channels, conditions, limits, and gain tables. Real-time diagnostic plots help monitor and tune controller performance.

Key PID Configuration Features

Adding and Deleting Controllers

  • Add a Controller: Use the “Add Controller” button to create a new PID controller with a default name (“New Controller”). This adds a new controller to the system for configuration.
  • Delete a Controller: Select a controller and use the “Delete Controller” button. Confirm the action to remove the controller. Ensure you select the correct controller to avoid accidental deletion.

Naming Controllers

  • Assign a unique name to each controller in the “Name” field.
  • Descriptive names (e.g., “Temperature Control” or “Speed Control”) help identify the controller’s purpose.
  • Changes are saved automatically when you finish editing the name.

Input/Output Channels

Each PID controller requires four key channels:

  • Input Channel: The measured process variable (e.g., current temperature).
  • Set Point Channel: The desired target value (e.g., target temperature).
  • Error Channel: The calculated difference between the set point and input.
  • Output Channel: The controller’s output to adjust the process (e.g., solenoid duty cycle).
  • Use the dropdown menus to assign appropriate channel IDs from your system. Ensure channels are correctly mapped to avoid control errors.

Conditions

Conditions define when the controller is active and how it behaves:

  • Enabled When: Set a condition to enable or disable the controller (e.g., enable only when a specific sensor is active). Use the condition editor to define this logic.
  • Disabled Output Value: Specify a numeric output value (e.g., 0) for when the controller is disabled, ensuring the system remains in a safe state.
  • Integral Reset When: Define a condition to reset the integral term to zero (e.g., when the error exceeds a threshold), preventing integral windup.

Limits and Scaling

Fine-tune the PID terms and output with these settings:

  • Proportional (P) Limits: Set positive and negative limits for the proportional term to cap its contribution (e.g., to prevent excessive corrections).
  • Integral (I) Limits: Set positive and negative limits for the integral term to control accumulated error corrections.
  • Derivative (D) Limits: Set positive and negative limits for the derivative term to manage rate-of-change corrections.
  • Output Scalar: Multiply the final output by a scaling factor (default: 1) to adjust its magnitude.
  • Output Offset: Add a fixed value (default: 0) to the final output for calibration or bias.
  • Output Final Limits: Set positive and negative limits for the controller’s final output to ensure it stays within safe bounds.
  • Enter numeric values for all limits and scaling factors, which are validated to ensure they are valid numbers.

Gain Tables

Gain tables allow you to define variable gains for the PID terms based on operating conditions:

  • Feed Forward Table: Adjusts the feed-forward term, which provides a baseline output independent of error (e.g., for known system dynamics).
  • P Gain Table: Sets the proportional gain P, which scales the error to determine the proportional correction.
  • I Gain Table: Sets the integral gain I, which scales the accumulated error over time.
  • D Gain Table: Sets the derivative gain D, which scales the rate of change of the error.
  • Switch between tabs to edit each table. Enter values to define how gains vary (e.g., based on error magnitude or other parameters).

Derivative Mode

  • Choose how the derivative term is calculated:
    • Derivative of Error: Uses the rate of change of the error (set point minus input).
    • Derivative of Measurement: Uses the rate of change of the input directly, which can reduce noise in systems with step changes in the set point.
  • Select the mode from the dropdown in the “Miscellaneous” section.

Diagnostic Channels and Monitoring

Monitor controller performance with real-time diagnostic plots:

  • Main Plot: Shows the input, set point, output, and error channels over time, helping you visualize the control loop’s behavior.
  • Diagnostic Plot: Displays diagnostic channels for:
    • Feed-Forward (FF) Output: The contribution of the feed-forward term.
    • P Output: The proportional term’s contribution.
    • I Output: The integral term’s contribution.
    • D Output: The derivative term’s contribution.
    • P Gain: The current proportional gain value.
    • I Gain: The current integral gain value.
    • D Gain: The current derivative gain value.
  • Assign channel IDs for these diagnostics using the dropdown menus in the “Diagnostic Channels” section. Ensure valid channels are selected for accurate monitoring.

Tips for Effective PID Tuning

  • Start with Proportional Only: Set I and D to 0, then adjust P to achieve a stable but slightly oscillatory response.
  • Add Integral for Steady-State Error: Gradually increase I to eliminate steady-state error, but watch for integral windup (use the “Integral Reset When” condition to mitigate this).
  • Use Derivative Sparingly: Increase D to dampen oscillations, but avoid high values to prevent noise amplification. Consider “Derivative of Measurement” mode for noisy systems.
  • Tune Gain Tables: Use gain tables to adjust P, I, and D based on operating conditions (e.g., higher P for larger errors).
  • Monitor Diagnostics: Use the main and diagnostic plots to observe how each term (P, I, D) affects the output. Adjust limits if any term dominates unexpectedly.
  • Test Conditions: Ensure “Enabled When” and “Integral Reset When” conditions are logical to prevent unintended controller behavior.
  • Set Safe Limits: Use P, I, D, and final output limits to prevent excessive corrections that could damage the system.
  • Iterate Gradually: Make small adjustments and test the system response, using diagnostic plots to guide tuning.

This guide covers the core PID configuration features to help you set up and tune controllers effectively.

Copyright © 2026 Emtron Australia Pty Ltd

Shift Lights

Shift Calculation

The shift calculation writes to the Shift Indication channel. The value progresses from 1 to 99, then 100 when the 100% value is met or exceeded. If you don’t want to use the shift calculation, set the input channel to ‘None’.

Shift Pattern

The shift patterns are selected based on the input channel value. The pattern with the nearest value equal to or less than the input channel value is displayed.

TIP: Drag the LEDs to copy the colours around

Copyright © 2026 Emtron Australia Pty Ltd

Speed Fusion

Speed Fusion

Overview

Speed Fusion combines data from multiple sensors to produce a single, accurate speed measurement that is more reliable than any individual source. It draws on GPS speed, drive speed (from the ECU or CAN bus), wheel speed sensors, and IMU data (accelerometer and gyroscope) to deliver a smooth, low-latency fused speed output.

Speed Fusion continuously monitors for wheel slip and automatically reduces the influence of any sensor that appears unreliable, such as a spinning driven wheel under hard acceleration.

Key Features

  • Combines GPS, drive speed, wheel speeds, and IMU data into a single reliable output
  • Automatically detects and discounts wheel slip
  • Compensates for sensor drift over time
  • Works with partial sensor sets — unused inputs can be left unconfigured

Configuration

Enable / Disable

SettingDescription
EnabledTurns Speed Fusion on or off. When disabled, no fused speed is produced.

Sensor Inputs

Assign each input to the channel that provides that sensor’s data. Leave a channel unassigned if that sensor is not available — Speed Fusion will simply use whichever sources are connected.

InputDescriptionUnits
Drive SpeedSpeed from the vehicle ECU or CAN buskph
GPS SpeedSpeed from the GPS receiverkph
Front-Left Wheel SpeedIndividual wheel speed sensorkph
Front-Right Wheel SpeedIndividual wheel speed sensorkph
Rear-Left Wheel SpeedIndividual wheel speed sensorkph
Rear-Right Wheel SpeedIndividual wheel speed sensorkph
Longitudinal AccelerationForward/backward acceleration from IMUm/s²
Vertical AccelerationUp/down acceleration from IMUm/s²
Pitch RateNose-up/nose-down rotation rate from IMU°/s

Wheel Drive Configuration

Indicate which wheels are driven (powered) by the motor. Speed Fusion prefers non-driven wheels for speed estimation because driven wheels are more likely to slip under acceleration.

SettingDescription
Front-Left DrivenEnable if this wheel is driven
Front-Right DrivenEnable if this wheel is driven
Rear-Left DrivenEnable if this wheel is driven
Rear-Right DrivenEnable if this wheel is driven

Examples:

  • Front-wheel drive: enable Front-Left and Front-Right
  • Rear-wheel drive: enable Rear-Left and Rear-Right
  • All-wheel drive: enable all four

When all wheels are driven, Speed Fusion still uses wheel speeds but treats them as less reliable and relies more heavily on GPS and drive speed.


Tuning Parameters

These settings control how much Speed Fusion trusts each sensor source, and how aggressively it detects wheel slip. The defaults are appropriate for most vehicles — only adjust these if you observe specific problems.

Sensor Trust

Lower values mean more trust in that source; higher values mean less trust. Think of these as a confidence level for each sensor’s accuracy.

ParameterDefaultDescription
GPS Speed Trust1.0 kphHow much variation is expected in the GPS speed reading
Drive Speed Trust0.5 kphHow much variation is expected in the drive speed from the ECU/CAN
Wheel Speed Trust0.3 kphHow much variation is expected in wheel speed readings
Speed Responsiveness1.0 kphHow freely the fused speed estimate can change between updates — increase if output lags, decrease if output is jittery
Vertical Accel Trust3.0 m/s²How closely vertical acceleration tracks expected gravity — higher values allow more pitch angle variation

Slip Detection

ParameterDefaultDescription
Slip Gate10.0 kphMaximum allowable difference between a sensor reading and the current speed estimate before that reading is rejected. Increase if valid readings are being discarded during hard acceleration; decrease if bad readings are affecting the output.
Acceleration Slip Threshold3.0 m/s²How large an acceleration mismatch between wheel sensors and the IMU must be before wheel slip is declared. Lower values detect slip earlier; higher values only flag severe slip.

Tuning Guide

Starting Point

The defaults work well for most vehicles. Before adjusting anything, verify that all configured channels are receiving valid data and that sensor units are correct (speeds in kph, acceleration in m/s²).

Common Adjustments

SymptomAdjustment
Fused speed lags behind actual speedIncrease Speed Responsiveness
Fused speed is jittery or noisyDecrease Speed Responsiveness, or increase the trust value for the noisiest sensor
Wheel slip not being detectedDecrease Acceleration Slip Threshold
Valid readings incorrectly rejected during accelerationIncrease Slip Gate
GPS signal is unreliable (tunnels, urban areas)Increase GPS Speed Trust to reduce GPS influence
Drive speed source has noticeable latencyIncrease Drive Speed Trust to reduce its influence

Driving Style Adjustments

  • Street or steady-state driving — use lower (default) responsiveness values for a smooth output
  • Motorsport / high-dynamics driving — increase Speed Responsiveness to allow the estimate to change more quickly
  • Off-road or rough terrain — increase sensor trust values to tolerate higher sensor noise

Troubleshooting

ProblemLikely CauseSolution
No fused speed outputSpeed Fusion is disabled, or no sensor channels are configuredEnable Speed Fusion and verify at least one speed input is assigned
Fused speed lags actual speedSpeed Responsiveness is too lowIncrease Speed Responsiveness
Fused speed is jitterySensor trust values are too low (over-trusting noisy sensors)Increase trust values for noisy sources
Wheel slip not detectedAcceleration Slip Threshold is too highDecrease Acceleration Slip Threshold
Valid measurements rejectedSlip Gate is too tightIncrease Slip Gate
Pitch angle appears incorrectIMU sensor orientation or calibration issueVerify accelerometer and gyroscope channel assignments and sensor mounting

Copyright © 2026 Emtron Australia Pty Ltd

Switch Logic

Switch Inputs allow any input channel to be used for binary switch logic. The output is either 0 when inactive/off or 1 when active/on.

Input Channel

The channel used as the input value source.

Output Channel

The channel that contains the final result of the switch logic.

Detection Mode

Determines the switches behaviour.

  • Active Low: Transitions to ON when the input is less than or equal to Low Threshold. Does not transition back to OFF until the input is greater than or equal to High Threshold. Typical use: Low side switch.
  • Active High: Transitions to ON when the input is greater or equal to than High Threshold. Does not transition back to OFF until the input is less than or equal to Low Threshold. Typical use: High side switch.
  • Active Inside Range: Transitions to ON while the input is greater than or equal to Low Threshold AND the input is less than or equal to High Threshold. Typical use: Voltage ladder switches such cruise control buttons or other steering wheel controls.
  • Active Outside Range: Transitions to ON while the input is less than or equal to Low Threshold AND the input is greater than or equal to High Threshold. Typical use: Inverse voltage ladder. Can determine when single position is not pressed.

Note: Toggle mode will alter the behaviour described here. See below…*

High Threshold

Input comparison high value. Used by all Detection Modes. Must be greater than Low Threshold.

Low Threshold

Input comparison low value. Used by all Detection Modes. Must be less than High Threshold.

Range Hysteresis

Hysteresis value used on both the Low Threshold and High Threshold boundaries. Only applies to Detection Modes Active Inside Range and Active Outside Range.

Active Inside Range: The switch will turn ON when the input is inside the threshold boundaries. In order to turn off, the input must be less than Low Threshold - Range Hysteresis OR greater than High Threshold + Range Hysteresis. The activation window is effectively widend when in the ON state.

Active Inside Range: The switch will turn ON when the input is outside the threshold boundaries. In order to turn off, the input must be greater than Low Threshold + Range Hysteresis AND less than High Threshold - Range Hysteresis. The activation windows are effectively widend when in the ON state.

Toggle

Alters the behaviour of the output. When the input detection is determined to be in the ON state, rather than following that state, the output value will toggle from OFF to ON and ON to OFF with each successive transition. This allows a momentary switch or keypad button to toggle (latch) each time it is pressed.

Invert

Inverts the output result. OFF becomes ON and ON becomes OFF.

Copyright © 2026 Emtron Australia Pty Ltd

Tables

Tables function similarly to ECU tables, featuring an X and Y axis where channels are assigned as inputs.

The system looks up the corresponding table value and outputs it to the assigned channel. Values are interpolated between cells to ensure a smooth output.

There is no limit to the number of tables you can create.

Copyright © 2026 Emtron Australia Pty Ltd

Track Setup

Track Setup determines how GPS based Lap Timing functions.

Lap Timing and Track Setup are separated so that other systems can also generate the lap and sector beacons. This allows the use of other timing systems such as laser beacons.

Location Detection

Location Detection Setup Location Detection Setup

Track Location Radius Track Location Radius

Each track has a central GPS position. This allows the device to select the track as the active track when it detects itself inside the detection radius of a particular track.

Note: To use automatic track location detection, Startup Track Selection needs to be set to Auto Select Using GPS.

Alternatively, tracks can be selected manually by assigning events to the Select Previous Track Event and/or Select Next Track Event options.

Tracks

Tracks are essentially a collection of GPS coordinates that allow the device to output sector and lap beacons as well as zone detection.

Latitude / Longitude

The track’s Latitude and Longitude values are used to set the position of the map window as well as automatic location detection. To quickly adjust the position, click the Pick Position button and click the new postion in the map window.

Enabled

When the track is Enabled, it is included in the automatic search for the current location. Disabled tracks will be ignored. This allows multiple versions of the same track to exist in the config without confusing the automatic location detection system. For example you may have different versions with different sector or zone setups.

CautionEach tracks must always have a unique name.

Zoom In / Out

The zoom in and zoom out buttons control the default zoom level of the track map view. The zoom level is stored in the config so unless the user pans or zooms the map with the mouse, the map will recentre on the tracks central GPS position and set zoom level.

Sectors

Sectors are made up of two position coordinates to create an imaginary line. When the device detects that it has crossed this line, it can output an event.

Add New Sector Add New Sector

Predefined line types will output specific events:

To create a new sector line:

  1. Click Add Line.
  2. Update the line type and name as needed.
  3. Click the Pick Position button for Lat A / Long A.
  4. Click the position in the map window for the lines A position.
  5. Click the Pick Position button for Lat B / Long B.
  6. Click the position in the map window for the lines A position.
  7. If you’ve selected a Custom Line type, select the output event.

There are three important events used by the Lap Timing function. Appropriate use of these beacon events will result in accurate lap timing data. Using the preset line types will handle outputting the correct event for you.

Lap Beacon

When the Lap Beacon event is triggered, the Lap Timing function will initiate the start of a new lap.

Sector Beacon

When the Sector Beacon event is triggered, the Lap Timing function will initiate the start of a new sector within the current lap.

Finish Beacon

When the Finish Beacon event is triggered, the Lap Timing function will end the current lap and wait for a new lap to start. This is useful for point to point races or drag racing that do not have a common Start/Finish line.

Zones

Zones are polygonal areas or regions within a track or location.

Add New Zone Add New Zone

ID

You can give each zone an ID number. This number does not have to be unique. When the device detects that it is inside a particular zone, it will output the zones ID to value to the Track Zone channel. When not inside a zone, Track Zone will revert to a value of 0. You can assign the same ID to multiple zones accross multiple tracks.

For example: If you wish to create a common pit speed limiter, you can draw a zone around the pit lane of multiple tracks and assign them a common ID number. Inside a conditional Logic function, you can check to see if the current Track Zone value is your designated Pit Lane ID.

You may with to add additional logic checks in the event the GPS fix is poor.

Example
  • Current GPS position is outside any zones: Track Zone = 0.
  • GPS position goes inside a zone with ID of 4: Track Zone = 4.
  • GPS position enteres a zone with ID 2: Track Zone = 2.
  • GPS position leaves the zone back to unzoned space: Track Zone = 0.

Enter and Exit Events

Optionally, the device can trigger events of your choosing when a zone is entered and/or exited.

Vertices

A zone is made up of a collection of vertices.

CautionZone polygons require at least 3 vertices to be valid

CautionZone polygons must not self intersect

Complex Zone Example Complex Zone Example

Copyright © 2026 Emtron Australia Pty Ltd

Wi-Fi

Default Network

By default the ED Series Displays will broadcast the following Wi-Fi networks.

ModelSSIDPassphrase
ED10MED10Med10mwifi
ED7MED7Med7mwifi
ED7ED7ed7_wifi

Settings

The user can change the SSID and Passphrase freely.

Note: This change is stored in the device, independent of the loaded config.

Wi-Fi Settings Wi-Fi Settings