Programming industrial control sytems using IEC

Похожие документы
Programmable Logic Controller Seconda Parte

Corso di Automazione industriale

Function Block Diagram

PREMESSA In questa lezione analizziamo le diverse modalità di programmazione del PLC, soffermandoci in particolare sulle programmazioni KOP e AWL.

PLC. PROGRAMMABLE LOGIC CONTROLLER 2a parte CON RIFERIMENTO ALLE CPU SIEMENS ST 200 ED AL SW STEP 7 MICRO/WIN 32

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Il Linguaggio di Programmazione IEC

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Reggio Calabria, 29 Aprile 2009 ING.VALERIO SCORDAMAGLIA

I SISTEMI AUTOMATICI

UML I diagrammi implementativi

Logic Lab. un progetto italiano. soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE

Analisi e specifica dei requisiti

Il calcolatore. Architettura di un calcolatore (Hardware)

LA GESTIONE DELLA I/O

I SISTEMI OPERATIVI. Insieme di programmi che implementano funzioni essenziali per l uso di un sistema elaboratore.

Linguaggi di Programmazione

PLC CodeSys. Esercitazione 3. Automation Robotics and System CONTROL. Università degli Studi di Ferrara

La tecnica proporzionale

Tecnologie dei Sistemi di Automazione e Controllo

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

NORMA CEI EN PLC: programmazione. PLC: programmazione. PLC: programmazione. Automazione Industriale 3. Automazione Industriale

Struttura Logica del S.O:

Dispensa di Informatica II.1

I THREAD O PROCESSI LEGGERI

Internetworking V a nno

Sequential Functional Chart

Modelli di interazione tra processi

Analizzatore lessicale o scanner. Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser.

Sistemi Web per il turismo - lezione 3 -

Sistema Operativo (Software di base)

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Il Processore. Informatica di Base -- R.Gaeta 27

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione

Virtualizzazione e macchine virtuali. Presentata da Bernardo Lombardi

INTRODUZIONE AL CONTROLLO DIGITALE

(1) (2) (3) (4) 11 nessuno/a (1) (2) (3) (4) X è il minore tra A e B nessuno/a X è sempre uguale ad A X è il maggiore tra A e B

TIA Portal Frequently Asked Questions. For internal use only / Siemens Spa All Rights Reserved.

Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette

Introduzione ad ISaGRAF

Sistema PCS7 Supervisione e Controllo WFI e HVAC

CONCETTI E ARCHITETTURA DI UN SISTEMA DI BASI DI DATI

Rappresentazione con i diagrammi di flusso (Flow - chart)

Architettura dei computer

Programmazione dei PLC in linguaggio Ladder

Architettura di Von Neumann

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Prof. Rossella Cancelliere

Perché il P.L.C.? Introduzione di base al P.L.C. (Programmable Logic Controller) SAVE Veronafiere Ottobre 2007

La memoria-gerarchia. Laboratorio di Informatica - Lezione 3 - parte I La memoria - La rappresentazione delle informazioni

Introduzione alle macchine a stati (non definitivo)

Progettazione di basi di dati

Modelli di interazione tra processi

Sequential Function Chart

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Funzioni, Stack e Visibilità delle Variabili in C

Modello a scambio di messaggi

PLC E AUTOMAZIONE INDUSTRIALE

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati

Programmable Logic Controller. Ing. Stefano MAGGI

ACSO Programmazione di Sistema e Concorrente

Architettura hardware

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Sistemi Operativi. A.M. Fanelli Architettura dei Sistemi a. a Livello di Sistema Operativo. Livello di Linguaggi Applicativi

Linguaggi di programmazione e astrazione

UNISIM: sviluppo, validazione e prototipizzazione rapida di sistemi di automazione

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Cosa è l Informatica?

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Nastro trasportatore con ribaltamento cassetta.

Il linguaggio di programmazione Python

Caratteristiche di un linguaggio ad alto livello

Protocolli multimediali

Modelli di interazione tra processi

ARCHITETTURA DI UN DBMS

Il protocollo RS Introduzione. 1.2 Lo Standard RS-232

Introduzione alla programmazione Object Oriented. Luca Lista

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione

Metodologie e modelli di progetto

Транскрипт:

Programming industrial control sytems using IEC 1131-3 1

Capitolo 1 Controllo dell'esecuzione limitato...6 Difetti della programmazione Programmazione Ladder...5 IEC1131-3 Caratteristiche principali...6 Introduzione...4 Verso gli open systems...4 Riutilizzo del software...5 Struttura software...5 Strutture dati...5 Supporto limitato per il sequencing...6 Licenza d uso manuale Licenza d uso manuale...3 Ringraziamenti...3 2

Licenza d uso manuale Il manuale nasce semplicemente per rispondere alle esigenze di molte persone e in particolar modo quelle che si avvicinano per la prima volta all utilizzo dei PLC ed al linguaggio IEC1131-3 Con un semplice percorso di avvicinamento il lettore sara portato da iniziali aspetti storici alla filosofia, da note di colore e esempi pratici e funzionali. Capirne gli aspetti base e poterne utilizzare tutte le potenzialità. Il manuale è tutelato dalla Licenza FDL (Free Documentation License) Che tutela I diritti dell autore e regola la diffusione dell opera nelle varie versione e nei vari formati disponibili. Chiunque desideri pubblicare il manuale in forma commerciale è pregato di informare l autore onde evitare l uscita della pubblicazione in contemporanea con altri editori. L informazione oltre ad avere carattere economico è gradita in forma di cortesia. Per pubblicare questo documento sul proprio sito è necessario chiedere l autorizzazione e le modalità di pubblicazione Ogni contributo allo sviluppo del manuale, suggerimento o segnalazione sono ben graditi. Ringraziamenti Questo documento non sarebbe stato possibile realizzarlo senza la collaborazione di mia moglie Carolina e dei miei 2 figli Selene e Simone, per cui questo documento è dedicato a loro che mi anno sostenuto nella realizzazione. 3

Capitolo 1 Introduzione Questa guida non ha la presunzione di insegnare a programmare nel linguaggio IEC1131-3, ma soltanto di spiegare alcune nozioni base dettate dalla specifica in oggetto. Dato che il linguaggio IEC1131-3 è stato adottato da vari costruttori di PLC e altre apparecchiature (driver CNC ecc..) questa guida non fa esempi mirati ad un plc in particolare ma soltanto alla specifica in esso per tanto ogni esempio va modificato per renderlo funzionante con il PLC in uso ed al editor utilizzato Le schermate riportate in questo esempio sono state realizzate con il programma LogicLab della società Axel. Si ricorda tra i più noti costruttori di editor IEC1131-3 Isagraf il primo editor IEC1131-3(dove genera un codice intrepterato) 3S o Codesys il più usato dai costruttori tedeschi vedi Moeller Lenze Beckhoff KW software per conto mio tra i migliori Verso gli "open systems" Un sistema si dice aperto se adotta standard e tecniche industriali tali da garantire l'integrazione con altri sistemi aperti senza difficoltà. Il primo tentativo di portare una certa uniformità dentro ad un'industria così piena di dispositivi di controllo, strumenti, protocolli di comunicazione, e PLC diversi, fu fatto dalla General Motors (GM), con lo sviluppo del MAP (Manufacturing Automation Protocol). La GM capì che si poteva risparmiare sui tempi e sui costi di produzione avendo uno standard di comunicazione comune. Nacque lo standard MAP, ma non ebbe particolarmente successo per numero di ragioni. Il costo dell'hardware per fornire un'interfaccia di comunicazione da un PLC verso una rete di tipo MAP può essere molto elevato. Un secondo problema è il seguente: come trasferire le informazioni tra dispositivi che sono stati programmati con linguaggi differenti. Anche i Fieldbus (standard sviluppato dall'isa per l'interconnessione di dispositivi di campo distribuiti come 4

sensori di pressione, controllori di temperatura), non propongono alcuna particolare tecnica o linguaggio per sviluppare programmi per i dispositivi. Finché non fu pubblicato nel marzo 1993 lo standard IEC 1131-3, non esisteva qualcuno standard che definiva il modo in cui i sistemi di controllo come i PLC dovevano essere programmati. Difetti della programmazione classica: Programmazione Ladder La programmazione LADDER trae origine dai diagrammi elettrici che venivano usati dell'industria dell'automobile. Per piccoli sistemi la programmazione in LADDER ha ben servito l'industria. La tecnica è particolarmente semplice da capire per persone che hanno familiarità con i circuiti elettrici o elettronici. Con il crescere delle dimensioni della memoria in molti PLC, la programmazione in LADDER può essere usata per costruire sistemi più complessi. Tuttavia è spesso molto difficile realizzare dei programmi ben strutturati usando il LADDER poiché in generale c'è un supporto limitato per le procedure, le subroutine, o i blocchi di programma. Struttura software Può essere difficile suddividere un programma complesso in parti più piccole che hanno delle interfacce le une con le altre. L' Encapsulation, ossia la capacità di nascondere l'informazione dentro un blocco di programma di modo che non interferisca con altre parti del programma, è molto importante per realizzare software di buona qualità. La mancanza dell'encapsulation può essere un serio problema con programmi di grande dimensione specialmente se sono scritti da differenti programmatori. Riutilizzo del software Alcuni programmi di grande dimensione possono usare la stessa strategia logica o lo stesso algoritmo più volte. Alcuni sistemi sono di solito progettati per ripetere lo stesso set di rung ladder più volte. Il risultato è un programma ingestibile. Scrivendo tali logiche o algoritmi in un blocco che può essere istanziato più volte si riduce notevolmente la dimensione dei programmi che diventano così più semplici da gestire. Strutture dati Solitamente i dati sono registrati in singoli bit di memoria o nei registri. Nelle applicazioni più complesse c'è la necessità di raggruppare i dati insieme in un'unica struttura. I programmi scritti in linguaggio LADDER non supportano normalmente strutture dati così come i linguaggi di più alto livello. Per esempio si consideri un sensore di pressione che è connesso ad un ingresso digitale del PLC che controlla quando una certa soglia viene raggiunta. Un singolo di bit all'interno della memoria del PLC può riflettere lo stato del sensore. Tuttavia, un singolo bit può essere insufficiente per rappresentare tutti gli stati del sensore. Tutta questa informazione extra associata con il sensore potrebbe essere immagazzinata in una singola struttura che può essere indirizzata utilizzando un unico identificatore. 5

Supporto limitato per il sequencing L'approccio convenzionale al problema del sequencing usando la programmazione in LADDER è quello di assegnare un bit ad ogni stato della sequenza e ad ogni transizione che causa un cambiamento di stato. La sequenza è programmata in tre parti: (1) ladder rungs per intercettare le transizioni da uno stato al prossimo, (2) rungs per spostarsi tra gli stati, (3) rungs per effettuare le operazioni quando un particolare stato è attivo. E' evidente che i programmi LADDER possono produrre comportamenti sequenziale in questo modo, tuttavia con programmi di grosse dimensioni questo approccio può diventare molto difficile da gestire. Controllo dell'esecuzione limitato Molti PLC eseguono continuamente un "cyclic scan" dei programmi LADDER. Il ciclo inizia con la lettura degli ingressi e delle uscite del sistema e con la memorizzazione dei loro valori in regioni fisse di memoria. Successivamente vengono eseguiti i rung del programma LADDER a cominciare dal primo. Durante il program scan, i nuovi valori delle uscite fisiche, così come determinante dalla logica dei vari rung, sono inizialmente scritti in memoria. Solo alla fine, quando il programma LADDER è stato completato, tutti i valori d'uscita contenuti in memoria vengono scritti sulle uscite fisiche in un'unica operazione. Generalmente, la frequenza di esecuzione di un programma LADDER dipende dalla lunghezza e dalla complessità del programma stesso. Aggiungendo molti rung si aumenta lo scan time: ciò può causare problemi quando si progettano sistemi "tempo-critici". IEC 1131-3: caratteristiche principali 1. Lo standard incoraggia uno sviluppo del software ben strutturato: top-down o bottom-up. Un programma può essere suddiviso in elementi funzionali detti POU (Program organization unit: programmi, function block, funzioni. Questi elementi software possono essere usati ripetutamente in differenti parti di un'applicazione. Ogni copia di questi elementi prende il nome di istanza. L'uso delle POU incoraggia il software re-use.). 2. Lo standard richiede che ci sia uno "strong data typing": ossia la capacità di verificare quando un programmatore tenta erroneamente di scrivere un dato di tipo errato in una variabile. Per esempio, assegnando il valore 1 come bit, ad una locazione di memoria designata per ricevere il valore di un tempo come 1 secondo, si provocherà un errore che sarà rilevato prima che il programma venga scaricato sul PLC. 3. Full execution control. Diverse parti di programma possono essere eseguite ad intervalli di tempo diversi, con differenti frequenze e in parallelo. Per esempio una parte del programma può necessitare una scansione ogni 50 ms, mentre un'altra parte del programma può necessitare di una scansione ogni secondo. Questo è ottenuto assegnando le varie parti di un programma a task differenti. 4. Pieno supporto per descrivere le sequenze. Un Complex sequential behaviour può essere risolto utilizzando un linguaggio grafico chiamato SFC. Questo permette di descrivere le sequenze in termini di step. 6

5. È possibile definire strutture dati. Per esempio una pompa controllata da un PLC può avere un bit di stato che definisce se è attivo o no, un'uscita analogica che definisce la velocità richiesta, un ingresso analogico che definisce la velocità misurata e così via. Tutti questi dati possono essere definiti dentro una singola struttura dati detta "pump ". È poi possibile passare tutte queste informazioni come una singola variabile tra differenti POU. Ciò aumenta la leggibilità dei programmi. 6. Flexible language selection. Il progettista del sistema è libero di scegliere fra cinque linguaggi: tre grafici, due testuali, per rappresentare differenti parte di un'applicazione di controllo. 7. Vendor-independent software. In altre parole, una grossa porzione di software scritto secondo le specifiche dello standard IEC 1131-3 dovrebbe essere eseguibile su PLC di differenti fornitori. Structured Text (ST): un linguaggio testuale di alto livello che favorisce la programmazione strutturata. È simile al PASCAL. 7

Function Block Diagram (FBD): un linguaggio grafico per rappresentare i segnali e il flusso di dati con function block. 8

Ladder Diagram (LD): un linguaggio grafico basato sui simboli elettrici. 9

Instruction List (IL): un linguaggio di basso livello assembler-like. 10

Sequential Function Chart (SFC): un linguaggio grafico per rappresentare il comportamento sequenziale di un sistema di controllo. È usato per definire sequenze di controllo che sono comandate (guidate) dal tempo o da eventi. 11

Function block È un elemento software riutilizzabile. È una soluzione software a piccoli problemi come i timer. Ogni function 12

block definisce la struttura dati ed il comportamento di quei dati. Esistono librerie di function block. Un function block è un elemento base di un sistema di controllo. Essi contengono dati incapsulati e metodi associati ai dati. Non prevedono il polimorfismo e l'ereditarietà. Possono essere paragonati ai circuiti integrati. Encapsulation E' presente nelle strutture dati, nelle funzioni, nei function block, nei programmi, ecc. Portabilità inter-system il software sviluppato per una data marca di PLC dovrebbe teoricamente funzionare anche su un'altra marca. Ciò è dovuto al fatto che l'iec 1131-3 definisce numerose tabelle di specifiche mentre i fornitori di PLC possono implementarne solo alcune. Portabilità inter-language È generalmente possibile convertire gli elementi software da un linguaggio in un altro. 13

Capitolo 2 Nozioni sull'iec 1131-3 Il modello software Non è possibile definire la struttura di un programma per PLC senza una buona comprensione delle sue interfacce e delle interazioni con il sistema di controllo e l'impianto esterno. Quando un programma viene caricato in un PLC ed è eseguito, esso richiede i seguenti tipi di interfacce per funzionare: I/O Interfaces: ogni sistema basato su PLC necessita della lettura dei valori dei gli ingressi fisici, connessi a sensori di vario tipo, e dei valori delle uscite fisiche connesse agli attuatori. Communications Interfaces: molti PLC necessitano dello scambio di informazioni con altri dispositivi e PLC. System Interfaces: interfaccia tra il programma e l'hardware. È richiesta per assicurare che il programma sia inizializzato ed eseguito correttamente. Lo standard IEC 1131-3 assume che i valori dei sensori e dei trasduttori siano disponibili in particolari locazioni di memoria del PLC. Analogamente per i valori delle uscite. La mappatura dei valori degli ingressi e delle uscite nella memoria del PLC non è definita dallo standard e può variare significativamente da un produttore all'altro di PLC. Il modello software IEC è a strati: ogni strato nasconde molte delle caratteristiche dei gli strati inferiori. Configuration Al livello più alto, il software per un particolare problema di controllo è contenuto in una Configuration. Una Configuration definisce il comportamento di un PLC per una specifica applicazione. Generalmente una Configuration equivale al software richiesto per un PLC. In applicazioni più complesse, in cui sono necessari parecchi PLC che interagiscono fra di loro, il software per ogni PLC sarà considerato come una Configuration separata. Una Configuration è in grado di comunicare con altre Configuration attraverso interfacce definite. Dentro ogni Configuration ci sono una o più Resource. Una Resource fornisce il supporto per tutte le 14

caratteristiche necessarie per l'esecuzione del programma. Un programma IEC non potrà funzionare fin quando non è stato caricato in una Resource. Normalmente una Resource esiste dentro un PLC, ma può anche essere simulata dentro ad un personal computer. È interessante notare che lo standard permette ad una Configuration di contenere un certo numero di Resource e per ogni Resource più di un programma. Questo permette ad un PLC di mandare in esecuzione un numero di programmi totalmente indipendenti. L'esecuzione di differenti parti di un programma può essere controllata usando i task. Task Un task può essere configurato per controllare un set di programmi e/o function block. In altre parole un programma e assegnato ad uno specifico task e il task è configurato per essere eseguito periodicamente o quando interviene una causa. Differenze tra function block e funzioni Una funzione è un elemento software che quando è eseguita con un particolare set di valori di ingresso produce un risultato. A differenza del function block, una funzione non è in grado di archiviare valori, ossia non ha uno stato definito. Una funzione produce lo stesso risultato per lo stesso set di ingressi ogni qualvolta viene eseguita. Contrariamente un function block non necessariamente produrrà un stesso set di valori d'uscita se viene eseguito più volte con lo stesso set di valori di ingresso. Si consideri ad esempio come function block una rampa che è usata per far crescere il valore di un'uscita. Sebbene i valori di ingresso rimangano invariati, ogni volta che il blocco rampa viene seguito, il valore d'uscita aumenterà. Variabili locali e globali Le variabili sono, per default, definite come locali. Le variabili locali possono essere dichiarate in una Configuration, Resource, program, function block o funzione. Ad esse si può accedere solo dall'elemento software che le contiene. Le variabili possono inoltre essere definite come globali. Ad una variabile globale dichiarata in un programma si può accedere da qualunque elemento software contenuto nel programma. Analogamente per le variabili globali definite al livello di Resource o di Configuration. Le variabili globali tipicamente forniscono un meccanismo per il trasferimento delle informazioni e dei dati tra i programmi o tra function block che risiedono all'interno di programmi differenti. Variabili rappresentate direttamente Le locazioni di memoria all'interno di un PLC possono essere indirizzate direttamente usando tali variabili. Per esempio %IW100, %Q75. L'uso di queste variabili è ristretto; non è permesso l'uso all'interno dei function block: il risultato sarebbe un software non riutilizzabile. 15

Access path Permette un facile trasferimento dei dati e delle informazioni tra differenti Configuration. L'Access path è realizzato con speciali variabili dichiarate usando un costrutto noto come VAR_ACCESS. Start-up Quando una Configuration viene avviata, tutte le variabili globali sono inizializzate e tutte le risorse vengono avviate. Quando una risorsa viene avviata, tutte le variabili all'interno della risorsa vengono inizializzate e tutti i task vengono resi attivi. Una volta che un task viene abilitato, tutti programmi e i function block assegnati a quel task, iniziano la loro esecuzione. Shut-down Quando una Configuration viene interrotta, anche tutte le Resource contenute in essa vengono bloccate. Quando una Resource viene interrotta, tutti task vengono disabilitati con il risultato che tutti i programmi ed i function block cessano la loro esecuzione. Come questo modello software può essere usato in un sistema reale basato su PLC? Generalmente con piccoli sistemi con un solo processore, il modello degenera poiché ha una Configuration, una Resource, ed un programma. La Configuration contiene tutto il software che definisce l'intero comportamento del sistema (PLC). La Resource rappresenta le caratteristiche dell'hardware, mentre il programma rappresenta la parte del processamento dei segnali. Con sistemi di grandi dimensioni con più processori, la mappatura diviene più complessa. L'intero PLC può essere visto come una singola Configuration. Ogni processor board rappresenta una Resource. Ogni Resource può supportare uno o più programmi. Un sistema distribuito può ad esempio essere costituito da più nodi di processamento raggruppati in cluster. La comunicazione tra i nodi può avvenire tramite FieldBus. Lo standard IEC 1131-3 non definisce come questi cluster sono aggregati per formare delle Configuration. Communication Diversi meccanismi vengono forniti per lo scambio di informazioni tra POU. Al livello di programma, gli ingressi del programma possono essere usati per passare dati alle funzioni ed ai function block interni, dalle variabili esterne. Analogamente per le uscite. Le variabili globali possono essere usate per scambiare dati tra POU diverse. La possibilità di scambiare dati tra differenti programmi in differenti Configuration (external communication) è 16

definita dalla parte 5 dell'iec 1131. La comunicazione viene realizzata grazie all'utilizzo di particolari function block. 17

Capitolo 3 Elementi comuni Attributi delle variabili Le variabili possono avere i seguenti attributi addizionali: RETAIN, CONSTANT, AT. RETAIN Questo indica che valori delle variabili verranno conservati in una tabella in caso di interruzione dell'alimentazione del PLC, e verranno ripristinati a seguito di una partenza a caldo. CONSTANT Questo attributo indica che i valori di certe variabili non possono essere modificati. AT È usato per fissare una locazione di memoria del PLC per una qualche particolare variabile. Questo attributo può essere usato solamente con variabili globali e variabili dichiarate nel programma. Le variabili che non hanno tale attributo, sono automaticamente assegnate a una locazione di memoria dal PLC o dal compilatore. TASK Nella progettazione di un sistema real-time, il progettista richiede un controllo flessibile e configurabile della frequenza di esecuzione di differenti parti del programma (presenza di blocchi critici). Lo standard prevede l'assegnazione di programmi o function block a task differenti. Un task può essere considerato come una "scheduling facility" che viene eseguito periodicamente o in risposta ad un particolare evento. Ad ogni task può essere assegnato un intervallo che definisce il tempo tra ogni esecuzione ed una priorità ( 0 è considerata la più alta, poi 1, 2 ecc. ). SCHEDULING Quando ci sono molti task dichiarati, ad ogni task è generalmente assegnato un intervallo diverso ed una priorità. L'istante di tempo in cui un particolare task viene seguito dipende dal tipo di scheduling, dalle priorità e dagli intervalli degli altri task e da quanto tempo ognuno degli altri task sia pronto ed in attesa di essere eseguito. Un PLC può fornire due metodi di scheduling: non preemptive e preemptive. 18

Non preemptive scheduling Con questo tipo di scheduling, una volta che un task è in esecuzione, esso continuerà finché tutti programmi e le istanze di function block ad esso assegnate non siano state eseguite una volta. Il task quindi termina; il prossimo ad essere eseguito è il task in attesa con la priorità più alta; oppure se ci sono parecchi task con la stessa priorità, viene eseguito il task che è in attesa da più tempo. Una volta che un task è stato eseguito, non viene considerato per lo scheduling finché non è trascorso un tempo pari all'intervallo assegnatogli. Preemptive scheduling Questo tipo di scheduling è utilizzato nei sistemi deterministici: sistemi di controllo a cui è richiesto di avere una relazione temporale consistente tra gli eventi, per esempio dove certi algoritmi di controllo sono aggiornati ad intervalli di tempo precisi e regolari. Non tenendo conto di quale task è correntemente eseguito, quando scade l'intervallo per un task a priorità più alta, questo viene immediatamente schedulato e il task correntemente in esecuzione viene sospeso. Quando il task a priorità più alta termina, il task sospeso continua. 19