Paragon-X: A simple TC test example
The example below is a simple example showing how to configure the Paragon-X for a TC test and then read the test results from the CAT.
Python
from __future__ import print_function
import time
import sys
# Modify the path as required
sys.path.insert(
0, 'C:/Users/<user>/Documents/Calnex/Paragon-X/RemoteControl/Python/')
import paragon as p
# Connect to the instrument - modify the IP address for your instrument
p.connect("192.168.207.107", "localhost", 9000, 9990)
# Reset
# Reset the instrument so that it is in a known state
p.paragonset("Rst TRUE")
# Configure ports and reference
# This is a basic configuration - change as required
p.paragonset("Physical LineRate 1GBE")
p.paragonset("Physical RefClkSource INT")
# Configure MSE
# This is a basic configuration - change as required
p.paragonset("OperatingMode PTP")
p.paragonset("MasterSlave Enabled TRUE")
p.paragonset("MasterSlave TestConfiguration TRANSPARENT_CLOCK")
p.paragonset("MasterSlave StandardsProfile G.8275.1_PHASE_PROFILE")
# Start MSE
p.paragonset("MasterSlave Master #0 Enabled TRUE")
# The DUT may need some time to settle - change as required
time.sleep(5)
# Start the capture
p.starttimingcapture()
# Run the test for a fixed period - change as required
time.sleep(30)
p.stopcapture()
# stop MSE
p.paragonset("MasterSlave Master #0 Enabled FALSE")
# Get the results
# There are many results that can be returned by the CAT
# See the CAT Remote Control Manual for details
SLOTS = {"Sync", "'Delay Req'", "2Way"}
METRICS = {"2Way": {"TIMEERROR"},
"Sync": {"TIMEERROR", "FWD_LATENCY", "FWD_CF_DELTA"},
"'Delay Req'": {"TIMEERROR", "REV_LATENCY", "REV_CF_DELTA"}}
STATS = {"Mean", "Max", "Min"}
# Tell the CAT to load the latest capture
# In this case, it is from a TC measurement
p.paragonset("Cat 1588TCAccuracy")
p.paragonset("Cat Show TRUE")
# Wait until the CAT has loaded the capture
p.waitforcat()
# Loop through slots, metrics and stats
for slot in SLOTS:
# Print a header to the console
print("Slot: %-12s" % (slot), end='')
for stat in STATS:
print("%-12s" % (stat), end='')
print("")
# Select the slot
p.paragonset("Cat SelectSlot " + slot)
for metric in METRICS[slot]:
# Enable the metric and tell the CAT to calculate the result
# The calculate command may not be required each time round the
# loop but this makes sure that the results are correct
p.paragonset("Cat " + metric + " Enable TRUE")
p.paragonset("Cat Calculate")
# Wait until the CAT has finished calculating
p.waitforcat()
# Print the results for each statistic to the console
print("%-20s" % (metric), end='')
for stat in STATS:
result = p.paragonget("Cat " + metric + " " + stat)
print("%-12s" % (result), end='')
print("")