General
PROGRAM SR_RegisterDataModules
VAR
xAlreadyRegistered : BOOL := FALSE;
ifDMHandler : IF_PROFIBUS_DPV1_Slave := PROFIBUS_DPV1_Slave;
stDataModule : ST_PROFIBUSDPV1AsyncDataModule;
byIndex : BYTE := 0;
udiResult : UDINT := 0;
END_VAR
IF (xAlreadyRegistered=FALSE) THEN
// Register data module
stDataModule.bySlot := 0;
stDataModule.byIndex := 10;
stDataModule.pbyData := ADR(G_abyAsyncDataModule1);
stDataModule.byLength := Gc_byAsyncDataModule1Len;
udiResult := ifDMHandler.RegisterAsyncDataModule(stDataModule);
// Set values of global array that is registered to slot 0, index 10
FOR (byIndex:=0) TO (Gc_byAsyncDataModule1Len-1) DO
G_abyAsyncDataModule1[byIndex] := byIndex+10;
END_FOR
xAlreadyRegistered := TRUE;
END_IF