Vai al contenuto

Utilizzo delle variabili condivise tra task

Home Forum Informazioni ambiente di sviluppo LogicLab Utilizzo delle variabili condivise tra task

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Autore
    Post
  • #36124
    Paolo
    Partecipante

    Devo acquisire 10 sonde Pt100, pensavo di collocare il codice relativo in un programma “acquisizione” collocato nella task back e memorizzare i valori a partire dall’indirizzo MD100.0 perchè ho la necesssità di rendere disponibile le letture, via modbus, ad una applicazione esterna.

    La mia domanda è questa: accedere ai dati acquisiti delle sonde, dal programma “main” anch’esso nella task back, può comportare dei rischi di concorrenza ? C’è, cioè il rischio che un valore di temperatura venga valutato nella “main” mentre viene aggiornato ? 

    Per essere più chiari: può succedere che nel momento in cui dalla main accedo al valore della sonda, 3 byte del real siano aggiornati e 1 byte non ancora sovrascritto ?

    Nessuno mi vieta di spostare il codice per l’acquisizione delle sonde nella “main”, ma vorrei capire se c’è effettivamente questo rischio.

    #39896
    Sergio Bertana
    Amministratore del forum

    Domanda interessante, tutti i programmi eseguiti nella stessa task (Fast, Slow, Back) sono eseguiti in modo sequenziale partendo dall’alto verso il basso secondo l’ordine di assegnazione (Screenshot). Quindi Back_01 esarà eseguito prima di Back_02 e cosi via. Quindi è evidente che tra diversi program all’interno della stesa task di esecuzione l’integrità tra le variabili è sempre garantita.

    Il problema si pone tra i program eseguiti su differenti task, la task Slow interrompe la Back e la Fast interrompe sia la Slow che la Back. Ma come vedi dal programma di esempio TaskExchange, tutte le variabili sono atomiche quindi la loro integrità è sempre garantita (Download programma).

Stai visualizzando 2 post - dal 1 a 2 (di 2 totali)
  • Devi essere connesso per rispondere a questo topic.