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.