Programm Part1_PLCopen

Dieses Programm dient dazu Funktionsblockinstanzen, die nach dem Part 1 der PLCopen-Spezifikation implementiert wurden, zu berechnen.

Im Initialisierungsteil wird für die Funktionsblöcke, die sich auf eine einzelne Achse beziehen, wieder die in der Abbildung unter "PLCopen.pro: Testapplikation für PLCopen-Funktionsblöcke" gezeigte Beziehung zwischen Achsreferenzen und Funktionsblöcken hergestellt.

FOR Idx := 0 TO PLC_AX_MAXIDX DO

  IdxSingleAxFbs := Idx + g_axis_idx_offset;

  IF (IdxSingleAxFbs >= 0) AND

       (IdxSingleAxFbs <= PLC_AX_MAXIDX) THEN

    HomeAxRefIdx[IdxSingleAxFbs]     := IdxSingleAxFbs;

    …

       (* Calculate the administrative FBs *)

    ReadStatusAxRefIdx[IdxSingleAxFbs] := IdxSingleAxFbs;

      …

  END_IF;

END_FOR;

Für alle Funktionsblöcke die sich auf eine Master- und eine Slaveachse beziehen, wird als Masterachse die erste im System verfügbare SAI-Achse festgelegt. Die einzelnen Funktionsblockinstanzen erhalten dann aber unterschiedliche Referenzen für die Slaveachse.

FOR IdxMultAxFbs := 0 TO PLC_MULTIAX_IDX DO

  …

  GearInMstIdx[IdxMultAxFbs]  := IdxMasterAx;

  GearInSlvIdx[IdxMultAxFbs]  := IdxSlaveAx;

  GearOutSlvIdx[IdxMultAxFbs] := IdxSlaveAx;

  …

  IF IdxSlaveAx < GC_MCP_AXREF_MAXIDX THEN

    IdxSlaveAx := IdxSlaveAx + 1;

  ELSE

    IdxMasterAx := IdxMasterAx + 1;

     IdxSlaveAx := 0;

  END_IF;

END_FOR;

Nach der Initialisierungsphase werden nur noch die Funktionsblockinstanzen zyklisch berechnet.

Sämtlicher Programmcode nach dem Kommentar

(*===========================================================*)

(* The following commmands are only for visualisation.       *)

(*===========================================================*)

dient lediglich der Versorgung der zugeordneten Visualisierung mit den Daten der angewählten Funktionsblockinstanz.