Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Dubbi e "paure" su come strutturare il proprio codice.


Messaggi consigliati

Inserito:

Ciao a tutti, un po di tempo fa mi ero iscritto a questo forum perché avevo deciso di  intraprendere la strada dei PLC. Purtroppo per vari motivi ho dovuto abbandonare per sistemare delle cose. Adesso finalmente che sono tranquillo ho deciso di riprendere quella strada, ma ho sempre dubbi sulle decisioni riguardanti a come strutturare il mio codice. Faccio esempio, per fare un po di pratica cerco di scrivere il programma di macchinari semplici per poter testare con PLCSIM e vedere i risultati. Esempio  ho 4 catenarie che devono muoversi in sequenza e su ognuna di esse vi è presente un micro che mi dice se c'e il bancale o no. Quindi la funzione è metto il bancale sulla prima e si deve spostare dalla prima alla quarta. Io avevo pensato di usare delle sequenze di SR perchè non ho sempre lo stato del micro, appena il bancale si è mosso la catena deve girare fino a che il bancale non è arrivato alla prossima catenaria e impegna il micro e cosi via. Ma mettendo giu le sequenze in ladder mi ritrovo che il set o reset della catenaria2 o 3 devo scrivere tanti casi. quello che è il mio dubbio è una cosa normale ?? cioè mi sembra molto pasticciato il programma non chiaro e conciso. voi come lo avreste strutturato? avendo 4 motori e 4 micro. 

Ho pensato anche di usare dei merker di appoggio che secondo i casi  vanno  1 o zero e attivo un timer  dove finchè il timer è attivo le catenarie si muovono se impiego troppo tempo vado in timeout segnalo. e resetto il timer con le condizioni di reset dei merker. Può essere la strada giusta? Per complicarmi le idee, pensavo che posso stoccare fino a 4 bancali finche qualcuno alla fine non meli toglie io posso riempire le catene. 

 

Perdonati per la domanda basilare o anche banale ma sono all'inizio e vorrei dei pareri per poter confrontare ciò che penso . Non si tratta di compiti o altro ma solo vedere un punto alternativo e capire i miei errori.


Nicola Carlotto
Inserita:

La struttura di un programma PLC  di qualsiasi marca si tratti deve tener conto di minimo :

Ciclo manuale
Ciclo automatico
Allarmi
Uscite

Logicamente ogni programma deve tener conto della realta' fisica quindi magari piu blocchi automatici o manuali , l'importante e' che strutturalmente

e quindi anche mentalmente quando si comincia a costruire un programma si pensi di suddividere in maniera ordinata i compiti di ogni blocco.

Il mio suggerimento e' di creare una logica di funzionamento intelligente e semplice , quindi di utilizzare dei cicli  e sottocicli con appoggio sui merker bit o in autoritenuta oppure in condizione di set  costruendo quindi una sorta di storia del ciclo memorizzata nei bit , pensando poi ad un reset dei bit o a una caduta delle autoritenute alla fine del ciclo .

Le uscite trattale per ultimo abilitandole in base alla presenza a 1 o a 0 dei merker bit di appoggio.

I commenti che tu darai alle strutture dovranno essere come la mappa di funzionamento dei tuoi cicli , cosi' facendo diventera' un gioco da ragazzi associarle alle uscite.

Ciao

Nicola Carlotto

 

Inserita:

Grazie per la tua risposta, non so forse perchè sono proprio alle prime armi appena devo mettere un timer o un merker mi blocco. Penso  subito che ne ho pochi a disposizione, anche se ne ho 255 mi sembrano come l'oro che non deve essere mai sprecato. Piuttosto continuo a perdere tempo per trovare una soluzione alternativa, tralasciando quella piu semplice e ovvia.

Non sono smaliziato nel usare le risorse a disposizione,  

Alla fine nell' esempio sopra descritto ho usato un timer per ogni catenaria, ed ho messo le condizioni di partenza sui motori con in AND i timer, ed ho risolto in 5 minuti. Facendo operare il tutto come volevo io, non capisco perchè continuavo a ostinarmi nel non usare i timer, sapendo comunque che  volevo una segnalazione di timout se il trasporto da una catenaria all'altra eccedeva un tempo limite.

Poi sicuramente so che molti di voi avrebbero risolto magari usando un solo timer.

Inserita:
Quote

Ma mettendo giu le sequenze in ladder mi ritrovo che il set o reset della catenaria2 o 3 devo scrivere tanti casi.

Non è chiaro questo punto, perchè hai tanti casi?

Comunque, se hai diversi "oggetti" nel tuo impianto, in questo caso le catenarie, e tutte hanno un funzionamento analogo, la strategia migliore con Siemens è, secondo me, di utilizzare una FB che descrive il funzionamento di una catenaria generica con diverse DB di istanza per i diversi input ed output (timer, merker, ecc.).

Questo naturalmente se la complessità del ciclo di automazione è tale da determinare questa scelta oppure, come mi pare di capire nel tuo caso, è una questione didattica.

Inserita:
Quote

Questo naturalmente se la complessità del ciclo di automazione è tale da determinare questa scelta oppure, come mi pare di capire nel tuo caso, è una questione didattica.

Be si ovviamente è tutto a scopo didattico, forse non ero stato chiaro nel descrivere la funzione. In poche parole ho 4 catenarie una davanti all'altra, ogniuna di esse ha un micro. Se il carrellista appoggia un bancale sulla prima catenaria dopo un piccolo timeout (per permettere al carrellista di andare via) il bancale si sposta in avanti andando in avanti fino ad arrivare sull'ultima catenaria. Qui di seguito ho messo un disegno molto blando di come la penso:  Catenarie

Ci sono riuscito lavora come voglio io in sequenza vorrei far vedere a qualcuno il codice Ladder sono 5 network in croce, ma ci ho messo quasi 3 giorni perchè continuavo a sbagliare la mia logica. 

Non saprei come farvi vedere il codice

Nicola Carlotto
Inserita:

ci sono molti esempi nel web , scaricateli..

Ciao

Inserita:

Quindi hai 4 oggetti identici che devono funzionare allo stesso modo. A parte che non capisco i tanti casi ai quali avevi accennato precedentemente, in questo caso potresti effettivamente esercitarti con la FB e DB di istanza come ti ho detto poichè la logica è banale e ti puoi concentrare meglio su come si utilizzano queste FB in previsione di scenari futuri più complessi.

Ciao

Inserita:

Condivido quanto detto da Nicola Carlotto, molti programmatori usano creare un FC dove associono tutte gli ingressi fisici bit a bit a dei merker, e idem per le uscite, poi ognuno adotta il suo metodo, certo è che scrivere tutto riga per riga in OB1 senza creare vari blocchi non è proprio il massimo dell'organizzazione: ne ho visti di programmi fatti così!!!

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