ReferenceDevice driversNational InstrumentsCounter read task

NI counter read task

Learn how to acquire counter data from NI devices with Synnax.

This task follows the standard task lifecycle.

Task configuration reference

Parameter Type Required Default Description
sample_rate number 10 Samples per second (Hz), determined by module
stream_rate number 5 Rate data is streamed to Synnax (Hz), must be ≤ sample_rate
channels array - List of counter input channel configurations

Channel types reference

Frequency (ci_frequency)

Measures the frequency of digital pulses.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
min_val number 2 Minimum frequency
max_val number 100 Maximum frequency
units enum Hz Hz, Ticks
edge enum Rising Rising, Falling
meas_method enum DynamicAvg LowFreq1Ctr, HighFreq2Ctr, LargeRng2Ctr, DynamicAvg
meas_time number 0.000006 Measurement time (seconds), used with HighFreq2Ctr
divisor number 4 Integer divisor, used with LargeRng2Ctr
terminal string - PFI terminal for signal routing
custom_scale object - Custom scaling

Edge count (ci_edge_count)

Counts rising or falling edges on a digital signal.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
active_edge enum Rising Rising, Falling
count_direction enum CountUp CountUp, CountDown, ExternallyControlled
initial_count number 0 Starting count value
terminal string - PFI terminal for signal routing

Period (ci_period)

Measures the time between edges of a periodic signal.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
min_val number 0.000001 Minimum period
max_val number 0.1 Maximum period
units enum Seconds Seconds, Ticks
starting_edge enum Rising Rising, Falling
meas_method enum DynamicAvg LowFreq1Ctr, HighFreq2Ctr, LargeRng2Ctr, DynamicAvg
meas_time number 0.001 Measurement time (seconds), used with HighFreq2Ctr
divisor number 4 Integer divisor, used with LargeRng2Ctr
terminal string - PFI terminal for signal routing
custom_scale object - Custom scaling

Pulse width (ci_pulse_width)

Measures the width of pulses in a digital signal.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
min_val number 0.000001 Minimum pulse width
max_val number 0.1 Maximum pulse width
units enum Seconds Seconds, Ticks
starting_edge enum Rising Rising, Falling
terminal string - PFI terminal for signal routing
custom_scale object - Custom scaling

Semi period (ci_semi_period)

Measures the half-period of a periodic signal.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
min_val number 0.000001 Minimum semi-period
max_val number 0.1 Maximum semi-period
units enum Seconds Seconds, Ticks
terminal string - PFI terminal for signal routing
custom_scale object - Custom scaling

Two edge separation (ci_two_edge_sep)

Measures the time between two different edges of a signal.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
min_val number 0.000001 Minimum separation time
max_val number 1 Maximum separation time
units enum Seconds Seconds, Ticks
first_edge enum Rising Rising, Falling
second_edge enum Falling Rising, Falling
first_terminal string - PFI terminal for first edge signal
second_terminal string - PFI terminal for second edge signal
custom_scale object - Custom scaling

Velocity linear (ci_velocity_linear)

Measures linear velocity using a quadrature encoder.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
min_val number 0 Minimum velocity
max_val number 1 Maximum velocity
units enum m/s m/s, in/s
decoding_type enum X4 X1, X2, X4, TwoPulse
dist_per_pulse number 0.001 Distance traveled per encoder pulse
terminal_a string - PFI terminal for encoder A signal
terminal_b string - PFI terminal for encoder B signal
custom_scale object - Custom scaling

Velocity angular (ci_velocity_angular)

Measures angular velocity (rotational speed) using a quadrature encoder.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
min_val number 0 Minimum angular velocity
max_val number 1 Maximum angular velocity
units enum RPM RPM, Radians/s, Degrees/s
decoding_type enum X4 X1, X2, X4, TwoPulse
pulses_per_rev number 24 Number of encoder pulses per revolution
terminal_a string - PFI terminal for encoder A signal
terminal_b string - PFI terminal for encoder B signal
custom_scale object - Custom scaling

Position linear (ci_position_linear)

Tracks linear position using a quadrature encoder.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
units enum Meters Meters, Inches, Ticks
decoding_type enum X4 X1, X2, X4, TwoPulse
dist_per_pulse number 0.000001 Distance traveled per encoder pulse
initial_pos number 0.0 Starting position
terminal_a string - PFI terminal for encoder A signal
terminal_b string - PFI terminal for encoder B signal
z_index_enabled boolean false Enable Z-index signal
z_index_val number 0 Position value when Z-index pulse occurs
z_index_phase enum AHighBHigh AHighBHigh, AHighBLow, ALowBHigh, ALowBLow
terminal_z string - PFI terminal for Z-index signal
custom_scale object - Custom scaling

Position angular (ci_position_angular)

Tracks angular position (rotation angle) using a quadrature encoder.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
units enum Degrees Degrees, Radians, Ticks
decoding_type enum X4 X1, X2, X4, TwoPulse
pulses_per_rev number 24 Number of encoder pulses per revolution
initial_angle number 0.0 Starting angle
terminal_a string - PFI terminal for encoder A signal
terminal_b string - PFI terminal for encoder B signal
z_index_enabled boolean false Enable Z-index signal
z_index_val number 0 Angle value when Z-index pulse occurs
z_index_phase enum AHighBHigh AHighBHigh, AHighBLow, ALowBHigh, ALowBLow
terminal_z string - PFI terminal for Z-index signal
custom_scale object - Custom scaling

Duty cycle (ci_duty_cycle)

Measures the duty cycle of a periodic signal.

Parameter Type Required Default Description
channel number - Synnax channel key
device string - Device identifier
port number - Counter port (0-indexed)
min_val number 2 Minimum duty cycle frequency
max_val number 10000 Maximum duty cycle frequency
active_edge enum Rising Rising, Falling
terminal string - PFI terminal for signal routing
custom_scale object - Custom scaling

Important rules

  • One task per module -> Only one running task can claim a module at a time.
  • Unique ports -> A counter port can appear only once in a task.
  • Stream rate -> For sample rates under 50 Hz, set the stream rate equal to the sample rate. Above that, keep the stream rate under 50 Hz.

How-to