Example: Registration of Noncyclical Data Areas

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