PlcTaskSystemInfo
Jede SPS beinhaltet ein Array von Instanzen dieses Typs. Der Name des Arrays lautet '_TaskInfo[]'.
Auf die einzelnen Instanzen dieses Typs kann zugegriffen werden, indem der Index der entsprechenden Task als Arrayindex verwendet wird. Der Taskindex kann mithilfe der Funktion GETCURTASKINDEXEX ausgelesen werden, welche von der Tc2_System-Bibliothek zur Verfügung gestellt wird.
Der zugehörige Namensraum (namespace) ist 'TwinCAT_SystemInfoVarList'. Dieser muss beispielsweise bei Verwendung in einer Bibliothek mit angegeben werden.
{attribute 'Namespace' := 'PLC'}
TYPE PlcTaskSystemInfo
STRUCT
ObjId : OTCID;
CycleTime : UDINT;
Priority : UINT;
AdsPort : UINT;
CycleCount : UDINT;
DcTaskTime : LINT;
LastExecTime : UDINT;
FirstCycle : BOOL;
CycleTimeExceeded : BOOL;
InCallAfterOutputUpdate : BOOL;
RTViolation : BOOL;
TaskName : STRING(63);
END_STRUCT
END_TYPE
ObjId | Objekt-ID der Taskreferenz, von welcher das SPS-Programm aufgerufen wird. |
CycleTime | Eingestellte Taskzykluszeit in Vielfachen von 100ns |
Priority | Eingestellte Priorität der Task |
AdsPort | ADS-Port der Task |
CycleCount | Zykluszähler Bitte beachten Sie, dass sich der Zykluszähler auf die tatsächliche System-Task bezieht und nicht auf die Taskreferenz des SPS-Projekts. Hintergrund ist, dass sich mehrere SPS-Projekte oder andere TcCOM-Module eine Task teilen können und diese Module somit auf den gleichen Zykluszähler zugreifen. Daraus ergibt sich, dass der Zykluszähler bei einem TwinCAT-Neustart im Run-Modus zurückgesetzt wird (und nicht bei einem Reset des SPS-Projekts). |
DcTaskTime | Distributed Clock System Time. Sie bleibt für eine Tasklaufzeit konstant. |
LastExecTime | Benötigte Zykluszeit für den letzten Zyklus in Vielfachen von 100 ns |
FirstCycle | Diese Variable hat im ersten Zyklus der SPS-Task den Wert TRUE. |
CycleTimeExceeded | In dieser Variablen wird ein Überschreiten der eingestellten Taskzykluszeit gemeldet. In jedem Zyklus wird der Wert der Variable CycleTimeExceeded aktualisiert. Ist der vorherige Zyklus in seinem vorgesehenen Zeitfenster fertig geworden, wird die Variable auf 0 gesetzt, andernfalls auf 1. |
InCallAfterOutputUpdate | Diese Variable hat den Wert TRUE, wenn der Ursprung des aktuellen Aufrufs mit dem Attribut 'TcCallAfterOutputUpdate' deklariert ist. |
RTViolation | Diese Variable hat den Wert TRUE, wenn das Echtzeitlimit auf einem gemischten Kern (Windows + Echtzeit auf einem Core) überschritten wird. Der Wert TRUE bezieht sich dann auf den Kern, auf dem die entsprechende Task läuft. |
TaskName | Name des Taskreferenz-Objekts im SPS-Projekt (z.B. 'MyPlcProject_PlcTaskRef') |
Beispiel:
VAR
nTaskIdx : DINT;
nCycleTime : UDINT;
END_VAR
nTaskIdx := GETCURTASKINDEXEX();
IF nTaskIdx > 0 THEN
nCycleTime := _TaskInfo[nTaskIdx].CycleTime;
END_IF