Attività IEC a esecuzione libera
Un'attività a ruota libera viene eseguita ciclicamente ma senza un ciclo di attività fisso. Si tratta di un'attività ricorrente nel senso classico del PLC
L'esecuzione avviene il più spesso possibile. Tuttavia, l'elaborazione non avviene in un ciclo fisso. Non è possibile definire una durata del ciclo di attività per questo tipo di attività. Il comportamento temporale viene selezionato automaticamente ed eseguito in modo tale da caricare il minor carico possibile sull'intero sistema.
Inoltre, dopo la fine di un'esecuzione viene atteso un determinato periodo di tempo prima che l'attività venga nuovamente eseguita. La durata è una percentuale della durata dell'ultimo ciclo
Importante
Nessun tempo di ciclo di attività fisso e nessun comportamento a tempo fisso sono garantiti per l'attività a ruota libera.
È possibile configurare un watchdog per un'attività a ruota libera.
Logica
Il carico di tutte le attività IEC a ruota libera è determinato dal sistema di runtime in modo che tale carico non superi la metà del carico massimo del processore impostato.
MaxCpuLoadFreewheeling = ((MIN( 100, MaxProcessorload) / 2) / NumOfFreeWheelingTasks); SleeptimeAfterCycle = CycleTimeFreewheelingTask * ((100 - MaxCpuLoadFreewheeling) / 100) if (SleeptimeAfterCycle < 1000) // Minimum sleeptime of 1ms is mandatory! SleeptimeAfterCycle = 1000;
Il sistema di runtime di un'applicazione funziona come segue:
MaxProcessorload
= 80CycleTime
= 20 ms1 attività a ruota libera
Effetto
MaxCpuLoadFreewheeling
= 40%SleeptimeAfterCycle
= 30 msTempo di ciclo totale dell'attività a ruota libera = 50 ms
⇒ Si ottiene un carico totale della CPU del 60% per il resto del sistema.