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 (:).

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.
SYSTem:CONFigure <parameters>
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#
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
withINPUT-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
withoption1
+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 channelsA
,B
,D
,E
A2
,B2
,D2
,E2
— supplementary subchannelsC
— RF input channelEA
— External Arming input channelER
— External Reference input channelRb
— 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 |
211 OUTPUT-10MHZ-4X |
4 additional 10 MHz outputs for |
212 OUTPUT-MULTIPLE-REF-4X |
0.1, 1, 5 and 10 MHz sine outputs for |
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 |
152 FREQ-OFFSET or 152F FREQ-OFFSET |
Unlocks Frequency Offset measurement function |
153 TIME-OFFSET or 153F TIME-OFFSET |
Unlocks Time interval measurements for |
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 runPass
- all tests completed successfullyall 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-upLAST
— 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
withINPUT-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
withINPUT-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
withINPUT-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
withINPUT-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
withINPUT-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
withINPUT-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 inputNegative
- 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
withINPUT-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 input1MOhm
- 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
withINPUT-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 inputAC
- 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
withINPUT-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 input10kHz
- 10 kHz low pass filter is used for the corresponding input100kHz
- 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
withINPUT-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
withINPUT-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 inputOn
- 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 notOff
- the resulting number of samples in the block might be less thanSampleCount
.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
withINPUT-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
withINPUT-A
Dead time between consecutive trigger events.
Possible values: 0
– 2.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
withINPUT-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
withINPUT-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
withINPUT-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
withINPUT-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
withINPUT-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
withINPUT-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
withINPUT-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
withINPUT-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
withPULSE-OUT
Controls the rear Pulse Output of the device.
Possible values:
- Off
Pulse Generator
Gate Open
Supported in:CNT-102
|CNT-104S
|CNT-104R
orFTR-210R
withINPUT-A
Alarm Out Active High
Supported in:CNT-102
|CNT-104S
|CNT-104R
orFTR-210R
withINPUT-A
Alarm Out Active Low
Supported in:CNT-102
|CNT-104S
|CNT-104R
orFTR-210R
withINPUT-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 inPulseOutputPeriod
andPulseOutputWidth
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
withPULSE-OUT
Set period of pulses generated on rear Pulse Output.
Possible values: 10 ns
– 2.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
withPULSE-OUT
Set width of pulses generated on rear Pulse Output of the instrument.
Possible values: 4 ns
– 2.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
withINPUT-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
withINPUT-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
withINPUT-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 operationTest
- 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: 0
– 10995 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: 0
– 10995 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
withINPUT-A
Frequency of internal built-in test generator.
Possible values: 1.039 kHz
– 68 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
withTIE
FTR-210R
withFREQ-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: 100mHz
– 400 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: 100mHz
– x 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
withTIE
FTR-210R
withFREQ-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
withTIE
FTR-210R
withFREQ-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: 0
– 10
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-12
– 1e-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 usedExternal
- 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
withINPUT-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
withINPUT-A
Set measurement timeout value.
Possible values: 10ms
– 1000s
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
withINPUT-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
withINPUT-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 minutesBefore Every Measurement
— Additional calibration before every measurementOnce 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
withINPUT-A
Number of digits to blank on display.
Possible values: 0
– 15
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
withGNSS
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
withGNSS
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/AGPS-L5
- GPS L5SBAS-L1C/A
- SBAS L1C/AGAL-E1
- Galileo E1GAL-E5a
- Galileo E5aBDS-B1I
- BeiDou B1IBDS-B1C
- BeiDou B1CBDS-B2a
- BeiDou B2aQZSS-L1C/A
- QZSS L1C/AQZSS-L5
- QZSS L5GLO-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
requiresGPS-L1C/A
orGPS-L5
to be enabled.QZSS-L5
requiresGPS-L1C/A
orGPS-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
withGNSS
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
orFTR-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
withGNSS
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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-A
: 1
Frequency Ratio#
Ratio of frequency averages. This mode is just additional math applied over frequency measurements.
Frequency Ratio A,B
will produceB/A
series.Frequency Ratio A,B,D
will produceB/A
,D/A
series.Frequency Ratio A,B,D,E
will produceB/A
,E/D
series.
Minimum number of channels that can be used: 2
Maximum number of channels that can be used:
CNT-102
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-A
: 1
Frequency Offset#
Supported in:
FTR-210R
withFREQ-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
withFREQ-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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 2FTR-210R
withINPUT-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 produceA-B
series.Time Interval A,B,D
will produceA-B
,A-D
series.Time Interval A,B,D,E
will produceA-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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-A
: 2
Time Interval Single#
Time Interval between single events.
Time Interval Single A,B
will produceA-B
series.Time Interval Single A,B,D
will produceA-B
,A-D
series.Time Interval Single A,B,D,E
will produceA-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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-A
: 2
AccumulatedTimeInterval#
Same as Time Interval, but the result is not normalized.
Accumulated Time Interval A,B
will produceA-B
series.Accumulated Time Interval A,B,D
will produceA-B
,A-D
series.Accumulated Time Interval A,B,D,E
will produceA-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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-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
withFREQ-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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 2FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 2FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 2FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 2FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-A
: 2
Totalize X + Y#
Totalize with additional math applied for addition.
Totalize X+Y A,B
will produceA+B
series.Totalize X+Y A,B,D
will produceA+B
,A+D
series.Totalize X+Y A,B,D,E
will produceA+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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-A
: 2
Totalize X - Y#
Totalize with additional math applied for subtraction.
Totalize X-Y A,B
will produceA-B
series.Totalize X-Y A,B,D
will produceA-B
,A-D
series.Totalize X-Y A,B,D,E
will produceA-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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-A
: 2
Totalize X / Y#
Totalize with additional math applied for division.
Totalize X/Y A,B
will produceA/B
series.Totalize X/Y A,B,D
will produceA/B
,A/D
series.Totalize X/Y A,B,D,E
will produceA/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
: 2CNT-104S
|CNT-104R
: 4FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 2FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 2FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 2FTR-210R
withINPUT-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
: 2CNT-104S
|CNT-104R
: 2FTR-210R
withINPUT-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 brightnessLow
- Low brightnessMedium
- Medium brightnessHigh
- High brightnessMaximum
- 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
forIPDNS1
andWirelessIPDNS1
1.1.1.1
forIPDNS2
andWirelessIPDNS2
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 DHCPStatic
- Static IP configuration. When this mode is selected you should also configureIPAddress
,IPNetmask
,IPGateway
,IPDNS1
(and optionallyIPDNS2)
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 timezoneLOCAL
- 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 ofINT
,EXT
,FAIL
<int_ref_status>
is one ofOK
,FAIL
<ext_ref_status>
if one of1MHz
,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 ofFAIL
,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 receiverADJUSTING
indicates that the internal timebase has detected 1PPS signal for disciplining, but did not lock to it yet. This status should eventually change toTRACKING
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 (forFETCh: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
orON
to enable timestamping0
orOFF
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
withGNSS
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 fixTTFF
- time to first fix, in seconds, reported by the GNSS receiverLatitude
,Longitude
,Altitude
- geographical coordinatesSatellitesVisible
- number of satellites currently seen by the receiverSatellitesUsed
- number of satellites currently used in the equation
Possible values for Fix
: unknown
, no
, 2d
, 3d
, time
unknown
- fix type was not determined yetno
- no fix2d
- 2D fix3d
- 3d fixtime
- 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
withGNSS
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
withGNSS
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
withGNSS
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
withINPUT-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
withINPUT-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:

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.



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):
Ensure your instrument is connected to the network.
Start Python in interactive mode by typing
python
in the terminal window:

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'
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
withINPUT-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
withGNSS
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
withINPUT-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
withINPUT-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
withINPUT-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
withINPUT-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)