|
PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
|
Statistics for cyclic communication. More...
#include <cyclic.h>
Collaboration diagram for profinet::cyclic::CyclicStats:Public Member Functions | |
| std::uint64_t | AvgCycleTimeUs () const |
| Compute the average TX cycle duration. | |
| void | Reset () |
| Reset all counters to their initial values. | |
Public Attributes | |
| std::atomic< std::uint64_t > | framesSent {0} |
| Total number of output frames sent. | |
| std::atomic< std::uint64_t > | framesReceived {0} |
| Total number of input frames received. | |
| std::atomic< std::uint64_t > | framesMissed {0} |
| Total number of watchdog timeouts (missed input frames). | |
| std::atomic< std::uint64_t > | framesInvalid {0} |
| Total number of frames rejected for having an invalid DataStatus. | |
| std::atomic< std::uint64_t > | framesDuplicate {0} |
| Total number of duplicate (repeated cycle counter) frames received. | |
| std::atomic< std::uint64_t > | framesOutOfOrder {0} |
| Total number of frames received out of cycle-counter order. | |
| std::atomic< std::uint32_t > | lastCycleTimeUs {0} |
| Duration of the most recently completed TX cycle, in microseconds. | |
| std::atomic< std::uint32_t > | maxJitterUs {0} |
| Largest observed deviation from the target cycle time, in microseconds. | |
| std::atomic< std::uint32_t > | minCycleTimeUs {0x7FFFFFFF} |
| Smallest observed TX cycle duration, in microseconds. | |
| std::atomic< std::uint32_t > | maxCycleTimeUs {0} |
| Largest observed TX cycle duration, in microseconds. | |
| std::atomic< std::chrono::steady_clock::time_point > | lastReceiveTime {std::chrono::steady_clock::now()} |
| Timestamp of the last received input frame (or watchdog check). | |
| std::atomic< int > | consecutiveTimeouts {0} |
| Current run of consecutive watchdog timeouts (resets on a good frame). | |
| std::atomic< std::uint64_t > | cycleTimeSumUs {0} |
| Running sum of observed TX cycle durations, in microseconds. | |
| std::atomic< std::uint64_t > | cycleCount {0} |
| Number of TX cycles included in CycleTimeSumUs. | |
Statistics for cyclic communication.
Counters are updated from both the TX and RX threads without a lock, these are advisory statistics where occasional torn reads are acceptable; individual counter increments use relaxed atomics.
|
inline |
Compute the average TX cycle duration.
Definition at line 112 of file cyclic.h.
References cycleCount, and cycleTimeSumUs.
Referenced by profinet::cyclic::TEST_F(), profinet::cyclic::TEST_F(), and profinet::cyclic::TEST_F().
Here is the caller graph for this function:| void profinet::cyclic::CyclicStats::Reset | ( | ) |
Reset all counters to their initial values.
Definition at line 44 of file cyclic.cpp.
References consecutiveTimeouts, cycleCount, cycleTimeSumUs, framesDuplicate, framesInvalid, framesMissed, framesOutOfOrder, framesReceived, framesSent, lastCycleTimeUs, lastReceiveTime, maxCycleTimeUs, maxJitterUs, and minCycleTimeUs.
Referenced by profinet::cyclic::CyclicController::Start(), profinet::cyclic::TEST_F(), and profinet::cyclic::TEST_F().
Here is the caller graph for this function:| std::atomic<int> profinet::cyclic::CyclicStats::consecutiveTimeouts {0} |
Current run of consecutive watchdog timeouts (resets on a good frame).
Definition at line 102 of file cyclic.h.
Referenced by profinet::cyclic::CyclicController::HandleWatchdogTimeout(), profinet::cyclic::CyclicController::ProcessInputFrame(), Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), and profinet::cyclic::TEST_F().
| std::atomic<std::uint64_t> profinet::cyclic::CyclicStats::cycleCount {0} |
Number of TX cycles included in CycleTimeSumUs.
Definition at line 108 of file cyclic.h.
Referenced by AvgCycleTimeUs(), Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), profinet::cyclic::TEST_F(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TxLoop().
| std::atomic<std::uint64_t> profinet::cyclic::CyclicStats::cycleTimeSumUs {0} |
Running sum of observed TX cycle durations, in microseconds.
Definition at line 105 of file cyclic.h.
Referenced by AvgCycleTimeUs(), Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), profinet::cyclic::TEST_F(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TxLoop().
| std::atomic<std::uint64_t> profinet::cyclic::CyclicStats::framesDuplicate {0} |
Total number of duplicate (repeated cycle counter) frames received.
Definition at line 81 of file cyclic.h.
Referenced by Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TrackCycleCounter().
| std::atomic<std::uint64_t> profinet::cyclic::CyclicStats::framesInvalid {0} |
Total number of frames rejected for having an invalid DataStatus.
Definition at line 78 of file cyclic.h.
Referenced by profinet::cyclic::CyclicController::ProcessInputFrame(), Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), and profinet::cyclic::TEST_F().
| std::atomic<std::uint64_t> profinet::cyclic::CyclicStats::framesMissed {0} |
Total number of watchdog timeouts (missed input frames).
Definition at line 75 of file cyclic.h.
Referenced by profinet::cyclic::CyclicController::HandleWatchdogTimeout(), Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TrackCycleCounter().
| std::atomic<std::uint64_t> profinet::cyclic::CyclicStats::framesOutOfOrder {0} |
Total number of frames received out of cycle-counter order.
Definition at line 84 of file cyclic.h.
Referenced by Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TrackCycleCounter().
| std::atomic<std::uint64_t> profinet::cyclic::CyclicStats::framesReceived {0} |
Total number of input frames received.
Definition at line 72 of file cyclic.h.
Referenced by profinet::cyclic::CyclicController::ProcessInputFrame(), Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), and profinet::cyclic::TEST_F().
| std::atomic<std::uint64_t> profinet::cyclic::CyclicStats::framesSent {0} |
Total number of output frames sent.
Definition at line 69 of file cyclic.h.
Referenced by Reset(), profinet::cyclic::CyclicController::SendStopFrames(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TxCycle().
| std::atomic<std::uint32_t> profinet::cyclic::CyclicStats::lastCycleTimeUs {0} |
Duration of the most recently completed TX cycle, in microseconds.
Definition at line 87 of file cyclic.h.
Referenced by Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TxLoop().
| std::atomic<std::chrono::steady_clock::time_point> profinet::cyclic::CyclicStats::lastReceiveTime {std::chrono::steady_clock::now()} |
Timestamp of the last received input frame (or watchdog check).
Definition at line 99 of file cyclic.h.
Referenced by profinet::cyclic::CyclicController::ProcessInputFrame(), Reset(), profinet::cyclic::CyclicController::RxLoop(), and profinet::cyclic::CyclicController::StatsSnapshot().
| std::atomic<std::uint32_t> profinet::cyclic::CyclicStats::maxCycleTimeUs {0} |
Largest observed TX cycle duration, in microseconds.
Definition at line 96 of file cyclic.h.
Referenced by Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TxLoop().
| std::atomic<std::uint32_t> profinet::cyclic::CyclicStats::maxJitterUs {0} |
Largest observed deviation from the target cycle time, in microseconds.
Definition at line 90 of file cyclic.h.
Referenced by Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TxLoop().
| std::atomic<std::uint32_t> profinet::cyclic::CyclicStats::minCycleTimeUs {0x7FFFFFFF} |
Smallest observed TX cycle duration, in microseconds.
Definition at line 93 of file cyclic.h.
Referenced by Reset(), profinet::cyclic::CyclicController::StatsSnapshot(), profinet::cyclic::TEST_F(), and profinet::cyclic::CyclicController::TxLoop().