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.
Real-time audio communication feature allowing users to conduct voice calls with automatic speaker management, push-to-talk control, and priority-based communication
Real-time messaging feature for communicating with other users connected to the same vehicle or session, with automatic alerts, text commands and message history
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.
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.
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.
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.
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.
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.
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
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.
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
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
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
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
Product
Data
Text
Voice
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.
Setting
Description
Region
Select the region closest to you for lower latency
Vehicle Name
Exact vehicle name entered during the activation step above
Password
The same password entered during the activation step above
Use SSL
Must be set to true when using official Emtron servers
Validate SSL Certificate
Optional: 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.
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.
Setting
Description
Enable
Globally activate/deactivate telemetry streaming
Data Mode
Always set to compressed
Active When
When the conditions are met, data will begin streaming. e.g. RPM > 300
Slow Tx Rate
Transmission Rate of the slow data set
Fast Tx Rate
Transmission Rate of the fast data set
Transmit Events
Enable to send all system events over telemetry
Channel Configuration
Allocate 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
Function
Description
Export Telemetry Config
Exports (excluding authentication) telemetry settings to a file
Import Telemetry Config
Imports (excluding authentication) telemetry settings from a file
Channels
The following channels are available to monitor the status of the system.
Channel
Description
Telemetry Provider Status
The connection status to the telemetry server
Telemetry Provider Error
The reason for connection failure on error
Telemetry Provider Raw Tx Bandwidth
The current uncompressed bandwidth being transmitted
Telemetry Provider Compressed Tx Bandwidth
The current compressed bandwidth being transmitted
Telemetry Provider Compression Ratio
The 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.
Setting
Description
Host
Enter the host from the below table based on the region configured in the device
Vehicle Name
Exact vehicle name entered during the activation step above
Password
The same password entered during the activation step above
Use SSL
Must be set to true when using official Emtron servers
Region
Host
Australia
telemetry-aus.emtronaustralia.com.au
North America
telemetry-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.
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.
Setting
Description
Enable
Globally activate/deactivate voice communications
Broadcast Priority
Speaking priority when there are multiple users. (0 = highest priority, 10 = lowest)
Push to Talk Condition
When the conditions are met, voice will be transmitted.
Once configured, ‘Write’ the config.
Functions
Function
Description
Push to Talk On
Forces push to talk on
Push to Talk Off
Forces push to talk off
Push to Talk Toggle
Toggles 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).
Event
Action
Push to Talk On
Forces push to talk on
Push to Talk Off
Forces push to talk off
Push to Talk Toggle
Toggles the push to talk state
Channels
The following channels are available to monitor the status of the system.
Channel
Description
Voice Connection Status
The connection status to the voice server
Voice Connection Error
The reason for connection failure on error
Voice Tx State
Shows either: Silent or Speaking
Voice Rx State
Shows 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.
Setting
Description
Host
Enter the host from the below table based on the region configured in the device
Vehicle Name
Exact vehicle name entered during the activation step above
Password
The same password entered during the activation step above
Use SSL
Must be set to true when using official Emtron servers
Priority
Your speaking priority when there are multiple users. (0 = highest priority, 10 = lowest).
Enable Push-to-Talk
If enabled, your voice will only be transmitted when the bound button is held down.
PTT Key
The configured push to talk key, click rebind to change this.
Enable Audio Playback
Uncheck this only if you want to be able to transmit, but not hear anything from others.
Region
Host
Australia
voice-aus.emtronaustralia.com.au
North America
voice-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:
Priority
Person
Best For
0-1
Driver, Race Engineer
Must speak first; critical communications
3-5
Regular technician, Supervisor
Normal priority
6-8
Support staff, Assistant
Lower priority
9-10
Observers, Remote listeners
Minimal speaking
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.
Setting
Description
Enable Text Communications
Globally activate/deactivate text communications
Display Name
Enter a name for your session in the chat. e.g. John. Must be unique per vehicle
Enter a name for your session in the chat. e.g. ‘John’. Must be unique per vehicle
Telemetry Vehicle Name
Exact vehicle name entered during the activation step above
Telemetry Password
The 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.
Setting
Description
Event
When this event occurs, the message will be sent
Message
The text at the start of the automated messages.
Append Channel Value
The 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.
Setting
Description
Pattern
The pattern you want, e.g. “#next-screen”.
Trigger Event
The 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.
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
Open Functions → Logging.
On the Groups tab, click Add Group.
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.
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
Setting
Description
Speed Channel
Source speed in km/h — required for distance integration
Arm Conditions
Conditions that must become true before a run can start
Start Conditions
Conditions that trigger the run start on a rising edge
Abort Threshold
Run is aborted if speed drops below this value (km/h)
Typical Setup
Arm when the vehicle is staged (for example, a staging light input or speed below 2 km/h).
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:
Marker
Distance
0–60 ft
Start line
60 ft
18.3 m
330 ft
100.6 m
1/8 Mile (660 ft)
201.2 m
1000 ft
304.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.
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.
Odometer
Functions → Odometer
The odometer function integrates a speed input to track total vehicle distance and up to four independent trip meters.
Configuration
Setting
Description
Speed Input (km/h)
Channel providing vehicle speed in km/h
Trip 1–4 Reset Event
Event 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:
Connect to the display.
Open Functions → Odometer.
Note the challenge code displayed on the page.
Contact Emtron support with the code to receive a reset password.
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.
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
Open Functions → Persistent Channels.
Click Add to add a channel to the persistent list.
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.
Timers
Functions → Timers
Timers produce a time value (seconds) on an output channel with configurable start, stop, and reset logic.
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
Mode
Behaviour
Never
Timer never auto-resets
On Timer Start
Time resets to 0 when the timer starts
On Timer Stop
Time resets to 0 when the timer stops
On Condition
Time 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.
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:
Turn CANopen on and optionally act as network master (NMT).
Optionally produce SYNC and heartbeat.
Define nodes (devices on the bus by node address).
On each node, define PDOs (process data objects) that either transmit (encode channels onto the bus) or receive (decode bus data into channels).
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
Open Communications.
Select the CAN bus you want to configure.
On Settings, enable CANopen.
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).
Setting
What it does
Enable
Turns the CANopen stack on for this bus. When off, no CANopen frames are sent or decoded on that bus.
Act as Network Manager
When 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 Producer
When 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 ID
Node 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:
Button
Action
Export
Saves this bus’s full CANopen configuration to a .canopen file (enable flags, SYNC/HB, all nodes and PDOs).
Import
Loads 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
Setting
What it does
Enabled
When 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 UI
Meaning
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
Setting
What 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).
Direction
Transmit (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 UI
Behaviour
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 / 10
Send 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 base
Node
CAN ID on the wire
0x200
1
0x201
0x180
4
0x184
0x280
10
0x28A
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
Setting
What it does
Input Channel
Channel whose live value is packed into the frame. Leave unassigned until you choose a channel.
Signed
Treat 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 Shift
Shift left after mask (for packing bit fields into a byte/word).
Multiplier
Physical 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 Count
Width: 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
Setting
What it does
Output Channel
Channel that receives the decoded physical value.
Signed
Sign-extend using the highest bit of the mask.
Mask (hex)
Bits kept after right-shift.
Right Shift
Shift right before mask (extract bit fields).
Multiplier
Physical value = raw / multiplier. Example: raw 505 with multiplier 10 → 50.5. Must not be zero.
Byte Index (0–7)
Starting byte in the payload.
Byte Count
1, 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)
Enable CANopen on the correct bus; set bit rate and termination as needed.
Turn on Act as Network Manager if this unit should start the network.
Add Node with the device’s node address; keep Enabled on.
Add TX PDO (default base 0x200 is often correct for RPDO1).
Add encode fields for enable, setpoint, etc., matching the device manual (byte layout, scaling).
Optionally Add RX PDO (base 0x180 for TPDO1) and decode status feedback into channels.
Optionally set heartbeat consumer on the node if the device produces heartbeats.
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 field
Value
Input channel
Your target speed channel
Signed
Off
Mask
0xFFFF
Left shift
0
Multiplier
10
Byte index
2
Byte count
2
Status channels
Per CAN bus index (1–4), the firmware publishes counters you can log or display:
Channel (pattern)
Meaning
CANopen n Tx Count
Number of CANopen frames transmitted on that bus instance.
CANopen n Rx Count
Matching CANopen frames received/processed (PDO/HB/EMCY etc., as counted by the stack).
CANopen n Rx Timeout Count
Timeouts: 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:
Function
Base (hex)
Full ID
NMT
0x000
Always 0x000
SYNC
0x080
0x080
EMCY
0x080
0x080 + node
TPDO1 (from device)
0x180
0x180 + node
RPDO1 (to device)
0x200
0x200 + node
TPDO2 / RPDO2
0x280 / 0x300
+ node
TPDO3 / RPDO3
0x380 / 0x400
+ node
TPDO4 / RPDO4
0x480 / 0x500
+ node
Heartbeat
0x700
0x700 + node
Always confirm against the device manual — some products use custom COB-IDs.
Troubleshooting
Symptom
Things to check
Nothing on the bus
CANopen Enable; correct CAN bus and bit rate; termination; config applied to the unit.
TX count not increasing
Node Enabled; PDO direction Transmit; at least one encode entry (payload may still send zeros).
RX channels stay stale
COB base + node address match the device; byte layout and multiplier; device is operational (NMT / power).
Heartbeat timeouts
Consumer period longer than the device’s heartbeat producer period; correct node address; master not required for HB decode.
Wrong values
Multiplier direction (encode ×, decode ÷); signed vs unsigned; little-endian byte order; mask/shift.
Import overwrote settings
Import replaces this bus’s CANopen section only — re-export a known-good .canopen backup before experimenting.
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
Stage
Typical use
Arm
Staging before the clock (switch, edge/level conditions, event, or Auto).
Start
Clock starts (start line event, green light, or conditions).
Finish
Clock stops. Prefer Event mapped to a Finish Beacon from a geo finish line under Locations & lines, or a dedicated finish event.
Abort
Condition, 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).
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
Role
Purpose
Reference
Live deltas while you race or stage. Circuit and drag engines load the selected run’s times and trajectory.
Review
Display-only: show a past run’s times on **Timing Review *** channels without changing live delta behaviour.
Set as reference
Select a finished run.
Set as reference.
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
Discipline
Duration / reference time shown
Circuit
Best lap time of the outing (not total race time).
Drag
Elapsed strip time (typically 1/4 mile).
Stage
Total 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.
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
Field
Description
Message
The text displayed on the alarm message channel.
Enabled
When 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
Field
Description
Auto Acknowledge
When 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 Event
An 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
Field
Description
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
Field
Description
Show Value From
A 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 Channel
A 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:
Channel
Content
Alarm Message
The message string of the highest-priority active alarm. Set to "No Alarms" when all alarms clear.
Alarm Value
The formatted value of the alarm’s “Show Value From” channel, e.g. "102.4 °C". Empty string if no value channel is set.
Alarm Priority
1-based index of the highest-priority active alarm. Set to (total alarms + 1) when all clear.
Alarm Begin
An event fired once when the system transitions from no active alarms to one or more active alarms.
Alarm End
An 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.
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.
Field
Description
Channel
The channel whose live value is read as the left-hand side (LHS) of the comparison.
Comparison
The operator to apply (see table below).
RHS
The right-hand side — either a fixed constant (# mode) or a second live channel (CH mode).
Comparison Operators
Name
Meaning
RHS needed
Always False
Always evaluates to false regardless of channel value.
No
Greater Than
LHS > RHS
Yes
Less Than
LHS < RHS
Yes
Equal
LHS == RHS
Yes
Not Equal
LHS ≠ RHS
Yes
Greater Than Or Equal To
LHS ≥ RHS
Yes
Less Than Or Equal To
LHS ≤ RHS
Yes
Always True
Always 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:
Colour
Meaning
Green
Condition is currently true.
Red
Condition is currently false.
Grey
No 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.
Operator
Meaning
AND
Both sides must be true.
OR
At least one side must be true.
NOR
Neither 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.
Gauges
Gauge Types Reference
This document provides comprehensive documentation for all gauge types available in the Emtron Displays.
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:
Static Content Phase
Rendered once or when screen changes
Text labels, backgrounds, static images
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
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
Make sure car is parked on a flat level surface.
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.
Once completed, G-Force Vertical should read close to 1.0G, while G-Force Lateral and G-Force Longitude should be 0.0G.
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.
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 %
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.
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
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
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.
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
Type
Examples
Integer
42, 0x2A (hex), 0b1010 (binary)
Float
0.5, .5, 1e-3, 2.5E+2
Boolean
true, false (stored as 1 / 0)
Line comments are supported: // everything after is ignored
Constants
Name
Value
PI
π
E
e (Euler’s number)
math.PI is also available as an alias for PI.
Arithmetic Operators
Operator
Description
Example
+
Addition
rpm + 500
-
Subtraction
temp - 20
*
Multiplication
load * 0.5
/
Division
fuel / 4
%
Modulus (remainder)
counter % 10
^ or **
Exponent
x ^ 2
Comparison Operators
Returns 1 (true) or 0 (false).
Operator
Description
==
Equal to
!=
Not equal to
<
Less than
>
Greater than
<=
Less than or equal to
>=
Greater than or equal to
Logical Operators
Operator
Description
&& or and
Logical AND
|| or or
Logical OR
! or not
Logical 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
Name
Description
timeDelta
Time 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.
totalTime
Accumulated time since the first evaluation after compile (or since the last Reset totalTime event). Used by gen.* and util.DistanceDelta.
previousResult
Output 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:
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.
Function
Description
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)
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
Function
Description
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.
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.
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:
Setting
Description
Default
Notes
Enabled
Enable this service
No
Must be enabled to poll
Service ID
OBD2 service number
-
0x01 = Current Data, 0x09 = Vehicle Info
PID Width
Bytes per PID
1 for 0x01 2 for others
Auto-detected
Batch PID Requests
Send multiple PIDs per request
No
Only for Service 0x01
PID Discovery
Auto-detect supported PIDs
Yes
Recommended for compatibility
TX Address
CAN transmit ID
0x7E0 (physical) 0x7DF (broadcast)
Physical for multi-PID
RX Address Start
Response CAN ID range start
0x7E8
Standard OBD2
RX Address End
Response CAN ID range end
0x7EF
Supports multiple ECUs
PID Configuration
For each PID you want to monitor:
Setting
Description
Example
Enabled
Poll this PID
Yes
PID
Parameter ID
0x0C = Engine RPM
Channel ID
Output channel
60100 (custom channel)
Byte Count
Data bytes for this PID
2 for RPM
Description
Human-readable name
“Engine RPM”
Decode Formula
Math expression to convert raw data
(A*256+B)/4
Status Monitoring
Status Channels
Monitor OBD2 system health through these channels:
Global Status
Channel
Description
Values
OBD2 Poll Rate
Complete polls per second
0-100 Hz
OBD2 Response Rate
Success percentage
0-100%
Per-Service Status (Service 1-8)
Channel
Description
Values
OBD2 Service N Status
Connection status
Disabled, Connected, No Response, PID Not Supported, Response Error
OBD2 Service N Response Code
Last error code
0 = OK, 0x11 = Not Supported, 0x12 = Invalid, 0x31 = Out of Range
OBD2 Service N Supported PIDs 0x00-0xE0
Bitmap of supported PIDs
Bitfield (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)
Automatically detect which PIDs your vehicle supports.
How It Works:
System queries PID 0x00 (supported PIDs 0x01-0x20)
System queries PID 0x20 (supported PIDs 0x21-0x40)
Continues for PID ranges: 0x40, 0x60, 0x80, 0xA0, 0xC0
Only polls PIDs that are marked as supported
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
PID
Description
Bytes
Formula
Unit
0x00
Supported PIDs 01-20
4
-
Bitmap
0x04
Calculated Load
1
A*100/255
%
0x05
Coolant Temp
1
A-40
°C
0x0A
Fuel Pressure
1
A*3
kPa
0x0B
Intake Manifold Pressure
1
A
kPa
0x0C
Engine RPM
2
(A*256+B)/4
RPM
0x0D
Vehicle Speed
1
A
km/h
0x0E
Timing Advance
1
(A-128)/2
°
0x0F
Intake Air Temp
1
A-40
°C
0x10
MAF Air Flow
2
(A*256+B)/100
g/s
0x11
Throttle Position
1
A*100/255
%
0x1F
Runtime Since Start
2
A*256+B
seconds
0x20
Supported PIDs 21-40
4
-
Bitmap
0x2F
Fuel Tank Level
1
A*100/255
%
0x33
Barometric Pressure
1
A
kPa
0x40
Supported PIDs 41-60
4
-
Bitmap
0x42
Control Module Voltage
2
(A*256+B)/1000
V
0x46
Ambient Air Temp
1
A-40
°C
0x5C
Engine Oil Temp
1
A-40
°C
0x60
Supported PIDs 61-80
4
-
Bitmap
Service 0x09 Common PIDs
PID
Description
Bytes
Notes
0x00
Supported PIDs
4
Bitmap
0x02
Vehicle Identification Number (VIN)
17
ASCII string
0x04
Calibration ID
Variable
ASCII string
0x0A
ECU Name
Variable
ASCII string
Troubleshooting
Connection Issues
“No Response” Status
Symptoms: Status shows “No Response” or never connects
Causes:
Vehicle not in RUN or ENGINE ON mode
Incorrect CAN bus connection
Wrong CAN bitrate (should be 500 kbps for OBD2)
CAN termination issues
Solutions:
Verify vehicle ignition is ON
Check physical CAN bus wiring (CAN-H and CAN-L)
Confirm CAN bitrate: 500 kbps or 1 Mbps
Check CAN termination (120Ω between CAN-H and CAN-L)
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:
Vehicle doesn’t support the requested PID
Service not available on this vehicle/ECU
PID configuration error
Solutions:
Enable PID Discovery to auto-detect supported PIDs
Check vehicle OBD2 compliance level
Try Service 0x01 PIDs first (universal)
Verify PID byte count matches specification
Some vehicles only support basic PIDs (0x00-0x20)
Low Poll Rate
Symptoms: OBD2 Poll Rate < 1 Hz, data updates slowly
Passive Scanning: This module only reads data, never writes
Standard Compliant: Follows SAE J1979 and ISO 15765-2 specifications
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
Term
Definition
ECU
Electronic Control Unit - vehicle computer that manages engine/systems
PID
Parameter ID - specific data point (e.g., RPM, temperature)
ISO-TP
ISO 15765-2 Transport Protocol - multi-frame message handling
SAE J1979
Standard defining OBD2 diagnostic protocols
UDS
Unified Diagnostic Services (ISO 14229) - extended diagnostics
DTC
Diagnostic Trouble Code - stored fault code
Freeze Frame
Snapshot of parameters when fault occurred
Bitmap
32-bit field where each bit indicates support for a PID
Multi-PID
Requesting multiple parameters in single message
Physical Addressing
Direct 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:
Check system logs for detailed error messages
Review CAN bus statistics for communication issues
Verify configuration against examples in this guide
Test with minimal configuration first (basic PIDs)
Revision History
Version
Date
Changes
1.0
2025
Initial release
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.
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.
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
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
Setting
Description
Enabled
Turns 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.
Input
Description
Units
Drive Speed
Speed from the vehicle ECU or CAN bus
kph
GPS Speed
Speed from the GPS receiver
kph
Front-Left Wheel Speed
Individual wheel speed sensor
kph
Front-Right Wheel Speed
Individual wheel speed sensor
kph
Rear-Left Wheel Speed
Individual wheel speed sensor
kph
Rear-Right Wheel Speed
Individual wheel speed sensor
kph
Longitudinal Acceleration
Forward/backward acceleration from IMU
m/s²
Vertical Acceleration
Up/down acceleration from IMU
m/s²
Pitch Rate
Nose-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.
Setting
Description
Front-Left Driven
Enable if this wheel is driven
Front-Right Driven
Enable if this wheel is driven
Rear-Left Driven
Enable if this wheel is driven
Rear-Right Driven
Enable 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.
Parameter
Default
Description
GPS Speed Trust
1.0 kph
How much variation is expected in the GPS speed reading
Drive Speed Trust
0.5 kph
How much variation is expected in the drive speed from the ECU/CAN
Wheel Speed Trust
0.3 kph
How much variation is expected in wheel speed readings
Speed Responsiveness
1.0 kph
How freely the fused speed estimate can change between updates — increase if output lags, decrease if output is jittery
Vertical Accel Trust
3.0 m/s²
How closely vertical acceleration tracks expected gravity — higher values allow more pitch angle variation
Slip Detection
Parameter
Default
Description
Slip Gate
10.0 kph
Maximum 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 Threshold
3.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
Symptom
Adjustment
Fused speed lags behind actual speed
Increase Speed Responsiveness
Fused speed is jittery or noisy
Decrease Speed Responsiveness, or increase the trust value for the noisiest sensor
Wheel slip not being detected
Decrease Acceleration Slip Threshold
Valid readings incorrectly rejected during acceleration
Increase Slip Gate
GPS signal is unreliable (tunnels, urban areas)
Increase GPS Speed Trust to reduce GPS influence
Drive speed source has noticeable latency
Increase 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
Problem
Likely Cause
Solution
No fused speed output
Speed Fusion is disabled, or no sensor channels are configured
Enable Speed Fusion and verify at least one speed input is assigned
Fused speed lags actual speed
Speed Responsiveness is too low
Increase Speed Responsiveness
Fused speed is jittery
Sensor trust values are too low (over-trusting noisy sensors)
Increase trust values for noisy sources
Wheel slip not detected
Acceleration Slip Threshold is too high
Decrease Acceleration Slip Threshold
Valid measurements rejected
Slip Gate is too tight
Increase Slip Gate
Pitch angle appears incorrect
IMU sensor orientation or calibration issue
Verify accelerometer and gyroscope channel assignments and sensor mounting
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.
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.
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
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.
Predefined line types will output specific events:
Click the Pick Position button for Lat A / Long A.
Click the position in the map window for the lines A position.
Click the Pick Position button for Lat B / Long B.
Click the position in the map window for the lines A position.
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.
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
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.