PROFINET IO Controller Stack 1.0.0
Modern C++ implementation of a PROFINET IO Controller stack
Loading...
Searching...
No Matches
indices.h
Go to the documentation of this file.
1
41
42#pragma once
43
44#include <cstdint>
45#include <string>
46#include <utility>
47#include <vector>
48
49namespace profinet
50{
51
52// =============================================================================
53// Block Types (from Wireshark pn_io_block_type dissector)
54// =============================================================================
55
59enum class ControlCommand : std::uint16_t
60{
62 Unknown = 0,
63
65 PrmEnd = 0x0001,
66
68 ApplicationReady = 0x0002,
69
71 Release = 0x0004,
72
74 Done = 0x0008,
75
77 ReadyForCompanion = 0x0010,
78
80 ReadyForRtClass3 = 0x0020,
81
83 PrmBegin = 0x0040
84};
85
90enum class BlockType : std::uint16_t
91{
93 Unknown = 0,
94
95 // Diagnosis blocks
96
98 DiagnosisData = 0x0010,
99
102
104 RealIdentificationData = 0x0013,
105
106 // I&M blocks
107
110
113
116
119
122
125
128
131
134
137
140
143
146
149
152
155
156 // Alarm blocks
157
159 AlarmNotificationHigh = 0x0001,
160
163
165 AlarmNotificationLow = 0x0002,
166
169
170 // IOD Read/Write blocks
171
173 IoDataWriteRequest = 0x0008,
174
176 IoDataWriteResponse = 0x8008,
177
179 IoDataReadRequest = 0x0009,
180
182 IoDataReadResponse = 0x8009,
183
184 // AR data blocks
185
188
190 LogData = 0x0019,
191
193 ApiData = 0x001A,
194
196 SrlData = 0x001B,
197
198 // AR/IOCR/AlarmCR connection blocks
199
202
205
207 IoCrRequest = 0x0102,
208
210 IoCrResponse = 0x8102,
211
213 AlarmCrRequest = 0x0103,
214
216 AlarmCrResponse = 0x8103,
217
220
222 ModuleDifference = 0x8104,
223
224 // Control operation blocks
225
227 ControlPrmEndRequest = 0x0110,
228
230 ControlPrmEndResponse = 0x8110,
231
234
237
239 ReleaseRequest = 0x0114,
240
242 ReleaseResponse = 0x8114,
243
245 ControlRtClass3Request = 0x0117,
246
249
252
255
259 SubmoduleList = 0x0119,
260
261 // Port and interface data blocks
262
264 PortDataCheck = 0x0200,
265
267 PortDataAdjust = 0x0202,
268
270 PortDataReal = 0x020F,
271
273 InterfaceMrpDataAdjust = 0x0211,
274
276 InterfaceMrpDataReal = 0x0212,
277
279 PortMrpDataReal = 0x0215,
280
282 MrpRingStateData = 0x0219,
283
285 PortFoDataReal = 0x0220,
286
288 PortFoDataCheck = 0x0221,
289
291 PortFoDataAdjust = 0x0222,
292
294 PortDataRealExtended = 0x022C,
295
298
300 PortStatistics = 0x0251,
301
302 // Container blocks
303
305 MultipleHeader = 0x0400,
306
308 ContainerContent = 0x0401,
309
310 // Device-level blocks (0xF8xx)
311
314
316 RealProcessData = 0xF841,
317
319 ExpectedProcessData = 0xF842,
320
321 // API-level blocks (0xF0xx)
322
325};
326
333std::string GetBlockTypeName(BlockType blockType);
334
335// =============================================================================
336// Alarm Types (used in AlarmNotification blocks)
337// =============================================================================
338
343enum class AlarmType : std::uint16_t
344{
346 Unknown = 0x000,
347
349 Diagnosis = 0x0001,
350
352 Process = 0x0002,
353
355 Pull = 0x0003,
356
358 Plug = 0x0004,
359
361 Status = 0x0005,
362
364 Update = 0x0006,
365
367 Redundancy = 0x0007,
368
370 ControlledBySupervisor = 0x0008,
371
373 Released = 0x0009,
374
376 PlugWrongSubmodule = 0x000A,
377
379 ReturnOfSubmodule = 0x000B,
380
382 DiagnosisDisappears = 0x000C,
383
385 MulticastMismatch = 0x000D,
386
388 PortDataChange = 0x000E,
389
391 SyncDataChanged = 0x000F,
392
394 IsochronousModeProblem = 0x0010,
395
398
400 TimeDataChanged = 0x0012,
401
403 DfpProblem = 0x0013,
404
406 UploadRetrieval = 0x001E,
407
409 PullModule = 0x001F
410};
411
417std::string GetAlarmTypeName(AlarmType alarmType);
418
419// =============================================================================
420// IOCR / AlarmCR / AR type constants
421// =============================================================================
422
427enum class IocrType : std::uint16_t
428{
430 Input = 0x0001,
431
433 Output = 0x0002,
434
436 MulticastProvider = 0x0003,
437
439 MulticastConsumer = 0x0004
440};
441
448std::string GetIocrTypeName(IocrType iocrType);
449
454enum class IocrRtClass : std::uint8_t
455{
457 Udp = 0x04
458};
459
466std::string GetIocrRtClassName(IocrRtClass rtClass);
467
468// NOLINTBEGIN(readability-identifier-naming)
470// inline constexpr std::uint16_t ALARM_CR_TYPE_ALARM = 0x0001;
471
473inline constexpr std::uint8_t ALARM_TRANSPORT_RTA_CLASS_UDP = 0x01;
474
476inline constexpr std::uint16_t AR_TYPE_IOCAR_SINGLE = 0x0001;
478inline constexpr std::uint16_t AR_TYPE_IOSAR = 0x0006;
480inline constexpr std::uint16_t AR_TYPE_IOCARSR = 0x0020;
481// NOLINTEND(readability-identifier-naming)
482//
483// =============================================================================
484// USI (User Structure Identifier) constants
485// =============================================================================
490enum class Usi : std::uint16_t
491{
493 Unknown = 0,
494
496 ChannelDiagnosis = 0x8000,
497
499 MultipleDiagnosis = 0x8001,
500
503
506
508 Maintenance = 0x8100,
509
511 Upload = 0x8200,
512
514 IParameter = 0x8201,
515
517 RsAlarmLow = 0x8300,
518
520 RsAlarmHigh = 0x8301,
521
523 RsAlarmSubmodule = 0x8302,
524
526 PeAlarm = 0x8310,
527
529 PralAlarm = 0x8320,
530
533
535 Bit15OfChannelNumber = 0x8000,
536
539
542
546
547};
548
555std::string
556GetUsiName(Usi usi);
557
558// =============================================================================
559// Module / Submodule state constants
560// =============================================================================
561
562// NOLINTBEGIN(readability-identifier-naming)
564inline constexpr std::uint16_t MODULE_STATE_NO_MODULE = 0x0000;
566inline constexpr std::uint16_t MODULE_STATE_WRONG_MODULE = 0x0001;
568inline constexpr std::uint16_t MODULE_STATE_PROPER_MODULE = 0x0002;
570inline constexpr std::uint16_t MODULE_STATE_SUBSTITUTE_MODULE = 0x0003;
571
573inline constexpr std::uint16_t SUBMODULE_STATE_NO_SUBMODULE = 0x0000;
575inline constexpr std::uint16_t SUBMODULE_STATE_WRONG_SUBMODULE = 0x0001;
577inline constexpr std::uint16_t SUBMODULE_STATE_LOCKED_BY_SUPERVISOR = 0x0002;
579inline constexpr std::uint16_t SUBMODULE_STATE_APPLICATION_READY_PENDING = 0x0004;
581inline constexpr std::uint16_t SUBMODULE_STATE_OK = 0x0007;
582// NOLINTEND(readability-identifier-naming)
583
587std::string GetModuleStateName(std::uint16_t state);
588
592std::string GetSubmoduleStateName(std::uint16_t state);
593
594// =============================================================================
595// PROFIenergy operational mode constants
596// =============================================================================
597
598// NOLINTBEGIN(readability-identifier-naming)
600inline constexpr std::uint8_t PE_MODE_POWER_OFF = 0x00;
602inline constexpr std::uint8_t PE_MODE_ENERGY_SAVING_MIN = 0x01;
604inline constexpr std::uint8_t PE_MODE_ENERGY_SAVING_MAX = 0x1F;
606inline constexpr std::uint8_t PE_MODE_OPERATE = 0xF0;
608inline constexpr std::uint8_t PE_MODE_SLEEP_MODE_WOL = 0xFE;
610inline constexpr std::uint8_t PE_MODE_READY_TO_OPERATE = 0xFF;
611// NOLINTEND(readability-identifier-naming)
612
616std::string GetPeModeName(std::uint8_t mode);
617
618// =============================================================================
619// I&M (Identification & Maintenance) Indices - 0xAFFx
620// =============================================================================
621
622// NOLINTBEGIN(readability-identifier-naming)
624inline constexpr std::uint16_t IM0 = 0xAFF0;
626inline constexpr std::uint16_t IM1 = 0xAFF1;
628inline constexpr std::uint16_t IM2 = 0xAFF2;
630inline constexpr std::uint16_t IM3 = 0xAFF3;
632inline constexpr std::uint16_t IM4 = 0xAFF4;
634inline constexpr std::uint16_t IM5 = 0xAFF5;
636inline constexpr std::uint16_t IM6 = 0xAFF6;
638inline constexpr std::uint16_t IM7 = 0xAFF7;
640inline constexpr std::uint16_t IM8 = 0xAFF8;
642inline constexpr std::uint16_t IM9 = 0xAFF9;
644inline constexpr std::uint16_t IM10 = 0xAFFA;
646inline constexpr std::uint16_t IM11 = 0xAFFB;
648inline constexpr std::uint16_t IM12 = 0xAFFC;
650inline constexpr std::uint16_t IM13 = 0xAFFD;
652inline constexpr std::uint16_t IM14 = 0xAFFE;
654inline constexpr std::uint16_t IM15 = 0xAFFF;
656inline constexpr std::uint16_t IM0_FILTER_DATA = 0xF840;
657// NOLINTEND(readability-identifier-naming)
658
659// =============================================================================
660// Diagnosis Indices - Pattern: 0x__0A/B/C
661// =============================================================================
662
663// NOLINTBEGIN(readability-identifier-naming)
665inline constexpr std::uint16_t DIAG_CHANNEL_SUBSLOT = 0x800A;
667inline constexpr std::uint16_t DIAG_ALL_SUBSLOT = 0x800B;
669inline constexpr std::uint16_t DIAG_MAINTENANCE_SUBSLOT = 0x800C;
670
672inline constexpr std::uint16_t DIAG_CHANNEL_SLOT = 0xC00A;
674inline constexpr std::uint16_t DIAG_ALL_SLOT = 0xC00B;
676inline constexpr std::uint16_t DIAG_MAINTENANCE_SLOT = 0xC00C;
677
679inline constexpr std::uint16_t DIAG_CHANNEL_AR = 0xE00A;
681inline constexpr std::uint16_t DIAG_ALL_AR = 0xE00B;
683inline constexpr std::uint16_t DIAG_MAINTENANCE_AR = 0xE00C;
684
686inline constexpr std::uint16_t DIAG_CHANNEL_API = 0xF00A;
688inline constexpr std::uint16_t DIAG_ALL_API = 0xF00B;
690inline constexpr std::uint16_t DIAG_MAINTENANCE_API = 0xF00C;
691
693inline constexpr std::uint16_t DIAG_DEVICE = 0xF80C;
694// NOLINTEND(readability-identifier-naming)
695
696// =============================================================================
697// Maintenance Indices - Pattern: 0x__10-13
698// =============================================================================
699
700// NOLINTBEGIN(readability-identifier-naming)
702inline constexpr std::uint16_t MAINT_REQUIRED_CHANNEL_SUBSLOT = 0x8010;
704inline constexpr std::uint16_t MAINT_DEMANDED_CHANNEL_SUBSLOT = 0x8011;
706inline constexpr std::uint16_t MAINT_REQUIRED_ALL_SUBSLOT = 0x8012;
708inline constexpr std::uint16_t MAINT_DEMANDED_ALL_SUBSLOT = 0x8013;
709// NOLINTEND(readability-identifier-naming)
710
711// =============================================================================
712// Configuration/Identification Indices
713// =============================================================================
714
715// NOLINTBEGIN(readability-identifier-naming)
717inline constexpr std::uint16_t EXPECTED_ID_SUBSLOT = 0x8000;
719inline constexpr std::uint16_t REAL_ID_SUBSLOT = 0x8001;
720
722inline constexpr std::uint16_t EXPECTED_ID_AR = 0xE000;
724inline constexpr std::uint16_t REAL_ID_AR = 0xE001;
726inline constexpr std::uint16_t MODULE_DIFF_BLOCK = 0xE002;
727
729inline constexpr std::uint16_t REAL_ID_API = 0xF000;
730
732inline constexpr std::uint16_t AR_DATA = 0xF820;
734inline constexpr std::uint16_t API_DATA = 0xF821;
736inline constexpr std::uint16_t PDEV_DATA = 0xF831;
738inline constexpr std::uint16_t PD_REAL_DATA = 0xF841;
740inline constexpr std::uint16_t PD_EXPECTED_DATA = 0xF842;
742inline constexpr std::uint16_t AUTO_CONFIG = 0xF850;
744inline constexpr std::uint16_t LOG_DATA = 0xF830;
745// NOLINTEND(readability-identifier-naming)
746
747// =============================================================================
748// PDPort Indices (for port subslots 0x8001, 0x8002, etc.)
749// =============================================================================
750
751// NOLINTBEGIN(readability-identifier-naming)
753inline constexpr std::uint16_t PD_PORT_DATA_REAL = 0x802A;
755inline constexpr std::uint16_t PD_PORT_DATA_CHECK = 0x802B;
757inline constexpr std::uint16_t PD_IR_DATA = 0x802C;
759inline constexpr std::uint16_t PD_SYNC_DATA = 0x802D;
761inline constexpr std::uint16_t PD_PORT_DATA_ADJUST = 0x802F;
763inline constexpr std::uint16_t PD_PORT_STATISTIC = 0x8072;
764// NOLINTEND(readability-identifier-naming)
765
766// =============================================================================
767// PDInterface Indices (for interface subslot 0x8000)
768// =============================================================================
769
770// NOLINTBEGIN(readability-identifier-naming)
772inline constexpr std::uint16_t PD_NC_DATA_CHECK = 0x8070;
774inline constexpr std::uint16_t PD_INTERFACE_ADJUST = 0x8071;
776inline constexpr std::uint16_t PD_INTERFACE_DATA_REAL = 0x8080;
778inline constexpr std::uint16_t PD_INTERFACE_FSU_ADJUST = 0x8090;
779// NOLINTEND(readability-identifier-naming)
780
781// =============================================================================
782// Fiber Optic Indices
783// =============================================================================
784
785// NOLINTBEGIN(readability-identifier-naming)
787inline constexpr std::uint16_t PD_PORT_FO_DATA_REAL = 0x8060;
789inline constexpr std::uint16_t PD_PORT_FO_DATA_CHECK = 0x8061;
791inline constexpr std::uint16_t PD_PORT_FO_DATA_ADJUST = 0x8062;
793inline constexpr std::uint16_t PD_PORT_SFP_DATA_CHECK = 0x8063;
794// NOLINTEND(readability-identifier-naming)
795
796// =============================================================================
797// MRP (Media Redundancy Protocol) Indices
798// =============================================================================
799
800// NOLINTBEGIN(readability-identifier-naming)
802inline constexpr std::uint16_t PD_INTERFACE_MRP_DATA_REAL = 0x8050;
804inline constexpr std::uint16_t PD_INTERFACE_MRP_DATA_CHECK = 0x8051;
806inline constexpr std::uint16_t PD_INTERFACE_MRP_DATA_ADJUST = 0x8052;
807
809inline constexpr std::uint16_t PD_PORT_MRP_DATA_ADJUST = 0x8053;
811inline constexpr std::uint16_t PD_PORT_MRP_DATA_REAL = 0x8054;
813inline constexpr std::uint16_t PD_PORT_MRP_IC_DATA_ADJUST = 0x8055;
815inline constexpr std::uint16_t PD_PORT_MRP_IC_DATA_CHECK = 0x8056;
817inline constexpr std::uint16_t PD_PORT_MRP_IC_DATA_REAL = 0x8057;
818// NOLINTEND(readability-identifier-naming)
819
820// =============================================================================
821// Sync/PTCP Indices
822// =============================================================================
823
824// NOLINTBEGIN(readability-identifier-naming)
826inline constexpr std::uint16_t PD_IR_SUBFRAME_DATA = 0x8020;
828inline constexpr std::uint16_t ISOCHRONOUS_MODE_DATA = 0x8030;
830inline constexpr std::uint16_t PD_TIME_DATA = 0x8031;
831// NOLINTEND(readability-identifier-naming)
832
833// =============================================================================
834// I/O Data Indices
835// =============================================================================
836
837// NOLINTBEGIN(readability-identifier-naming)
839inline constexpr std::uint16_t SUBSTITUTE_VALUES = 0x801E;
841inline constexpr std::uint16_t RECORD_INPUT_DATA = 0x8028;
843inline constexpr std::uint16_t RECORD_OUTPUT_DATA = 0x8029;
844// NOLINTEND(readability-identifier-naming)
845
846// =============================================================================
847// Asset Management Indices
848// =============================================================================
849
850// NOLINTBEGIN(readability-identifier-naming)
852inline constexpr std::uint16_t AM_DEVICE_ID = 0xF8E0;
854inline constexpr std::uint16_t AM_FULL_INFO = 0xF8E1;
856inline constexpr std::uint16_t AM_HW_ONLY = 0xF8E2;
858inline constexpr std::uint16_t AM_FW_ONLY = 0xF8E3;
860inline constexpr std::uint16_t AM_LOCATION_SLOT = 0xFBE0;
862inline constexpr std::uint16_t AM_LOCATION_TREE = 0xFBE1;
864inline constexpr std::uint16_t AM_DATA = 0xFBF0;
865// NOLINTEND(readability-identifier-naming)
866
867// =============================================================================
868// PROFIsafe Indices
869// =============================================================================
870
871// NOLINTBEGIN(readability-identifier-naming)
873inline constexpr std::uint16_t F_PARAMETER_BLOCK = 0x0100;
875inline constexpr std::uint16_t F_PRM_FLAG1 = 0x0101;
877inline constexpr std::uint16_t F_PRM_FLAG2 = 0x0102;
879inline constexpr std::uint16_t F_PARAMETER_WRITE = 0xE000;
881inline constexpr std::uint16_t F_PARAMETER_READ = 0xE001;
882// NOLINTEND(readability-identifier-naming)
883
884// =============================================================================
885// PROFIenergy Index
886// =============================================================================
887
888// NOLINTBEGIN(readability-identifier-naming)
890inline constexpr std::uint16_t PROFIENERGY = 0x80A0;
891// NOLINTEND(readability-identifier-naming)
892
893// =============================================================================
894// AR-specific Indices
895// =============================================================================
896
897// NOLINTBEGIN(readability-identifier-naming)
899inline constexpr std::uint16_t WRITE_MULTIPLE = 0xE040;
901inline constexpr std::uint16_t AR_FSU_DATA_ADJUST = 0xE050;
902// NOLINTEND(readability-identifier-naming)
903
904// =============================================================================
905// Standard DAP Subslots
906// =============================================================================
907
908// NOLINTBEGIN(readability-identifier-naming)
910inline constexpr std::uint16_t SUBSLOT_DAP = 0x0001;
912inline constexpr std::uint16_t SUBSLOT_INTERFACE = 0x8000;
914inline constexpr std::uint16_t SUBSLOT_PORT1 = 0x8001;
916inline constexpr std::uint16_t SUBSLOT_PORT2 = 0x8002;
917// NOLINTEND(readability-identifier-naming)
918
919// =============================================================================
920// Index Categories for Enumeration
921// =============================================================================
922
924using IndexNamePairs = std::vector<std::pair<std::uint16_t, std::string>>;
925
935const IndexNamePairs& DiagnosisIndices(const std::string& scope);
954
959std::string GetIndexName(std::uint16_t index);
960
964std::string GetScope(std::uint16_t index);
965
966} // namespace profinet
constexpr std::uint16_t PD_PORT_DATA_REAL
PD Port Data Real.
Definition indices.h:753
constexpr std::uint16_t MAINT_DEMANDED_CHANNEL_SUBSLOT
MAINT Demanded Channel Subslot.
Definition indices.h:704
@ AlarmCrResponse
AlarmCRBlock response.
constexpr std::uint16_t PD_PORT_MRP_DATA_ADJUST
PD Port MRP Data Adjust.
Definition indices.h:809
constexpr std::uint16_t AR_DATA
AR Data.
Definition indices.h:732
constexpr std::uint16_t DIAG_DEVICE
DIAG Device.
Definition indices.h:693
BlockType
PROFINET block types.
Definition indices.h:91
@ PortDataRealExtended
PD Port Data Real Extended block.
@ MrpRingStateData
MRP Ring State Data block.
@ IoCrRequest
IOCR block request.
@ SubmoduleList
Submodule list block.
@ PortDataCheck
PD Port Data Check block.
@ IdentificationMaintenance2
I&M2 block.
@ ExpectedProcessData
PD Expected Data block.
@ IdentificationMaintenance4
I&M4 block.
@ ControlPrmEndRequest
IOD Control Prm End request.
@ RealIdentificationDataApi
Real Identification Data API block.
@ InterfaceMrpDataAdjust
PD Interface MRP Data Adjust block.
@ AlarmAcknowledgementLow
Alarm acknowledgement low block.
@ IoDataReadResponse
IOD read response block.
@ PortFoDataReal
PD Port FO Data Real block.
@ ApplicationRelationRequest
AR block request.
@ IdentificationMaintenance14
I&M14 block.
@ AlarmAcknowledgementHigh
Alarm acknowledgement high block.
@ IdentificationMaintenance13
I&M13 block.
@ ControlPrmEndResponse
IOD Control Prm End response.
@ IdentificationMaintenance10
I&M10 block.
@ PortMrpDataReal
PD Port MRP Data Real block.
@ PortStatistics
PD Port Statistic block.
@ AlarmNotificationHigh
Alarm notification high block.
@ ModuleDifference
Module difference block.
@ ReleaseResponse
IOD Release response.
@ IdentificationMaintenance11
I&M11 block.
@ ControlRtClass3Request
IOD Control RT Class 3 request.
@ IdentificationMaintenance7
I&M7 block.
@ LogData
LogData block.
@ ExpectedIdentificationData
Expected identification data block.
@ PortFoDataCheck
PD Port FO Data Check block.
@ IdentificationMaintenance6
I&M6 block.
@ PortDataReal
PD Port Data Real block.
@ ExpectedSubmoduleRequest
Expected submodule block request.
@ AlarmCrRequest
AlarmCR block request.
@ ReleaseRequest
IOD Release request.
@ IdentificationMaintenance3
I&M3 block.
@ ContainerContent
CO Container Content block.
@ DiagnosisData
Diagnosis data block.
@ IdentificationMaintenance8
I&M8 block.
@ ControlApplicationReadyRequest
IOD Control Application Ready request.
@ ApplicationRelationServer
AR Server Block.
@ IdentificationMaintenance1
I&M1 block.
@ IdentificationMaintenance12
I&M12 block.
@ ApplicationRelationResponse
AR block response.
@ RealProcessData
PD Real Data block.
@ IoCrResponse
IOCR block response.
@ ParameterizationBeginRequest
Parameterization Begin request.
@ IoDataWriteResponse
IOD write response block.
@ ApiData
API data block.
@ ParameterizationBeginResponse
Parameterization Begin response.
@ ApplicationRelationData
ARData block.
@ InterfaceMrpDataReal
PD Interface MRP Data Real block.
@ IoDataWriteRequest
IOD write request block.
@ ControlApplicationReadyResponse
IOD Control Application Ready response.
@ RealIdentificationData
Real identification data block.
@ IoDataReadRequest
IOD read request block.
@ PortDataAdjust
PD Port Data Adjust block.
@ PortDataInterfaceDataReal
PD Interface Data Real block.
@ IdentificationMaintenance15
I&M15 block.
@ PortFoDataAdjust
PD Port FO Data Adjust block.
@ MultipleHeader
Multiple Header block.
@ SrlData
SRL data block.
@ IdentificationMaintenance0
I&M0 block.
@ ControlRtClass3Response
IOD Control RT Class 3 response.
@ AlarmNotificationLow
Alarm notification low block.
@ IdentificationMaintenance9
I&M9 block.
@ IdentificationMaintenance5
I&M5 block.
constexpr std::uint8_t ALARM_TRANSPORT_RTA_CLASS_UDP
ALARM Cr Type ALARM.
Definition indices.h:473
constexpr std::uint16_t F_PRM_FLAG1
F Prm Flag1.
Definition indices.h:875
constexpr std::uint16_t DIAG_ALL_API
DIAG All API.
Definition indices.h:688
const IndexNamePairs & DiagnosisIndices(const std::string &scope)
Diagnosis indices for a given addressing scope.
Definition indices.cpp:532
constexpr std::uint8_t PE_MODE_ENERGY_SAVING_MAX
PE Mode Energy Saving Max.
Definition indices.h:604
const IndexNamePairs & CriticalIndices()
Critical indices that should always be tested.
Definition indices.cpp:495
constexpr std::uint16_t SUBSTITUTE_VALUES
Substitute Values.
Definition indices.h:839
constexpr std::uint16_t MAINT_DEMANDED_ALL_SUBSLOT
MAINT Demanded All Subslot.
Definition indices.h:708
constexpr std::uint16_t EXPECTED_ID_AR
Expected ID AR.
Definition indices.h:722
constexpr std::uint16_t SUBSLOT_PORT1
Subslot Port1.
Definition indices.h:914
constexpr std::uint16_t PD_TIME_DATA
PD Time Data.
Definition indices.h:830
std::string GetIocrRtClassName(IocrRtClass rtClass)
Get the human-readable name for an IOCR real-time class.
Definition indices.cpp:373
std::string GetScope(std::uint16_t index)
Get the addressing scope for an index.
Definition indices.cpp:683
constexpr std::uint16_t F_PARAMETER_READ
F Parameter Read.
Definition indices.h:881
std::string GetSubmoduleStateName(std::uint16_t state)
Get the human-readable name for a submodule state.
Definition indices.cpp:457
constexpr std::uint16_t PD_PORT_MRP_IC_DATA_REAL
PD Port MRP IC Data Real.
Definition indices.h:817
constexpr std::uint16_t SUBSLOT_PORT2
Subslot Port2.
Definition indices.h:916
constexpr std::uint8_t PE_MODE_POWER_OFF
PE Mode Power Off.
Definition indices.h:600
constexpr std::uint16_t PD_SYNC_DATA
PD Sync Data.
Definition indices.h:759
constexpr std::uint16_t AR_FSU_DATA_ADJUST
AR FSU Data Adjust.
Definition indices.h:901
std::string GetModuleStateName(std::uint16_t state)
Get the human-readable name for a module state.
Definition indices.cpp:445
constexpr std::uint16_t PD_REAL_DATA
PD Real Data.
Definition indices.h:738
constexpr std::uint16_t SUBMODULE_STATE_APPLICATION_READY_PENDING
Submodule State Application Ready Pending.
Definition indices.h:579
constexpr std::uint16_t IM8
I&M8.
Definition indices.h:640
constexpr std::uint16_t DIAG_ALL_AR
DIAG All AR.
Definition indices.h:681
constexpr std::uint16_t MODULE_DIFF_BLOCK
Module Diff Block.
Definition indices.h:726
std::string GetBlockTypeName(BlockType blockType)
Get the human-readable name for a block type.
Definition indices.cpp:38
constexpr std::uint16_t PD_INTERFACE_ADJUST
PD Interface Adjust.
Definition indices.h:774
AlarmType
PROFINET Alarm Types used in AlarmNotification blocks.
Definition indices.h:344
@ Update
Update alarm.
@ IsochronousModeProblem
Isochronous mode problem alarm.
@ MulticastMismatch
Multicast mismatch alarm.
@ PlugWrongSubmodule
Plug wrong submodule alarm.
@ DfpProblem
DFP problem alarm.
@ Plug
Plug alarm.
@ ReturnOfSubmodule
Return of submodule alarm.
@ Diagnosis
Diagnosis alarm.
@ PortDataChange
Port data change alarm.
@ SyncDataChanged
Sync data changed alarm.
@ Pull
Pull alarm.
@ ControlledBySupervisor
Controlled by supervisor alarm.
@ NetworkComponentProblem
Network component problem alarm.
@ Process
Process alarm.
@ Released
Released alarm.
@ TimeDataChanged
Time data changed alarm.
@ Status
Status alarm.
@ Redundancy
Redundancy alarm.
@ PullModule
Pull module alarm.
@ UploadRetrieval
Upload retrieval alarm.
@ DiagnosisDisappears
Diagnosis disappears alarm.
constexpr std::uint16_t DIAG_MAINTENANCE_SUBSLOT
DIAG Maintenance Subslot.
Definition indices.h:669
constexpr std::uint16_t PD_PORT_MRP_IC_DATA_CHECK
PD Port MRP IC Data Check.
Definition indices.h:815
constexpr std::uint16_t SUBMODULE_STATE_NO_SUBMODULE
Submodule State No Submodule.
Definition indices.h:573
constexpr std::uint16_t F_PARAMETER_BLOCK
F Parameter Block.
Definition indices.h:873
constexpr std::uint16_t AM_FULL_INFO
AM Full Info.
Definition indices.h:854
const IndexNamePairs & AllStandardIndices()
Union of every standard index category.
Definition indices.cpp:618
std::string GetUsiName(Usi usi)
Get the human-readable name for a User Structure Identifier.
Definition indices.cpp:386
constexpr std::uint16_t MAINT_REQUIRED_ALL_SUBSLOT
MAINT Required All Subslot.
Definition indices.h:706
constexpr std::uint16_t AR_TYPE_IOCARSR
AR Type Iocarsr.
Definition indices.h:480
constexpr std::uint16_t IM6
I&M6.
Definition indices.h:636
IocrType
PROFINET IOCR types.
Definition indices.h:428
@ MulticastConsumer
Multicast consumer IOCR.
@ Output
Output IOCR.
@ Input
Input IOCR.
@ MulticastProvider
Multicast provider IOCR.
constexpr std::uint16_t IM2
I&M2.
Definition indices.h:628
constexpr std::uint16_t IM10
I&M10.
Definition indices.h:644
std::string GetPeModeName(std::uint8_t mode)
Get the human-readable name for a PROFIenergy operational mode.
Definition indices.cpp:470
constexpr std::uint16_t IM0
I&M0.
Definition indices.h:624
constexpr std::uint16_t AM_LOCATION_SLOT
AM Location Slot.
Definition indices.h:860
constexpr std::uint16_t PD_PORT_MRP_DATA_REAL
PD Port MRP Data Real.
Definition indices.h:811
ControlCommand
PROFINET IOD control command values.
Definition indices.h:60
@ ApplicationReady
Application Ready command.
@ ReadyForCompanion
Ready for Companion command.
@ PrmEnd
Prm End command.
@ Unknown
Unknown / Initialize value.
@ Release
Release command.
@ ReadyForRtClass3
Ready for RT Class 3 command.
@ PrmBegin
Prm Begin command.
std::vector< std::pair< std::uint16_t, std::string > > IndexNamePairs
(index, name) pairs, e.g. for building a "try each of these" scan.
Definition indices.h:924
constexpr std::uint16_t SUBMODULE_STATE_WRONG_SUBMODULE
Submodule State Wrong Submodule.
Definition indices.h:575
constexpr std::uint16_t DIAG_CHANNEL_API
DIAG Channel API.
Definition indices.h:686
constexpr std::uint16_t EXPECTED_ID_SUBSLOT
Expected ID Subslot.
Definition indices.h:717
constexpr std::uint16_t DIAG_CHANNEL_SLOT
DIAG Channel Slot.
Definition indices.h:672
constexpr std::uint16_t DIAG_ALL_SLOT
DIAG All Slot.
Definition indices.h:674
constexpr std::uint8_t PE_MODE_SLEEP_MODE_WOL
PE Mode Sleep Mode WOL.
Definition indices.h:608
constexpr std::uint16_t IM15
I&M15.
Definition indices.h:654
std::string GetIocrTypeName(IocrType iocrType)
Get the human-readable name for an IOCR type.
Definition indices.cpp:350
constexpr std::uint16_t DIAG_MAINTENANCE_AR
DIAG Maintenance AR.
Definition indices.h:683
constexpr std::uint16_t IM1
I&M1.
Definition indices.h:626
constexpr std::uint16_t PD_INTERFACE_FSU_ADJUST
PD Interface FSU Adjust.
Definition indices.h:778
constexpr std::uint16_t MODULE_STATE_SUBSTITUTE_MODULE
Module State Substitute Module.
Definition indices.h:570
constexpr std::uint16_t MODULE_STATE_PROPER_MODULE
Module State Proper Module.
Definition indices.h:568
constexpr std::uint16_t REAL_ID_API
Real ID API.
Definition indices.h:729
constexpr std::uint16_t DIAG_CHANNEL_AR
DIAG Channel AR.
Definition indices.h:679
const IndexNamePairs & DeviceIndices()
Device-level indices.
Definition indices.cpp:604
constexpr std::uint16_t RECORD_INPUT_DATA
Record Input Data.
Definition indices.h:841
constexpr std::uint16_t LOG_DATA
Log Data.
Definition indices.h:744
constexpr std::uint16_t PD_PORT_FO_DATA_REAL
PD Port FO Data Real.
Definition indices.h:787
constexpr std::uint16_t IM4
I&M4.
Definition indices.h:632
constexpr std::uint16_t PD_IR_DATA
PD IR Data.
Definition indices.h:757
const IndexNamePairs & ImIndices()
I&M0-I&M15 indices.
Definition indices.cpp:509
constexpr std::uint16_t PD_IR_SUBFRAME_DATA
PD IR Subframe Data.
Definition indices.h:826
constexpr std::uint16_t PD_PORT_SFP_DATA_CHECK
PD Port SFP Data Check.
Definition indices.h:793
constexpr std::uint16_t AUTO_CONFIG
Auto Config.
Definition indices.h:742
constexpr std::uint16_t DIAG_MAINTENANCE_API
DIAG Maintenance API.
Definition indices.h:690
constexpr std::uint16_t WRITE_MULTIPLE
Write Multiple.
Definition indices.h:899
constexpr std::uint16_t SUBMODULE_STATE_OK
Submodule State Ok.
Definition indices.h:581
constexpr std::uint16_t IM0_FILTER_DATA
I&M0 Filter Data.
Definition indices.h:656
Usi
PROFINET User Structure Identifiers (USI).
Definition indices.h:491
@ Maintenance
Maintenance item.
@ MultipleDiagnosis
Multiple diagnosis.
@ Bit0till14OfChannelNumber
The channel number (bits 0-14).
@ Bit15AndExternalChannelDiagnosisOfChannelNumber
Check diagnosis is in external channel diagnosis (bit 15 of ChannelNumber + 0x02).
@ IParameter
iParameter item.
@ Bit15OfChannelNumber
Check diagnosis is accumulative (bit 15 of ChannelNumber).
@ PralAlarm
PRAL alarm item.
@ Upload
Upload record.
@ ExtendedChannelDiagnosis
Extended channel diagnosis.
@ PeAlarm
PE alarm item.
@ ChannelDiagnosis
Channel diagnosis.
@ RsAlarmHigh
RS alarm item for high alarm.
@ Bit15AndQualifiedChannelDiagnosisOfChannelNumber
Check diagnosis is in qualified channel diagnosis (bit 15 of ChannelNumber + 0x03).
@ Low11BitsOfRsAlarmInfo
The low 11 bits of RsAlarmInfo, so the RS specifier can be extracted from RsAlarmInfo.
@ RsAlarmSubmodule
RS alarm item for submodule.
@ RsAlarmLow
RS alarm item for low alarm.
@ QualifiedChannelDiagnosis
Qualified channel diagnosis.
constexpr std::uint16_t DIAG_MAINTENANCE_SLOT
DIAG Maintenance Slot.
Definition indices.h:676
constexpr std::uint16_t IM7
I&M7.
Definition indices.h:638
constexpr std::uint16_t PDEV_DATA
Pdev Data.
Definition indices.h:736
constexpr std::uint16_t PD_INTERFACE_DATA_REAL
PD Interface Data Real.
Definition indices.h:776
constexpr std::uint16_t PD_EXPECTED_DATA
PD Expected Data.
Definition indices.h:740
constexpr std::uint16_t DIAG_ALL_SUBSLOT
DIAG All Subslot.
Definition indices.h:667
constexpr std::uint16_t PD_PORT_DATA_CHECK
PD Port Data Check.
Definition indices.h:755
constexpr std::uint16_t F_PRM_FLAG2
F Prm Flag2.
Definition indices.h:877
constexpr std::uint16_t ISOCHRONOUS_MODE_DATA
Isochronous Mode Data.
Definition indices.h:828
constexpr std::uint16_t MODULE_STATE_NO_MODULE
Module State No Module.
Definition indices.h:564
constexpr std::uint16_t PD_NC_DATA_CHECK
PD NC Data Check.
Definition indices.h:772
constexpr std::uint16_t MAINT_REQUIRED_CHANNEL_SUBSLOT
MAINT Required Channel Subslot.
Definition indices.h:702
constexpr std::uint16_t PD_PORT_FO_DATA_ADJUST
PD Port FO Data Adjust.
Definition indices.h:791
constexpr std::uint16_t AM_LOCATION_TREE
AM Location Tree.
Definition indices.h:862
constexpr std::uint16_t REAL_ID_AR
Real ID AR.
Definition indices.h:724
constexpr std::uint16_t AM_FW_ONLY
AM FW Only.
Definition indices.h:858
constexpr std::uint16_t IM5
I&M5.
Definition indices.h:634
constexpr std::uint16_t IM13
I&M13.
Definition indices.h:650
constexpr std::uint16_t AM_DATA
AM Data.
Definition indices.h:864
constexpr std::uint16_t AM_DEVICE_ID
AM Device ID.
Definition indices.h:852
constexpr std::uint16_t PD_PORT_MRP_IC_DATA_ADJUST
PD Port MRP IC Data Adjust.
Definition indices.h:813
constexpr std::uint16_t AM_HW_ONLY
AM HW Only.
Definition indices.h:856
constexpr std::uint8_t PE_MODE_ENERGY_SAVING_MIN
PE Mode Energy Saving Min.
Definition indices.h:602
constexpr std::uint16_t PD_INTERFACE_MRP_DATA_CHECK
PD Interface MRP Data Check.
Definition indices.h:804
constexpr std::uint16_t PD_PORT_FO_DATA_CHECK
PD Port FO Data Check.
Definition indices.h:789
constexpr std::uint16_t REAL_ID_SUBSLOT
Real ID Subslot.
Definition indices.h:719
constexpr std::uint16_t API_DATA
API Data.
Definition indices.h:734
constexpr std::uint16_t AR_TYPE_IOSAR
AR Type Iosar.
Definition indices.h:478
constexpr std::uint8_t PE_MODE_READY_TO_OPERATE
PE Mode Ready To Operate.
Definition indices.h:610
constexpr std::uint16_t PD_INTERFACE_MRP_DATA_ADJUST
PD Interface MRP Data Adjust.
Definition indices.h:806
const IndexNamePairs & InterfaceIndices()
Interface-level indices.
Definition indices.cpp:594
constexpr std::uint16_t AR_TYPE_IOCAR_SINGLE
AR Type Iocar Single.
Definition indices.h:476
std::string GetIndexName(std::uint16_t index)
Get the human-readable name for a record data index.
Definition indices.cpp:642
std::string GetAlarmTypeName(AlarmType alarmType)
Get the human-readable name for an alarm type.
Definition indices.cpp:278
constexpr std::uint16_t PROFIENERGY
Profienergy.
Definition indices.h:890
const IndexNamePairs & PortIndices()
Port-level indices.
Definition indices.cpp:582
constexpr std::uint8_t PE_MODE_OPERATE
PE Mode Operate.
Definition indices.h:606
constexpr std::uint16_t RECORD_OUTPUT_DATA
Record Output Data.
Definition indices.h:843
constexpr std::uint16_t IM12
I&M12.
Definition indices.h:648
constexpr std::uint16_t MODULE_STATE_WRONG_MODULE
Module State Wrong Module.
Definition indices.h:566
constexpr std::uint16_t PD_PORT_DATA_ADJUST
PD Port Data Adjust.
Definition indices.h:761
constexpr std::uint16_t IM3
I&M3.
Definition indices.h:630
constexpr std::uint16_t DIAG_CHANNEL_SUBSLOT
DIAG Channel Subslot.
Definition indices.h:665
constexpr std::uint16_t F_PARAMETER_WRITE
F Parameter Write.
Definition indices.h:879
constexpr std::uint16_t SUBSLOT_INTERFACE
Subslot Interface.
Definition indices.h:912
constexpr std::uint16_t PD_PORT_STATISTIC
PD Port Statistic.
Definition indices.h:763
IocrRtClass
PROFINET IOCR real-time classes.
Definition indices.h:455
@ Udp
UDP real-time class.
constexpr std::uint16_t PD_INTERFACE_MRP_DATA_REAL
PD Interface MRP Data Real.
Definition indices.h:802
constexpr std::uint16_t IM14
I&M14.
Definition indices.h:652
constexpr std::uint16_t IM9
I&M9.
Definition indices.h:642
constexpr std::uint16_t SUBSLOT_DAP
Subslot DAP.
Definition indices.h:910
constexpr std::uint16_t IM11
I&M11.
Definition indices.h:646
constexpr std::uint16_t SUBMODULE_STATE_LOCKED_BY_SUPERVISOR
Submodule State Locked By Supervisor.
Definition indices.h:577