La tâche externe synchrone en temps réel est une tâche externe synchrone avec le processus RTP (Real-Time Process) Sercos. La tâche externe synchrone en temps réel est déclenchée dans le processus RTP et exécutée après l’exécution du processus RTP.
Cas d'utilisation courant de la tâche en temps réel : capture de position dans la plage de la milliseconde sans utilisation de sondes tactiles (TP).
Les tâches en temps réel internes au contrôleur qui gèrent la communication et les calculs Sercos pour les axes déclenchent l'événement AFTER_RTP à chaque cycle. Cet événement peut être utilisé pour déclencher une tâche de code de contrôleur de mouvement de type Externe déclenchée sous forme d’événement externe.
Avec ce paramétrage, la tâche externe synchrone en temps réel est déclenchée dès que possible après la fin de la tâche en temps réel.
Les priorités des tâches de code du contrôleur de mouvement sont respectées. Par conséquent, même si cette tâche déclenchée par un événement est déjà déclenchée par le processus RTP, elle est retardée si une autre tâche de priorité supérieure est également déclenchée.
La tâche peut être interrompue par le processus RTP.
Procédure :
Etape |
Action |
---|---|
1 |
Dans l’arborescence des équipements, affichez la fenêtre Configuration de tâche. |
2 |
Dans la boîte à liste Type, sélectionnez l’élément Externe. |
3 |
Dans la boîte à liste Evénement externe, sélectionnez l’élément AFTER_RTP. |
4 |
Définissez la priorité de la tâche et activez un chien de garde comme requis par votre application. |
Le temps de cycle du processus RTP s'applique uniquement à la phase de communication Sercos 4.
Temps de cycle de la tâche externe synchrone en temps réel dans les phases de communication Sercos :
Phase de communication Sercos |
Durée de cycle |
---|---|
NRT |
4 ms |
0 |
2 ms |
1 |
1 ms |
2 |
1 ms |
3 |
Durée de cycle Sercos |
4 |
Durée de cycle Sercos |
Si le temps d'exécution du processus RTP, de la tâche externe synchrone en temps réel et d'autres tâches de priorité supérieure dépasse le temps de cycle Sercos, la tâche externe synchrone en temps réel est interrompue par le RTP. Dans ce cas, la tâche externe synchrone en temps réel n'est plus synchrone avec le processus RTP.
Pour maintenir la synchronicité entre la tâche externe synchrone en temps réel synchrone et le processus RTP, veillez à ce que le temps total d'exécution de la tâche externe synchrone en temps réel et du processus RTP ne dépasse pas le temps de cycle Sercos configuré. Exemple de code :
hTask : RTS_IEC_HANDLE;
pstTaskInfo : POINTER TO CmpIecTask.Task_Info2;
udiResult : RTS_IEC_RESULT;
dwCycleTimeInUs : DWORD;
bLossOfSynchronicity : BOOL;
lrRtpCycleTimeInUs : LREAL;
lrPercentageOfRtpCycle : LREAL;
hTask := CmpIecTask.IecTaskGetCurrent(ADR(udiResult));
IF udiResult = 0 THEN
pstTaskInfo := CmpIecTask.IecTaskGetInfo3(hTask, ADR(udiResult));
IF udiResult = 0 THEN
dwCycleTimeInUs := pstTaskInfo^.dwCycleTime;
END_IF
END_IF
lrPercentageOfRtpCycle := S3M.FC_GetMotionCycleTaskLoadOfLastCycle();
lrRtpCycleTimeInUs := lrPercentageOfRtpCycle * (UDINT_TO_LREAL(SercosMaster.SercosCycletimeConfig.Cycletime) / 1E5);
IF (udiResult = 0) AND ( (lrRtpCycleTimeInUs + DWORD_TO_LREAL(dwCycleTimeInUs)) > UDINT_TO_LREAL(SercosMaster.SercosCycletimeConfig.Cycletime / 1000) ) THEN
// loss of synchronicity
bLossOfSynchronicity := TRUE;
// TODO stop machine
END_IF