PLCnext API Documentation 23.3.0.32
PlcState.hpp
1
2//
3// Copyright PHOENIX CONTACT Electronics GmbH
4//
6#pragma once
8#include "Arp/System/Core/Enum.hxx"
9
10namespace Arp { namespace Plc { namespace Commons { namespace Domain
11{
12
13enum class PlcState : uint32
14{
18 None = 0,
22 Ready = 1,
26 Stop = 2,
30 Running = 3,
34 Halt = 4,
38 StateMask = 0x3F,
42 FlagsMask = ~StateMask,
46 Warning = (1 << 6),
50 Error = (1 << 7),
55 SuspendedBySwitch = (1 << 8),
59 Suspended = (1 << 8),
63 FatalError = (1 << 9),
68 SuspendedBySystemWatchdog = (1 << 10),
72 Blocked = (1 << 10),
76 Changing = (1 << 16),
80 Hot = (1 << 17),
84 Forcing = (1 << 18),
88 Debugging = (1 << 19),
92 Warm = (1 << 20),
96 StartingDelayed = (1 << 21),
101 DcgNotPossible = (1 << 30),
106 DcgRealTimeViolation = (1U << 31),
112 ClearMask = StateMask | Hot | Warm | Changing | Forcing | Debugging,
117 RemainingMask = StateMask | Hot | Warm | Forcing | Debugging | Warning | Error | FatalError,
118};
119
121// global stream operators of enum PlcState for logging and parsing
122ARP_CXX_SYMBOL_EXPORT std::ostream& operator<<(std::ostream& os, PlcState value);
123ARP_CXX_SYMBOL_EXPORT std::istream& operator>>(std::istream& is, PlcState& value);
124
126// global logical operators of enum PlcState
127inline constexpr PlcState operator&(PlcState lhs, PlcState rhs)
128{
129 using U = std::underlying_type<PlcState>::type;
130 return static_cast<PlcState>(static_cast<U>(lhs) & static_cast<U>(rhs));
131}
132
133inline constexpr PlcState operator|(PlcState lhs, PlcState rhs)
134{
135 using U = std::underlying_type<PlcState>::type;
136 return static_cast<PlcState>(static_cast<U>(lhs) | static_cast<U>(rhs));
137}
138
139inline PlcState& operator&=(PlcState& lhs, PlcState rhs)
140{
141 lhs = lhs & rhs;
142 return lhs;
143}
144
145inline PlcState& operator|=(PlcState& lhs, PlcState rhs)
146{
147 lhs = lhs | rhs;
148 return lhs;
149}
150
151inline PlcState operator~(PlcState arg)
152{
153 using U = std::underlying_type<PlcState>::type;
154 return static_cast<PlcState>(~static_cast<U>(arg));
155}
156
157}}}} // end of namespace Arp::Plc::Commons::Domain
std::uint32_t uint32
The Arp unsigned integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:35
PlcState
Definition: PlcState.hpp:14
@ RemainingMask
This mask defines all states which should not be cleared before any PLC operation....
@ SuspendedBySystemWatchdog
Deprecated since 2022.0! Please use <cref name="Blocked"> instead. This error bit is set,...
@ StateMask
Use this entry to de-mask the raw PLC state value.
@ StartingDelayed
The PLC is about to start, but due to component conditions the PLC start has to be delayed.
@ Halt
The PLC is halted for debug purpose.
@ Blocked
This error bit is set, if the PLC could not be loaded because it was prevented by a component.
@ SuspendedBySwitch
Deprecated since 2022.0! Please use <cref name="Suspended"> instead. This error bit is set,...
@ Forcing
The PLC is in force mode. One or more variables are forced by the GDS.
@ FlagsMask
Use this entry to de-mask the flags portion of this PLC state.
@ Changing
The PLC is changing a configuration, this implies, that the state Running is set.
@ Suspended
This error bit is set, if the PLC could not be started because it was prevented by a component.
@ DcgNotPossible
This error bit is set, if the PLC tries to perform a change operation, but it is not possible.
@ DcgRealTimeViolation
This error bit is set, if the PLC tries to perform a change operation, but it is not possible in real...
@ ClearMask
This mask defines all states which should be cleared before any PLC operation.
@ Debugging
The PLC is in debug mode. One or more breakpoints are set.
@ FatalError
An unspecified fatal error or exception occurs, and the PLC is in state error.
Root namespace for the PLCnext API