Vai al contenuto
PLC Forum


Istruzioni Set E Reset


PinokkioPLC

Messaggi consigliati

Buonasera, ho creato un banale programma nel quale vado ad utilizzare le istruzioni SET e RESET, però i conti non mi tornano.... vi spiego meglio il tutto dopo aver postato due screenshot del mio programma:

87388da02091afca1fa5905371fa493f.png

fcc03632ee440b5d05afbd40a7b23251.png

Allora nel primo segmento, quando vado ad attivare #SegnaleStart attraverso il simulatore di ingressi, (#SegnaleStop e sempre ad 1 essendo un contatto NC, dunque lascio il pulsantino attivo) come potete vedere mi si attiva l'uscita, il problema però sorge non appena vado a mettere a 0 tale #SegnaleStart riportando il pulsante di ingresso alla posizione di riposo, in tal caso grazie all'istruzione SET la variabile #SegnaleValvola non mi dovrebbe restare ad 1?

Perchè come è possibile notare nella seconda immagine, non appena stacco #SegnaleStart l'uscita mi ritorna a 0?

L'istruzione SET non permette di memorizzare la condizione logica al suo ingresso, anche dopo che questa è cambiata, ovvero se per un istante il ramo che mi va alla bobina SET mi da un RLO pari ad 1, poi se questo ramo mi torna a 0, comunque grazie alla bobina SET l'uscita mi dovrebbe restare ad 1, a meno che non entri in gioco l'istruzione RESET, ma qui non entra in gioco.... cosa è successo?

Perdonate la mia ignoranza e GRAZIE per l'aiuto.

Link al commento
Condividi su altri siti


Non riesco proprio a capire :wallbash: per essere sicuro che il RESET non mi andasse a creare qualche problema con il SET, ho proprio eliminato il secondo segmento, però comunque dopo essersi attivata la bobina di SET, appena l'RLO del ramo mi torna a 0, la bobina di SET mi ritorna a 0, non capisco l'istruzione SET non sarebbe alla fine una autoritenuta che mi mantiene il valore :(

PS: Mi è passata una cosa per la testa, però non sò se è un'altra mia cavolata...... io quella che sto usando è una FC dunque non ha un blocco dati di memoria, forse è questo il motivo per il quale non mi resta memorizzato il valore di #SegnaleValvola ?

Modificato: da PinokkioPLC
Link al commento
Condividi su altri siti

Fai una prova: sostituisci la bobina "segnale valvola" (Q0.0) con un merker qualsiasi(cioè area M anzichè Q). Poi crea un terzo segmento dove assegni all'uscita lo stato del merker... Vedi che succede

Link al commento
Condividi su altri siti

In seguito ai consigli dell'amico Matteo, ho modificato come di seguito il programma, ovvero ho utilizzato una variabile temporanea di blocco,da settare o resettare, il cui valore poi mi determina il segnale da inviare in uscita:

84c23857352e02befb93ed8e9682c7b4.png

Dunque sembra che le istruzioni SET e RESET non possano essere utilizzate direttamente per un segnale in uscita ad una FC, il perchè non lo sò e vorrei capirlo...... qualcuno ha mai riscontrato lo stesso problema? come ha risolto?

Link al commento
Condividi su altri siti

quando tali istruzioni le uso sia come attivazione che come disattivazione di un medesimo bit,

io ho l'abitudine di interbloccare le istruzioni SET o RESET con il negato del bit dell'operando sul quale vo a intervenire, ciò evita che all'interno del programma si attivi e si disattivi un bit sul quale decida di intervenire in attivazione o disattivazione e viceversa.

in parole povere se voglio fare un SET M1 prima dell'istruzione SET M1 inserisco il contatto negato NC di M1, in tal modo l'istruzione SET M1 avviene solo se il bit M1 è disattivato e

ovviamente al contrario per l'istruzione RESET

Link al commento
Condividi su altri siti

quando tali istruzioni le uso sia come attivazione che come disattivazione di un medesimo bit,

io ho l'abitudine di interbloccare le istruzioni SET o RESET con il negato del bit dell'operando sul quale vo a intervenire, ciò evita che all'interno del programma si attivi e si disattivi un bit sul quale decida di intervenire in attivazione o disattivazione e viceversa.

in parole povere se voglio fare un SET M1 prima dell'istruzione SET M1 inserisco il contatto negato NC di M1, in tal modo l'istruzione SET M1 avviene solo se il bit M1 è disattivato e

ovviamente al contrario per l'istruzione RESET

Dopo provo, potrei imparare qualche altra cosa, in quanto sn un principiante ;) , inoltre devo provare anche la stessa cosa con una FB e vedere se anche questa mi crea problemi..... a breve aggiornamenti.......

Link al commento
Condividi su altri siti

quando tali istruzioni le uso sia come attivazione che come disattivazione di un medesimo bit,

io ho l'abitudine di interbloccare le istruzioni SET o RESET con il negato del bit dell'operando sul quale vo a intervenire, ciò evita che all'interno del programma si attivi e si disattivi un bit sul quale decida di intervenire in attivazione o disattivazione e viceversa.

in parole povere se voglio fare un SET M1 prima dell'istruzione SET M1 inserisco il contatto negato NC di M1, in tal modo l'istruzione SET M1 avviene solo se il bit M1 è disattivato e

ovviamente al contrario per l'istruzione RESET

Se ho ben capito, intendevi questo:

6873f18fa2d91d9f84428d20854b232c.png

però anche in questo modo il problema non mi si è risolto :( appena attivo con il pulsantino l'ingresso che mi rappresenta lo START l'uscita mi viene settata ad 1, poi appena stacco il pulsantino (lo riporto al suo stato di riposo) l'uscita mi ritorna subito a 0, invece mi dovrebbe restare ad 1 essendo quella una operazione di SET, non capisco perchè non sia possibile questa cosa...... finora solo come indicato da Matteo sn riuscito a mantenere l'uscita ad 1, ovvero utilizzando una variabile temporanea nella FC.

PS: Nel secondo segmento ho anche provato con un contatto NA però non mi cambia niente, non và lo stesso :(

Modificato: da PinokkioPLC
Link al commento
Condividi su altri siti

Me lo sentivo che il problema fosse la FC....... ho rifatto lo stesso programma utilizzando una FB ed adesso tutto funziona perfettamente, anche staccando il pulsante START l'uscita mi rimane attivata ad 1, grazie all'operazione di SET..... dunque mi sembra di capire che il problema sia dovuto al fatto che la FC non ha un blocco dati che gli memorizzi gli aggiornamenti, o qualcosa del genere.....

PS: Questo esercizio l'ho pescato dal sito della Siemens, nei manuali didattici sull'S7-1200 ed è riportato utilizzando una FC.....

https://www.swe.siemens.com/italy/web/AD/ProdottieSoluzioni/HomeSCE/Pages/ManualididatticiPLCSIMATICS7-1200.aspx (primo PDF)

Link al commento
Condividi su altri siti

Purtroppo ho la testa dura e mi piace cercare di capire le cose..... dopo una piccola ricerca sul perchè SET e RESET creassero problemi in una FC, ho trovato questa pagina della Siemens:

http://support.automation.siemens.com/IT/llisapi.dll?func=cslib.csinfo&objId=22303713&nodeid0=10805384&load=treecontent&lang=it&siteid=cseus&aktprim=0&objaction=csview&extranet=standard&viewreg=IT

Non ho capito moltissimo, in quanto le mie basi sull'argomento sono ancora scarsine :( però andando a sostituire la variabile di OUTPUT con una variabile di INPUT/OUTPUT adesso anche la FC non mi crea problemi :)

PS: Perdonatemi per il monologo e tutti i msg inviati, però questa cosa ad un principiante come me può creare un bel pò di problemi, dunque condividere la probabile soluzione, penso sia una cosa utile ;)

Link al commento
Condividi su altri siti

Mi sembrava troppo strano e te lo stavo scrivendo, ma tu mi hai anticipato.

La definizione OUTPUT vuol dire che quel parametro lo utilizzi solo come output, quindi non dovresti mai analizzarlo come input.

Se, invece, lo definisci come INPUT/OUTPUT, allora lo analizzi come ingresso e lo piloti come uscita.

Naturalmente stiamo parlando solo di blocchi FC: con gli FB, che hanno un DB di istanza, è tutto un altro pianeta.

Se non ricordo male, con il Microwin sarebbe andato in errore compilando il blocco: magari hai scoperto un'altro bachetto del TIA ...

Link al commento
Condividi su altri siti

Il problema mi sembra di averlo risolto, però alcuni dubbi mi sono rimasti, dati la mia inesperienza.... non riesco a capire quando il segnale #SegnaleValvola nel mio programma viene utilizzato come input, perchè alla fine in entrambi i segmenti io quel valore logico lo butto fuori dal blocco, e dunque utilizzo solo come uscita.

Forse, è utilizzato come ingresso per la valutazione del secondo segmento per vedere il suo valore?

magari hai scoperto un'altro bachetto del TIA ...

Sarebbe la fortuna del principiante.... un ignorantone in materia che scopre qualcosa :superlol:

Modificato: da PinokkioPLC
Link al commento
Condividi su altri siti

Oddio ... appena sveglio volete farmi ragionare così tanto ? :blink:

In ogni caso:

- secondo me, la domanda corretta non è quella, ma come fa il firmware a convertire le istruzioni di set/reset in linguaggio macchina ?

posso solo supporre che in qualche modo "legge" il bit per effettuare il set/reset

- ho appena voluto provare con il Microwin e con l'istruzione SR il compilatore segnala "Errore 35", mentre con i singoli set e reset lo accetta; quindi sicuramente con

l'istruzione SR effettua anche la lettura del bit, oltre alla scrittura, ed è per quello che segnala l'errore

- che nel TIA per qualche motivo abbiamo utilizzato la stessa "conversione" per le 3 istruzioni ?

o magari c'è davvero un baco non solo nella mancanza di segnalazione, ma proprio nella definizione di OUTPUT

Link al commento
Condividi su altri siti

generalmente prima di scrivere una "bobina" il firmware o sistema operativo del plc verifica alcuni stati tra cui il risultato logico combinatorio che viene salvato in un registro apposito .Tale risultato viene calcolato in base alle varie diramazioni della logica

comunque il fatto di non settare direttamente le uscite e' una cosa che si sente da parecchi anni , e personalmente l'ho sempre rispettata senza approfondire .Un programma ladder vien dapprima compilato in codice IL e poi in assembly in modo trasparente al programmatore

Puo' essere che le macro usate dal firmware abbiano dei bachi o dei limiti nel settaggio diretto delle uscite :(

Link al commento
Condividi su altri siti

Che bel casino.... ad ogni modo utilizzerò le istruzioni di SET e RESET in una FC come variabili di input/output ed avrò risolto tutti i problemi ;)

Link al commento
Condividi su altri siti

Giuseppe Signorella

ad ogni modo utilizzerò le istruzioni di SET e RESET in una FC come variabili di input/output

Non è che nella FC precedentemente avevi dichiarato il bit di set e reset come variabile locale? (temp)?

Ciao

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

Salve Giuseppe, inizialmente i bit set e reset li ho utilizzati in una variabile di sola uscita ed il programma mi creava problemi, poi come indicato nel messaggio #4 ho utilizzato una variabile temporanea di appoggio ed il problema si è risolto, però questa soluzione non mi piaceva ed ho cercato in rete delle informazioni, arrivando ad una FAQ della Siemens riportata nel messaggio #9 la quale dice che queste istruzioni devono essere utilizzate in una variabile di ingresso/uscita altrimenti si hanno problemi, il motivo non l'ho perfettamente capito, ma ciò è dovuto essenzialmente alla mia poca conoscenza di tutto l'argomento, magari tra qualche mese di studio forse riuscirò a capire il motivo in maniera precisa :), per adesso mi devo accontentare di far funzionare il programma :)

Link al commento
Condividi su altri siti

  • 5 years later...

Ciao volevo chiederti se mi puoi aiutare devo fare un set_reset con un FB ho impostato il pulsante di start e di stop come input nelle variabili locali e simulando vedo che cambiano stato quindi sono ok il problema è il merker di appoggio che devo settare e resettare anche se lo imposti come InOut non rimane settato dove devo inserirlo ? grazie

Link al commento
Condividi su altri siti

lucio67 forse non hai letto il regolamento prima di accettarlo, altrimenti sapresti che non ci si può accodare ad altre discussioni, ma si deve sempre aprirne una nuova.

Link al commento
Condividi su altri siti

Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...