PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
Loading...
Searching...
No Matches
virtual_profinet_rpc_device.h File Reference

Stateful PROFINET IO-Device DCE/RPC lifecycle simulator. More...

#include <array>
#include <asio.hpp>
#include <atomic>
#include <condition_variable>
#include <cstdint>
#include <mutex>
#include <string>
#include <thread>
#include <vector>
#include "profinet/protocol.h"
#include "profinet/rpc.h"
+ Include dependency graph for virtual_profinet_rpc_device.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  profinet::sim::VirtualProfinetDeviceConfiguration
 Configuration for a controller-facing virtual PROFINET device. More...
 
class  profinet::sim::VirtualProfinetRpcDevice
 Stateful UDP PROFINET IO-Device protocol simulator. More...
 

Namespaces

namespace  profinet
 
namespace  profinet::sim
 

Enumerations

enum class  profinet::sim::VirtualProfinetDeviceState {
  profinet::sim::Idle , profinet::sim::Connected , profinet::sim::Parameterizing , profinet::sim::Parameterized ,
  profinet::sim::ApplicationReady , profinet::sim::Released , profinet::sim::Fault
}
 Observable Application Relation state of the virtual device. More...
 

Functions

const char * profinet::sim::ToString (VirtualProfinetDeviceState state) noexcept
 Convert a simulator state to a stable diagnostic string.
 

Detailed Description

Stateful PROFINET IO-Device DCE/RPC lifecycle simulator.

This simulator deliberately implements the controller-facing startup protocol rather than calling controller methods directly. A real rpc::RPCCon can therefore connect to it and exercise:

  1. ARBlockReq / ARBlockRes
  2. IOCRBlockReq / IOCRBlockRes validation
  3. ExpectedSubmoduleBlockReq validation
  4. AlarmCR request observation
  5. PrmBegin
  6. PrmEnd
  7. device-originated ApplicationReady
  8. ApplicationReady response validation
  9. Release

The simulator uses UDP for DCE/RPC because that is the same transport used by the production RPCCon. It intentionally uses a configurable device RPC port so it can coexist on the same Linux host with the production CControl listener on UDP 34964.

Note
This is a protocol simulator, not a replacement for conformance testing against certified PROFINET hardware.

Definition in file virtual_profinet_rpc_device.h.