FuelTech ManualsGlossarySearch

13. Troubleshooting and common errors

Version 1.1Software: FuelTech Vision 3.0Products: FT700, FT470, VisionFT2026-10-13

Each table gives the symptom, the cause and what to do. Find the table for the closest topic and look for your symptom in its first column. The times in ms and the time constants in this chapter apply to the nominal 1 ms cycle of the function, which can vary with the processor load.

When a function "does nothing", check in this order:

  1. Memory: are the RAM and Settings bars of the meter below the limit?
  2. Is the function enabled?
  3. Do all inputs have a link, and does the drawing have no feedback loop?
  4. Does the output have a pin assigned on the Outputs screen?
  5. What is the VCU doing, in the log or on the panel?

#The function does nothing

SymptomCauseWhat to do
Custom Functions memory exceeded dialog when writing, or a memory-exhausted warning from the VCUThe 10 functions share 512 bytes of working memory and 2048 of configuration. Above the limit, no function of the map runs.Read RAM and Settings on the meter. Delete blocks or reduce the Points of the Average filter. Splitting into another function does not help: the limit is for the whole map.
Memory: 100% and Confirm works normallyThe percentage is the larger of RAM and Settings and never goes above 100%. Confirm does not check memory: the check happens when writing to the VCU.Read the "used / total" numbers: they show the real value. The color turns amber above 75% and red above 90%.
I changed a value on the User screen and the VCU did not changeConfirm writes only to the map open in FuelTech Vision and sends nothing to the VCU.Write the map to the VCU with the Write button in the top bar. Saving the map file is a separate step (User screen chapter).
Function drawn but does not run; its item in the side menu is dimmedA disabled function is not written to the VCU and does not count toward memory. Its screen still opens.Right-click the item and use On / Off, or turn the function on in Map options.
On/off output, PWM output or Analog output 0-5V configured and nothing comes out on the pinThe block chooses an output function, not a pin. Without that function assigned to a pin on the Outputs screen, the block stays silent, with no warning.Assign the function to a pin on the Outputs screen. The analog one goes on the Analog Outputs screen, as Analog output #1 to #4. A function occupies only one pin.
Memory within the limit and the drawing apparently right, but part of the function does not act, including actions and outputsA link goes back to an earlier block (a feedback loop). The editor accepts it with no warning; those blocks and their dependents do not go to the VCU.Redo the drawing with no return. State to remember goes inside a block with its own memory, such as Hysteresis, SR Latch or EMA filter.
A block outputs 0 and seems to ignore the signalAn input with no link is 0, with no warning on the screen. Exceptions: Enable of the Counter (counts as on) and Set value of the SR Latch (counts as 1).Check each input. The P, I and D gains of the PID with no link are 0. With no link, the limit of the Limiter and of the Hysteresis, the time of the Delay and the Anti windup of the PID use the parameter.
After writing the map, Hysteresis, SR Latch and filters start again from zeroOn every write all internal state goes back to 0, and execution pauses while the map is received. The Hysteresis does not calculate its state from the input.The Hysteresis only turns on when the input reaches the upper limit. Expect the initial state to be off when testing.
VCU value always reads 0Some channels in the list do not receive a value: Processor temperature, VCU Time (two channels with this name), VCU Date, Odometer and Hourmeter, totals and trips.Choose another channel. On the FT470, analog inputs 28 to 36 also read 0.
Alert icon on the VCU value with the text This measure has no input configured in the map.The measure comes from an input and nothing feeds it: no configured input, no Value for VCU of an enabled function, and no VCU reporting.Configure the input in the map, write the measure with Value for VCU in an enabled function, or choose another measure.
The output acts with the engine stopped and the ignition onThe function does not check the engine, the RPM or cranking: it runs whenever the VCU is on and the function is loaded.If the output must not act with the engine stopped, put the RPM condition in the drawing.
VCU action changes nothing, or applies 0The None action does nothing. The value is limited between Minimum and Maximum, which the editor creates at 0.Check Action, Minimum and Maximum. With both at 0, a compensation changes nothing and a replacement applies 0 all the time (VCU action sheet).
Ignition timing or ETC opening limit in the VCU action has no effect in certain situationsThe replacement actions have a fixed priority, with no field in the block. Ignition timing loses to 3-step, 2-step, burnout and gear shift; ETC opening limit loses to boost control by ETC, Time based compensations and Push to Pass (P2P).Check whether one of these functions is active at that moment (full list in the Output blocks chapter). Compensation actions do not compete: they add up.

#The value is wrong (logic, selection and tables)

SymptomCauseWhat to do
Division gives 0 with no warningMath operation returns 0 when the divisor is 0, including with Data 2 with no link. An invalid value (NaN) passes along.Check the source of Data 2. Do not expect a warning: the VCU does not warn about division by zero or an invalid value.
Logic turns on with a small analog signalTrue is any input greater than 0: 0.3 is already true and negative is false. The output is always 0 or 1; it does not pass the value on.Compare the signal with the limit first, using Switch or Hysteresis.
Switch with a fixed result after changing the ModeThe screen only disables the limit socket the mode does not use: it does not move the link. The limit that is read has no link and is 0.After changing the Mode, connect the link to the socket the new mode reads: Upper limit or Lower limit.
Deadband delivers less than the input outside the bandOutside the band the output is the input minus the limit: a band of −1 to 1 and input 3 give 2. Inside the band, 0.To zero inside and keep the whole value outside, add the band back or use Switch.
Multiplexer picks the previous channelThe selector is truncated, not rounded: 0.99 picks Channel 1. A selector below 0 or above 3 stays stuck on Channel 1 or Channel 4.Make sure the selector is an exact integer. To pick by value range, use Band multiplexer.
Band multiplexer with selector 1 picking Channel AThe defaults are A from 0 to 1, B from 1 to 2, C from 2 to 3 and D from 3 to 4, with the edges included. In an overlap, A wins, then B, C and D.Narrow the ranges: A from −0.5 to 0.5, B from 0.5 to 1.5 and so on. A range with a minimum greater than the maximum is off, with no warning.
Limiter zeroes or saturates the signalThe default is Minimum Value 0 and Maximum Value 100. With the minimum greater than the maximum, the output is always the maximum. An input with no link gives 0.Adjust the two values to the size of the signal. A link on the Min or Max socket replaces the parameter.
Table or Vector returns a wrong value or a stepThe axes must be strictly increasing. The table warns in red, the vector does not. Repeated axes give a step, and a new table returns 0.Fix the axes. Outside the range, in Mode, Clamp holds the end value and Extrapolation extends the line.

#The value is wrong (control, units and channels)

SymptomCauseWhat to do
I limited ETC opening limit to 50 and the pedal at 30% opens only 15%The action is not a ceiling: it scales the target. Final target = target × maximum ÷ 100.Calculate the target with this scale and check the result in the log.
PID pushes the error instead of correcting itThe error is Data − Target: positive when the data goes past the target. In the D term, the change is calculated as previous error minus current error.Check what is in Data and in Target and the sign of the gains. If more output increases the data, P and I must be negative.
PID with no output limitThe PID has no output limit, enable or reset. The integrator always accumulates, up to the Anti windup (±value).Put a Limiter on the output. The Anti windup limits only the integral part.
A limit or calculation does not match the panel (psi, °F, mph)VCU value delivers the stored value, without converting to the screen's unit. MAP comes in bar, temperatures in °C and speed in km/h.Convert inside the function and check in the log the value read before fixing constants.
A value written with Value for VCU comes out different on a button or integer channelThe block writes the number in floating point, without converting to the channel's type. The value read on an integer or on/off channel may not be the one written.For ordinary values, write to a Custom measurement. On a button or integer, test on the panel and in the log before using it.
Map warning on Confirm: the measure "is also written by Custom Function"A measure on an analog input and written by Value for VCU: the sources compete for the channel, and the value uses the sensor's unit (in psi, multiplied by 14.5038).Remove the measure from this input or use another free Custom measurement. A physical or CAN owner of the channel can also overwrite the value.

#The timing is wrong

SymptomCauseWhat to do
A Delay that should last milliseconds lasts seconds or minutesDelay time (s) is in seconds: 50 typed meaning milliseconds is 50 s. The editor limits the field to 0.001 to 60; a larger value only arrives through an imported file.Type seconds: 50 ms is 0.05. Review the Delay blocks of imported functions.
Delay does not shift a value: the output is only 0 or 1Delay only delays on/off: any input greater than 0 counts as on. The block delays the change of state of an on/off signal.No block in the catalog shifts a value in time. Use Delay only to delay turning on or off.
Delay delays the rise, but you wanted to delay the turn-offThe default Mode is On-Delay, which delays only when the input turns on. Off-Delay delays when it turns off; Both delays both.Choose Off-Delay to delay the turn-off.
Cyclic timer pulses non-stop, or the output is not 0 and 1The block has no turn-on or reset input: it runs from loading. The output is the value of Data on or Data off, not 0 and 1.Connect 1 and 0 to the data inputs to get pulses. To stop the timer, block the output with Switch or Logic.
Ramp fires once and does not rearmIt rearms only after finishing and with the trigger below Rearm below:. The default is 0: a trigger that goes from 0 to 1 is never below 0.For a 0/1 trigger, set Activate above: below 1 and Rearm below: above 0, for example 0.5 in both.
Counter stops counting and does not return to 0It saturates at Maximum count (default 9999). In decreasing mode it counts from 0 to the negative of the maximum. Reset acts by level.Use the Reset input to zero it. While Reset is high, nothing is counted.
PID reacts stronger or weaker than the typed gainsLoop time (ms) is not the period: the block runs on every cycle (1 ms), and the value works as a time scale. Real Ki = Ki × value; real Kd = Kd ÷ value. The default is 100.With Loop time (ms) at 1, Ki is in "per second" and Kd in seconds.

#Noise and instability

SymptomCauseWhat to do
Derivative gives spikes and zerosIt calculates the difference between two 1 ms cycles, with no window. A signal that changes in steps gives 0 almost always and a spike when it changes.Filter the signal before differentiating, with EMA filter, Low pass filter or Average filter.
Derivative with Filter factor near 1 barely filtersThe factor weights the new sample, at each 1 ms cycle. At 0.975 the time constant is 0.27 ms; at 0.95, 0.33 ms. At 0 and at 1 the filter is off.To filter more, lower the factor: 0.15 gives 6.15 ms and 0.05 gives 19.5 ms. Formula: −1 ms ÷ ln(1 − factor).
EMA filter does not filter, or the output stays stuck at 0Alpha also weights the new sample per 1 ms cycle: 0.005 gives 199.5 ms and 0.5 gives 1.44 ms. Alpha 1 does not filter; Alpha 0 holds the output at 0.Choose Alpha from the time constant: −1 ms ÷ ln(1 − Alpha).
Average filter uses a lot of memoryThe block's working memory is 12 + 4 × Points bytes: 76 with 16 points and 140 with 32. The window is per cycle: 32 points are 32 ms.Reduce Points or use EMA filter, which uses 8 bytes of working memory.
Low pass filter returns the signal unfilteredWith Q factor at 0, or Cutoff frequency at 0 Hz or less, the output is the input. Q factor between 0 and 1 mixes filtered and raw signal.Use Q factor 1 for a pure filter. The filter is first order.
The output turns on and off rapidly near the limitSwitch and Logic compare without hysteresis: with the signal oscillating around the limit, the output follows.Use Hysteresis: it turns on at Upper limit or above and off at Lower limit or below. Inverted limits become a simple comparator.
PWM output with Frequency connected to a varying signalOn pins A, B and C the channel is reinitialized at each frequency change; changing only the Duty does not reinitialize. The frequency is truncated to whole Hz, and 0 becomes 4 Hz.Keep the frequency constant with Fixed value and vary only the Duty.

#When importing, exporting and sending

SymptomCauseWhat to do
I imported a .ftcf and the function that was open disappearedImport erases the blocks and links of the open function and applies the file, without asking for confirmation. Import and Export show no success or error message.Open the right function before importing. To keep the current function, use Export first. Confirm the result by looking at the function.
Imported or opened function with blocks missingThe limit is 128 blocks and 256 links per function, applied only when importing and when opening the map: the excess is cut with no warning on the screen. The editor does not enforce the limit.Keep each function below 128 blocks and 256 links. Count the blocks after importing.
After importing, the function asks for a passwordThe .ftcf carries the embedded password lock, and the import applies it without asking. There is no export without the lock.Use the password of the person who created the file. To deliver without a lock, remove the password before exporting: this requires the current password.
Custom function: invalid block type warningThe VCU does not recognize the type of one of the blocks: the firmware is older than the map. No function of the map runs.Update the VCU firmware or remove the block.
Red banner The ECU reported an error in this workspace and a ! badge on a blockThe VCU reported an error when loading the function. Clicking the badge clears the error.Hover over the badge and read the tooltip. Only then click Clear or the badge.
A block's live value in the editor differs from the logThe PC simulates the graph with the PC clock, and the simulation does not reproduce every block (for example Counter, Maximum value detector and Average filter).Confirm the behavior in the log or on the panel. Blocks with time can also diverge from the VCU.

#In the editor, on the user screen and in the password

SymptomCauseWhat to do
I cannot connect a linkEach input accepts only one link, and the two sockets must belong to different blocks. An invalid connection does not stick and shows no message.Release the link from the occupied input by dragging its end to an empty area, and connect again. One output can feed several inputs.
The User screen shows No fields configured for display.A block's field starts out hidden.Check Show in the block's gear, under Block settings.
The function asks for the password again after Cancel, pasting blocks or importingThe unlocked state is not saved: it goes back to locked whenever the screen reloads the map data.Type the password again and use Unlock.
I lost the editing passwordThere is no way to reset or show the password: the file keeps only a digest (hash) of it. The User screen keeps working.Rebuild the function from a copy with no password. Keep that copy before protecting the function.

#Before asking for help

Gather these items before contacting support:

  1. The map (.ftmap) with the function.
  2. The .ftcf file of the function (use Export), if the problem is in one particular function.
  3. A log recorded with this map, at the moment of the problem. The log already carries the embedded map.
  4. The FuelTech Vision version and the VCU firmware version, both, and whether the VCU is an FT700 or an FT470.
  5. The function number (1 to 10), the name of the block with the problem and the RAM and Settings reading on the meter, in bytes.
  6. The exact text of any warning: box, red banner or the tooltip of the ! badge.
  7. What you expected, what happened, and the channel and value where you saw the difference.