Deadzone

Deadzone blanks a band around zero and passes everything outside it.
3.30–3.34

Deadzone blanks a band around zero and passes everything outside it. Use it to stop a machine reacting to a signal that is close to but not exactly zero — a noisy force reading, a joystick at rest — or to simulate backlash in a mechanism.

Outside the band the output is shifted inward by the band’s width, not passed through unchanged. That keeps the output continuous at the band edge: the signal leaves zero smoothly instead of jumping.

flowchart LR
    i1(["input — signal to blank"]) --> B["Deadzone"]
    B --> o1(["output — blanked and shifted signal"])

Inside ±amplitude the output is 0. Outside it, the output is the input minus amplitude in the direction of travel — so an input of twice the amplitude gives an output of one amplitude, not two. The output is continuous at the band edge and passes through zero without a step.

This block has no enable, no disable and no isEnabled. It is always running. Set amplitude to 0 to pass the signal through untouched, which is the default. It is single channel.

Signals

Inputs

Path Unit Range Description
input signal unit unbounded The signal to blank. A single value, not an array.

Outputs

Path Unit Description
output signal unit Zero while the input is inside the band; outside it, the input shifted toward zero by amplitude. A single value. It never lags — the output depends only on this cycle’s input.

Parameters

Path Unit Default Range Effect
amplitude signal unit 0.0 any; used as its magnitude Half the width of the band. 0 passes the signal through unchanged. A negative value behaves as its positive equivalent. Not checked.

amplitude is persistent and survives a controller restart. No parameters exist below this block.

Setup

  1. Trace input with the machine at rest and note how far it wanders from zero. That wander is what you are blanking.

  2. Set amplitude a little above that. Confirm output sits at exactly zero with the machine at rest.

  3. Move the machine slowly and confirm output leaves zero smoothly, with no jump at the moment it starts moving.

    Step 3 is what distinguishes this from a threshold. If the output jumps, you are looking at the wrong block — this one is continuous at the band edge by construction.

  4. Move the machine to a known value well outside the band and check the output. It should read the input minus amplitude, not the input. That offset is normal.

Tuning

  1. Set amplitude from the measurement in Setup step 1, not by feel. It is the noise floor of your signal.
  2. Raise it until the machine stops reacting at rest, and no further. Every increase also shifts the signal outside the band by the same amount.
  3. Check the offset at your normal working amplitude. If the dead zone is a large fraction of the signal you care about, the shift is a real gain error — reduce the dead zone or compensate downstream.
  4. If you need the signal outside the band passed through unshifted, this block cannot do it. Use a comparison and a switch instead.
  5. Nothing here needs re-checking after a task-rate change.

Output against input at three dead-zone amplitudes: amplitude 0 passes thesignal through unchanged, and amplitudes 0.5 and 1.0 flatten the middle andshift the two outer branches inward.

Read the band width off the flat section, and the shift off the horizontal offset of either sloped branch.

Symptom Cause Action
The machine still creeps at rest amplitude below the signal’s noise floor Raise it, per Setup steps 1 and 2
The output is smaller than the input by a constant Expected: the output is shifted inward by amplitude Compensate downstream, or reduce the dead zone
The output jumps as the signal leaves the band Not possible — this block is continuous at the band edge Check you are looking at this block’s output
The output stays at zero no matter what amplitude is larger than the signal ever gets Lower it
Nothing is blanked at all Expected: amplitude defaults to 0 Set an amplitude
A negative amplitude behaved like a positive one Expected: the magnitude is used Write a positive value for clarity
The output reads zero when the input is not a number Expected: a non-numeric input falls inside the band and gives zero Fix the source — note this block will hide such a value from anything downstream
You cannot switch the block off Expected: there is no enable Set amplitude to 0, which is an exact pass-through
You need this on several channels Not possible — this block is single channel Use one instance per channel
The gain of the signal changed after adding the dead zone Expected: the shift is a constant offset, which looks like a gain change on a small signal Size the dead zone against your working range

A starting point for blanking a force reading whose noise floor is about 0.3 N:

amplitude = 0.5

Limits and errors

Limit Set by What happens Reported
amplitude Nothing Not checked. Any finite value is accepted and used as its magnitude. 0 is an exact pass-through Not reported
output Nothing Unbounded — whatever the input carries, less the band width, reaches the output. Limit it downstream if the consumer needs a bound Not reported
Output continuity Fixed Continuous at both band edges by construction. The slope changes there, but the value does not jump Not applicable
Signal offset Fixed Everything outside the band is shifted toward zero by amplitude. This is the design, not a fault Not reported
Non-numeric input Fixed Falls inside the band and produces zero, so this block silently hides a non-numeric value from anything downstream Not reported
Block state None The block has no memory. Nothing survives a stop and there is nothing to reset Not applicable
Channel count Fixed One channel per instance, always Not reported

The block raises no errors or warnings and logs nothing. Every failure above shows as a value on a trace, not as a message.


Verified against motorcortex-control3 3.30.0 (bc348fd).