Jump to content
PLC Forum


Sign in to follow this  
John_Fischetti

Accesso allo stesso byte da più POU

Recommended Posts

John_Fischetti

Salve,

è la prima volta che ho a che fare con il SoMachine 4.1 e mi trovo davanti a un comportamento strano che non ho riscontrato in nessun altro sistema usato fino ad oggi (Siemens e Panasonic).

Nel PLC (Schneider M241) è installata una scheda di uscita a 16 canali. Alcuni canali sono gestiti da una POU e altri canali da un'altra POU. Quando compilo non trovo messaggi di errore, ma quando genero il codice esce un errore che dice: "C0165: The same Byte in output-memory is written in different tasks."

I canali sono gestiti singolarmente come BOOL, non come Byte, e quindi non capisco cosa c'entri se li attivo da task diversi. L'unica soluzione che mi viene in mente è di fare una POU per tutte le uscite da gestire poi con comandi via variabili interne, ma mi sembra folle. C'è qualche idea a riguardo? Grazie.

John

P.S. E' il mio primo messaggio in questo forum :)

Share this post


Link to post
Share on other sites

walterword

la POU è una program organization unit , unita di programma organizzata. E' un processo in un sistema operativo e come ben saprai un processo in un sistema operativo ha una sua area dedicata per memoria , stack , contatore istruzioni etc. Per scambiare informazioni con altri processi ci sono delle tecniche tipo le pipe , i messaggi etc che vanno sincronizzati con l'uso di mutex o semafori etc. E visto e considerato che un plc contiene al suo interno un processore con relativo sistema operativo .... 

Questo è il motivo per cui ti da' questo errore.E' come se tu volessi usare una variabile in due processi distinti , se poi e' un'uscita ancor peggio in quanto un sistema non e' mai in grado di sapere quando e in quale stato si trova un processo per cui non sa a chi assegnare l'uscita , cosa molto grave anche perche un'uscita non si deve mai assegnare piu di una volta , questo in qualsiasi sistema.

Edited by walterword

Share this post


Link to post
Share on other sites
John_Fischetti

Grazie per la risposta, che però non è tale. E' ovvio che se io voglio scrivere sulle stesse uscite da più punti faccio un errore (che negli altri sistemi che ho usato sono per definizione "affari miei", cioè ad ogni istante le uscite vengono pilotate dal processo che è attivo in quel momento, e quindi avrò incertezze nel risultato). Invece io NON uso le stesse uscite da processi diversi, uso canali diversi BOOL che però fanno riferimento a un fantomatico Byte che io non uso, ma che evidentemente usa il sistema a mia insaputa. Mi spiego meglio. Io da un POU piloto l'uscita X che è mappata come BOOL e che io controllo mediante una "bobina" in un POU. Sulla stessa scheda di uscita piloto l'uscita Y che è anch'essa mappata come BOOL e che io controllo mediante un'altra "bobina" in un POU diverso. Tutte BOOL. Dove cavolo sta il "Byte"? Se metto le due "bobine" nello stesso POU il sistema funziona, se le divido in due POU diversi il sistema mi dà errore, ma io NON piloto la stessa uscita da due POU, piloto due uscite BOOL diverse che per un qualche motivo misterioso il sistema operativo interpreta come "Byte". Spero di essermi spiegato meglio. Grazie per l'attenzione.

John

  

Share this post


Link to post
Share on other sites
frazzonie

Ciao John,

il problema che descrivi è chiarissimo. Sarebbe, per me, interessante avere  un estratto del software che hai sviluppato per approfondire il problema e capire l'eventuale soluzione. Concordo sul fatto che il comportamento è strano.

Superfluo dirti che il problema è aggirabile usando un byte di "appoggio" da scrivere, poi, in un solo task.

 

Grazie

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...