Vai al contenuto
PLC Forum


Richiesta Inconsueta


Messaggi consigliati

Inserito:

ciao a tutti

come da titolo avrei una richiesta un po inconsueta per un forum.

da autodidatta neofita ho realizzato un primo impianto con un s7 222.

so benissimo di avere moltissime lacune da colmare e ne sono consapevole.

quelle relative alle istruzioni sono piano piano risolvibili; il mio problema è più generale.

avrei bisogno di chiarimenti su come organizzare un programma, su come gestire uscite attivate in più punti, in diverse sub, ecc.

i miei errori sono più che altro strutturali, avrei bisogno di sapere le cose che NON si devono fare più che altro.

sto chiedendo in sostanza se qualche anima pia (e tra voi ce ne sono molte) è disposta a passare un mezzora con me e subire qualche mia domanda o più semplicemente spiegarmi i concetti basilari di come si fa un programma con tutti i crismi.

io abito a Milano e sono disposto a spostarmi anche di molto se necessario.

fiducioso in nalmeno uno di voi ringrazio in anticipo

marino


Livio Orsini
Inserita:

In pratica stai chiedendo come si deve programmare :smile: . Questo è indipendente dallo strumento usato.

Comunque ti elenco alcune cose che possono forse aiutarti a strutturare meglio un programma.

  • Con i PLC cambiare lo stato delle uscite in più punti del programma non porta a grossi inconvenienti. C'è la fortuna, per il programmatore, che al termine del ciclo il firmware esegue la copiatura dello stato dei registri immagine sulle uscite fisiche. Quindi vale l'ultimo stato programmato. Con questo non si dovrebbe mai manipolare un'uscita in più punti del programma.
  • La serie S7-2xx si programma con microwin; questo sistema permette di organizzare molto bene il programma. C'è un main (OB1 se ricordo bene) dal quale si lanciano le varie sub. Il lancio può essere incondizionato, cioè ad ogni ciclo viene lanciata la sub, oppure il lancio può avvenire se e solo se ne esistono le condizioni.
  • Scrivere sub specifiche operazioni specifiche e ripetitive che verranno richiamate più volte.

Comunque più che passare qualche mezzora con qualcuno ti consiglierei di acquistare un testo specifico che tratta l'organizzazione della programamzione, e poi studiartelo per bene. Non un testo su come si programmano i PLC, ma un testo su come si organizza un programma, ovvero su quella che è la filosofia della programamzione. Se si impara a strutturare un programma lo si sa fare indipendetemente dallo strumento impiegato e dal linguaggio usato.

Purteoppo, per qualcun altro fortunatamente, i PLC permettono di essere programamti anche da chi è completamente ignorante in fatto di programmazione. prima o poi un programma riuscirà anche a girare, magari un po' goffamente e con molte risorse sprecate ma girerà. Così le persone si illudono di saper programmsre.

Giuseppe Signorella
Inserita: (modificato)

Mi permetto di aggiungere a quello già affermato da Orsini, ed io nei mie post lo ripeto spesso,

Fare un programma che funziona, (cioè che fà ciò che vi aspettate), se pur fatto goffamente, ma funzionante,

NON SIGNIFICA NEL MODO PIU' ASSOLUTO CHE IL PROGRAMMA RISPETTI LA NORMATIVA CHE REGOLAMENTA IL SETTORE DI APPLICAZIONE DELLA VOSTRA MACCHINA.

Molto spesso, la mancanza di esperienza, e la mancanza di alcune nozioni basilari sulla programmazione, ci inducono se pur involontariamente a commettere degli errori di programmazione, (i così detti bug di programmazione) che in un primo momento non vengono esternati, ma in determinate situazioni, si verifica quell'evento che non avevamo previsto e che può creare una situazione di pericolo, o un danno.

Purtroppo nella mia vita lavorativa mi è capitato di imbattermi in programmi fatti da pseudo programmatori, che se pur funzionanti, ma che non avevano nulla a che fare con la norma. Compreso il cablaggio elettrico.

Modificato: da Giuseppe Signorella
Inserita:

qualche testo da suggerirmi?

grazie

Inserita:

Un'altra arte di un buon programmatore, che si acquisisce solo sul campo e non credo ci siano libri per imparare, è lo spremere il cliente per capire come accidenti deve funzionare il suo impianto/macchina. Spesso si fa un preventivo solo su un canovaccio di macchina e poi quando si va a fare il collaudo si scopre che 3/4 di macchina sono cambiati durante la costruzione (senza naturalmente avvertire il programmatore). Alla fine chi è il colpevole dei "ritardi"? Chiaramente del programmatore. Senza contare poi gli strafalcioni tecnici dovuti ad incompetenza. Una volta, per dimostrarwe che una valvola pneumatica non andava bene per l'applicazione che doveva fare ho dovuto comprare io quella giusta sennò non se ne veniva fuori...

Se vuoi intraprendere questo mestiere preparati a mangiarti il fegato spesso...

Se ti ho spaventato....pensa che la realtà è anche peggio!! :superlol::lol::worthy:

Inserita:

grazie a tutti voi per l'incoraggiamento :wacko:

purtroppo ho ancora qualche dubbio e cerco di farvi qualche domanda mirata.

dovendo attivare una uscita in diverse sub, è corretto usare un merker (sempre lo stesso) che attivi l'uscita nel main?

posso usare lo stesso timer in diverse sub?

un evento interrupt è in grado di interrompere l'esecuzione di una sub? se si (come penso) come posso fare a richiamarla o a fare riprendere il programma da dove si è interrotto? (non ho ancora provato ad usare un interrupt)

grazie a tutti voi

Marino :worthy:

Giuseppe Signorella
Inserita: (modificato)
dovendo attivare una uscita in diverse sub, è corretto usare un merker (sempre lo stesso) che attivi l'uscita nel main?

No, non è coretto, questo perchè come ti ha spiegato Livio Orsini nel precedente post,

Con i PLC cambiare lo stato delle uscite in più punti del programma non porta a grossi inconvenienti. C'è la fortuna, per il programmatore, che al termine del ciclo il firmware esegue la copiatura dello stato dei registri immagine sulle uscite fisiche. Quindi vale l'ultimo stato programmato. Con questo non si dovrebbe mai manipolare un'uscita in più punti del programma.

Quindi in virtù di quanto sopra scritto, la tua uscita sia se fisica, che Merker, assumerà lo stato dell'ultima istruzione eseguita.

Mi spiego con un esempio:

In un OB/SUB ciclico, setti un merker che utilizzerai per attivare un'uscita fisica, poi richiami un altro OB/SUB ciclico dove lo stesso merker di prima, viene resettato, la tua uscita resterà a zero.

Se vuoi attivare un'uscita in funzione del risultato di entrambi gli OB/SUB, devi in ogni OB/SUB attivare e/o resettare un merker differente, poi nel main, ti crei un'operazione logica tipo AND, OR ecc, che comandano l'uscita fisica.

Spesso il mancato rispetto di quanto sopra detto, è la causa più frequente del perchè si verificano dei comportamenti non previsti della macchina .

posso usare lo stesso timer in diverse sub?

Anche in questo caso la risposta è come sopra. Nelle SUB stabilisci la condizione di funzionamento/tempo e lo richiami in una sola parte.

un evento interrupt è in grado di interrompere l'esecuzione di una sub? se si (come penso) come posso fare a richiamarla o a fare riprendere il programma da dove si è interrotto? (non ho ancora provato ad usare un interrupt)

Gli interuppt vengono eseguiti/richiamati in determinate circostanze. Puoi richiamarli con un evento sia software che hardware, al verificarsi di una determinata circostanza come un errore, oppure a tempo/ciclico.

L'interrupt quando richiamato sospende il programma nel punto in cui si verifica, esegue le funzioni per cui è stato programmato, e riprende il programma esattamente nel punto in cui lo ha interrotto. Ne prima ne dopo.

Ciao

Modificato: da Giuseppe Signorella

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