Programmer’s Handbook

Contents

Programmer’s Handbook#

Tip

Please refer to the User Manual for a general description of instrument’s operation, measurement principles and concepts.

Document revision: 3.

This manual describes methods of remote control and monitoring of the following equipment:

CNT-102 | CNT-104S | CNT-104R | FTR-210R.

This manual targets Firmware release v1.4.1 and higher.

What is SCPI?#

SCPI (Standard Commands for Programmable Instruments), commonly pronounced ‘skippy’ is a standardized set of text-based commands used to remotely control programmable test and measurement instruments. It defines the syntax and semantics that a controller must use to communicate with the instrument. This manual is an overview of SCPI and shows how SCPI is used in CNT/FTR devices. SCPI is based on IEEE-488.2 to which it owes much of its structure and syntax.

Syntax and style#

Syntax of Program Messages#

In SCPI all messages that you can send to an instrument are divided into two categories: commands (that do not imply getting any response) and queries (that allow to get response back from the instrument). Queries have a question mark (‘?’) at the end of command header.

A command or query is called a program message unit. A program message unit consists of a header followed by zero or more parameters:

<header> [parameter [,parameter ,...]]

For example, in the query

FETCH:ARRAY? MAX, A

FETCH:ARRAY is the header and MAX and A are parameters.

One or more program message units (commands) may be sent inside a simple program message:

<program message unit>; <program message unit>; <program message unit>...

For example,

:INIT; *OPC?

Common Commands#

The SCPI standard defines a set of commands that every instrument must support. The common command header starts with the an asterisk (*), for example *RST.

SCPI Commands Tree#

SCPI command headers may consist of several keywords (mnemonics), separated by colons (:).

_images/scpi_nodes.png
Each keyword in a SCPI command header represents a node in the SCPI
command tree. The leftmost keyword is the root level keyword,
representing the highest hierarchical level in the command tree.
The keywords following represent subnodes under the root node.

Example: :SYST:CONF "SampleInterval=15ms"

In this example the first colon (:) refers to the root of the tree. Next, SYST refers to an item under root, and CONF refers to an item under SYST.

SCPI commands syntax description used in this manual#

Short and long forms#

According to SCPI each command header can have a short and long form. In order to distinguish both forms in command syntax description, upper and lower case characters are used. Note, that SCPI is case-insensitive, the usage of upper and lower case characters is done solely for the purpose of syntax definition. You may even mix upper and lower case. There is no semantic difference between upper and lower case in program messages. Same applies to parameters - they may have short and long forms.

Example 1. Let’s consider this syntax description: SYSTem:CONFigure <parameters>
Here, SYST and CONF specify the short form, and SYSTem and CONFigure specify the long form. It means that the instrument will accept the following command headers: syst:conf, SYST:CONF, SYSTEM:CONFIGURE, SYST:CONFIGURE or even sYstEm:cOnFiGuRE. However, SYSTE or CONFIG headers are not allowed and will cause a command error, because they refer to neither short or long form.

Example 2. Let’s consider this syntax description :FORMat[:DATA] <format>, where <format> is one of ASCii, REAL or PACKed. Such argument syntax indicates that the argument may be specified as: ASCII, ASC, asc, REAL, real, PACKED, pack, PACK.

Default nodes and arguments#

SCPI standard states that some nodes in the SCPI command tree may play the role of default node. That means that it is not required to specify them in command headers. Same applies for arguments. In this manual optional nodes and arguments are denoted with square brackets.

For example, let’s consider the following syntax description: :FETCh[:SCALar]? [<series name>]

Here square brackets indicate the fact that the node inside them (SCALAR) is the default node under its parent node (FETCH). That means that you can specify the header as: :FETCH or :FETCH:SCALAR and the result will be same. Same applies for parameters in square brackets. With this syntax <series name> parameter is marked as optional. Exact behavior of a command with omitted parameter is specified separately for each command.

Parameters#

Each command defines which type of parameters it accepts.

Numeric Data#

  • Decimal data. Numeric values that may contain both a decimal point and an exponent (base 10). Examples: 2.5, 1e-10, 5.

  • Integer. Integer numbers.

Keywords#

In addition to entering decimal data as numeric values, several keywords can exist. This manual explicitly specifies which keywords are allowed by a particular command.

Boolean Data#

A Boolean parameter specifies a single binary condition which is either true or false.
Boolean parameters can be one of the following:
  • ON or 1 means condition true.

  • OFF or 0 means condition false.

Other Data Types#

  • String data. Always enclosed between single or double quotes, for example "This is a string" or 'This is a string'.

  • Non-decimal data. For instance, #H3A for hexadecimal data.

  • Block data. Used to transfer any 8-bit coded data. This data starts with a preamble that contains information about the length of the parameter.

Conventions used in this manual#

Compatibility information#

This manual describes several instruments: CNT-102 | CNT-104S | CNT-104R | FTR-210R. Some items (command, command arguments, possible values for arguments etc.) may be applicable only to some instruments, and not to others. In such cases, a list of supported combinations of models and their hardware and software options is provided in the following way.

Example:

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

It means that particular part of the manual is applicable only to instrument models CNT-102, CNT-104S, CNT-104R (without any requirement for options for any of the mentioned models) and for model FTR-210R but only when it has option INPUT-A.

Installed options can be checked this way:

SEND: → *OPT?

READ: ← 50 RUBIDIUM, 55 GNSS, 230 INPUT-A, 132F PULSE-OUT, 151F TIE, 152F FREQ-OFFSET

In this example option INPUT-A is present. 230 is option code for “Option 230” (measurement input).

More generic example:

COMMand

Supported in:

  • model1 | model2 | model3 with option1 + option2

means that COMMand command is supported by all of the listed models, given that the device has all listed options installed as well.

If no support information is given for any item, that means that this item is model independent and option independent, in other words, always supported.

Conventions for configuration values syntax#

This section describes configuration values that are used in SYSTem:CONFigure and SYSTem::PREFerences command trees.

Example:

SYST:CONF "SampleCount=20; SampleInterval=100 ms; TimebaseReference=External"

Spaces around = are optional.

Key values (SampleCount etc.) should be specified as-is.

Here are a few notes to keep in mind about the syntax for values (that are on the right side of = sign):

  • Numeric values that are associated with a measurement unit (seconds, hertz etc.) can be specified with or without the unit: SampleInterval=0.1, SampleInterval=0.1s, SampleInterval=0.1 s

  • When no unit is specified, a standard SI unit is implicitly used. Unit prefixes can also be used when applicable: SampleInterval=100 us, SampleInterval=100 ms, SampleInterval=100 s. Note that for “micro” u prefix must be used, unlike μ in the user interface.

  • For ° (degrees) the unit is called deg: LimitLower=5 deg. All other unit names correspond their respective names in the user interface.

  • For enumeration values spaces between individual words are optional: LimitBehaviour=Alarm Stop, LimitBehaviour=AlarmStop

  • None value (case-insensitive) is supported in some cases to express that the parameter is not set to any particular value.

Inputs description#

Each input A, B, D, E inside the instrument is separated into 2 subchannels: main and supplementary. From implementation perspective a subchannel corresponds to a comparator that transform analog signal into digital events. Each such subchannel is associated with its own trigger level and slope (positive or negative).

Some measurement functions allow selection and independent configuration of the subchannels. For example, Time Interval A, A2 will measure time interval between trigger levels configured independently for the main subchannel A and supplementary subchannel A2 of input channel A. Other measurement functions always imply usage of both subchannels and in such cases individual subchannels cannot be selected by the user. For example, Rise Time A function measures rise time of a pulse on channel A, internally using both A and A2 subchannels (with different trigger levels) and it is not possible to select Rise Time A2 or Rise Time A, A2.

All other inputs except A, B, D, E have only one comparator associated with them, so it doesn’t make sense to mark out any subchannel, because only one is available.

However input settings like impedance, coupling, preamplifier, attenuation and trigger mode are configured only on channel basis, so that they are common for every subchannel. For example, impedance setting can be only ImpedanceA but never ImpedanceA2. For more details about input channels and comparators associated with them, please refer to User Manual for your instrument.

In this manual the term “channel” will mostly be used, implying that in some cases it may mean also individual subchannels. For example, A channel will refer to either input channel “A” or main subchannel of input channel A. And A2 will refer to supplementary subchannel on channel “A”.

The following list describes all channels that can potentially be used. Some channels mentioned here may be not present in your instrument depending on particular model and its options.

  • A, B, D, E - input channel or main subchannel of channels A, B, D, E

  • A2, B2, D2, E2 — supplementary subchannels

  • C — RF input channel

  • EA — External Arming input channel

  • ER — External Reference input channel

  • Rb — internal channel that corresponds to Rubidium oscillator 1PPS output (for CNT-104R, FTR-210R)

  • G — internal channel that corresponds to GNSS receiver’s 1PPS output (for CNT-104R with Option 55 (GNSS), FTR-210R), internally connectable to Rubidium oscillator’s 1PPS input for disciplining

Common SCPI commands#

The SCPI standard requires that all instruments support a set of common commands and queries. Such commands are described in next paragraphs.

*CLS#

Clear Status Command.

Command syntax:

*CLS

Description:

The *CLS command clears the status data structures by clearing all event registers and the error queue. It does not clear enable registers. It clears any pending *WAI, *OPC, and *OPC?. Please read about event registers and enable registers below.

Example:

SEND: → *CLS

*ESE#

Standard Event Status Enable.

Command syntax:

*ESE <integer>

*ESE?

Description:

Sets or reads out the enable bits of the standard event enable register. This enable register contains a mask value for the bits to be enabled in the standard event status register. A bit that is set to true in the enable register enables the corresponding bit in the status register. Any enabled bit will set the ESB (Event Status Bit) in the Status Byte Register if the enabled event occurs.

Arguments: <integer> = the sum (0 – 255) of all bits that are true.

Event Status Enable Register (1 = enable )

Bit

Weight

Enables

7

128

Reserved

6

64

Reserved

5

32

Reserved

4

16

Reserved

3

8

Reserved

2

4

Reserved

1

2

Reserved

0

1

Operation Complete

Returned Format: <integer> \n

Example:

SEND: → *ESE 1

In this example, bit 0 (Operation Complete event) is enabled. This will set the ESB bit of the Status Byte Register when long operation completes.

Example:

SEND: → *ESE?

READ: ← 1

*ESR?#

Event Status Register.

Reads out the contents of the standard event status register. Reading the Standard Event Status Register clears the register.

Command syntax:

*ESR?

Returned Format: <integer>

where <integer> is the sum of weights for all set bits. For descriptions of individual fields please check out *ESE? command description.

Example:

SEND: → *ESR?

READ: ← 1

*IDN?#

Identification query.

Command syntax:

*IDN?

Description:

Reads out manufacturer, model, serial number and firmware level in an ASCii response data element. The query must be the last query in a program message.

Returned Format: <manufacturer>, <model>, <serial number>, <firmware level>.

Example:

SEND: → *IDN?

READ: ← Pendulum, CNT-104S, 000024, v1.1.1 2022-11-24

*OPC#

Operation Complete.

Command syntax:

*OPC

Description:

The Operation Complete command causes the device to set the operation complete bit in the Standard Event Status Register when all pending selected device operations have been finished.

Example:

SEND: → *OPC

*OPC?#

Operation Complete Query.

Command syntax:

*OPC?

Description:

Operation Complete query. The Operation Complete query places an ASCii character 1 into the device’s Output Queue when all pending selected device operations have been finished.

Returned Format: 1 \n

Example:

SEND: → *OPC?

READ: ← 1

*OPT?#

Option Identification Query.

Command syntax:

*OPT?

Response is a list of all options present in the instrument.

Returned Format: [<prescaler option>], <oscillator option>, [<HW option>, [<HW option>…]] [<SW option>, [<SW option>…]]

Description:

All options may be preceded by numeric option code, if applicable.

<prescaler option> represents maximum frequency that the user is allowed to measure using currently installed HW and SW license options.

<prescaler option> is a combination if installed HW option (prescaler) and corresponding installed SW options.

TCXO is not associated with a numeric option code, therefore no number is given.

Possible options

Returned value

Meaning

TCXO

TCXO timebase oscillator

30 OCXO

High-stability OCXO timebase oscillator

40 OCXO2

Ultra-high-stability OCXO timebase oscillator

50 RUBIDIUM

Rubidium atomic clock timebase oscillator

11/A REAR-PANEL

Rear panel inputs A, B, D, E

11/C REAR-PANEL-C

Rear panel input C

55 GNSS

GNSS receiver

10 3GHz

3 GHz input option

110 10GHz

10 GHz input option, upgradable to 15, 20, and 24 GHz

110/15 15GHz

15 GHz input option, upgradable to 20, and 24 GHz

110/20 20GHz

20 GHz input option, upgradable to 24 GHz

110/24 24GHz

24 GHz input option

230 INPUT-A

Optional input A for FTR-210R

211 OUTPUT-10MHZ-4X

4 additional 10 MHz outputs for FTR-210R

212 OUTPUT-MULTIPLE-REF-4X

0.1, 1, 5 and 10 MHz sine outputs for FTR-210R

213 OUTPUT-1PPS-4X

4 additional 1 PPS outputs

121 HI-RES or 121F HI-RES

High resolution for measurements

122 HI-SPEED or 122F HI-SPEED

High measurement speed

132 PULSE-OUT or 132F PULSE-OUT

Programmable pulse output

151 TIE or 151F TIE

Unlocks TIE and Timestamp measurement function

220 TRACEABILITY

Traceability option to UTC(GPS) for FTR-210R

152 FREQ-OFFSET or 152F FREQ-OFFSET

Unlocks Frequency Offset measurement function

153 TIME-OFFSET or 153F TIME-OFFSET

Unlocks Time interval measurements for FTR-210R

Example:

SEND: → *OPT?

READ: ← 110/24 24GHz, 30 OCXO, 132 PULSE-OUT

Example:

SEND: → *OPT?

READ: ← TCXO

*RST#

Reset.

Command syntax:

*RST

Description:

The Reset command:

  • stops any ongoing measurement and discards measurement samples

  • resets sample format (:FORMat)

  • resets all operational settings to default values

Reset command does not reset user preferences: settings that appear in User Options, Timebase and GNSS groups in the user interface.

All previous commands are discarded and the counter is prepared to start new operations.

Tip

It is a good practice to start working with the instrument by issuing this command to ensure all settings are in known default state.

Example:

SEND: → *RST

*SRE#

Service Request Enable.

Command syntax:

*SRE <integer>

*SRE?

Returned Format: <integer>

where <integer> is the sum of weights for all set bits.

Description:

The Service Request Enable command sets/reads the service request enable register bits. This enable register contains a mask value for the bits to be enabled in the status byte register. A bit that is set to true in the enable register enables the corresponding bit in the status byte register to generate a Service Request.

Arguments: <integer> = the sum of weights for all set bits.

See table below:

Service Request Enable Register (1 = enable)

Bit

Weight

Enables

7

128

OPR, Operation Status

6

64

RQS, Request Service

5

32

ESB, Event Status Bit

4

16

MAV, Message Available

3

8

QUE, Questionable Data/Signal Status

2

4

EAV, Error Available

1

2

Reserved

0

1

Reserved

Example:

SEND: → *SRE 16

In this example, the counter generates a service request when a message is available in the output queue.

*STB?#

Status Byte Query.

Command syntax:

*STB?

Description:

Reads out the value of the Status Byte. Bit 6 reports the Master Summary Status bit (MSS), not the Request Service (RQS). The MSS bit is set if the instrument has one or more reasons for requesting service.

Returned Format: <integer> = the sum of weights for all set bits.

See table below:

Weight

Name

Condition

7

128

OPR

Enabled operation status has occurred

6

64

MSS

MSS status (not used at the moment)

5

32

ESB

Enabled status event condition has occurred

4

16

MAV

An output message is ready

3

8

QUE

Questionable Data/Signal Status (not used at the moment)

2

4

EAV

Error available

1

2

Reserved

0

1

Reserved

If you want to read the status byte with the RQS bit, use serial polling.

Example:

SEND: → *STB?

READ: ← 0

*WAI#

Wait-to-continue.

Command syntax:

*WAI

Description:

The Wait-to-Continue command prevents the device from executing any further commands or queries until execution of all previous commands or queries has been completed.

Example:

SEND: → *WAI

*TST?#

Self-Test Query.

Command syntax:

*TST? [<result_type>]

Query response format:

  • N/A - tests did not run

  • Pass - all tests completed successfully

  • all other replies - at least one failure happened

The response format can change from version to version. Please contact Service Desk for details.

Description:

This command either executes self-tests on-demand and returns the results or only queries results of previously executed tests.

If no <result_type> is given, this command re-runs the tests and returns the results. This command can take several tens of seconds to complete.

If some <result_type> is passed, no tests are run and the command returns the results of tests that were run previously. This command returns immediately.

<result_type> can be one of:

  • STARtup — query result of tests that were run after start-up

  • LAST — query result of tests that were run last

Example:

SEND: → *TST? STAR

READ: ← N/A

Instrument configuration and control commands#

:INITiate#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Initiate (start) a measurement.

Command syntax:

:INITiate

Description:

This command starts a measurement. Measurement settings must be configured before starting a measurement using SYSTem:CONFigure or SYSTem:CONFigure:RESet command. The measurement is run is SINGLE mode, meaning that after measurement is complete the instrument does not automatically start any new measurement.

Example:

SEND: → :INIT

:ABORt#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Stops current measurement (puts the instrument to HOLD state).

Command syntax:

:ABORt

Example:

SEND: → :ABOR

:SYSTem:CONFigure?#

Read out all operational settings.

The settings called operational settings have influence on how the instrument is making measurements, oscillator mode (in models where it is applicable) and also some other things. Such settings are reset by *RST or SYST:CONF:RES commands and Recall Defaults function in the menu.

The instrument also has another category of settings called user preferences that are not affected by :SYSTem:CONFigure command tree, not reset on *RST command and Recall Defaults function in the menu. See :SYSTem:PREFerences command tree for more information.

Command syntax:

:SYSTem:CONFigure?

Note: old syntax :SYSTem:CONFigure? <meas/net/all> is also supported for compatibility.

Description:

Key-value pairs are returned, delimited by a colon.

The query returns key-value pairs, delimited by a colon.

For description of individual parameters, see SYSTem:CONFigure command.

Example:

SEND: → :SYST:CONF?

READ: ← AttenuationA=1x;AttenuationB=1x;AttenuationD=1x; <…>

:SYSTem:CONFigure#

Modifies operational settings by applying the settings specified in the command’s argument. Not specified settings are not affected.

Command syntax:

:SYSTem:CONFigure <parameters list>

where <parameters list> is a quoted string of key-value pairs like "<param1> = <value1>; <param2> = <value2>; ..." where param1, param2… are configuration keys and value1, value2… are corresponding configuration values.

Description:

The command can be invoked several times to set all or part of required parameters. This command never auto-adjusts other not mentioned settings implicitly.

The command parameter represents a quoted string of various settings for the instrument. The settings are given as key-value pairs separated by a semicolon (;) inside the quoted string.

The instrument tries to apply all specified settings and checks their overall consistency as a whole set. If new configuration of the instrument is invalid (e.g. parameters are out of allowed range or value of one parameter conflicts with value of another parameter), the command execution results in an error and no setting are applied. In other words, the command will either successfully apply all specified settings or will not change the instrument configuration at all. Such behavior allows ensuring that the instrument configuration is always in a known predictable state.

To check for possible configuration errors it is recommended to run SYSTem:ERRor? query immediately after configuration command.

When you start programming an instrument that may have unknown configuration, it’s always a good idea to bring the instrument to a default state by sending: *RST; *CLS or use SYST:CONF:RES command instead .This will ensure that all measurement settings are reset to defaults. In case of *RST; *CLS it will also ensure that error and message buffers are cleared and samples format (:FORMat) is reset.

When you want to perform two measurements with very different settings, you may want to use SYST:CONF:RES command to reset all settings to known defaults before making new configuration.

Example:

SEND: → :SYST:CONF “CouplingA=DC; FilterA=100kHz; SampleInterval=500us; SampleCount=10; Function=Positive Pulse Width A”

Configuration parameters for :SYSTem:CONFigure#

TriggerMode#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

This parameter specifies how the instrument selects trigger levels for a measurement channel. Trigger levels can be set automatically by the instrument or specified by the user.

Parameter syntax: TriggerMode<Channel>

where <Channel> is one of A, B, D, E.

Example: TriggerModeA.

Possible values: Auto, Relative, Manual

Default value (RST condition): Auto

Description:

Auto — Preliminary voltage measurement will be performed to find out signal voltage range and set trigger levels to best values for selected measurement function.

Tip

Voltage measurement mode must be set according to minimum expected frequency of measured signal. See VoltageMode setting for details.

Depending on measurement function selected trigger levels will be automatically set to percentage values of signal voltage range:

  • 10% for the main subchannel, 90% for the supplementary subchannel for signal edge related functions: RiseTime/FallTime/RiseFallTime/PositiveSlewRate/NegativeSlewRate

  • 60% for the main subchannel, 40% for the supplementary subchannel for the functions with hysteresis on: Frequency/FrequencyRatio/FrequencySmart/PeriodAverage/PeriodAverageSmart/TIE

  • 50% for both main and supplementary subchannels for all other functions

Relative — Preliminary measurement is preformed, but you can adjust trigger levels relative to the measured signal voltage range, in percent, using RelativeTriggerLevel parameter.

Manual — Trigger levels are set accordingly to the values specified by AbsoluteTriggerLevel parameter. It is recommended to use this mode only in cases when Autoset fails to find the best settings.

Example:

SEND: → SYST:CONF “TriggerModeA=Auto”

AbsoluteTriggerLevel#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

This parameter sets the absolute trigger levels for a channel.

Parameter syntax: AbsoluteTriggerLevel<Channel>

where <Channel> is one of A, A2, B, B2, D, D2, E, E2.

Example: AbsoluteTriggerLevelA2.

Possible values:

Any floating point number representing trigger level in volts, within voltage measurement range. Voltage measurement range depends on Attenuation and Preamplifier parameters. See description of Attenuation and Preamplifier parameters.

Default value (RST condition): 0

Description:

Sets trigger level in volts on the channel <Channel>. If numeric index for the channel is omitted (e.g. just A), then the parameter refers to the main subchannel of input channel. When used with numeric index 2 (e.g. A2), refers to the supplementary subchannel. The main subchannel is used for all measurements performed on an input, generating events to internal measurement core whenever signal crosses set trigger level. The supplementary subchannel can be selected explicitly for some measurement functions (e.g. Time Interval A, A2), generating independent events to internal measurement core whenever signal crosses set trigger level. Otherwise it is used implicitly for frequency average and period average measurements (to assure wide hysteresis), for Rise & Fall Time, Slew Rate, Pulse Width, Duty Cycle and Phase measurement functions.

Example:

SEND: → SYST:CONF “TriggerModeA=Manual; AbsoluteTriggerLevelA=-2.5; AbsoluteTriggerLevelA2=2.5; TriggerModeB=Manual; AbsoluteTriggerLevelB=0; AbsoluteTriggerLevelB2=1.35”

RelativeTriggerLevel#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Sets relative trigger levels (in percent relative to the signal voltage range) for a channel.

Parameter syntax: RelativeTriggerLevel<Channel>

where <Channel> is one of A, A2, B, B2, D, D2, E, E2.

Example: RelativeTriggerLevelB2.

Possible values: 0 – 100

Default value (RST condition):

  • 60 for main channel

  • 40 for supplementary channel

Description:

Sets trigger level on the the channel <Channel> in percents relative to measured signal voltage range. 0% corresponds to signal min value and 100% corresponds to signal max value. If numeric index for the channel is omitted (e.g. just A), then the parameter refers to the main subchannel of input channel. When used with numeric index 2 (e.g. A2), refers to the supplementary subchannel. The main subchannel is used for all measurements performed on an input, generating events to internal measurement core whenever signal crosses set trigger level. The supplementary subchannel can be selected explicitly for some measurement functions (e.g. Time Interval A, A2), generating independent events to internal measurement core whenever signal crosses set trigger level. Otherwise it is used implicitly for frequency average and period average measurements (to assure wide hysteresis), for Rise & Fall Time, Slew Rate, Pulse Width, Duty Cycle and Phase measurement functions.

Example:

SEND: → SYST:CONF “TriggerModeA=Relative; RelativeTriggerLevelA=65; RelativeTriggerLevelA2=35”

Slope#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Specifies signal slope that triggers a channel

Parameter syntax: Slope<Channel>

where <Channel> is one of A, A2, B, B2, D, D2, E, E2, C, EA, ER, G, Rb.

Example: SlopeB.

Possible values: Positive, Negative

Default value (RST condition): Positive

Description:

  • Positive- Positive slope is used for the corresponding input

  • Negative- Negative slope is used for the corresponding input

Example:

SEND: → SYST:CONF “SlopeA=Positive”

Impedance#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Specifies input impedance.

Parameter syntax: Impedance<Channel>

where <Channel> is one of A, B, D, E.

Example: ImpedanceA.

Possible values: 50Ohm, 1MOhm.

Default value (RST condition): 1MOhm

Description:

  • 50Ohm - 50 Ohm impedance is used for the corresponding input

  • 1MOhm - 1 MOhm impedance is used for the corresponding input

Example:

SEND: → SYST:CONF “ImpedanceA = 50 Ohm”

Coupling#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Allows to select AC or DC coupling of an input.

Parameter syntax: Coupling<Channel>

where <Channel> is one of A, B, D, E.

Example: CouplingA.

Possible values: DC, AC

Default value (RST condition): AC

Description:

AC coupling allows to block unnecessary DC offset that may be present in the signal.

  • DC - DC coupling is used for the corresponding input

  • AC - AC coupling is used for the corresponding input

Example:

SEND: → SYST:CONF “CouplingA=AC”

Filter#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Selects whether low-pass filter is enabled for an input.

Parameter syntax: Filter<Channel>

where <Channel> is one of A, B, D, E.

Example: FilterA.

Example: Off, 10kHz, 100kHz

Default value (RST condition): Off

Description:

  • Off - Filter is not used for the corresponding input

  • 10kHz - 10 kHz low pass filter is used for the corresponding input

  • 100kHz - 100 kHz low pass filter is used for the corresponding input

Example:

SEND: → SYST:CONF “FilterA = Off”

Attenuation#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Enables or disables signal attenuation for an input.

Parameter syntax: Attenuation<Channel>

where <Channel> is one of A, B, D, E.

Example: AttenuationA.

Example: 1x, 10x, Auto

Default value (RST condition): 1x

Description:

This setting allow to enable attenuation for situations when measurement signal amplitude is too big for an input.

  • 1x - 1x attenuation is used for the corresponding input (corresponds to no attenuation)

  • 10x - 10x attenuation is used for the corresponding input (signal is decreased 10 times).

  • Auto - Attenuation is auto-selected is used for the corresponding input.

Correct auto-trigger operation and voltage measurements are possible for the following input signal voltage ranges depending on attenuation and preamplifier settings.

Preamplifier=off

Preamplifier=on

Attenuation=1x

-5 – +5 V

-1.5 – +1.5 V

Attenuation=10x

-50 – +50 V

-15 – +15 V

Attenuation=Auto

-50 – +50 V

-1.5 – +1.5 V

Note

When measuring voltage-related signal characteristics, measurement results displayed on the screen and provided by SCPI queries are not decreased 10 times when attenuation is enabled. Even though the signal is attenuated inside the instrument, resulting data are scaled back to the original scale.

Example:

SEND: → SYST:CONF “AttenuationA = 10x”

Preamplifier#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Enables or disables signal amplification inside the instrument for an input.

Parameter syntax: Preamplifier<Channel>

where <Channel> is one of A, B, D, E.

Example: PreamplifierA.

Possible values: Off, On

Default value (RST condition): Off

Description:

Allows to amplify input signal. It is recommended to turn amplification on only if input signal has low amplitude.

  • Off - Preamplifier in off for the corresponding input

  • On - Preamplifier in on for the corresponding input

Correct auto-trigger operation and voltage measurements are possible for the following input signal voltage ranges depending on attenuation and preamplifier settings.

Preamplifier=off

Preamplifier=on

Attenuation=1x

-5 … +5 V

-1.5 .. +1.5 V

Attenuation=10x

-50 … +50 V

-15 .. +15 V

Attenuation=Auto

-50 … +50 V

-1.5 .. +1.5 V

Example:

SEND: → SYST:CONF “PreamplifierA = On”

ArmOn#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

When arming is enabled, defines whether sample block or each sample within the block should be armed.

Possible values: Block, Sample

Default value (RST condition): Block

Description:

When arming is enabled, defines whether sample block or each sample within the block should be armed. Block of samples is a group of samples captured during a measurement (the number of samples is defined by SampleCount parameter). This setting is available for modification only when arming is enabled. See StartArmingSource parameter.

  • Block - Arm on Block mode: entire sample block is being armed. Please note: when arming on Block and stop arming is not Off - the resulting number of samples in the block might be less than SampleCount.

  • Sample - Arm on Sample mode: each individual sample inside the block is being armed.

Example:

SEND: → SYST:CONF “ArmOn = Block”

Function#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Selects measurement function and channels.

Possible values: Function=<function name> <Channel>[,<Channel>, ...]

where

<function name> is one of:

  • Frequency

  • Frequency Ratio

  • Smart Frequency

  • Frequency Offset

  • Smart Frequency Offset

  • Period Average

  • Smart Period Average

  • PeriodSingle

  • Time Interval

  • Time Interval Single

  • Accumulated Time Interval

  • Phase

  • Accumulated Phase

  • TIE

  • Positive Duty Cycle

  • Negative Duty Cycle

  • Positive Pulse Width

  • Negative Pulse Width

  • Rise Time

  • Fall Time

  • Rise Fall Time

  • Positive Slew Rate

  • Negative Slew Rate

  • Totalize

  • Totalize X+Y

  • Totalize X-Y

  • Totalize X/Y

  • Vmin

  • Vmax

  • Vpp

  • Vminmax

  • DC Offset

and where <Channel> is one of A, A2, B, B2, D, D2, E, E2, C, EA, ER, G, Rb. See description below for limitations.

Possible values:

This parameter consists of function name, space and a list of channels, separated by commas. Each measurement function supports different maximum number of channels. See description of possible values, their meanings and limitations in List of measurement functions

  • Spaces inside the function name can be omitted.

  • The space between function name and channel name list is mandatory

  • Channels list may contain spaces.

  • In positions where a single space is allowed, multiple spaces can also be used

  • The value is case-insensitive like for all other arguments

Example:

  • Frequency Ratio A, B

  • FrequencyRatio A,B

  • Function=Frequency   Ratio    D  ,  E

  • timeInterval G, Rb

  • Period Average A,B2,EA

Default value (RST condition): Frequency A

Description:

Allows to select measurement function of the instrument.

Please see List of measurement functions for description of individual functions.

HoldOff#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Dead time between consecutive trigger events.

Possible values: 02.683 s

Default value (RST condition): 0

Description:

Adds dead time between consecutive trigger events. Used to cope with contact bouncing or signal oscillations.

Example:

SEND: → SYST:CONF “HoldOff=0.555”

LimitBehaviour#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Enables of disables limits for measurements. Defines instrument behavior when specified limits are exceeded.

Possible values: Off, Capture, Alarm, Alarm Stop

Default value (RST condition): Off

Description:

Defines how the instrument will react on limits. Limit criterion is set by Limit Type, Upper Limit and Lower Limit. For all limit behavior choices except Off the following is true: if measured value has fell off the limit criterion during measurement session then red exclamation mark indicator is displayed.

  • Off — Limits are disabled.

  • Capture — Only samples meeting the limit criterion are captured, the rest are discarded. Limit status is displayed.

  • Alarm — All samples are captured, limit status is displayed.

  • Alarm Stop — Measurement session stops if measured value doesn’t meet the limit criterion.

Example:

SEND: → SYST:CONF “LimitBehaviour= Alarm”

LimitLower, LimitUpper#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Specifies lower or upper limit.

Possible values: any decimal or value with unit, depending on current Function and Math settings

Default value (RST condition): 0

Description:

Lower limit is used if LimitType=Above or LimitType=Range and LimitBehaviour is not Off.

Upper limit is used if LimitType=Below or LimitType=Range and LimitBehaviour is not Off.

Example:

SEND: → SYST:CONF “Function=Frequency B; LimitBehaviour=Alarm; LimitType=Range; LimitLower=9 MHz; LimitLower=10.1 MHz”

LimitSeriesName#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Specifies name of the series for which limits are applies to.

Possible values: All, A, B, A/B, A+B, Vmin etc.

Default value (RST condition): All

Description:

Name of the series that limits are applied to, or All if applied to all series. This parameter can be used only when limits are enabled (LimitBehaviour is not Off).

Example:

SEND: → SYST:CONF “Function=Frequency A,B”

SEND: → SYST:CONF “LimitBehaviour=Alarm; LimitType=Range; LimitLower=9 MHz; LimitLower=10.1 MHz”

SEND: → SYST:CONF “LimitSeriesName=B”

LimitType#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Specifies limit type.

Possible values: Above, Below, Range

Default value (RST condition): Above

Description:

  • Above- Results above set Lower Limit will pass.

  • Below - Results below set Upper Limit will pass.

  • Range - Results within the set limits will pass.

This parameter can be used only when limits are enabled (LimitBehaviour is not Off)

Example:

SEND: → SYST:CONF “Function=Frequency B; LimitBehaviour=Alarm; LimitType=Range; LimitLower=9 MHz; LimitLower=10.1 MHz”

MathCoeffK, MathCoeffL, MathCoeffM#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Specifies values for coefficients K, L, M, when mathematical formula is enabled.

Parameter syntax: MathCoeff<Coefficient>

where Coefficient is one of K, L, M,. For example: MathCoeffL.

This specific coefficient must be used in the chosen formula.

Possible values: any decimal or value with unit, depending on current Function

Default value (RST condition):

  • MathCoeffK=1

  • MathCoeffL=0

  • MathCoeffM=1

Description:

K, L, M constants used in Math formula.

Example:

SEND: → SYST:CONF:RES “MathMode=K*X+L; MathCoeffK=2; MathCoeffL=100 kHz”

MathCustomUnit#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Overrides result units when mathematical formula is applied.

Possible values: string not exceeding 4 characters, or keyword None for empty string

Default value (RST condition): empty string (represented by keyword None)

Description:

When a math formula is applied, measurement results units are usually determined automatically. This parameter allows to override the unit of the value after math formula is applied.

When set to empty (with keyword None), no customization is applied: defaults units of measurement are used.

Example:

SEND: → SYST:CONF:RES “MathMode=K*X+L; MathCoeffK=60; MathCustomUnit=RPM”

Example:

SEND: → SYST:CONF “MathCustomUnit=None”

This example erases custom unit.

MathMode#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Selects mathematical formula to apply to measurement results.

Possible values: Off, K * X + L, K / X + L, ( K * X + L ) / M, ( K / X + L ) / M, X / M - 1

Default value (RST condition): Off

Description:

Allows to apply a math formula over measurement results. Please note: some of available formulae change unit of measurement from the original value. For instance, with Function=Frequency A and MathMode=K/X+L unit changes from Hz to seconds.

Example:

SEND: → SYST:CONF “MathMode=K / X + L”

Example:

SEND: → SYST:CONF “MathMode=K/X+L”

MathSeriesName#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Select series to apply math formula to.

Possible values: All, A, B, A/B, A+B, Vmin etc.

Default value (RST condition): All

Description:

Name of the series that MathMode is applied to, or All if applied to all series.

Example:

SEND: → SYST:CONF “Function=Frequency A,B; MathMode=K*X+L; MathSeriesName=B”

PulseOutputMode#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R | FTR-210R with PULSE-OUT

Controls the rear Pulse Output of the device.

Possible values: - Off

  • Pulse Generator

  • Gate Open Supported in: CNT-102 | CNT-104S | CNT-104R or FTR-210R with INPUT-A

  • Alarm Out Active High Supported in: CNT-102 | CNT-104S | CNT-104R or FTR-210R with INPUT-A

  • Alarm Out Active Low Supported in: CNT-102 | CNT-104S | CNT-104R or FTR-210R with INPUT-A

Default value (RST condition): Off

Description:

Controls the rear Pulse Output of the instrument. The amplitude is set to TTL levels into 50 Ohm irrespective to output mode.

  • Off — No signal on Pulse Output.

  • Pulse Generator — Continuous pulse train with period and pulse width set in PulseOutputPeriod and PulseOutputWidth settings.

  • Gate Open — Indicates when measurement is in progress.

  • Alarm Out Active High — High level output when limits alarm is active, low level otherwise.

  • Alarm Out Active Low — Low level output when limits alarm is active, high level otherwise.

Example:

SEND: → SYST:CONF:RES “LimitBehaviour=Alarm; LimitType=Above; LimitLower=100 kHz; SampleCount=200; SampleInterval=100ms”

SEND: → SYST:CONF “PulseOutputMode=Alarm Out Active Low”

Example:

SEND: → SYST:CONF:RES “LimitBehaviour=Alarm; LimitType=Above; LimitLower=100 kHz; SampleCount=200; SampleInterval=100ms”

SEND: → SYST:CONF “PulseOutputMode=AlarmOutActiveLow”

PulseOutputPeriod#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R | FTR-210R with PULSE-OUT

Set period of pulses generated on rear Pulse Output.

Possible values: 10 ns2.147 s with 2 ns steps

Default value (RST condition): 1 ms

Description:

Set period of pulses generated on rear Pulse Output of the instrument when PulseOutputMode=Pulse Generator.

Example:

SEND: → SYST:CONF “PulseOutputMode=PulseGenerator; PulseOutputPeriod=12ns; PulseOutputWidth=6ns”

PulseOutputWidth#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R | FTR-210R with PULSE-OUT

Set width of pulses generated on rear Pulse Output of the instrument.

Possible values: 4 ns2.146999994 s (but at least 6 ns lower than PulseOutputPeriod) in 2 ns steps

Default value (RST condition): 500 us

Description:

Set width of pulses generated on Pulse Output when PulseOutputMode=Pulse Generator.

Example:

SEND: → SYST:CONF “PulseOutputMode=PulseGenerator; PulseOutputPeriod=1ms; PulseOutputWidth=200us”

SampleCount#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Defines number of samples to be collected for each measurement series.

Possible values: up to 31999999 samples (depends on selected function and channels and other settings)

Default value (RST condition): 1

Example:

SEND: → SYST:CONF “SampleCount=10000”

SampleInterval#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Specifies how often measurement samples are generated and/or defines gate time.

Possible values: depends on current Function and HI-RES option

Default value (RST condition): 10 ms

Description:

Defines gate time for the measurement. Please note, that if signal period is larger than this value then actual sample interval will be equal to signal period.

Example:

SEND: → SYST:CONF “SampleInterval=1ms”

SignalSource#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Specifies whether to use input signals for measurement or internal test generator.

Possible values: Inputs, Test

Default value (RST condition): Inputs

Description:

The built-in test signal generator is used for performing internal device calibrations and can also be used for testing purposes. This setting must be used only for testing or demonstrational purposes when there is no possibility to connect external source of signal to instrument’s inputs. When internal test generator is enable, the instrument cannot measure signals on its inputs. Instead it measures internally generated signal.

  • Inputs- Normal operation

  • Test - Using internal test signal generator instead of inputs on front (back) panel. Output of the internal generator is internally connected to channels A, B, D, E and can be measured.

The frequency of the generated signal can be controlled with TestSignalFrequency parameter.

Note

Test generator is using independent coarse timebase and is not expected to provide accurate frequency. Test generator is not the same generator which drives rear Pulse Output of the device.

Warning

Usage of internal test generator instead of normal signals is not indicated in any way except for in settings menu in instrument’s graphical user interface and replies to SYST:CONF? query. The instrument may seem misbehaving if the internal test generator is enabled, but user tries to measure signal from a connected cable.

Example:

SEND: → SYST:CONF “SignalSource= Test”

StartArmingDelay#

Supported in: CNT-102 | CNT-104S | CNT-104R

Delay for making measurement after arming event.

Possible values: 010995 s

Default value (RST condition): 0 s

Description:

Defines time after start arming event when measurement should be started.

Example:

SEND: → SYST:CONF:RES “Function=Frequency B; SampleCount=500; SampleInterval=1ms”

SEND: → SYST:CONF “StartArmingSource=EA; StartArmingDelay=5ms”

StartArmingSlope#

Supported in: CNT-102 | CNT-104S | CNT-104R

Signal slope to use as arming event.

Possible values: Positive, Negative

Default value (RST condition): Positive

Description:

Slope which arms the measurement.

  • Positive - Positive slope is used for Start Arming.

  • Negative- Negative slope is used for Start Arming.

Example:

SEND: → SYST:CONF:RES “Function=Frequency B; SampleCount=500; SampleInterval=1ms”

SEND: → SYST:CONF “StartArmingSource=EA; StartArmingSlope=Negative”

StartArmingSource#

Supported in: CNT-102 | CNT-104S | CNT-104R

Channel that will be used to detect arming event.

Possible values: Off, EA, A, B, D, E, A2, B2, D2, E2.

Only inputs that are physically present in a particular device can be used.

Default value (RST condition): Off

Description:

Defines whether signal from one of device inputs should be used to arm start of measurement.

Off is used to switch Start Arming off.

Example:

SEND: → SYST:CONF:RES “Function=Frequency B; SampleCount=500; SampleInterval=1ms”

SEND: → SYST:CONF “StartArmingSource=A”

StopArmingDelay#

Supported in: CNT-102 | CNT-104S | CNT-104R

Delay for stopping measurement after stop arming event.

Possible values: 010995 s

Default value (RST condition): 0 s

Description:

Defines the time after stop arming event when measurement should be stopped.

Example:

SEND: → SYST:CONF:RES “Function=Frequency B; SampleCount=500; SampleInterval=0”

SEND: → SYST:CONF “StartArmingSource=EA; StopArmingSource=EA; StopArmingSlope=Negative”

SEND: → SYST:CONF “StopArmingDelay=100 ms”

StopArmingSlope#

Supported in: CNT-102 | CNT-104S | CNT-104R

Signal slope to use as stop arming event.

Possible values: Positive, Negative

Default value (RST condition): Positive

Description:

Slope which arms measurement stop.

  • Positive - Positive slope is used for Stop Arming.

  • Negative- Negative slope is used for Stop Arming.

Example:

SEND: → SYST:CONF:RES “Function=Frequency B; SampleCount=500; SampleInterval=0”

SEND: → SYST:CONF “StartArmingSource=EA; StopArmingSource=EA; StopArmingSlope=Negative”

StopArmingSource#

Supported in: CNT-102 | CNT-104S | CNT-104R

Channel to use for stop arming event detection.

Possible values: Off, EA, A, B, D, E, A2, B2, D2, E2.

Only inputs that are physically present in a particular device can be used.

Default value (RST condition): Off

Description:

Defines whether signal from one of device inputs or timer should be used to stop measurement.

Off is used to switch Stop Arming off.

Start Arming must be set up as well in order to use Stop Arming.

Example:

SEND: → SYST:CONF:RES “Function=Frequency B; SampleCount=500; SampleInterval=0”

SEND: → SYST:CONF “StartArmingSource=EA; StopArmingSource=EA; StopArmingSlope=Negative”

TestSignalFrequency#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Frequency of internal built-in test generator.

Possible values: 1.039 kHz68 MHz

Default value (RST condition): 1 MHz

Description:

Sets frequency of the built-in test generator.

Note

Test generator is using independent coarse timebase and is not expected to provide accurate frequency. Test generator is not the same generator which drives rear Pulse Output of the device.

Test generator can be enabled using SignalSource setting.

Example:

SEND: → SYST:CONF “SignalSource=Test; TestSignalFrequency=68MHz”

TieReferenceFrequency#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R | FTR-210R with TIE

  • FTR-210R with FREQ-OFFSET

Nominal frequency used for calculations during TIE or Frequency Offset measurements.

Even though the name of the parameter starts with “Tie” it refers not only to TIE measurements, but also to Frequency Offset.

Parameter syntax: TieReferenceFrequency<Channel>

where <Channel> is one of A, A2, B, B2, D, D2, E, E2, EA, ER, G, Rb.

Possible values: 100mHz400 MHz

Default value (RST condition): 10 MHz

Description:

Reference frequency for particular input.

It is used if TieReferenceFrequencyDetection=Off. Otherwise, reference frequency is auto-detected.

Example:

SEND: → SYST:CONF “Function=TIE A; TieReferenceFrequencyDetection=Off; TieReferenceFrequencyA=8MHz”

TieReferenceFrequencyC#

Supported in: CNT-102 | CNT-104S | CNT-104R with TIE and any prescaler option

Reference frequency for input C when doing TIE measurements.

Possible values: 100mHzx GHz (depending of installed options)

Default value (RST condition): 1 GHz

Description:

Reference frequency for input C.

It is used if TieReferenceFrequencyDetection=Off. Otherwise, reference frequency is auto-detected.

Example:

SEND: → SYST:CONF “Function=TIE C; TieReferenceFrequencyDetection=Off; TieReferenceFrequencyC=1500MHz”

TieReferenceFrequencyDetection#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R | FTR-210R with TIE

  • FTR-210R with FREQ-OFFSET

Defines if reference frequency for TIE or Frequency Offset is detected automatically or should be set manually.

Even though the name of the parameter starts with “Tie” it refers not only to TIE measurements, but also to Frequency Offset.

Possible values: On, Off

Default value (RST condition): On

Description:

  • On- Reference frequency for TIE measurement is detected automatically.

  • Off - Reference frequency for TIE measurement is set manually.

Example:

SEND: → SYST:CONF “Function=TIE A; TieReferenceFrequencyDetection=Off; TieReferenceFrequencyA=8MHz”

TieReferenceFrequencyNumberOfDigits#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R | FTR-210R with TIE

  • FTR-210R with FREQ-OFFSET

The number of digits detected reference frequency for TIE or Frequency Offset measurement should be rounded to.

Even though the name of the parameter starts with “Tie” it refers not only to TIE measurements, but also to Frequency Offset.

Possible values: 010

Default value (RST condition): 5

Example:

SEND: → SYST:CONF “Function=TIE A; TieReferenceFrequencyNumberOfDigits=6”

FrequencyTolerance#

Supported in: FTR-210R with FREQ-OFFSET

Relative limits to be used during Frequency Offset measurement.

Possible values: 1e-121e-3

Default value (RST condition): 5e-11

Example:

SEND: → SYST:CONF “Function=Frequency Offset A; FrequencyTolerance=8e-11”

TimebaseReference#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

Specifies which reference clock to use for measurements.

Possible values: Auto, Internal, External

Default value (RST condition): Auto

Description:

Defines which reference clock will be used for measurement.

  • Internal - Internal timebase reference is used

  • External - External timebase reference is used if it is connected and within expected parameters, otherwise measurement is not performed.

  • Auto- External timebase reference is used if it is connected and within expected parameters, otherwise internal.

This setting is present in FTR-210R as well, but it is fixed to Internal value.

Example:

SEND: → SYST:CONF “TimebaseReference=External”

Timeout#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Enable of disable measurement timeout.

Possible values: On, Off

Default value (RST condition): Off

Description:

Used to make measurement session end if signal is missing for more than specified Timeout Time.

  • On- Timeout is on.

  • Off - Timeout is off.

Example:

SEND: → SYST:CONF “Timeout=On; TimeoutTime=3s”

TimeoutTime#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Set measurement timeout value.

Possible values: 10ms1000s

Default value (RST condition): 100ms

Description:

If Timeout is On, measurement session ends if signal is missing for more than specified Timeout Time.

Example:

SEND: → SYST:CONF “Timeout=On; TimeoutTime=3s”

VoltageMode#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Defines minimal signal frequency for which voltage measurements and/or auto-trigger works correctly.

Possible values: Normal, Very Slow, Slow, Fast, Very Fast

Default value (RST condition): Normal

Description:

This setting is used for finding voltage range of input signals in Auto Trigger or Relative Trigger modes or for Voltage measurements.

  • VerySlow — used for signals for frequency of 1 Hz of above.

  • Slow — used for signals with frequency above 10 Hz.

  • Normal — used for signals with frequency above 100 Hz.

  • Fast — used for signals with frequency above 1 kHz.

  • VeryFast — used for signals with frequency above 10 kHz.

DC signals can be measured in any mode.

VoltageMode is a compromise between signal’s expected frequency and voltage measurement speed. If the signal is known to have frequency above certain level, it is advised to set VoltageMode to faster value. Voltage measurement takes roughly 15 cycles of nominal frequency mentioned above. In VerySlow mode voltage measurement takes around 15 seconds.

Normal mode covers the biggest frequency range, while providing affordable time of auto-triggering at the same time. If you know that your signal has higher frequency you can set higher mode to make auto-triggering work faster.

Warning

If the signal has lower frequency that nominal frequency of current VoltageMode, measurement result will most certainly be wrong. For example, if signal is 1 PPS and VoltageMode=Fast, both Vmin and Vmax are likely to be almost equal, representing high or low level of the pulse, depending on your luck.

Example:

SEND: → SYST:CONF “VoltageMode=VeryFast”

InternalCalibrationMode#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Defines when to start internal calibration.

Possible values: Every 30 Min, Before Every Measurement, Once After Warmup

Default value (RST condition): Every 30 Min

Description:

Internal calibration is always done after device start-up and after it has warmed up. More frequent calibration can be done in order to improve timing measurement resolution.

  • Every 30 Min — Additional calibration every 30 minutes

  • Before Every Measurement — Additional calibration before every measurement

  • Once After Warmup — No additional calibration

Example:

SEND: → SYST:CONF “InternalCalibrationMode=Once After Warmup”

Example:

SEND: → SYST:CONF “InternalCalibrationMode=OnceAfterWarmup”

NumOfBlankDigits#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Number of digits to blank on display.

Possible values: 015

Default value (RST condition): 0

Description:

Defines the number of least significant digits to be masked. This can be used to help operator to read out the results of jittery measurements. Please note: it applies only to the current measured value, not statistics. Numbers transferred over SCPI are not affected.

Example:

SEND: → SYST:CONF “NumOfBlankDigits=5”

GnssAntennaDelay#

Supported in:

  • CNT-104R with GNSS

  • FTR-210R

Cable delay of the GNSS signal

Possible values: -500 ns – 500 ns

Default value (RST condition): 0

Description:

Compensation for the delay of GNSS electric signal in cable path from GNSS antenna output to receiver input.

Example:

SEND: → SYST:CONF “GnssAntennaDelay = 10 ns”

GnssSignalsUsed#

Supported in:

  • CNT-104R with GNSS

  • FTR-210R

Select GNSS signals to be used for solution by the GNSS receiver.

Possible values: <signals_list>

<signals_list> is a comma-separated list of required signals.

  • GPS-L1C/A - GPS L1C/A

  • GPS-L5 - GPS L5

  • SBAS-L1C/A - SBAS L1C/A

  • GAL-E1 - Galileo E1

  • GAL-E5a - Galileo E5a

  • BDS-B1I - BeiDou B1I

  • BDS-B1C - BeiDou B1C

  • BDS-B2a - BeiDou B2a

  • QZSS-L1C/A - QZSS L1C/A

  • QZSS-L5 - QZSS L5

  • GLO-L1 - GLONASS L1

A few restrictions apply:

  • At least one of GPS-L1C/A, GAL-E1, BDS-B1I, GLO-L1 must be chosen.

  • QZSS-L1C/A requires GPS-L1C/A or GPS-L5 to be enabled.

  • QZSS-L5 requires GPS-L1C/A or GPS-L5 to be enabled.

  • GPS-L5 message is currently set unhealthy, use with discretion.

Default value (RST condition): GPS-L1C/A,GAL-E1,GAL-E5a,BDS-B1I,BDS-B2a,GLO-L1,QZSS-L1C/A,QZSS-L5

Example:

SEND: → SYST:CONF “GnssSignalsUsed=GPS-L1C/A,GAL-E1”

GnssSurveyInAccuracy, GnssSurveyInTime#

Supported in:

  • CNT-104R with GNSS

  • FTR-210R

GnssSurveyInAccuracy configures maximum 3D position standard deviation (in units of length, usually metres) for survey-in procedure.

GnssSurveyInTime configures minimum observation time for survey-in procedure.

Default value (RST condition):

  • GnssSurveyInAccuracy: 4

  • GnssSurveyInTime: 86400

Description:

Survey-in is a procedure that is carried out prior to entering Time fix mode. It estimates the receiver position by building a weighted mean of all valid 3D position solutions. Two parameters are required: minimum observation time and 3D position standard deviation. Survey-in ends when both requirements are met.

Example:

SEND: → SYST:CONF “GnssSurveyInAccuracy = 3 m; GnssSurveyInTime = 3600”

DiscipliningMode#

Supported in: CNT-104R | FTR-210R

Defines disciplining mode for the internal Rubidium timebase reference.

Possible values:

  • Always

  • When Not Measuring Supported in: CNT-104R or FTR-210R INPUT-A

  • Manual Hold Over

Default value (RST condition): Always

Description:

  • Always - the internal timebase is always disciplined, if source signal is present and of good quality.

  • When Not Measuring - disciplining is only allowed when no measurement is running.

  • Manual Hold Over - disciplining is off.

Example:

SEND: → SYST:CONF “DiscipliningMode=ManualHoldOver”

DiscipliningSource#

Supported in:

  • CNT-104R with GNSS

  • FTR-210R

Defines which 1PPS signal source to use for disciplining the internal timebase reference.

Possible values: GNSS, External

Default value (RST condition): GNSS

Description:

  • GNSS - 1PPS output of the GNSS receiver is used for disciplining.

  • External - external 1PPS input is used for disciplining.

Example:

SEND: → SYST:CONF “DiscipliningSource=External”

List of measurement functions#

For devices that allow to configure Function via SYSTem:CONFigure, here is a list of functions that can be used with it.

Example: SYST:CONF "Function=TimeInterval A,D"

Frequency#

Average frequency over gate time (set by Sample Interval parameter). This is back-to-back measurement (every period of the signal can be captured) for frequencies up to 20 MHz or 1 MHz (depending on particular model and license combination).

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 1

Frequency Ratio#

Ratio of frequency averages. This mode is just additional math applied over frequency measurements.

  • Frequency Ratio A,B will produce B/A series.

  • Frequency Ratio A,B,D will produce B/A, D/A series.

  • Frequency Ratio A,B,D,E will produce B/A, E/D series.

Minimum number of channels that can be used: 2

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 2

Smart Frequency#

Smart Frequency function makes use of regression analysis to increase the resolution of the measurement at the expense of measurement speed. Please, note: this mode assumes signal frequency is static within gate time (set by Sample Interval).

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 1

Frequency Offset#

Supported in:

  • FTR-210R with FREQ-OFFSET

Frequency Offset function measures relative frequency offset from nominal frequency.

Reference frequency is configured the same way as for TIE measurement function.

It is controlled by these configuration parameters:

  • Ref Frequency Detection

  • TieReferenceFrequencyNumberOfDigits

  • TieReferenceFrequency<Channel>

where <Channel> is one of A, A2, B, B2, D, D2, E, E2, C, EA, ER, G, Rb.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used: 1

Smart Frequency Offset#

Supported in:

  • FTR-210R with FREQ-OFFSET

Smart Frequency Offset function measures relative frequency offset from nominal frequency.

Smart Frequency Offset function makes use of regression analysis to increase the resolution of the measurement at the expense of measurement speed. Please, note: this mode assumes signal frequency is static within gate time (set by SampleInterval configuration parameter).

Reference frequency is configured the same way as for TIE measurement function.

It is controlled by these configuration parameters:

  • Ref Frequency Detection

  • TieReferenceFrequencyNumberOfDigits

  • TieReferenceFrequency<Channel>

where <Channel> is one of A, A2, B, B2, D, D2, E, E2, C, EA, ER, G, Rb.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used: 1

Period Average#

Average period over gate time (set by SampleInterval configuration parameter). This is back-to-back measurement.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 1

Smart Period Average#

Smart Period Average function makes use of regression analysis to increase the resolution of the measurement at the expense of measurement speed. Please, note: this mode assumes signal frequency is static within gate time (set by SampleInterval configuration parameter).

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 1

Period Single#

Allows to capture single signal periods for periods less than 20 MHz at expense of 50 ns or 1 μs (depending on particular model and licenses installed) dead-time.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 2

  • FTR-210R with INPUT-A: 1

Time Interval#

Time Interval between periodic signals. Result is normalized to the range of -0.5 to +1 signal period.

  • Time Interval A,B will produce A-B series.

  • Time Interval A,B,D will produce A-B, A-D series.

  • Time Interval A,B,D,E will produce A-B, A-D, A-E series.

All inputs except C can be used.

Minimum number of channels that can be used: 2

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 2

Time Interval Single#

Time Interval between single events.

  • Time Interval Single A,B will produce A-B series.

  • Time Interval Single A,B,D will produce A-B, A-D series.

  • Time Interval Single A,B,D,E will produce A-B, A-D, A-E series.

All inputs except C can be used.

Minimum number of channels that can be used: 2

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 2

AccumulatedTimeInterval#

Same as Time Interval, but the result is not normalized.

  • Accumulated Time Interval A,B will produce A-B series.

  • Accumulated Time Interval A,B,D will produce A-B, A-D series.

  • Accumulated Time Interval A,B,D,E will produce A-B, A-D, A-E series.

All inputs except C can be used.

Minimum number of channels that can be used: 2

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 2

Phase#

Phase difference between 2 periodic signals. The result is normalized to the range of -180° to +360°.

All inputs except C can be used.

Minimum number of channels that can be used: 2

Maximum number of channels that can be used: 2

Accumulated Phase#

Same as Phase, but the result is not normalized.

All inputs except C can be used.

Minimum number of channels that can be used: 2

Maximum number of channels that can be used: 2

TIE#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R | FTR-210R with FREQ-OFFSET

Time Interval Error (TIE) between independent clock sources.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 2

Positive Duty Cycle#

Ratio of a pulse signal’s Positive Pulse Width to its Period.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used: 1

Negative Duty Cycle#

Ratio of a pulse signal’s Negative Pulse Width to its Period.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used: 1

Positive Pulse Width#

Positive Pulse Width of a pulse signal.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used: 1

Negative Pulse Width#

Negative Pulse Width of a pulse signal.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used: 1

Rise Time#

Measures how much time it takes for the signal to go from 10% to 90% of its voltage range.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 2

  • FTR-210R with INPUT-A: 1

Fall Time#

Measures how much time it takes for the signal to go from 90% to 10% of its voltage range.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 2

  • FTR-210R with INPUT-A: 1

Rise Fall Time#

Measures how much time it takes for the signal to go from 10% to 90% of its voltage range and back.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used: 1

Positive Slew Rate#

Measures how fast signal voltage increases from 10% to 90% of its range.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 2

  • FTR-210R with INPUT-A: 1

Negative Slew Rate#

Measures how fast signal voltage decreases from 90% to 10% of its range.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 2

  • FTR-210R with INPUT-A: 1

Totalize#

Counts number of events on several input channels in parallel.

All inputs except C can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 2

Totalize X + Y#

Totalize with additional math applied for addition.

  • Totalize X+Y A,B will produce A+B series.

  • Totalize X+Y A,B,D will produce A+B, A+D series.

  • Totalize X+Y A,B,D,E will produce A+B, D+E series.

All inputs except C can be used.

Minimum number of channels that can be used: 2

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 2

Totalize X - Y#

Totalize with additional math applied for subtraction.

  • Totalize X-Y A,B will produce A-B series.

  • Totalize X-Y A,B,D will produce A-B, A-D series.

  • Totalize X-Y A,B,D,E will produce A-B, D-E series.

All inputs except C can be used.

Minimum number of channels that can be used: 2

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 2

Totalize X / Y#

Totalize with additional math applied for division.

  • Totalize X/Y A,B will produce A/B series.

  • Totalize X/Y A,B,D will produce A/B, A/D series.

  • Totalize X/Y A,B,D,E will produce A/B, D/E series.

All inputs except C can be used.

Minimum number of channels that can be used: 2

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 4

  • FTR-210R with INPUT-A: 2

Vmin#

Minimum voltage level of a signal.

Tip

Voltage measurement mode must be set according to minimum expected frequency of measured signal. See VoltageMode setting for details.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 2

  • FTR-210R with INPUT-A: 1

Vmax#

Maximum voltage level of a signal.

Tip

Voltage measurement mode must be set according to minimum expected frequency of measured signal. See VoltageMode setting for details.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 2

  • FTR-210R with INPUT-A: 1

Vpp#

Difference between minimum and maximum levels of an input signal. “pp” stands for peak-to-peak.

Tip

Voltage measurement mode must be set according to minimum expected frequency of measured signal. See VoltageMode setting for details.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 2

  • FTR-210R with INPUT-A: 1

Vminmax#

Minimum and maximum voltage levels of a signal.

Tip

Voltage measurement mode must be set according to minimum expected frequency of measured signal. See VoltageMode setting for details.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used: 1

DC Offset#

DC offset voltage of a signal.

Tip

Voltage measurement mode must be set according to minimum expected frequency of measured signal. See VoltageMode setting for details.

Warning

DC coupling must be enabled for corresponding input.

Inputs A, B, D, E can be used.

Minimum number of channels that can be used: 1

Maximum number of channels that can be used:

  • CNT-102: 2

  • CNT-104S | CNT-104R: 2

  • FTR-210R with INPUT-A: 1

:SYSTem:CONFigure:RESet#

Resets all operational settings to their default values and applies settings specified in the argument (if any). Default values are the same values that the instrument has after *RST command.

Note

:SYSTem:CONFigure:RESet without arguments is not equivalent to *RST command, because *RST command also performs additional actions, aside from restoring default values.

Command syntax:

:SYSTem:CONFigure:RESet [<parameters list>]

where <parameters list> is a quoted string of key-value pairs like "<param1> = <value1>; <param2> = <value2>; ..." where param1, param2… are configuration keys and value1, value2… are corresponding configuration values.

Please note that the argument is optional. If no argument is provided, all operational settings are reset to default values.

Description:

Although *RST command is the most universal way to reset instrument’s state to a known predetermined state and generally should be used when you start working with the instrument, in may be not convenient in situations when you want to change operational settings several times in a sequence.

The command parameter represents a quoted string of various settings for the instrument. The settings are given as key-value pairs separated by a semicolon (;) inside the quoted string.

The instrument tries to apply all specified settings and checks their overall consistency as a whole set. If new configuration of the instrument is invalid (e.g. parameters are out of allowed range or value of one parameter conflicts with value of another parameter), the command execution results in an error and no setting are applied. In other words, the command will either successfully apply all specified settings or will not change the instrument configuration at all. Such behavior allows ensuring that the instrument configuration is always in a known predictable state.

To check for possible configuration errors it is recommended to run SYSTem:ERRor? query immediately after configuration command.

For description of individual settings, see SYSTem:CONFigure command.

Example:

SEND: → :SYST:CONF:RES “CouplingA=DC; FilterA=100kHz; SampleInterval=500us; SampleCount=10; Function=Positive Pulse Width A”

Example:

SEND: → :SYST:CONF:RES

:SYSTem:PREFerences?#

Read out user preferences.

The settings called user preferences are usually not expected to be frequently changed during instrument operation. For example, such settings are network parameters, display brightness, etc.

The instrument also has another category of settings called operational settings that are not affected by this command. See :SYSTem:CONFigure command for more information.

Key-value pairs are returned, delimited by colon.

For description of individual settings, see SYSTem:PREFerences command.

Example:

SEND: → :SYST:PREF?

READ: ← Brightness = Normal;IPMode= DHCP; <…>

:SYSTem:PREFerences#

Configure user preferences.

Modified preferences are applied over current state.

Command syntax:

:SYSTem:PREFerences <parameters list>

where <parameters list> is a quoted string of key-value pairs like "<param1> = <value1>; <param2> = <value2>; ..." where param1, param2… are configuration keys and value1, value2… are corresponding configuration values.

Description:

The command’s behavior is incremental, meaning that it can be invoked several times for changing individual parameters.

The command parameter represents a quoted string of various settings for the instrument. The settings are given as key-value pairs separated by a semicolon (;) inside the quoted string.

The instrument tries to apply all specified settings and checks their overall consistency as a whole set. If new configuration of the instrument is invalid (e.g. parameters are out of allowed range or value of one parameter conflicts with value of another parameter), the command execution results in an error and no setting are applied. In other words, the command will either successfully apply all specified settings or will not change the instrument configuration at all. Such behavior allows ensuring that the instrument configuration is always in a known predictable state.

To check for possible configuration errors it is recommended to run SYSTem:ERRor? query immediately after configuration command.

Example:

SEND: → :SYST:PREF “Brightness=Normal”

Configuration parameters for :SYSTem:PREFerences#

Brightness#

Display brightness.

Possible values: Minimum, Low, Medium, High, Maximum

Default value: Medium

Description:

  • Minimum - Minimum brightness

  • Low- Low brightness

  • Medium- Medium brightness

  • High- High brightness

  • Maximum- Maximum brightness

Example:

SEND: → SYST:PREF “Brightness = Minimum”

ScreenSaverTimeout#

Timeout for switching display off.

Possible values: 5minutes, 10minutes, 30minutes, 1hour

Default value: 10minutes

Description:

Values are self explanatory: inactivity period can be set from 5 minutes to 1 hours.

If the user does not interact with the display for specified amount of time, including VNC or web browser sessions, the screen is temporarily turned off, until next interaction.

Example:

SEND: → SYST:PREF “ScreenSaverTimeout = 1hour”

PpsOutOffset#

Supported in: FTR-210R

Applies offset to 1PPS OUT signal.

Possible values: -0.5 s – 0.5 s in 1 ns steps

Default value: 0

Description:

This setting can be used to adjust the delay of 1PPS output of the device.

Example:

SEND: → SYST:PREF “PpsOutOffset = -50 ms”

IPAddress, WirelessIPAddress#

Specifies static (manual) IPv4 address for Ethernet or Wireless network connection.

Possible values: IP address (four numbers, dot-separated)

Default value: 192.168.0.99

Description:

IP address for the Ethernet interface when static IP address mode is enabled in IPMode or WirelessIPMode parameter. When DHCP mode is enabled, the IP is assigned by a DHCP server in the network.

Example:

SEND: → SYST:PREF “IPAddress=192.168.0.99”

Example:

SEND: → SYST:PREF “WirelessIPAddress=192.168.0.99”

IPDNSx, WirelessIPDNSx#

Specifies DNS servers for static (manual) IPv4 address configuration for Ethernet or Wireless network connection.

Parameter syntax: IPDNS1, IPDNS2, WirelessIPDNS1, WirelessIPDNS2

Possible values: IP address (four numbers, dot-separated)

Default value:

  • 8.8.8.8 for IPDNS1 and WirelessIPDNS1

  • 1.1.1.1 for IPDNS2 and WirelessIPDNS2

Description:

DNS server(s) IP addresses for Ethernet interface when static IP address mode is enabled in IPMode or WirelessIPMode parameter. When DHCP mode is enabled, these settings are assigned by a DHCP server in the network.

Example:

SEND: → SYST:PREF “IPDNS1=8.8.8.8; IPDNS2 = 1.1.1.1”

Example:

SEND: → SYST:PREF “WirelessIPDNS1=8.8.8.8; WirelessIPDNS2=1.1.1.1”

IPGateway, WirelessIPGateway#

Default gateway for Ethernet or Wireless network connection.

Possible values: IP address (four numbers, dot-separated)

Default value: 192.168.0.1

Description:

Gateway IP address for Ethernet or Wireless interface when static IP address mode is enabled in IPMode or WirelessIPMode parameter. When DHCP mode is enabled, this setting is assigned by a DHCP server in the network.

Example:

SEND: → SYST:PREF “IPGateway=192.168.0.1”

Example:

SEND: → SYST:PREF “WirelessIPGateway=192.168.0.1”

IPMode, WirelessIPMode#

Select whether to configure the IP address automatically using a DHCP server or manually, for Ethernet or Wireless interface.

Possible values: DHCP, Static

Default value: DHCP

Description:

IP configuration mode for Ethernet interface or Wireless interface.

  • DHCP- IP address settings are acquired via DHCP

  • Static- Static IP configuration. When this mode is selected you should also configure IPAddress, IPNetmask, IPGateway, IPDNS1 (and optionally IPDNS2) parameters or their wireless variants.

Example:

SEND: → SYST:PREF “IPMode=DHCP”

Example:

SEND: → SYST:PREF “WirelessIPMode=DHCP”

IPNetmask, WirelessIPNetmask#

Network mask for Ethernet or Wireless interface.

Possible values: IP mask (four numbers, dot-separated)

Default value: 255.255.255.0

Description:

IP netmask for Ethernet or Wireless interface when static IP address mode is enabled in IPMode or WirelessIPMode parameter. When DHCP mode is enabled, this setting is assigned by a DHCP server in the network.

Example:

SEND: → SYST:PREF “IPNetmask=255.255.240.0”

Example:

SEND: → SYST:PREF “WirelessIPNetmask=255.255.240.0”

Other configuration and control commands#

:SYSTem:ERRor?#

Read the Error/Event Queue.

Command syntax:

:SYSTem:ERRor[:NEXT]?

Description:

You can read the error queue with :SYSTem:ERRor? query.

The query returns an error code, followed by the error description.

If more than one error occurred, the query will return the error that occurred first. After you read an error, you will also remove it from the queue. You can read the next error by repeating the query.

When you have read all errors, the queue is empty, and :SYSTem:ERRor? query will return:

0, "No error"

When errors occur and you do not read these errors, the Error Queue may overflow. In such case the instrument will overwrite the last error in the queue with:

-350, "Queue overflow"

If more errors occur, they will be discarded.

It is a good practice to check for errors after instrument configuration and before starting a measurement.

Example:

SEND: → :SYST:ERR?

READ: ← -220,”Parameter error;Wrong enum value ‘25x’ for setting ‘AttenuationA’”

:SYSTem:TIME:CURRent?#

Read current system time.

Command syntax:

:SYSTem:TIME:CURRent? <timezone>

Description:

The date and time is represented in ISO format.

For UTC timezone Z suffix is added.

<timezone> can be one of:

  • UTC - for UTC timezone

  • LOCAL - for currently configured timezone

Current timezone can be checked in Timezone parameter in SYST:PREF? reply.

Example:

SEND: → :SYST:TIME:CURR? UTC

READ: ← 2025-05-10T22:13:28Z

Example:

SEND: → :SYST:TIME:CURR? LOCAL

READ: ← 2025-05-10T22:13:28

:SYSTem:TIME:UPTIME?#

Read current system uptime.

Command syntax:

:SYSTem:TIME:UPTIME?

Description:

Returns current system uptime in seconds.

After the system wakes up from stand-by mode, uptime counter is reset.

Example:

SEND: → :SYST:TIME:UPTIME?

READ: ← 123328

:DISPlay:ENABle#

Turn displaying results on-screen on/off.

The actual change if display mode will happen only after next measurement is started, for example by :INIT.

Command syntax: :DISPlay:ENABle <boolean>

Description:

This command switches displaying measurement results on-screen on or off. Switching off is useful to boost fetching speed for block measurements. If switched off, the user will see a lock screen that can be unlocked by tapping a button, unless the device is in Remote Locked state.

Default value (RST condition): 1

:ROSCillator:STATe?#

Query reference clocks (timebase) statuses.

Command syntax:

:ROSCillator:STATe?

Query response format:

<used_ref_status>, <int_ref_status>, <ext_ref_status>

where

  • <used_ref_status> is one of INT, EXT, FAIL

  • <int_ref_status> is one of OK, FAIL

  • <ext_ref_status> if one of 1MHz, 5MHz, 10MHz, FAIL

Description:

This query provides extensive information about currently used reference clocks and the state of internal and external reference clock signals. The response contains 3 fields separated by commas.

The first field indicates which timebase is currently in use: internal (INT), external (EXT) or none (FAIL).

The second field indicates status of internal timebase reference: OK or FAIL.

The third field indicates whether external reference signal is connected (1MHz, 5MHz or 10MHz) or not (FAIL).

Example:

SEND: → :ROSC:STAT?

READ: ← EXT, INT OK, EXT 10MHz

:ROSCillator:INTernal[:STATe]?#

Query status of the internal timebase.

Command syntax:

:ROSCillator:INTernal:STATe?

Query response format:

<disciplining_state>, <time_since_change>

where

  • <disciplining_state> is one of FAIL, TRACKING, ADJUSTING, FREE_RUN, WARMING_UP

  • <time_since_change> indicates time in seconds (floating point value)

Description:

This command is only useful for timebases that allow disciplining (Rubidium).

For all other types of oscillators the device always reports FREE_RUN status.

  • FAIL indicates that internal lock has disappeared, which is abnormal situation and should never happen.

  • TRACKING indicates that the internal timebase has locked to external 1PPS signal or 1PPS signal from GNSS receiver

  • ADJUSTING indicates that the internal timebase has detected 1PPS signal for disciplining, but did not lock to it yet. This status should eventually change to TRACKING under normal conditions.

  • FREE_RUN indicates hold-over state: either manual hold-over or caused by missing 1PPS signal.

  • WARMING_UP indicates warm-up state after power-on, when timebase signal is not considered stable yet.

<time_since_change> indicates the time in seconds that passed since last status change.

Example:

SEND: → :ROSC:INT:STAT?

READ: ← FREE_RUN, 270.5

Acquisition of measurement data#

:FETCh[:SCALar]?#

Fetch one result

Command syntax:

:FETCh[:SCALar]? [<series name>]

where <series names> in measurement function dependent series.

Query response format:

The format of the returned data is determined by the format commands :FORMat:TINFormation and :FORMAT:DATA. See description below.

Description:

The fetch query retrieves one measurement result for the given series name without making new measurements. Fetch does not work unless a measurement has been made by the :INITiate command.

Series name argument is optional. If omitted, the command will default to first series for current measurement.

If the counter has made an array of measurements, the query fetches the first measuring results first. The second query fetches the second result and so on. When the last measuring result has been fetched, the query returns empty string.

Measuring result can be fetched as long as the result is valid, i.e. until the following occurs:

\*RST is received.

– an :INITiate command is executed

– any reconfiguration is done.

The format of the returned data is determined by the format commands :FORMat:TINFormation and :FORMat:DATA:





:FORMAT:DATA
ASCii
:FORMAT:DATA REAL


:FORMAT:DATA
PACKED

:FORMAT:TINF OFF



<Val>
,<Val>,<Val>…


#18<
Val>,#18<Val>,#18<Val>…


#2
80<Val><Val><Val>…


:FORMAT:TINF ON



<Val>,
<TS>,<Val>,<T
S>,<Val>,<TS>

#18<V
al>,#18<TS>,#18<Val>,#1
8<TS>,#18<Val>,#18<TS>…

#900
0000160<Val><TS><V
al><TS><Val><TS>….

Val = measurement value (double-precision floating-point format according to IEEE-754 in REAL and PACKed)

TS = timestamp value (double-precision floating-point format according to IEEE-754 in REAL, and 64-bit integer representing the number of picoseconds in PACKed)

#18 and #9000000160 are binary data headers. First digit after “#” represent the number of subsequent digits. This following number specifies the size of a binary data (in bytes) that follow the header. In other words, the first digit specifies the length of the length of sample data. For example, in REAL format in the header #18 “1” indicates that there is one more digit to read after “#”. “8” indicates that there will be 8 bytes of binary samples. In PACKED format the header #9000000160 shows that there are 9 more digits after ‘#’. 000000160 indicates that there will be 160 bytes of binary data.

In some situations, the instrument may not be able to provide valid results because of a measured value exceeds expected range (for example signal has too big amplitude or frequency is too high). In such situations the samples returned by :FETCh[:SCALar] and :FETCh:ARRay will have special ‘infinity’ value. In ASCII format it will be inf string, and for REAL and PACKED formats it will be bit pattern corresponding to infinity according to IEEE 754.

:FETCh:ARRay?#

Fetch an array of results

Command syntax:

:FETCh:ARRay <fetch array size>[, <series name>]

where <fetch array size> is either an integer number or MAX keyword and <series name> is the series name, that is measurement function dependent.

Query response format:

The format of the returned data is determined by format commands :FORMat and :FORMat:FIXed. See :FETCh[:SCALar] for formats description.

Description:

The difference of :FETCh:ARRay? query from :FETCh? query is that it fetches several measuring results at once.

Series name argument is optional. If omitted, the command will default to first series for current measurement.

<fetch array size> must be positive integer value or MAX keyword. Data samples in the response are present in the order they were created by the measurement core of the instrument (sorted by time, earliest sample is first). Maximum allowed array size for a single fetch is 1000000. Samples are fetched in FIFO manner. For example, when the instrument has made a measurement and an array of measurements is available for input A, :FETCh:ARRay? 10, A fetches the first 10 measuring results from the output queue. The second :FETCh:ARRay? 10, A fetches results 11 to 20, and so on. When the last measuring result is fetched, :FETCh:ARRay? 10, A returns an empty string.

:FORMat[:DATA][?]#

Specifies format of the data samples that are returned in response to FETCh:SCALar? and FETCh:ARRay? queries.

Command syntax:

:FORMat[:DATA] <format>

where <format> is one of ASCii, REAL or PACKed

Command syntax:

:FORMat[:DATA]?

Query response format:

ASCii, REAL or PACKED

Default value (RST condition): ASCii

Description:

  • ASCii - Returned data samples are represented as floating point numbers in text form, separated by comma (for FETCh:ARRAY? query).

  • REAL - Returned data samples are represented as binary data with “#18” header. Each sample or timestamp consists of 8 bytes.

  • PACKed - See REAL.

For more details, see :FETCh[:SCALar] query description.

:FORMat:TINFormation#

Specifies whether timestamps are included in data samples that are returned in response to FETCh:SCALar? and FETCh:ARRay? queries.

Command syntax:

:FORMat:TINFormation <boolean>

where <boolean> is one of 1, 0, ON, OFF:

  • 1 or ON to enable timestamping

  • 0 or OFF to disable timestamping

Default value (RST condition): OFF

Description:

This command turns the time stamping of measurements on/off. The setting of this command will affect the output format of FETCh queries.

For more details, see :FETCh[:SCALar] query description.

Control and monitoring of the GNSS subsystem#

:GNSS:STATe?#

Supported in:

  • CNT-104R with GNSS

  • FTR-210R

Reads out general GNSS status.

Query response format:

The query returns key-value pairs, delimited by colons.

Keys description:

  • Fix - type of current fix

  • TTFF - time to first fix, in seconds, reported by the GNSS receiver

  • Latitude, Longitude, Altitude - geographical coordinates

  • SatellitesVisible - number of satellites currently seen by the receiver

  • SatellitesUsed - number of satellites currently used in the equation

Possible values for Fix: unknown, no, 2d, 3d, time

  • unknown - fix type was not determined yet

  • no - no fix

  • 2d - 2D fix

  • 3d - 3d fix

  • time - Time fix, after Survey-in procedure has completed (see User Manual for details)

Example:

SEND: → GNSS:STAT?

READ: ← Fix=3d,TTFF=30,Latitude=43.082994,Longitude=-77.589061,Altitude=227.156,SatellitesVisible=10,SatellitesUsed=9

:GNSS:SATellites?#

Supported in:

  • CNT-104R with GNSS

  • FTR-210R

Returns the list of visible satellites (conventional name, used/unused state, signal strength).

Query response format:

<ID>=<state>,<strength>; <ID>=<state>,<strength>; <ID>=<state>,<strength>; ...

The response format is subject to change.

The user is encouraged to check the format with GNSS:SATellites:FORMat? query.

The query returns key-value pairs, delimited by semicolons.

The key is satellite ID (example: G5 where G stands for GPS constellation). Possible constellation prefixes include:

  • G = GPS

  • R = GLONASS

  • E = Galileo

  • C = BeiDou

  • S = SBAS

  • Q = QZSS

The value contains used/unused state and signal strength in percent.

U stands for used and N stands for unused.

Example:

SEND: → GNSS:SAT?

READ: ← G5=U,39; G7=N,0; G8=N,0; G13=U,49; G14=U,26; G15=U,38; G17=N,0; …

:GNSS:SATellites:FORMat?#

Supported in:

  • CNT-104R with GNSS

  • FTR-210R

Returns the list of fields used in GNSS:SATellites? query.

Query response format:

<key>=<field1_name>,<field2_name>,...

The query returns response format for GNSS:SATellites? query.

Example:

SEND: → GNSS:SAT:FORM?

READ: ← ID=Used,Strength

:GNSS:RESet#

Supported in:

  • CNT-104R with GNSS

  • FTR-210R

Performs reset of GNSS receiver, which is followed by cold start.

Example:

SEND: → GNSS:RES

Connection to the instrument#

For controlling the instrument over Ethernet connections, HiSLIP (High-Speed LAN Instrument Protocol) is used. Simplest way to communicate with the instrument from a PC is to make use of VISA software, for example NI VISA. For connecting to the instrument, a connection resource string in the following form will be required:

TCPIP::<IP address>::hislip0::INSTR

Replace <IP address> with IPv4 address of the instrument, for example:

TCPIP::192.168.0.25::hislip0::INSTR

IP address of the instrument can can checked in Settings → User Options → Network page in device’s on-screen interface.

Examples of command sequences for frequent tasks#

Example of a simple measurement#

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Send this commands to the instrument to make 200 period measurements on input A, averaged over 10 ms intervals with auto-trigger and read results. Signal is assumed to be present on input A.

Queries (commands with ? sign) assume reading response from the instrument:

*RST; *CLS
SYST:CONF "Function=Period Average A; SampleCount=200; SampleInterval=10ms; VoltageMode=VeryFast"
:INIT
*OPC?
FETC:ARR? MAX

Example of a measurement with fetching results on-the-fly#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

This example is an improved of the previous one.

Gate time is set to 1 second and sample count is 1000.

This means that the measurement takes around 1000 seconds in total, provided that the signal is fast enough.

Function is set to Frequency on input A.

Also, some additional adjustment are performed for input A.

First, configure the instrument:

*RST; *CLS
SYST:CONF "Function=Frequency A; SampleCount=1000; SampleInterval=1s"
SYST:CONF "TriggerModeA=Manual; AbsoluteTriggerLevelA=300mV; ImpedanceA=50Ohm; CouplingA=DC"
*ESE 1; *SRE 32
:INIT; *OPC

*ESE 1 command will ensure that Operation Complete event in the Standard Event Status Register (*ESR?) will trigger setting ESB bit of the Status Byte Register (*STB?).

*OPC command (without question mark!) states that Operation Complete event is set after the measurement completes.

The measurement is started by :INIT.

Measurement results can now be fetched on-the-fly:

:FETC:ARR? MAX

If this query returns an empty string, that means no further results are currently available.

This can also happen when measurement is finished.

In order to determine if measurement is finished, you can wait until Status Byte Register is updated with viWaitOnEvent (if VISA is used). Alternatively, you can also poll *STB?:

*STB?

When status byte is updated to non-zero value (32), fetch all remaining samples with:

:FETC:ARR? MAX

one last time.

Instrument programming in Python environment#

Installing prerequisites#

Download and install NI VISA software: https://www.ni.com/en-us/support/downloads/drivers/download.ni-visa.html

Download and install latest Python 3 version: https://www.python.org/downloads/

Checking Python installation#

Open command prompt:

on Windows: press Win+R, type cmd, press Enter. You will see a window where you can type commands:

_images/image-20230813-211218.png

In command prompt type:

python --version

or:

python3 --version

followed by Enter to check if python is correctly installed. You should get response indicating installed python version, like this:

Python 3.11.4

On Windows, if Microsoft Store is open when you execute “python” command or the command simply gives no response, follow these steps.

On Windows 11 go to Start Menu → Settings → Apps → Advanced app settings → App execution aliases and disable “python” and “python3” aliases.

_images/image-20230715-151311.png _images/image-20230715-151324.png _images/image-20230715-151334.png

On Windows 10 open Start Menu → Settings (“Gear” icon) → Applications → Applications and functions → Link “Application execution aliases”. Disable “python” and “python3” items.

PyVISA library installation#

Open source PyVISA library can be used for interaction with NI VISA software which, in turn, provides functionality required to support communication with measurement instruments using protocols such as HiSLIP.

To install PyVisa library open command prompt and type:

pip install pyvisa

If you receive error message saying 'pip' is not recognized as an internal or external command, operable program or batch file, ensure that Python is correctly installed.

Check if communication with the instrument is possible from Python (at the very basic level):

  1. Ensure your instrument is connected to the network.

  2. Start Python in interactive mode by typing python in the terminal window:

_images/image-20230813-212303.png
  1. In python command prompt type the following lines replacing 192.168.0.25 with the actual IP address of your instrument (can be checked in Settings → User options → Network → Ethernet IP address):

import pyvisa as visa
rm = visa.ResourceManager()
instr = rm.open_resource('TCPIP::192.168.0.25::hislip0::INSTR')
instr.query('*IDN?')

The last line executes *IDN? query which asks the instrument for identification information. You should get response from the instrument like this:

'Pendulum, CNT-104S, 607017, v1.2.0 2023-07-13\n'

  1. Type the following to disconnect from the instrument and exit python:

instr.close()
quit()

Examples#

More complex scenarios imply using Python in non-interactive mode.

Example 1: Frequency measurement#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Here is an example that shows very basic usage of Python to perform a measurement.

#!/usr/bin/env python

# Replace INSTRUMENT_IP with the IP address of your instrument!
# Check it in Settings → Settings → User options → Network → Ethernet IP address.
INSTRUMENT_IP = '192.168.255.254'

import sys
import pyvisa as visa

rm = visa.ResourceManager()

def example(resource_str):
    # Connect to the instrument
    instr = rm.open_resource(resource_str)
    # VISA I/O operations timeout, in milliseconds
    instr.timeout = 5000

    # Send '*IDN?' and read response
    idn = instr.query('*IDN?')
    print('Running Example #1 on', idn.strip())
    print('Resource:', resource_str)
    print('In this example a frequency measurement is performed on input A\n')

    # Reset to default settings, clear error and message queues.
    instr.write('*RST;*CLS')
    # Configure the measurement: simple frequency measurement with timeout.
    # Pay attention to double and single quotes.
    instr.write(':SYST:CONF "Function=Frequency A; SampleCount=10; SampleInterval=0.01; '
                'Timeout=On; TimeoutTime=1.0"')
    # It is a good practice to check for errors
    err = instr.query(':SYST:ERR?')
    if err.strip() != '0,"No error"':
        raise RuntimeError(f'Error configuring measurement: {err}')

    instr.write(':INIT')

    # Waiting (in a blocking manner) for measurement completion.
    # *OPC? query responds back only when all pending operations (measurement in this case) are completed.
    # Measurement will be complete when all requested samples are collected or if timeout occurs.
    # No need to check for response here, because it is always '1' by SCPI standard.
    instr.query('*OPC?')

    # Will return a string of comma-separated numbers
    samples_str = instr.query(':FETCH:ARRAY? MAX, A')
    # Remove newline at the end
    samples_str = samples_str.strip()
    if len(samples_str) > 0:
        # Convert the string to array
        samples = list(map(float, samples_str.split(',')))
    else:
        samples = []

    # Display measurement results
    print('Results: {}'.format(samples if samples else 'no data (signal not connected?)'))
    instr.close()

if __name__ == '__main__':
    resource_str = f'TCPIP::{INSTRUMENT_IP}::hislip0::INSTR'
    try:
        example(resource_str)
    except visa.VisaIOError as e:
        sys.stderr.write(f'Error occurred: {e}\n\n')
        sys.exit(1)

Example 2: check various statuses of FTR-210R / CNT-104R#

Supported in:

  • CNT-104R with GNSS

  • FTR-210R

Here is an example that shows very basic usage of Python to check various statuses of FTR-210R.

#!/usr/bin/env python

# Replace INSTRUMENT_IP with the IP address of your instrument!
# Check it in Settings → Settings → User options → Network → Ethernet IP address.
INSTRUMENT_IP = '192.168.255.254'

import sys
import pyvisa as visa
import time

# Create VISA resource manager. In some cases you may need to specify dll/so
# file of VISA implementation, for example:
#rm = visa.ResourceManager('librsvisa.so')
rm = visa.ResourceManager()

def check_error(instr, query):
    error = instr.query('SYST:ERR?')
    if error.strip() != '0,"No error"':
        raise RuntimeError(f'error after "{query}" command')

def execute_command(instr, command):
    instr.write(command)
    check_error(instr, command)

def perform_query(instr, query):
    response = instr.query(query).strip()
    check_error(instr, query)
    return response

def read_key_value_pairs(instr, query):
    # Example response:
    #   DiscipliningMode=Always; DiscipliningSource=GNSS;
    #   InternalCalibrationMode=Every30Min; ...
    settings_str = perform_query(instr, query)

    # Separate key-value pairs
    key_value_pairs = settings_str.split(';')

    # Remove possible extra spaces
    key_value_pairs = [kv_pair_str.strip() for kv_pair_str in key_value_pairs]

    result_dict = dict()
    # Convert key-value pairs to python dictionary
    for kv_pair_str in key_value_pairs:
        key, value = kv_pair_str.split('=', maxsplit=1)
        key = key.strip()
        value = value.strip()
        result_dict[key] = value

    return result_dict

def example(resource_str):
    # Connect to the instrument
    instr = rm.open_resource(resource_str)
    # VISA I/O operations timeout, in milliseconds
    instr.timeout = 5000

    # Send '*IDN?' and read response
    idn = instr.query('*IDN?')
    print(f'Running with {idn.strip()}')
    print('Resource:', resource_str)
    print('In this example various statuses of FTR-210R are checked\n')

    # Ensure that disciplining is on
    settings = read_key_value_pairs(instr, 'SYST:CONF?')
    if settings['DiscipliningMode'] != 'Always':
        execute_command(instr, 'SYST:CONF "DiscipliningMode=Always"')
    print('Disciplining is on')

    # Ensure disciplining from GNSS
    if settings['DiscipliningSource'] != 'GNSS':
        execute_command(instr, 'SYST:CONF "DiscipliningSource=GNSS"')
    print('Disciplining from GNSS')

    # Ensure time fix
    gnss_status = read_key_value_pairs(instr, 'GNSS:STAT?')
    print(f'GNSS fix mode is: {gnss_status["Fix"]}')

    # Ensure many used satellites
    used_count = int(gnss_status['SatellitesUsed'])
    if used_count < 4:
        print(f'Too few satellites visible: {used_count}')
    else:
        print(f'Satellites used: {used_count}')

    # Ensure good lock of Rubidium timebase
    internal_oscillator_response = perform_query(instr, 'ROSC:INT:STAT?')
    osc_state, state_time_str = internal_oscillator_response.split(',')
    state_time = float(state_time_str.strip())  # status "age" in seconds
    if osc_state != 'TRACKING':
        print(f'Internal oscillator state is not TRACKING but {osc_state}')
    else:
        print('Internal oscillator is in TRACKING state')

        # Ensure that enough time has passed since status changed to TRACKING
        if state_time < 3600 * 3:  # 3 hours
            print('Not enough time has passed since status changed to TRACKING')

    # Helps to avoid exception on closing the connection,
    # with some VISA implementations
    time.sleep(1)
    instr.close()


def main():
    resource_str = f'TCPIP::{INSTRUMENT_IP}::hislip0::INSTR'
    try:
        example(resource_str)
    except visa.VisaIOError as e:
        sys.stderr.write(f'Error occurred: {e}\n\n')
        sys.exit(1)


if __name__ == '__main__':
    main()

Example 3: Fast individual measurements#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Here is an example that shows usage of Python to perform fast individual measurements on a single channel.

#!/usr/bin/env python

# This example demonstrates how to perform fast individual measurements
# on single channel.

# Replace INSTRUMENT_IP with the IP address of your instrument!
# Check it in Settings → User options → Network → Ethernet IP address.
INSTRUMENT_IP = '192.168.22.31'

import sys
import time
import pyvisa as visa

# Create VISA resource manager. In some cases you may need to specify dll/so
# file of VISA implementation, for example:
#rm = visa.ResourceManager('librsvisa.so')
rm = visa.ResourceManager()


def fast_individual_measurement(resource_str):
    # Connect to the instrument
    instr = rm.open_resource(resource_str)
    # VISA I/O operations timeout, in milliseconds
    instr.timeout = 10000

    # Send '*IDN?' and read response
    idn = instr.query('*IDN?')
    print('Running Interactive measurements on', idn.strip())
    print('Resource:', resource_str)

    # Reset to default settings, clear error and message queues
    instr.write('*RST;*CLS')

    # Configuration parameters
    # The trigger level. Should be somewhere in a middle of the signal range.
    trigger_level = 0.5  # In volts
    input_channel = 'A'

    # Configure the measurement.
    # Here "sample interval" parameter is not configured, because it doesn't
    # have influence when making individual measurements with "Period Single"
    # measurement function. However, it makes sense if the function is changed
    # to "Frequency" or "Period Average". See user manual for more details.
    instr.write(
        ':SYST:CONF "Function=Period Single {0}; SampleCount=1; '
        'TriggerMode{0}=Manual; AbsoluteTriggerLevel{0}={1} V"'.format(
            input_channel, trigger_level))

    # Optional.
    # By default, the instrument periodically initiates internal calibration
    # of time measurement circuits. However, for individual fast measurements
    # this may be not desired, as it may infrequently delay the measurement.
    # Here the internal calibration is forced to run once and then disabled.
    instr.write(':SYST:CONF "InternalCalibrationMode=BeforeEveryMeasurement"')
    instr.write(':INIT;:ABORT')
    instr.write(':SYST:CONF "InternalCalibrationMode=Never"')

    # It is a good practice to check for errors
    err = instr.query(':SYST:ERR?')
    if err.strip() != '0,"No error"':
        raise RuntimeError(f'Error configuring measurement: {err}')

    # Turn off display for better performance and set binary format
    instr.write(':DISP:ENAB OFF;:FORMAT PACK;:FORMAT:TINF OFF')

    print('Configuration complete. Ready for measurements.\n')

    while True:
        # Wait for user input
        user_input = input("Press Enter to measure (or type 'quit' to exit): ")
        user_input = user_input.strip().lower()

        if user_input == 'quit':
            print('Exiting...')
            break

        print('Making measurement...')

        # Start timing the measurement
        t_start = time.perf_counter()

        # Perform the measurement
        try:
            data = instr.query_binary_values(f':INIT;*WAI;:FETCH? {input_channel}',
                                            datatype='d', is_big_endian=False)
            # Stop timing the measurement
            t_stop = time.perf_counter()
            t_delta = t_stop - t_start
            if len(data) > 0:
                # Display the measurement result
                measurement_value = data[0]  # First (and only) sample
                print(f'Measurement completed in {t_delta:.4f} seconds:')
                print(f'Channel {input_channel}: {measurement_value}')
            else:
                print('No data received from measurement')

        except Exception as e:
            t_stop = time.perf_counter()
            t_delta = t_stop - t_start
            print(f'Error during measurement (took {t_delta:.4f} seconds): {e}')

        print()

    # Clean up - restore display and reset
    instr.write(':DISP:ENAB ON')
    instr.write('*RST;*CLS')

    # Helps to avoid exception on closing the connection,
    # with some VISA implementations
    time.sleep(1)

    instr.close()


if __name__ == '__main__':
    resource_str = f'TCPIP::{INSTRUMENT_IP}::hislip0::INSTR'
    try:
        fast_individual_measurement(resource_str)
    except visa.VisaIOError as e:
        sys.stderr.write(f'Error occurred: {e}\n\n')
        sys.exit(1)
    except KeyboardInterrupt:
        print('\nInterrupted by user')
        sys.exit(0)

Example 4: Fast individual measurements on several channels#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Here is an example that shows usage of Python to perform fast individual measurements on several channels.

#!/usr/bin/env python
import os

# This example demonstrates how to perform fast individual measurements
# on several channels.

# Replace INSTRUMENT_IP with the IP address of your instrument!
# Check it in Settings → User options → Network → Ethernet IP address.
INSTRUMENT_IP = '192.168.22.31'

import sys
import time
import pyvisa as visa

# Create VISA resource manager. In some cases you may need to specify dll/so
# file of VISA implementation, for example:
#rm = visa.ResourceManager('librsvisa.so')
rm = visa.ResourceManager()


def fast_individual_measurement(resource_str):
    # Connect to the instrument
    instr = rm.open_resource(resource_str)
    # VISA I/O operations timeout, in milliseconds
    instr.timeout = 10000

    # Send '*IDN?' and read response
    idn = instr.query('*IDN?')
    print('Running interactive measurements on {}'.format(idn.strip()))
    print('Resource:', resource_str)

    # Reset to default settings, clear error and message queues
    instr.write('*RST;*CLS')

    # CNT-104S and CNT-104R have 4 main inputs. CNT-102 - only 2.
    # Adjust these lists according to your model and available signals.
    # The measurement will freeze if there is no signal on an input!
    input_channels = ['A', 'B', 'D', 'E']  # Replace with ['A', 'B'] for CNT-102
    series = input_channels
    # The trigger level should be somewhere in a middle of the signal range.
    # Adjust if needed.
    trigger_levels = [0.5, 0.5, 0.5, 0.5]

    # For "Frequency" function sample interval defines gate time.
    # Total measurement time for one measurement cannot be lower than
    # max(gate time, signal period). Other measurement functions may use or not
    # use this parameter. See user manual for details.
    sample_interval = 1e-6  # 0s is possible, but requires Option 121F.

    # Configure common settings for all channels
    instr.write(':SYST:CONF "Function=Frequency {0}; SampleCount=1; '
        'SampleInterval={1} s"'.format(','.join(input_channels), sample_interval))

    # Configure trigger levels for each channel
    for i in range(len(input_channels)):
        instr.write(
            ':SYST:CONF "TriggerMode{0}=Manual; '
            'AbsoluteTriggerLevel{0}={1} V"'.format(
                input_channels[i], trigger_levels[i]))

    # Optional.
    # By default, the instrument periodically initiates internal calibration
    # of time measurement circuits. However, for individual fast measurements
    # this may be not desired, as it may infrequently delay the measurement.
    # Here the internal calibration is forced to run once and then disabled.
    instr.write(':SYST:CONF "InternalCalibrationMode=BeforeEveryMeasurement"')
    instr.write(':INIT;:ABORT')
    instr.write(':SYST:CONF "InternalCalibrationMode=Never"')

    # It is a good practice to check for errors
    err = instr.query(':SYST:ERR?')
    if err.strip() != '0,"No error"':
        raise RuntimeError(f'Error configuring measurement: {err}')

    # Turn off display for better performance and set binary format
    instr.write(':DISP:ENAB OFF;:FORMAT PACK;:FORMAT:TINF OFF')

    print('Configuration complete. Ready for measurements.\n')

    while True:
        # Wait for user input
        user_input = input("Press Enter to measure (or type 'quit' to exit): ")
        user_input = user_input.strip().lower()

        if user_input == 'quit':
            print('Exiting...')
            break

        print('Making measurement...')

        # Start timing the measurement
        t_start = time.perf_counter()
        results = []
        # Perform the measurement
        try:
            # :INIT command starts the measurement
            # *WAI will block execution of subsequent commands until the
            # measurement finishes.
            cmd = ':INIT;*WAI;'
            for s in series:
                cmd += f':FETCH? {s};'
            # Sending several commands and queries in single "write"
            instr.write(cmd)

            # Reading multiple replies to "FETCH?" query
            for s in series:
                data = instr.read_binary_values(datatype='d', is_big_endian=False)

                if len(data) > 0:
                    result = data[0]  # First (and only) sample
                else:
                    result = None
                results.append(result)

            # Stop timing the measurement
            t_stop = time.perf_counter()
            t_delta = t_stop - t_start

            # Display the measurement result
            print(f'Measurement completed in {t_delta:.4f} seconds:')
            for s, result in zip(series, results):
                print(f'{s}: {result}')

        except Exception as e:
            t_stop = time.perf_counter()
            t_delta = t_stop - t_start
            print(f'Error during measurement (took {t_delta:.4f} seconds): {e}')

        print()

    err = instr.query(':SYST:ERR?')
    if err.strip() != '0,"No error"':
        raise RuntimeError(f'Error during measurement measurement: {err}')

    # Clean up
    instr.write(':DISP:ENAB ON')
    instr.write('*RST;*CLS')

    # Helps to avoid exception on closing the connection,
    # with some VISA implementations
    time.sleep(1)

    instr.close()


if __name__ == '__main__':
    resource_str = f'TCPIP::{INSTRUMENT_IP}::hislip0::INSTR'
    try:
        fast_individual_measurement(resource_str)
    except visa.VisaIOError as e:
        sys.stderr.write(f'Error occurred: {e}\n\n')
        sys.exit(1)
    except KeyboardInterrupt:
        print('\nInterrupted by user')
        sys.exit(0)

Example 5: PPS frequency measurements using a manual trigger#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Here is an example that shows usage of Python to perform PPS frequency measurements using a manual trigger.

#!/usr/bin/env python

# This example demonstrates how to perform PPS frequency measurements using
# user-specified trigger levels.
# Although auto-triggering would still work, for certain cases
# (e.g. measuring 1PPS signal) it's more efficient to perform a one-time
# voltage measurement and use manual trigger mode to avoid repeated
# auto-trigger for better performance.

# Replace INSTRUMENT_IP with the IP address of your instrument!
# Check it in Settings → User options → Network → Ethernet IP address.
INSTRUMENT_IP = '10.40.12.83'

import sys
from time import sleep
import pyvisa as visa

# Create VISA resource manager. In some cases you may need to specify dll/so
# file of VISA implementation, for example:
# rm = visa.ResourceManager('librsvisa.so')
rm = visa.ResourceManager()


def get_measurement(instr, series):
    """
    Function to fetch samples from the instrument.
    Returns array of measurement results.
    """
    samples_str = instr.query(f':FETCH:ARRAY? MAX, {series}')
    samples_str = samples_str.strip()
    if not samples_str:
        return []
    return list(map(float, samples_str.split(',')))


def check_for_errors(instr):
    err = instr.query(':SYST:ERR?')
    if err.strip() != '0,"No error"':
        raise RuntimeError(f'Error configuring measurement: {err}')


def example(resource_str):
    # Connect to the instrument.
    instr = rm.open_resource(resource_str)

    # VISA I/O operations timeout, in milliseconds.
    instr.timeout = 50000

    # Send '*IDN?' and read the response.
    idn = instr.query('*IDN?')
    print('Running 1PPS frequency measurement example '
        'with manual trigger on:', idn.strip())
    print('Resource:', resource_str)
    print("In this example, a Vminmax measurement is first performed to "
        "determine the appropriate trigger level, followed by a 1PPS "
        "frequency measurement.")

    # Reset to default settings, clear error and message queues.
    instr.write('*RST;*CLS')

    # Configure the measurement.
    # Pay attention to double and single quotes.
    # The 'VerySlow' setting should be used for slow signals such as 1PPS.
    instr.write(':SYST:CONF "Function=Vminmax A; SampleCount=1; '
                'ImpedanceA=50Ohm; CouplingA=DC; VoltageMode=VerySlow"')

    # It is good practice to check for errors.
    check_for_errors(instr)

    # Initialize voltage measurement.
    instr.write(':INIT')

    # Wait (in a blocking manner) for measurement completion.
    # The *OPC? query responds only when all pending operations (in this case,
    # the measurement) are completed. The measurement is complete when all
    # requested samples are collected or if a timeout occurs. No need to check
    # the response here, because it is always '1' as per the SCPI standard.
    instr.query('*OPC?')

    signal_range_min = get_measurement(instr, 'Vmin')[0]
    signal_range_max = get_measurement(instr, 'Vmax')[0]

    # Display measurement results.
    print('Vmin: {}'.format(signal_range_min))
    print('Vmax: {}'.format(signal_range_max))

    # Midpoint of the signal range. This can be adjusted if the pulse slew rate
    # is higher in another part of the signal range.
    position_in_signal_range = 0.5
    signal_range = signal_range_max - signal_range_min
    trigger_level = signal_range_min + position_in_signal_range * signal_range
    print(f'Calculated trigger level: {trigger_level}')

    # Configure frequency measurement.
    instr.write(
        f':SYST:CONF:RESET "Function=Frequency A; SampleCount=10; Timeout=On; '
        f'TimeoutTime=15.0; ImpedanceA=50Ohm; CouplingA=DC; TriggerModeA=Manual; '
        f'AbsoluteTriggerLevelA={trigger_level}"')

    check_for_errors(instr)

    instr.write(':INIT')
    instr.query('*OPC?')

    freq_measurement = get_measurement(instr, 'A')

    # Display measurement results.
    if freq_measurement:
        print('Frequency measurement results: {}'.format(freq_measurement))
    else:
        print('No data (signal not connected?)')

    # Helps to avoid exception on closing the connection,
    # with some VISA implementations.
    sleep(1)

    instr.close()


if __name__ == '__main__':
    resource_str = f'TCPIP::{INSTRUMENT_IP}::hislip0::INSTR'
    try:
        example(resource_str)
    except visa.VisaIOError as e:
        # Handle VISA I/O errors.
        sys.stderr.write(f'Error occurred: {e}\n\n')
        sys.exit(1)

Example 6: Measuring time intervals and fetching data during the measurement#

Supported in:

  • CNT-102 | CNT-104S | CNT-104R

  • FTR-210R with INPUT-A

Here is an example showing how to use Python to measure time intervals and fetching data during the measurement.

# !/usr/bin/env python

# This example demonstrates the measurement of time intervals and also fetching
# data while the measurement is ongoing.

# Replace INSTRUMENT_IP with the IP address of your instrument!
# Check it in Settings → User options → Network → Ethernet IP address.
INSTRUMENT_IP = '10.40.12.83'

import sys
import pyvisa as visa
from time import sleep

# Create VISA resource manager. In some cases you may need to specify dll/so
# file of VISA implementation, for example:
# rm = visa.ResourceManager('librsvisa.so')
rm = visa.ResourceManager()


def time_interval_measurement(resource_str):
    # Connect to the instrument
    instr = rm.open_resource(resource_str)
    # VISA I/O operations timeout, in milliseconds
    instr.timeout = 5000

    # Send '*IDN?' and read response
    idn = instr.query('*IDN?')
    print('Running Time Interval Measurement on', idn.strip())
    print('Resource:', resource_str)
    print('In this example time intervals are '
        'measured between channels A-B, A-D, A-E\n')

    # Reset to default settings, clear error and message queues.
    instr.write('*RST;*CLS')

    # Configuration parameters
    sample_count = 100
    trigger_level = 0.5

    # Configure the measurement: time interval measurement on multiple channels
    # Pay attention to double and single quotes.
    # For PPS signals DC coupling is a must.
    # For PPS signals either use Manual trigger or set VoltageMode to VerySlow
    config_str = \
        (f'Function=Time Interval Single A,B,D,E; SampleCount={sample_count}; '
        f'ImpedanceA=50Ohm; CouplingA=DC; TriggerModeA=Manual; '
        f'AbsoluteTriggerLevelA={trigger_level}; '
        f'ImpedanceB=50Ohm; CouplingB=DC; TriggerModeB=Manual; '
        f'AbsoluteTriggerLevelB={trigger_level}; '
        f'ImpedanceD=50Ohm; CouplingD=DC; TriggerModeD=Manual; '
        f'AbsoluteTriggerLevelD={trigger_level}; '
        f'ImpedanceE=50Ohm; CouplingE=DC; TriggerModeE=Manual; '
        f'AbsoluteTriggerLevelE={trigger_level}')
    instr.write(f':SYST:CONF "{config_str}"')

    # It is a good practice to check for errors
    err = instr.query(':SYST:ERR?')
    if err.strip() != '0,"No error"':
        raise RuntimeError(f'Error configuring measurement: {err}')

    # Set ASCII format for simplicity
    instr.write(':FORM ASC;:FORM:TINF OFF')

    # Enable status reporting for measurement completion detection
    instr.write('*ESE 1; *SRE 32')
    instr.write(':INIT;*OPC')

    print('Measurement started, collecting data...\n')

    # Wait for measurement completion and fetch data
    measurement_complete = False
    measurement_series = ['A-B', 'A-D', 'A-E']

    while True:
        # Check if measurement is complete
        if not measurement_complete:
            measurement_complete = ((instr.read_stb() & 32) != 0)

        # Fetch data from all measurement series
        nothing_fetched = True

        for series in measurement_series:
            # Will return a string of comma-separated numbers
            samples_str = instr.query(f':FETCH:ARR? MAX, {series}')
            # Remove newline at the end
            samples_str = samples_str.strip()

            if len(samples_str) > 0:
                # Convert the string to array
                samples = list(map(float, samples_str.split(',')))
                print(f'{series}: {samples}')
                nothing_fetched = False
            else:
                print(f'{series}: no fresh data, waiting for more')
                sleep(1.0)

        # Exit condition: no new data and measurement is complete
        if nothing_fetched and measurement_complete:
            print('\nAll data fetched. Measurement complete!')
            break

    instr.write('*ESE 0; *SRE 0')
    instr.write('*RST;*CLS')

    # Helps to avoid exception on closing the connection,
    # with some VISA implementations
    sleep(1)

    instr.close()


if __name__ == '__main__':
    resource_str = f'TCPIP::{INSTRUMENT_IP}::hislip0::INSTR'
    try:
        time_interval_measurement(resource_str)
    except visa.VisaIOError as e:
        sys.stderr.write(f'Error occurred: {e}\n\n')
        sys.exit(1)