The Running Man Inserito: 11 marzo 2020 Segnala Share Inserito: 11 marzo 2020 Buonasera a tutti, Ipotizziamo di avere due task Task 1 : priorità 1 cycle time : 4ms Task 2 : priorità 5 cycle time : 10ms se la task 1 viene richiamata ogni 4 ms e ha una priorità maggiore rispetto alla Task due, quando viene effettivamente richiamata la task 2 che ha una priorità minore? Grazie a tutti Link al commento Condividi su altri siti More sharing options...
lucios Inserita: 12 marzo 2020 Segnala Share Inserita: 12 marzo 2020 Ma di che apparecchiatura stiamo parlando? Comunque in generale si può dire che esiste uno schedulatore che gestisce i task. E' il sistema operativo che gestisce quando farli partire in base al timing e che gestisce le risorse in modo corretto. Se il manuale dell'apparecchatura dice che un task viene eseguito ogni 10ms questo avviene, naturalmente poi ci sarà la gestione del watchdog che si assicura che il tempo destinato dallo schedulatore ad un determinato task non venga superato, ad es per un programma troppo lungo. Link al commento Condividi su altri siti More sharing options...
The Running Man Inserita: 27 marzo 2020 Autore Segnala Share Inserita: 27 marzo 2020 grazie mille per la risposta, ma forse era poco chiara la mia domanda, come apparecchiatura parlavo di una basata sul codesys, di seguito l'immagine di esempio di 3 task con priorità diverse https://..codesys.com/api-content/2/core_Modbus_Configuration_Editor/3.5.14.0/en/_images/_task_diagram_standard.png (1) Read inputs from input buffer (2) IEC task (3) Write outputs to output buffer (4) Bus cycle (5) Input buffer (6) Output buffer (7) Copy data to/from bus (9) Bus cycle task, priority 1, 1 ms (10) Bus cycle task, priority 5 (11) Bus cycle task, priority 10, interrupted by task 5 Se ho 3 task che vengno rispettivamente richiamate task 1 ogni 1ms priorità 1 task 2 priorità 5 task 3 priorità 10 è corretto che viene eseguita una sola task alla volta? se la task 1 viene richiamata ogni 1ms ed ha la priorità maggiore quando vengono eseguite le altre ? se in base alle priorità le altre task vengono interrotte dalla task 1 quando queste vengono effettivamente eseguite? grazie Link al commento Condividi su altri siti More sharing options...
batta Inserita: 27 marzo 2020 Segnala Share Inserita: 27 marzo 2020 Nel caso di richiesta di esecuzione contemporanea, viene eseguita prima quella con priorità più elevata, e le altre subito dopo, sempre in base alla priorità assegnata. Link al commento Condividi su altri siti More sharing options...
The Running Man Inserita: 29 marzo 2020 Autore Segnala Share Inserita: 29 marzo 2020 Quello l'ho capito, ma vediamo se riesco a spiegarmi meglio Abbiamo due Task TASK 1 ogni 5ms priorità 1 TASK 2 ogni 10ms prorità 5 se la TASK1 viene richiamata ogni 5ms, dopo 10ms è stata richiamata 2 volte, e dopo 10ms dovrebbe venire anche richiamata anche la TASK2 oltre che nuovamente la TASK1,ma se la TASK1 ha una priorità maggiore viene prima eseguita la TASK1,e dopo verrebbe ancora richiamata la TASK1. Qundi non capisco quando effettivamente viene eseguita una task con priorità minore se quella con priorità maggiore viene sempre eseguita. Grazie Link al commento Condividi su altri siti More sharing options...
batta Inserita: 29 marzo 2020 Segnala Share Inserita: 29 marzo 2020 38 minuti fa, The Running Man ha scritto: ma se la TASK1 ha una priorità maggiore viene prima eseguita la TASK1,e dopo verrebbe ancora richiamata la TASK1. No, appena terminata la task1, viene eseguita la task2. Significa che la task due, anziché dopo 10 ms precisi, andrà in esecuzione dopo 10.01 ms (dipende da quanto tempo serve per eseguire la task1), ma non salta certo il suo ciclo. Se i tempi non vengono rispettati (con un po' di tolleranza), il sistema lo segnala. Link al commento Condividi su altri siti More sharing options...
rguaresc Inserita: 29 marzo 2020 Segnala Share Inserita: 29 marzo 2020 (modificato) La TASK 1 viene chiamata a: 5 ms, 10 ms, 15 ms ecc La TASK 2 viene chiamata poco dopo i 10 ms appena è finita la TASK 1 oops sovrapposto! Modificato: 29 marzo 2020 da rguaresc Link al commento Condividi su altri siti More sharing options...
The Running Man Inserita: 30 marzo 2020 Autore Segnala Share Inserita: 30 marzo 2020 adesso mi è tutto più chiaro, quindi se la task con la priorità più alta viene richiamata ogni 5ms ed il suo tempo di esecuzione è molto vicino a questi 5ms nascono dei problemi per il richiamo delle altre task, giusto? Link al commento Condividi su altri siti More sharing options...
batta Inserita: 30 marzo 2020 Segnala Share Inserita: 30 marzo 2020 Se richiami ogni 5 ms una task che ne richiede 4 per la sua esecuzione, hai sbagliato tutto, completamente. Lo scopo di queste task è di eseguire operazioni ad intervalli di tempo regolari, ma devono contenere solo le istruzioni indispensabili, in modo che la loro esecuzione sia rapida. Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora