Vai al contenuto
PLC Forum


Selezione della polarità di uscita


franciscoazzad

Messaggi consigliati

franciscoazzad

Ciao a tutti. Piacere di conoscervi. Come stai? Spero tu stia bene.

Sto sviluppando un programma con lo scopo di creare qualcosa di simile a un treno di impulsi in uscita. Tuttavia, a volte ho bisogno che l'uscita sia un impulso "positivo" e talvolta "negativo". Per positivo e negativo intendo la polarità in relazione alla sorgente del treno di impulsi.

Sto cercando di utilizzare un paio di bit per alternare tra le due scelte di polarità. Allego una versione semplificata del diagramma ladder che ho realizzato. Quando ho pensato alla logica, mi sembrava logico, tuttavia, non funziona come supposto.

SM0.4 è una sorgente a treno di impulsi. Secondo il manuale del software, si tratta di un treno di impulsi con duty cycle del 50% e un tempo di ciclo di 2 s. Che per dire dice a VERO per un secondo e torna a FALSO per un altro secondo. Assegno il valore di quel bit variabile al bit di memoria M0.0. Ottengo la versione negativa del treno di impulsi negandolo logicamente nella rete n. 2.

                Assegno il valore di due ingressi, I0.0 e I0.1, ad altri due merker M0.1 e M0.2.

· Quando entrambi gli ingressi sono in uno stato FALSE, l'uscita rimane FALSE, ignorando lo stato di SM0.4. (Caso 1)

· Quando I0.0 è TRUE, M0.1 è TRUE. Tuttavia, Q0.0 rimane su FALSE indipendentemente dal fatto che SM0.4 sia VERO o FALSO. Allego un paio di foto. (Caso n. 2)

· D'altra parte, quando I0.1 è TRUE, M0.2 è TRUE. In questo caso, l'output mostra il comportamento corretto. È la versione negata della sorgente del treno di impulsi. (Caso n. 3)

                Qualcuno di voi ha vissuto qualcosa di simile? C'è un modo migliore per eseguire il mio scopo?

                Non sto eseguendo il programma, ma solo simulandolo con KincoBuilder di Kinco. Tuttavia, ha sempre funzionato bene per me.


Grazie per la vostra attenzione. Attendo vostre risposte.

Scusa per il mio pessimo italiano. Sto traducendo dall'inglese.

Cordiali saluti!

Case #1.png

Case #2.png

Case #3.png

Link al commento
Condividi su altri siti


Il problema (classico dei PLC) è nel fatto che ci sono due rung diversi che decidono lo stato di %Q0.0, e nei PLC vince l'ultimo.

Se per esempio hai un rung dove lo stato dei contatti precedenti vuole che %Q0.0 sia a 1, ma poi nel programma ce ne è un altro che per i contatti precedenti deve essere a 0, lo stato generale del %Q0.0 sarà 0. O meglio, sarà a 1 solo nello spazio dei rung tra la prima uscita %Q0.0 e la seconda uscita.

Pertanto, è buona norma, per evitare problemi come quello, che le uscite siano comandate da uno e un solo rung.

Nel tuo caso, dovrai fare la OR dei due rung in modo che il tutto funzioni.

Link al commento
Condividi su altri siti

1 ora fa, Ctec ha scritto:

. O meglio, sarà a 1 solo nello spazio dei rung tra la prima uscita %Q0.0 e la seconda uscita.

 

o meglio sarà 1 nell'esecuzione della logica del programma ma siccome lo stato fisico delle uscite viene aggiornato una sola volta per ogni scansione di programma, in genere al termine della scansione del programma, lo stato dell'uscita sarà solo uno e cioè quello dell'ultima istruzione che richiama l'uscita. Per avere una variazione dello stato fisico dell'uscita dovresti richiamare all'interno del programma l'istruzione che aggiorna forzatamente lo stato dell'uscita

Link al commento
Condividi su altri siti

Per fortuna alcuni plc ti avvertono che hai utilizzato la stessa uscita su due segmenti.

Io verifico sempre dalla tabella I/O se ho utilizzato per errore la stessa uscita in più posti. (A meno che non siano in diversi OB)

Link al commento
Condividi su altri siti

Il 19/4/2022 alle 19:38 , franciscoazzad ha scritto:

Per positivo e negativo intendo la polarità in relazione alla sorgente del treno di impulsi.

Una variabile booleana può essere FALSE o TRUE, non ha una "polarità".
Forse intendi che l'uscita, a seconda di una condizione, deve assumere lo stesso stato della variabile sorgente del treno di impulsi oppure lo stato invertito.
In questo caso, la soluzione è semplicissima:

     I0.0     SM0.4       Q0.0
------| |------| |---+----( )
                     |
     I0.0     SM0.4  |
------|/|------|/|---+

Se I0.0 è TRUE, Q0.0 avrà lo stesso stato di SM0.4; se I0.0 è FALSE, Q0.0 avrà stato invertito rispetto a SM0.4

Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...