Vai al contenuto
PLC Forum


Scrittura delle uscite e lettura degli ingressi in kop


Giovanni Segreto

Messaggi consigliati

Giovanni Segreto

Buonasera, vorrei porre due domande sulla scrittura del codice in Kop. 

 

vorrei sapere se è possibile richiamare un ingresso più volte nello stesso ob1 ad esempio :

 

se uso i0. 0 nel primo segmento del ob1  lo posso usare anche nel quinto segmento? 

 

Col le uscite non si può perché anche ad attivare due volte l uscita nello stesso ciclo di scansione e l ultima sovrascrive la precedente ma è lo stesso con l ingresso?

 

Leggere l ingresso in due punti del programma per attivare due uscite diverse è corretto? 

Modificato: da Giovanni Segreto
Link al commento
Condividi su altri siti


Giovanni Segreto

@Cialtrone

Esiste un  immagine di processo merker èd in sincrono con l immagine di processo degli ingressi?

lo stato dei merker viene interrogato sempre prima del attivazione delle uscite fisiche? 

Grazie

Link al commento
Condividi su altri siti

In sintesi il PLC in genere prima aggiorna lo stato degli ingressi e lo memorizza nell'immagine di processo degli ingressi e poi processa il programma eseguendo le istruzioni nel programma, quindi per ciò che riguarda gli ingressi li considera in base all'immagine di processo, a meno che tu nel programma non ne richieda un ulteriore ahggiornamento specifico, comunque una volta eseguita l'ultima istruzione aggiorna l'immagine di processo delle uscite in base a ciò che ha processato nel ciclo di programma e poi ricomincia il ciclo di nuovo aggiornando di nuovo lo stato degi ingressi ricominciando l'esecuzione del programma ciclico. Ovviamente sei tu che devi inserire delle chiamate di interrupt per aggioranare più velocemente alcuni ingressi se necessario, perchè può essere che il tempo di scansione sia magari più lungo della variazione dello stato di un ingresso. L'esempio classico è l'uso dei contatori veloci con ingressi dedicati. Alcuni PLC dicono che prima aggiornano lo stato delle uscite, poi aggiornano lo stato ingressi, eseguono il programma e ricomiciano da capo eseguendo lo stato delle uscite, in definitiva è un modo diverso di esprimere il medesimo funzionamento ciclico, quest ultimo procedimento mi sembra se non ricordo male sia quello descritto da Siemens ma come ti dicevo il concetto non cambia

Modificato: da leleviola
Link al commento
Condividi su altri siti

Gentile Giovanni, mi sembra che tu stia approcciando la cosa senza le basi.

Provo a darti una spiegazione

 

1 il plc legge lo stato fisico degli ingressi e lo scrive in una tabella IPI (immagina un foglio a quadretti dove ogni quadretto è un bit che può essere solo 0 oppure1)

2 comincia l'elaborazione del programma, viene interrogato lo stato di E0.0, quindi il plc va a vedere nella tabellina, nel primo quadretto, cosa c'è)

3 mettiamo che E0.0 attiva il merker M0.0 (nella tabellina dei merker viene scritto lo stato di M0.0)

4 M0.0 attiva l'uscita A0.0 (nella tabella IPU la prima casella viene messa a 1)

5 a fine elaborazione la tabella IPU viene copiata sullo stato fisico delle uscite.

6 ricomincia da 1

 

Tieni presente che:

1) La tabella dei merker mantiene lo stato che gli era stato assegnato l'ultima volta che è stata scritta, se i merker sono stati dichiarati come ritentivi, anche spegnendo e riaccendendo il PLC questi non si azzerano. I merker non ritentivi invece si azzerano con lo spegnimento.

1a) Le tabelle DB funzonano allo stesso modo ma sono praticamente sempre ritentive.

2) C'è la possibilità di leggere direttamente lo stato degli ingressi interrogando direttamente le periferie (per esempio le analogiche di solito si interrogano come PEW, word ingresso periferia).

3) C'è la possibilità di scrivere direttamente le uscite senza aspettare la fine dell'elaborazione (PAW) con lo stesso metodo.

4) Che tu scriva un'uscita o un ingresso al PLC non importa, si limita a mettere nella tabellina corrispondente il valore che gli hai scritto.

5) puoi scrivere un'uscita anche mille volte, quello che conta è il valore che avrà quando trasferirà l'IPU sulle uscite a fine elaborazione.

6) puoi interrogare un ingresso tutte le volte che vuoi, esso avrà sempre lo stato che aveva quando è stata compilata l'IPI (a meno che tu non lo sovrascriva, vedi 4)

7) l'elaborazione del programma è sequenziale, quindi considera che in KOP il programma viene elaborato dall'alto verso il basso e da sinistra verso destra).

 

In pratica è come se a lato dell'elaborazione del programma ci fossero una serie di fogli a quadretti che vengono letti e scritti ogni volta che il programma li richiama.

L'istruzione -||- E0.0 si potrebbe tradurre con "vai a vedere se nella tabellina degli ingressi il primo quadretto è a 1"

L'istruzione -() A0.0 è "scrivi 1 nel primo quadretto dellla tabella delle uscite"

 

Modificato: da Cialtrone
Link al commento
Condividi su altri siti

Giovanni Segreto
5 ore fa, Cialtrone ha scritto:

La tabella dei merker mantiene lo stato che gli era stato assegnato l'ultima volta che è stata scritta

Quindi viene aggiornata ad ogni ciclo di programma,giusto?

5 ore fa, Cialtrone ha scritto:

C'è la possibilità di leggere direttamente lo stato degli ingressi interrogando direttamente le periferie (per esempio le analogiche di solito si interrogano come PEW, word ingresso periferia).

con il tag oppoortuno posso andare a leggere l'ingresso fisico(periferia?) e attivare un uscita fisica senza passare per tutto il ciclo di scansione?  ok.

5 ore fa, Cialtrone ha scritto:

6) puoi interrogare un ingresso tutte le volte che vuoi, esso avrà sempre lo stato che aveva quando è stata compilata l'IPI (a meno che tu non lo sovrascriva, vedi 4)

quindi ad ogni ciclo di scansione lo stato ad esempio di i0.0 sarà il primo rilevato in fase di scrittura del ipi? anche su mille egmenti dello stesso ciclo?
attivare un uscita in due rami differenti comporta la scittura del ipu in due disttinti momenti, si rischia quindi di prdere il rilevamento di un evento ?

5 ore fa, Cialtrone ha scritto:

L'istruzione -||- E0.0 si potrebbe tradurre con "vai a vedere se nella tabellina degli ingressi il primo quadretto è a 1"

L'istruzione -() A0.0 è "scrivi 1 nel primo quadretto dellla tabella delle uscite

----[  ]------( )   

    i0.0      q0.0        quindi in fase di elaborazione, il plc chiede lo stato di i0.0 a ipi e lo scrive in ipu fa lo stesso con tutti i segmenti e infine scrive ipu sulle uscite digitali.

 

grazie!!!!!!!

                              

                              

Modificato: da Giovanni Segreto
Link al commento
Condividi su altri siti

Lo stato degli ingressi convenzionalmente e normalmente è uno e viene rilevato prima di elaborare il programma, i merker invece hanno lo stato derivante dalla scansione precedente se c'è, se è la prima dipende se sono ritenitivi altrimenti sono a zero, e come dicevo lo stato dei merker anche all'interno della scansione può variare secondo le istruzioni del programma che per esempio ad un punto del programma per una specifica condizione fa il SET di M0.0, quindi il segmento prima del SET M0.0 poteva essere a zero, il segmento successivo al SET è a VERO e quindi se elabori la condizione di M0.0 sueccessivamente al SET lo devi considerare come variato, lo stato degli ingressi è quello rilevato all'inizio.

Per le uscite è concettualmente sbagliato elaborarne il comando in più punti perchè il comando che avrà priorità sarà l'ultimo eseguito all'interno del programma, Se in un punto elabori il comando dell'uscita Q0.0 come falso e se in alcuni segmenti successivi lo rendi VERO elaborandone il comando conterà quest'ultimo comando nel comando dell'immagine di processo delle uscite, è quindi preferibile comandare in un solo punto ogni singola uscita per non incappare in banali errori, basta eseguire in un solo punto le condizioni booleiane di comando delle uscite

Link al commento
Condividi su altri siti

Giovanni Segreto

@Cialtrone

31 minuti fa, leleviola ha scritto:

i merker invece hanno lo stato derivante

Quindi nel caso di istruzioni set, la commutazione dello stato dei é istantanea come nel caso di interrogazione delle periferie? 

Ma sono solo certi comandi che rendono il merker '' istantaneo''? ad esempio il passaggio da bit 0 a bit 1 è valido per avere nello stesso ciclo di scansione due valori diversi del Merkel? 

Grazie! 

@leleviola

 

Link al commento
Condividi su altri siti

11 ore fa, Giovanni Segreto ha scritto:

Quindi viene aggiornata ad ogni ciclo di programma,giusto?

Viene aggiornata MAN MANO che il programma viene elaborato. Alla scansione successiva lo stato delle memorie è lo stesso che avevano alla fine del ciclo precedente.

 

11 ore fa, Giovanni Segreto ha scritto:

con il tag oppoortuno posso andare a leggere l'ingresso fisico(periferia?) e attivare un uscita fisica senza passare per tutto il ciclo di scansione?

Dal ciclo di scansione ci passi comunque, solo che andrai a leggere (se si tratta di ingressi) lo stato che l'ingresso ha in quel preciso istante invece dello stato che aveva quando è stata scritta l'IPU, tieni conto che la differenza è di pochi millisecondi. In alcuni casi gli ingressi sono collocati al di fuori dell'IPU, quindi l'unico modo di interrogarli è accedere alla periferia.

 

11 ore fa, Giovanni Segreto ha scritto:

quindi ad ogni ciclo di scansione lo stato ad esempio di i0.0 sarà il primo rilevato in fase di scrittura del ipi?

Lo stato di I0.0 sarà quello scritto nell'IPU, se lo stato di un ingresso variasse durante la scansione di un programma si andrebbe in contro a problemi, a meno di tenerne conto.

Prendi ad esempio due segmenti, nel primo I0.0 attiva l'uscita motore avanti, nel secondo I0.0 negato attiva l'uscita motore indietro. Se lo stato cambiasse da un segmento all'altro comanderesti il motore sia avanti che indietro!

Scrivere più volte un'uscita durante l'elaborazione del programma non è pratica comunemente usata, perché tra l'altro rende molto difficile fare diagnosi.

Link al commento
Condividi su altri siti

10 ore fa, Giovanni Segreto ha scritto:

Quindi nel caso di istruzioni set, la commutazione dello stato dei é istantanea come nel caso di interrogazione delle periferie? 

Ma sono solo certi comandi che rendono il merker '' istantaneo''? ad esempio il passaggio da bit 0 a bit 1 è valido per avere nello stesso ciclo di scansione due valori diversi del Merkel? 

No, il comando set non scrive ISTANTANEAMENTE le uscite. Il discorso della scrittura istantanea di uscite non ha molto senso nel mondo dell'automazione, almeno per l'attivazione di valvole motori eccetera.

I merker come tutte le altre cose, hanno lo stato che gli è stato scritto. Se attivi un merker nel segmento 10, lo troverai basso nel segmento 9 e alto nel segmento 11. Tenere conto di queste cose fa parte dell'ABC della programmazione PLC.

 

Piccola digressione sulla scrittura dei bit:

i bit, in kop, si scrivono solitamente con il comando = , rappresentato in KOP con -(), che si può tradurre con "attiva il bit fintanto che le condizioni a monte sono soddisfatte, altrimenti mettilo a zero".

Il comando SET -(S) si traduce con "attiva il bit se le condizioni a monte sono soddisfatte e poi tienilo alto finché non ti do il comando RESET"

Per il reset vale lo stesso discorso "DISattiva il bit se le condizioni a monte sono soddisfatte e poi tienilo basso finché non ti do il comando SET"

Link al commento
Condividi su altri siti

@Giovanni Segreto ma toglimi una curiosità, non per farmi i fatti tuoi ma stai leggendo qualche testo per imparare la programmazione o ti affidi puramente al forum?

 

Te lo chiedo perchè dalle domande che poni si capisce che non hai le fondamenta e, peggio ancora, vorresti costruirci una casa sopra.

Ora bene o male tutti abbiamo fatto questo errore dettato nella maggior parte dei casi dalla fretta di imparare ma ti assicuro che i debiti prima o poi si pagano. 

 

IPI, IPU, sono cose che è bene imparare ma un SET non c'entra nulla con le periferie. Se fai un SET di un merker come ti è stato detto nel segmento 10, interrogandolo nel 9 lo troverai a 0 e interrogandolo nell'11 lo troverai a 1. 

Se fai il SET di una uscita Q (cosa che è meglio evitare come la peste) nel segmento 10 la troverai a 0 nel 9 e a 1 nel '11..esattamente come nei merker con la sola differenza che al morsetto non troverai la 24v finchè non sarà terminata la scansione e l'immagine trasferita ai morsetti. 

 

Inoltre mi permetto di chiederti un'altra cosa..cosa ti spinge ad imparare? Diletto? Nuovo posto di lavoro? altro?

Link al commento
Condividi su altri siti

Giovanni Segreto
2 ore fa, step-80 ha scritto:

@Giovanni Segreto ma toglimi una curiosità, non per farmi i fatti tuoi ma stai leggendo qualche testo per imparare la programmazione o ti affidi puramente al forum?

 

Te lo chiedo perchè dalle domande che poni si capisce che non hai le fondamenta e, peggio ancora, vorresti costruirci una casa sopra.

Ora bene o male tutti abbiamo fatto questo errore dettato nella maggior parte dei casi dalla fretta di imparare ma ti assicuro che i debiti prima o poi si pagano. 

 

IPI, IPU, sono cose che è bene imparare ma un SET non c'entra nulla con le periferie. Se fai un SET di un merker come ti è stato detto nel segmento 10, interrogandolo nel 9 lo troverai a 0 e interrogandolo nell'11 lo troverai a 1. 

Se fai il SET di una uscita Q (cosa che è meglio evitare come la peste) nel segmento 10 la troverai a 0 nel 9 e a 1 nel '11..esattamente come nei merker con la sola differenza che al morsetto non troverai la 24v finchè non sarà terminata la scansione e l'immagine trasferita ai morsetti. 

 

Inoltre mi permetto di chiederti un'altra cosa..cosa ti spinge ad imparare? Diletto? Nuovo posto di lavoro? altro?

Ciao! Nessun problema.. 

 

Io ho svolto un corso base, ma qui sul forum le informazioni sono molto più chiare e imparo sempre qualcosa di nuovo. 

 

Si la fretta non è il massimo per imparare e lo sto sperimentando adesso. 

 

Mi piace l automazione e mi piacerebbe fare il programmatore se si presentasse una buona possibilità. 

@step-80

2 ore fa, step-80 ha scritto:

@Giovanni Segreto ma toglimi una curiosità, non per farmi i fatti tuoi ma stai leggendo qualche testo per imparare la programmazione o ti affidi puramente al forum?

 

Te lo chiedo perchè dalle domande che poni si capisce che non hai le fondamenta e, peggio ancora, vorresti costruirci una casa sopra.

Ora bene o male tutti abbiamo fatto questo errore dettato nella maggior parte dei casi dalla fretta di imparare ma ti assicuro che i debiti prima o poi si pagano. 

 

IPI, IPU, sono cose che è bene imparare ma un SET non c'entra nulla con le periferie. Se fai un SET di un merker come ti è stato detto nel segmento 10, interrogandolo nel 9 lo troverai a 0 e interrogandolo nell'11 lo troverai a 1. 

Se fai il SET di una uscita Q (cosa che è meglio evitare come la peste) nel segmento 10 la troverai a 0 nel 9 e a 1 nel '11..esattamente come nei merker con la sola differenza che al morsetto non troverai la 24v finchè non sarà terminata la scansione e l'immagine trasferita ai morsetti. 

 

Inoltre mi permetto di chiederti un'altra cosa..cosa ti spinge ad imparare? Diletto? Nuovo posto di lavoro? altro?

Ciao! Nessun problema.. 

 

Io ho svolto un corso base, ma qui sul forum le informazioni sono molto più chiare e imparo sempre qualcosa di nuovo. 

 

Si la fretta non è il massimo per imparare e lo sto sperimentando adesso. 

 

Mi piace l automazione e mi piacerebbe fare il programmatore se si presentasse una buona possibilità. 

@step-80

Modificato: da Giovanni Segreto
Link al commento
Condividi su altri siti

13 minuti fa, Cialtrone ha scritto:

Spero tu non l'abbia pagato...

MUORO

 

@Giovanni Segreto sforzati a non quotare 2 volte e a scrivere il tuo commento fuori dal testo quotato per favore...all'università quando facevano geroglifici base non c'ero:P

Modificato: da step-80
Link al commento
Condividi su altri siti

Giovanni Segreto
4 ore fa, step-80 ha scritto:

geroglifici base non c'ero:P

 

 

🤣

 

4 ore fa, Cialtrone ha scritto:

Spero tu non l'abbia pagato...

Eh😅 comunque grazie! 

Link al commento
Condividi su altri siti

Grazie? E di che?

Comunque se posso darti un consiglio visto che qua parliamo di Siemens ma va bene anche per altri ti consiglio vivamente di leggerti un manuale di sistema anche di un Siemens 1200, lo trovi facilmente cercando "s71200_system_manual_it-IT_it-IT_V4_3_0" , leggiti bene sto manuale, è anche in italiano, e alla voce "Concetti Base" trovi tutti i chiarimenti ai tuoi dubbi. Prima di farti dei preconcetti sbagliati, leggiti con calma quel manaule e capirai come funziona il PLC Siemens e abbastanza in maniera analoga tutti gli altri, buona lettura

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...