PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
Loading...
Searching...
No Matches
profinet::sim Namespace Reference

Namespaces

namespace  test
 

Classes

class  InMemoryEthernetBus
 Small virtual Ethernet switch suitable for deterministic tests and demos. More...
 
class  InMemoryEthernetSocket
 Injectable raw-Ethernet endpoint attached to an in-memory bus. More...
 
struct  VirtualAumaAlarmEvent
 Captured alarm traffic produced by a virtual AUMA scenario. More...
 
struct  VirtualAumaIocrConfiguration
 Input and output RTC1 configurations used by the virtual AUMA peer. More...
 
class  VirtualAumaValve
 AUMA SGx application model that behaves as a real RTC1 peer in memory. More...
 
struct  VirtualAumaValveConfiguration
 Application-level signal mapping and motion settings for a virtual AUMA SGx. More...
 
struct  VirtualPhoenixIoImage
 Local Phoenix PLC process image derived from its GSDML signal layout. More...
 
class  VirtualPhoenixPlc
 Virtual Phoenix Contact AXC F 1252 controller hosting real CyclicController instances. More...
 
struct  VirtualProfinetDeviceConfiguration
 Configuration for a controller-facing virtual PROFINET device. More...
 
class  VirtualProfinetLab
 Owns one shared Ethernet bus plus any number of virtual PLCs and AUMA valves. More...
 
class  VirtualProfinetRpcDevice
 Stateful UDP PROFINET IO-Device protocol simulator. More...
 

Enumerations

enum class  VirtualAumaScenario {
  Normal , Fault , BadIops , NoInput ,
  SlowValve , Jammed , InvalidInput , DuplicateInput ,
  OutOfOrderInput
}
 Deterministic operating and communication scenarios for a virtual AUMA valve. More...
 
enum class  VirtualProfinetDeviceState {
  Idle , Connected , Parameterizing , Parameterized ,
  ApplicationReady , Released , Fault
}
 Observable Application Relation state of the virtual device. More...
 

Functions

VirtualAumaIocrConfiguration MakeVirtualAumaIocrConfiguration (const gsdml::GSDMLDevice &device, std::uint16_t inputFrameId=0x9000, std::uint16_t outputFrameId=0x8001, std::uint16_t sendClockFactor=32, std::uint16_t reductionRatio=8, std::uint16_t watchdogFactor=3, std::uint16_t dataHoldFactor=3)
 Build the standard two-module AUMA SGx process-data layout from its GSDML.
 
const char * ToString (VirtualAumaScenario scenario) noexcept
 Convert a virtual AUMA scenario into its stable CLI spelling.
 
const char * ToString (VirtualProfinetDeviceState state) noexcept
 Convert a simulator state to a stable diagnostic string.
 
 TEST (InMemoryEthernetRoutingTests, UnicastReachesOnlyMatchingEndpoint)
 
 TEST (InMemoryEthernetRoutingTests, BroadcastIsFloodedWithoutLoopback)
 
 TEST (InMemoryEthernetRoutingTests, MulticastIsFlooded)
 
 TEST (InMemoryEthernetRoutingTests, SameMacSocketsDoNotLoopBackTraffic)
 
 TEST (InMemoryEthernetSocketTests, ReceiveTimeoutReturnsEmptyFrame)
 
 TEST (InMemoryEthernetSocketTests, NegativeTimeoutThrows)
 
 TEST (InMemoryEthernetRoutingTests, ShortFrameThrows)
 
 TEST (InMemoryEthernetBusTests, ClearQueuesRemovesPendingFrames)
 
 TEST (InMemoryEthernetBusTests, EndpointDestructionDetachesSocket)
 
 TEST (VirtualAumaValveTests, StartsFromConfiguredGsdmlPosition)
 
 TEST (VirtualAumaValveTests, OpenCommandMovesValveToEndStop)
 
 TEST (VirtualAumaValveTests, RejectsFramesFromSecondController)
 
 TEST (VirtualAumaValveTests, SlowValveMovesButAtReducedSpeed)
 
 TEST (VirtualAumaValveTests, JammedPreventsMovement)
 
 TEST (VirtualAumaScenarioTests, JammedKeepsIopsGood)
 
 TEST (VirtualAumaScenarioTests, BadIopsStillEmitsCyclicFramesWithBadIops)
 
 TEST (VirtualAumaAlarmTests, RequestedScenariosExposeBothAlarmPaths)
 
 TEST (VirtualAumaAlarmTests, ThrowingAlarmCallbackDoesNotKillSimulator)
 
 TEST (VirtualAumaScenarioTests, NoInputSuppressesDeviceInputTraffic)
 
 TEST (VirtualAumaScenarioTests, InvalidInputClearsDataValidity)
 
 TEST (VirtualAumaScenarioTests, DuplicateInputProducesDuplicateCycleCounters)
 
 TEST (VirtualAumaScenarioTests, OutOfOrderInputProducesOutOfOrderCycles)
 
 TEST (VirtualAumaScenarioTests, EveryScenarioHasStableName)
 
 TEST (VirtualAumaValveTests, RejectsInvalidMotionConfiguration)
 
 TEST (VirtualRealGsdmlIntegrationTests, ParsesRealAumaGsdmlAndBuildsSignalCatalog)
 
 TEST (VirtualRealGsdmlIntegrationTests, ParsesRealPhoenixGsdmlAndBuildsSignalCatalog)
 
 TEST (VirtualRealGsdmlIntegrationTests, RunsRealAumaAndPhoenixThroughCyclicController)
 
 TEST (VirtualPhoenixPlcTests, BuildsGsdmlDerivedProcessImage)
 
 TEST (VirtualPhoenixPlcTests, LocalInputBytesRoundTrip)
 
 TEST (VirtualPhoenixPlcTests, LocalTypedValuesRoundTrip)
 
 TEST (VirtualPhoenixPlcTests, BitSignalsPreserveSiblingBits)
 
 TEST (VirtualPhoenixPlcTests, TypedValueValidationRejectsInvalidValues)
 
 TEST (VirtualPhoenixPlcTests, ConnectedControllerDrivesVirtualAuma)
 
 TEST (VirtualPhoenixPlcTests, BadIopsWithholdsInputData)
 
 TEST (VirtualPhoenixPlcTests, NoInputTriggersControllerWatchdog)
 
 TEST (VirtualPhoenixPlcTests, DisconnectAllowsReconnect)
 
 TEST (VirtualPhoenixPlcTests, DuplicateConnectionIsRejected)
 
 TEST (VirtualProfinetLabTests, RunsMultipleIndependentValvePlcPairs)
 
 TEST (VirtualProfinetLabTests, DuplicateNamesAreRejected)
 
 TEST (VirtualProfinetLabTests, DuplicateMacAddressesAreRejectedAcrossNodeTypes)
 
 TEST (VirtualProfinetLabTests, ScenarioChangeUpdatesDashboard)
 

Enumeration Type Documentation

◆ VirtualAumaScenario

Deterministic operating and communication scenarios for a virtual AUMA valve.

Enumerator
Normal 

Fully healthy operation with normal travel speed.

Fault 

Application fault: movement stops, IOPS becomes BAD and alarms are emitted.

BadIops 

Input frames continue, but the input provider reports BAD IOPS.

NoInput 

Input frames stop completely so the controller watchdog expires.

SlowValve 

Valve travels using the configured reduced speed multiplier.

Jammed 

Valve accepts commands but the mechanical position does not change.

InvalidInput 

Input frames remain valid but carry an invalid RTC1 DATA_STATUS.

DuplicateInput 

Input frames repeat their previous cycle counter.

OutOfOrderInput 

Input frames occasionally move the cycle counter backwards.

Definition at line 34 of file virtual_auma_valve.h.

◆ VirtualProfinetDeviceState

Observable Application Relation state of the virtual device.

Enumerator
Idle 

No Application Relation exists.

Connected 

A CONNECT was accepted and the AR is being configured.

Parameterizing 

PrmBegin was accepted.

Parameterized 

PrmEnd was accepted and the device can issue ApplicationReady.

ApplicationReady 

The controller confirmed the device's ApplicationReady request.

Released 

The controller released the AR.

Fault 

The simulator rejected a request.

Definition at line 46 of file virtual_profinet_rpc_device.h.

Function Documentation

◆ MakeVirtualAumaIocrConfiguration()

VirtualAumaIocrConfiguration profinet::sim::MakeVirtualAumaIocrConfiguration ( const gsdml::GSDMLDevice &  device,
std::uint16_t  inputFrameId = 0x9000,
std::uint16_t  outputFrameId = 0x8001,
std::uint16_t  sendClockFactor = 32,
std::uint16_t  reductionRatio = 8,
std::uint16_t  watchdogFactor = 3,
std::uint16_t  dataHoldFactor = 3 
)

Build the standard two-module AUMA SGx process-data layout from its GSDML.

The helper intentionally uses the AUMA GSDML module and submodule identifiers to obtain process-data lengths. The fixed AUMA placement is slot 1/subslot 1 for inputs and slot 2/subslot 1 for outputs. The returned frame offsets describe the process-data objects, not the logical signal offsets inside those objects.

Parameters
deviceParsed AUMA GSDML document.
inputFrameIdRTC1 frame ID used by the virtual device.
outputFrameIdRTC1 frame ID used by the virtual device.
sendClockFactorSend-clock factor.
reductionRatioReduction ratio.
watchdogFactorWatchdog factor.
dataHoldFactorData-hold factor.
Returns
AUMA input/output IOCR configuration.
Exceptions
std::invalid_argumentIf the expected AUMA modules/submodules cannot be found.

Definition at line 99 of file virtual_auma_config.cpp.

References profinet::rt::IOCRConfig::dataLength, profinet::gsdml::GSDMLDevice::FindModule(), profinet::rt::IOCRConfig::frameId, profinet::sim::VirtualAumaIocrConfiguration::input, profinet::rt::IOCR_TYPE_INPUT, profinet::rt::IOCR_TYPE_OUTPUT, profinet::rt::IOCRConfig::objects, profinet::sim::VirtualAumaIocrConfiguration::output, profinet::rt::IOCRConfig::reductionRatio, profinet::rt::IOCRConfig::referenceIOCR, profinet::rt::IOCRConfig::sendClockFactor, profinet::rt::IOCRConfig::typeIOCR, and profinet::rt::IOCRConfig::watchdogFactor.

Referenced by profinet::sim::test::MakeTestAumaIocrs(), and TEST().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TEST() [1/41]

profinet::sim::TEST ( InMemoryEthernetBusTests  ,
ClearQueuesRemovesPendingFrames   
)
Test:
Verify ClearQueues removes pending traffic from all connected endpoints.

Definition at line 161 of file test_in_memory_ethernetMore.cpp.

References profinet::sim::InMemoryEthernetBus::ClearQueues(), profinet::sim::InMemoryEthernetBus::CreateSocket(), and profinet::sim::InMemoryEthernetBus::EndpointCount().

+ Here is the call graph for this function:

◆ TEST() [2/41]

profinet::sim::TEST ( InMemoryEthernetBusTests  ,
EndpointDestructionDetachesSocket   
)
Test:
Verify destroying an endpoint detaches it from the virtual switch.

Definition at line 177 of file test_in_memory_ethernetMore.cpp.

References profinet::sim::InMemoryEthernetBus::CreateSocket(), and profinet::sim::InMemoryEthernetBus::EndpointCount().

+ Here is the call graph for this function:

◆ TEST() [3/41]

profinet::sim::TEST ( InMemoryEthernetRoutingTests  ,
BroadcastIsFloodedWithoutLoopback   
)
Test:
Verify broadcast frames are flooded to every other endpoint but not reflected to the sender.

Definition at line 70 of file test_in_memory_ethernetMore.cpp.

References profinet::sim::InMemoryEthernetBus::CreateSocket(), and frame.

+ Here is the call graph for this function:

◆ TEST() [4/41]

profinet::sim::TEST ( InMemoryEthernetRoutingTests  ,
MulticastIsFlooded   
)
Test:
Verify multicast destinations are flooded like broadcast traffic.

Definition at line 91 of file test_in_memory_ethernetMore.cpp.

References profinet::sim::InMemoryEthernetBus::CreateSocket(), and frame.

+ Here is the call graph for this function:

◆ TEST() [5/41]

profinet::sim::TEST ( InMemoryEthernetRoutingTests  ,
SameMacSocketsDoNotLoopBackTraffic   
)
Test:
Verify separate TX and RX sockets sharing a MAC do not receive each other's frames.

Definition at line 111 of file test_in_memory_ethernetMore.cpp.

References profinet::sim::InMemoryEthernetBus::CreateSocket(), frame, rx, and tx.

+ Here is the call graph for this function:

◆ TEST() [6/41]

profinet::sim::TEST ( InMemoryEthernetRoutingTests  ,
ShortFrameThrows   
)
Test:
Verify invalid Ethernet frames are rejected before routing.

Definition at line 152 of file test_in_memory_ethernetMore.cpp.

References profinet::sim::InMemoryEthernetBus::CreateSocket().

+ Here is the call graph for this function:

◆ TEST() [7/41]

profinet::sim::TEST ( InMemoryEthernetRoutingTests  ,
UnicastReachesOnlyMatchingEndpoint   
)
Test:
Verify unicast traffic reaches only the endpoint with the destination MAC.

Definition at line 51 of file test_in_memory_ethernetMore.cpp.

References profinet::sim::InMemoryEthernetBus::CreateSocket(), and frame.

+ Here is the call graph for this function:

◆ TEST() [8/41]

profinet::sim::TEST ( InMemoryEthernetSocketTests  ,
NegativeTimeoutThrows   
)
Test:
Verify negative receive timeouts are rejected.

Definition at line 143 of file test_in_memory_ethernetMore.cpp.

References profinet::sim::InMemoryEthernetBus::CreateSocket().

+ Here is the call graph for this function:

◆ TEST() [9/41]

profinet::sim::TEST ( InMemoryEthernetSocketTests  ,
ReceiveTimeoutReturnsEmptyFrame   
)
Test:
Verify a positive receive timeout returns an empty frame without throwing.

Definition at line 129 of file test_in_memory_ethernetMore.cpp.

References profinet::sim::InMemoryEthernetBus::CreateSocket().

+ Here is the call graph for this function:

◆ TEST() [10/41]

profinet::sim::TEST ( VirtualAumaAlarmTests  ,
RequestedScenariosExposeBothAlarmPaths   
)

◆ TEST() [11/41]

profinet::sim::TEST ( VirtualAumaAlarmTests  ,
ThrowingAlarmCallbackDoesNotKillSimulator   
)
Test:
Verify a throwing alarm callback cannot terminate the virtual device worker.

Definition at line 459 of file test_virtual_auma_valveMore.cpp.

References profinet::sim::InMemoryEthernetBus::CreateSocket(), Fault, profinet::sim::VirtualAumaValve::FaultActive(), profinet::sim::VirtualAumaValve::OnAlarm(), profinet::sim::VirtualAumaValve::OutputProcessData(), profinet::sim::VirtualAumaValve::SetScenario(), profinet::sim::VirtualAumaValve::Start(), and profinet::sim::VirtualAumaValve::Stop().

+ Here is the call graph for this function:

◆ TEST() [12/41]

profinet::sim::TEST ( VirtualAumaScenarioTests  ,
BadIopsStillEmitsCyclicFramesWithBadIops   
)

◆ TEST() [13/41]

profinet::sim::TEST ( VirtualAumaScenarioTests  ,
DuplicateInputProducesDuplicateCycleCounters   
)
Test:
Verify DuplicateInput repeats a cycle counter so the production controller counts duplicates.

Definition at line 570 of file test_virtual_auma_valveMore.cpp.

References profinet::sim::VirtualPhoenixPlc::Connect(), profinet::sim::VirtualPhoenixPlc::ConnectionStats(), DuplicateInput, ioContext, profinet::sim::test::MakePhoenixGsdml(), profinet::sim::VirtualAumaValve::SetScenario(), profinet::sim::VirtualAumaValve::Start(), profinet::sim::VirtualAumaValve::Stop(), and profinet::sim::VirtualPhoenixPlc::Stop().

+ Here is the call graph for this function:

◆ TEST() [14/41]

profinet::sim::TEST ( VirtualAumaScenarioTests  ,
EveryScenarioHasStableName   
)
Test:
Verify every supported scenario has a stable, non-empty spelling.

Definition at line 638 of file test_virtual_auma_valveMore.cpp.

References BadIops, DuplicateInput, Fault, InvalidInput, Jammed, NoInput, Normal, OutOfOrderInput, SlowValve, and ToString().

+ Here is the call graph for this function:

◆ TEST() [15/41]

◆ TEST() [16/41]

profinet::sim::TEST ( VirtualAumaScenarioTests  ,
JammedKeepsIopsGood   
)

◆ TEST() [17/41]

profinet::sim::TEST ( VirtualAumaScenarioTests  ,
NoInputSuppressesDeviceInputTraffic   
)
Test:
Verify NoInput suppresses input frames while the simulator remains able to receive output frames.

Definition at line 487 of file test_virtual_auma_valveMore.cpp.

References profinet::rt::BuildEthernetFrame(), profinet::sim::InMemoryEthernetBus::CreateSocket(), profinet::rt::DATA_STATUS_PROVIDER_RUN, profinet::rt::DATA_STATUS_STATE, profinet::rt::DATA_STATUS_STATION_OK, profinet::rt::DATA_STATUS_VALID, frame, profinet::rt::RTFrame::frameId, NoInput, payload, profinet::sim::VirtualAumaValve::SetScenario(), profinet::sim::VirtualAumaValve::Start(), and profinet::sim::VirtualAumaValve::Stop().

+ Here is the call graph for this function:

◆ TEST() [18/41]

profinet::sim::TEST ( VirtualAumaScenarioTests  ,
OutOfOrderInputProducesOutOfOrderCycles   
)
Test:
Verify OutOfOrderInput increments the production controller's out-of-order counter.

Definition at line 604 of file test_virtual_auma_valveMore.cpp.

References profinet::sim::VirtualPhoenixPlc::Connect(), profinet::sim::VirtualPhoenixPlc::ConnectionStats(), ioContext, profinet::sim::test::MakePhoenixGsdml(), OutOfOrderInput, profinet::sim::VirtualAumaValve::SetScenario(), profinet::sim::VirtualAumaValve::Start(), profinet::sim::VirtualAumaValve::Stop(), and profinet::sim::VirtualPhoenixPlc::Stop().

+ Here is the call graph for this function:

◆ TEST() [19/41]

profinet::sim::TEST ( VirtualAumaValveTests  ,
JammedPreventsMovement   
)

◆ TEST() [20/41]

profinet::sim::TEST ( VirtualAumaValveTests  ,
OpenCommandMovesValveToEndStop   
)

◆ TEST() [21/41]

profinet::sim::TEST ( VirtualAumaValveTests  ,
RejectsFramesFromSecondController   
)

◆ TEST() [22/41]

profinet::sim::TEST ( VirtualAumaValveTests  ,
RejectsInvalidMotionConfiguration   
)
Test:
Verify an AUMA simulator rejects an impossible travel configuration.

Definition at line 652 of file test_virtual_auma_valveMore.cpp.

References profinet::sim::VirtualAumaValveConfiguration::travelUnitsPerSecond.

◆ TEST() [23/41]

profinet::sim::TEST ( VirtualAumaValveTests  ,
SlowValveMovesButAtReducedSpeed   
)

◆ TEST() [24/41]

profinet::sim::TEST ( VirtualAumaValveTests  ,
StartsFromConfiguredGsdmlPosition   
)
Test:
Verify the virtual AUMA model starts at its configured position and exposes real signals.

Definition at line 104 of file test_virtual_auma_valveMore.cpp.

References Normal, profinet::sim::VirtualAumaValve::Position(), profinet::sim::VirtualAumaValve::Scenario(), profinet::io::IoSignalCatalog::Sensors(), profinet::sim::VirtualAumaValve::SignalCatalog(), and profinet::sim::VirtualAumaValve::TargetPosition().

+ Here is the call graph for this function:

◆ TEST() [25/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
BadIopsWithholdsInputData   
)
Test:
Verify BAD IOPS withholds the sensor value while statistics continue to advance.

Definition at line 173 of file test_virtual_phoenix_plcMore.cpp.

References BadIops, profinet::sim::VirtualPhoenixPlc::Connect(), profinet::sim::VirtualPhoenixPlc::ConnectionStats(), ioContext, profinet::sim::VirtualPhoenixPlc::ReadInput(), profinet::sim::VirtualAumaValve::SetScenario(), profinet::sim::VirtualAumaValve::Start(), profinet::sim::VirtualAumaValve::Stop(), and profinet::sim::VirtualPhoenixPlc::Stop().

+ Here is the call graph for this function:

◆ TEST() [26/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
BitSignalsPreserveSiblingBits   
)
Test:
Verify Phoenix bit signals preserve the other bits in their containing byte.

Definition at line 93 of file test_virtual_phoenix_plcMore.cpp.

References profinet::sim::VirtualPhoenixPlc::GetLocalOutputBytes(), profinet::sim::VirtualPhoenixPlc::SetLocalOutputBytes(), and profinet::sim::VirtualPhoenixPlc::SetLocalOutputValue().

+ Here is the call graph for this function:

◆ TEST() [27/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
BuildsGsdmlDerivedProcessImage   
)
Test:
Verify the Phoenix GSDML creates a usable controller signal catalogue and image.

Definition at line 46 of file test_virtual_phoenix_plcMore.cpp.

References profinet::io::IoSignalCatalog::Actuators(), profinet::sim::VirtualPhoenixPlc::ConnectionCount(), profinet::sim::VirtualPhoenixPlc::GetLocalInputBytes(), profinet::io::IoSignalCatalog::Sensors(), and profinet::sim::VirtualPhoenixPlc::SignalCatalog().

+ Here is the call graph for this function:

◆ TEST() [28/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
ConnectedControllerDrivesVirtualAuma   
)

◆ TEST() [29/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
DisconnectAllowsReconnect   
)
Test:
Verify disconnect stops the production controller and permits reconnecting the same valve.

Definition at line 256 of file test_virtual_phoenix_plcMore.cpp.

References profinet::sim::VirtualPhoenixPlc::Connect(), profinet::sim::VirtualPhoenixPlc::ConnectionCount(), profinet::sim::VirtualPhoenixPlc::ConnectionState(), profinet::sim::VirtualPhoenixPlc::Disconnect(), ioContext, profinet::cyclic::Running, profinet::sim::VirtualAumaValve::Start(), profinet::sim::VirtualAumaValve::Stop(), and profinet::sim::VirtualPhoenixPlc::Stop().

+ Here is the call graph for this function:

◆ TEST() [30/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
DuplicateConnectionIsRejected   
)
Test:
Verify a duplicate connection name is rejected without creating a second controller.

Definition at line 293 of file test_virtual_phoenix_plcMore.cpp.

References profinet::sim::VirtualPhoenixPlc::Connect(), profinet::sim::VirtualPhoenixPlc::ConnectionCount(), ioContext, profinet::sim::VirtualAumaValve::Start(), profinet::sim::VirtualAumaValve::Stop(), and profinet::sim::VirtualPhoenixPlc::Stop().

+ Here is the call graph for this function:

◆ TEST() [31/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
LocalInputBytesRoundTrip   
)
Test:
Verify local Phoenix input bytes can be injected and retrieved through GSDML signal metadata.

Definition at line 58 of file test_virtual_phoenix_plcMore.cpp.

References profinet::sim::VirtualPhoenixPlc::GetLocalInputBytes(), and profinet::sim::VirtualPhoenixPlc::SetLocalInputBytes().

+ Here is the call graph for this function:

◆ TEST() [32/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
LocalTypedValuesRoundTrip   
)
Test:
Verify signed and floating-point Phoenix process-image values round-trip through the double API.

Definition at line 71 of file test_virtual_phoenix_plcMore.cpp.

References profinet::sim::VirtualPhoenixPlc::GetLocalInputValue(), profinet::sim::VirtualPhoenixPlc::GetLocalOutputValue(), profinet::sim::VirtualPhoenixPlc::SetLocalInputValue(), and profinet::sim::VirtualPhoenixPlc::SetLocalOutputValue().

+ Here is the call graph for this function:

◆ TEST() [33/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
NoInputTriggersControllerWatchdog   
)
Test:
Verify a NoInput scenario drives the production controller watchdog into FAULT.

Definition at line 212 of file test_virtual_phoenix_plcMore.cpp.

References profinet::sim::VirtualPhoenixPlc::Connect(), profinet::sim::VirtualPhoenixPlc::ConnectionState(), profinet::sim::VirtualPhoenixPlc::ConnectionStats(), profinet::cyclic::Fault, ioContext, NoInput, profinet::sim::VirtualAumaValve::SetScenario(), profinet::sim::VirtualAumaValve::Start(), profinet::sim::VirtualAumaValve::Stop(), and profinet::sim::VirtualPhoenixPlc::Stop().

+ Here is the call graph for this function:

◆ TEST() [34/41]

profinet::sim::TEST ( VirtualPhoenixPlcTests  ,
TypedValueValidationRejectsInvalidValues   
)
Test:
Verify finite/integer/range validation rejects values that cannot be represented by the GSDML type.

Definition at line 114 of file test_virtual_phoenix_plcMore.cpp.

References profinet::sim::VirtualPhoenixPlc::SetLocalInputValue(), and profinet::sim::VirtualPhoenixPlc::SetLocalOutputValue().

+ Here is the call graph for this function:

◆ TEST() [35/41]

profinet::sim::TEST ( VirtualProfinetLabTests  ,
DuplicateMacAddressesAreRejectedAcrossNodeTypes   
)
Test:
Verify node MAC addresses are unique across valve and PLC namespaces.

Definition at line 128 of file test_virtual_pn_labMore.cpp.

References profinet::sim::VirtualProfinetLab::AddAumaValve(), profinet::sim::VirtualProfinetLab::AddPhoenixPlc(), profinet::sim::VirtualProfinetLab::PlcNames(), and profinet::sim::VirtualProfinetLab::ValveNames().

+ Here is the call graph for this function:

◆ TEST() [36/41]

profinet::sim::TEST ( VirtualProfinetLabTests  ,
DuplicateNamesAreRejected   
)
Test:
Verify simulator names are globally unique inside their respective labs.

Definition at line 108 of file test_virtual_pn_labMore.cpp.

References profinet::sim::VirtualProfinetLab::AddAumaValve(), and profinet::sim::VirtualProfinetLab::AddPhoenixPlc().

+ Here is the call graph for this function:

◆ TEST() [37/41]

profinet::sim::TEST ( VirtualProfinetLabTests  ,
RunsMultipleIndependentValvePlcPairs   
)

◆ TEST() [38/41]

profinet::sim::TEST ( VirtualProfinetLabTests  ,
ScenarioChangeUpdatesDashboard   
)
Test:
Verify changing a scenario through the lab is visible in both simulator and dashboard state.

Definition at line 144 of file test_virtual_pn_labMore.cpp.

References profinet::sim::VirtualProfinetLab::AddAumaValve(), profinet::sim::VirtualProfinetLab::AddPhoenixPlc(), profinet::sim::VirtualProfinetLab::Connect(), ioContext, Jammed, profinet::sim::VirtualAumaValve::Scenario(), profinet::sim::VirtualProfinetLab::SetAumaScenario(), profinet::sim::VirtualProfinetLab::StatusReport(), profinet::sim::VirtualProfinetLab::Stop(), and profinet::sim::VirtualProfinetLab::Valve().

+ Here is the call graph for this function:

◆ TEST() [39/41]

profinet::sim::TEST ( VirtualRealGsdmlIntegrationTests  ,
ParsesRealAumaGsdmlAndBuildsSignalCatalog   
)
Test:
Verify the real AUMA GSDML produces the expected vendor/device identity and process-data signals.

Definition at line 92 of file test_virtual_gsdmlIntegrationMore.cpp.

References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::ParseGsdml().

+ Here is the call graph for this function:

◆ TEST() [40/41]

profinet::sim::TEST ( VirtualRealGsdmlIntegrationTests  ,
ParsesRealPhoenixGsdmlAndBuildsSignalCatalog   
)
Test:
Verify the real Phoenix GSDML produces a non-empty process-data catalogue.

Definition at line 116 of file test_virtual_gsdmlIntegrationMore.cpp.

References profinet::io::IoSignalCatalog::FromGsdml(), and profinet::gsdml::ParseGsdml().

+ Here is the call graph for this function:

◆ TEST() [41/41]

profinet::sim::TEST ( VirtualRealGsdmlIntegrationTests  ,
RunsRealAumaAndPhoenixThroughCyclicController   
)

◆ ToString() [1/2]

const char * profinet::sim::ToString ( VirtualAumaScenario  scenario)
noexcept

Convert a virtual AUMA scenario into its stable CLI spelling.

Parameters
scenarioScenario to convert.
Returns
Lower-case scenario name.

Definition at line 141 of file virtual_auma_valve.cpp.

References BadIops, DuplicateInput, Fault, InvalidInput, Jammed, NoInput, Normal, OutOfOrderInput, and SlowValve.

Referenced by profinet::sim::VirtualPhoenixPlc::StatusReport(), profinet::sim::VirtualProfinetLab::StatusReport(), and TEST().

+ Here is the caller graph for this function:

◆ ToString() [2/2]

const char * profinet::sim::ToString ( VirtualProfinetDeviceState  state)
noexcept

Convert a simulator state to a stable diagnostic string.

Definition at line 41 of file virtual_profinet_rpc_device.cpp.

References ApplicationReady, Connected, Fault, Idle, Parameterized, Parameterizing, and Released.