Scaling & Maps
Applies to: IOcan · Standalone controller. What this means
Many inputs read a raw value (a voltage, a frequency, a CANbus signal) that must be converted into a meaningful engineering value (°C, bar, rpm…). There are two ways to do that conversion, from simplest to most flexible.
Two-point interpolation
The simplest conversion is a straight line defined by two points: a low point and a high point. You give the raw value and the engineering value at each end, and everything in between is linearly interpolated:
output = out_min + (raw - in_min) * (out_max - out_min) / (in_max - in_min)
- In min → Out min and In max → Out max define the line.
- Values between the points are interpolated; values outside can be clamped (saturated) or extrapolated, depending on the input's settings.
Two-point interpolation is built directly into analog inputs and CAN bus inputs via their in/out scaling fields. Use it whenever the sensor is linear — for example a 0.5–4.5 V pressure sensor reading 0–10 bar.
On an analog input the In side is in volts. Turning interpolation off skips this conversion entirely and the channel reports a 0–1024 proportion of its Range instead — which is what you want when a Map Input is going to do the scaling. See how an analog reading becomes a value.
Multi-point scaling
When a sensor is non-linear (e.g. an NTC temperature sensor), two points are not enough. Use a Map Input: a 1D lookup table of raw value → output value with as many points as you need, interpolated between points along the curve. Feed the raw input into the Map Input and reference the Map Input's output as your scaled channel.
The matching Map Output applies the same kind of 1D lookup on the way to an output.
Editing a map
- Enter the raw value on the X axis and the engineering value as the output.
- Keep X values strictly increasing. Nothing enforces this — an out-of-order table does not fault, it returns confidently wrong numbers.
- Add points where the curve bends; a straight section needs only its two ends.
- Values outside the table are clamped to the first or last output, not extrapolated.
- The arithmetic is integer. Work the output column in tenths or hundredths where you need a decimal place.
The map's interpolation is always linear between breakpoints; there is no interpolation type to choose.