Vai al contenuto
PLC Forum


Programmazioni sequenziali - Programmi a passi


Max_1

Messaggi consigliati

Ciao a tutti,

sono un principiante della programmazione, o meglio ho sempre messo mani al software di altri ma ora devo sviluppare personalmente.

Devo affrontare delle applicazione sequenziali, macchine insomma, qualcuno ha degli esempi di programmi sequenziali da inviarmi, o delle indicazioni di dettaglio su cui iniziare?

Aspetto con ansia una aiuto e oviamente un saluto a tutti, ciao.

Mauri

Link al commento
Condividi su altri siti


Prova a cercare su Google Grafcet, vedrai che troverai un sacco di esempi, nel frattempo vedo se riesco a recuperare qualche link :D

Ah, dimenticavo, se fai una ricerca in questo forum dovrebbero esserci già altre discussioni in cui dovrebbe esserci ciò che cerchi ;)

P.S. importante per tutti

Quando cercate qualche cosa o qualche aiuto, provate prima a fare una ricerca nei post del forum, vedrete che l'80% delle volte l'argomento è già stato trattato :D

Link al commento
Condividi su altri siti

Federico Milan

Oltre a tecniche grafiche come ti è stato gia detto, Grafcet per progammazione se hai un ambiente che lo supporta o petric per l'analisi su carta, tecniche software, di solito io uso il gestore di salti ...

di regola avrei una funzione che esegue un ciclo, un automa a stati finiti, per intenderci, ciascun stato sarà a sua volta un altro automa, e componendo fino ad arrivare all'azione ... ovviamente anche lo stato macchina sarà a sua volta un automa che si comporterà e attiverà sequenze a seconda dello stato manuale o automatico ...

ciao

Link al commento
Condividi su altri siti

Federico Milan

Purtroppo non ti posso postare esempi concreti per alcuni motivi che evitiamo e facilmente comprensibili, dovuti a cause di forza maggiore,

non dipendenti dalla mia volontà ma di chi mi da il pane quotidiano ...

comunque il concetto potrebbe essere riassunto così :

il gestore di passi io lo uso spesso, di regola dentro una FB (per siemens) o in una FC a seconda di cosa e come deve essere fatta, diciamo di usare una FC perchè la usiamo genericamente, si riserva su una DB opportunamente mappata un byte, quindi

FC ...

...

AUF DB[N_Db]

L DBB0

SPL Null

SPA ST00

SPA ST01

SPA ST02

...

Null : L 0

T DBB0

Inc: L DBB 0

inc 1

T DBB 0

Att: BEA

End:L 0

T DBB0

BEA

// Qui inizieranno gli stati , per brevità immaginiamo che gli stati sono

// appoggiati a dei Merker, ovviamente per fare le cose bene ci si

// appoggerà a delle DB ...

ST00: un M0.0

spb Att

s M10.3

s A3.0

spa Inc

ST01: ...

ST08: u DB200.dbx3.3

spb F1

spa END

F1: call FC1

spa Att

In questo modo si ha un automa, infatti ogni STxx è uno stato e attende una transizione per passare ad un altro stato, ad esempio,

Se sono fermo attento tasto start e mi port in stato automatico.

Se sono in stato automatico e cambio selettore, vado in stato inizio

...

una volta selezionato gli stati stessa cosa si fa per i movimenti ... dove si avranno sequenze, ciascuna gestita con il gestore di salti, ...

Ovviamente, bisogna pensare bene la struttura per evitare poi guai ...

Devo oltremodo, amettere che macchine ne ho fate poche, essendo passato a impianti di medie dimensioni, dove a una struttura a stati, si preferisce altre strutture, più lente e meno performanti sotto l'aspetto velocità, ma più semplici da manutenere in caso ampliamenti e soprattutto passaggio di knowhow ... almeno credo ... sto anchio ampliando il mio bagaglio ... ciao

ciao

Link al commento
Condividi su altri siti

il distributore di salti SPL puoi anche usarlo per saltare da un punto all'altro del programma eseguendo delle istruzioni e controlli ben precisi in base al valore di una variabile che tu gli dirai quanto varra' e lei te lo dira

quando tu vorrai

che solo quando qualcosa succede si devono fare certe cose, seno esegui quello che

avresti eseguito se non fosse successo quello che doveva succedere. :blink:

esempio mw10 word fasi:

mi alzo e vado verso la porta........mw10:=1 ; (awl l 10 ...T MW10)

sto andando verso la porta? si ....mw10:=2 ;

.....no ,mw10:=1

cerco le chiavi : le trovo...............mw10:=4

...non le trovo..............................mw10:=2

devo infilarle nella serratura: tutto ok ??? mw20??? quanto vale?

......vale mw20=23 allora le infilo e .....mw10:=5

nel mio stupido esempio ti ho spiegato uno dei metodo che uso ,

poi si possono personalizzare, parametrizzare , a seconda di quanto ti pagano, se avevi quel giorno piu fantasia dell'altro ecc.

ciao e buon divertimento

Link al commento
Condividi su altri siti

Ciao ragazzi,

devo ammettere che non avrei pensato ad una vostra risposta cosi celere, vi ringrazio ancora davvero.

Devo però ammettere che non ho avuto indicazioni dettagliate come speravo, nel senso che ho capito come deve essere gestita una elaborazione su eventi.

Eventi che, a loro volta, sono detrminati condizioni di passo, il punto è come agire nel dettaglio.

Ad esempio ho un braccio pneumatico che deve fare quattro movimenti: alto-basso-destra-sinistra, e questi quattro movimenti sono "veri" se ho un feedback da un prossimity di fine movimento dell'asse, ed ancora, il braccio si deve muovere dopo che se ne è mosso un altro (movimento di un braccio terminato tramite bit di fine ciclo).

Il tutto eseguito con un S7 313C + Mp 270 di SIEMENS.

Per motivi particolari, devo fare in modo che ci sia il minor numero di istruzioni possibili in "pasto" alla CPU così da abbassare il più possibile il tempo di scansione del ciclo.

Come agisco ???

Ciao e grazie anticipate per l'aiuto :o

Link al commento
Condividi su altri siti

Federico Milan

Ciao, se non erro la 313C ha la gestione di conteggi veloci, e ha se non erro SFB 47 che ti permette di gestire i conteggi veloci e costruirti sopra delle funzioni per comandare assi con encoder, vado a memoria perchè ho lavorato pochissimo con la 314C, l'ho usata solo per giocarci ?!?

Il ciclo a passi ti permette di fare quello che vuoi, ogni ciclo macchina hai esecuzioni brevissime e particolareggiate, quindi poco codice eseguito ...

problemi che incontrerai saranno come effettuare il cambio di stato, il preset movimenti ... e via dicendo ...

ciao

Link al commento
Condividi su altri siti

se vuoi chiamami

e appena posso passo a farti il software , mi dai le specifiche

.......cioe dici che non siamo entrati nei dettagli

non abbiamo specifiche , non conosciamo la macchina o automa che sia

non sappiamo cosa stai facendo

non sappiamo quanti bit stai usando

non sappiamo niente

:D:D:D

le istruzioni sono quello che sono , se devi fare robot prenditi un controllo

numerico o uno scara , i braccetti come dici tu si fanno a sequenza di passi

o a bit, o a word , o a mascheramenti ma sono sempre strumenti che si usano per arrivare allo stesso scopo

tutt'al piu ti posso consigliare questo :

se "alza braccio" esempio q0.0 ti serve in piu di un passo durante il processo , ti conviene creare dei merker per ogni volta che devi alzarlo in circostanze diverse , dopodiche li metti tutti in OR pre generare l'uscita

ciao

Link al commento
Condividi su altri siti

Se puoi usare linguaggi evoluti un programma sequenziale si può fare semplicemente usando l'istruzione CASE...END CASE.

Ogni Case corrisponde ad una fase della sequenza.

Quando termini una fase incrementi il contatore usato dal CASE.

Se devi saltare delle fasi basta scrivere nel contatore il numero di fase corrispondente.

Questo metodo è molto leggibile ed ha il vantaggio che dal contatore vedi direttamente in che fase sei.

Lo svantaggio è che probabilmente richiede piu istruzioni ( come compilato ) di una sequenza fatta con un linguaggio macchina.

CIAO

Link al commento
Condividi su altri siti

mi sa che e' il contrario

tutti i linguaggi evoluti una volta "esplosi" o compilati in linguaggio macchina sono piu incasinati e con istruzioni tortuose

prova a scrivere una sequenza in pascal e poi traducila in assembler

o awl che sono piu bassi cioe vicini al linguaggio macchina e poi dimmi

gia solo in scl tu scrivi tabella:=tabella[j] e in awl sara come minimo

una ventina di righe tra puntatori ,scambi di accu TAK, e cagate varie

lasciamo che lavorino le macchine , i compilatori al ns. posto ,li hanno creati apposta , il programmatore di plc deve garantire il processo ,l'impianto,

la rete, il supervisore, usando linguaggi piu a lui vicini e semplici , perche poi del resto seconde me un linguaggio basic o scl o st o pascal nel contesto plc , sono piu semplici di awl o il , alla fine e' lo stesso , ma perche devo io ripetere routine di sistema quando lo fa il compilatore, per dire che sono bravo????

io penso a produrre ed il tempo , che gia non basta mai, invece di buttarlo via a capire o mettere in piedi puntatori in awl che ogni volta e' un cinema

lo spreco per migliorare ed ottimizzare l'impianto , poi lui compila e quello che va dentro nel plc mi interessa relativamente,

l'unico linguaggio in lista di istruzioni che apprezzo di piu , proprio perche non e' un IL come awl o quali altri e' IL di telemecanique

con assegnazioni variabili e processore matematico di alto livello

l'informatica e' nata con il linguaggio macchina , poi la ripetizione dei comandi e' stata parametrizzata ed e' nato l'assembler, il cobol , il basic

il pascal , il c, ilc++ sempre piu evoluti perche le necessita aumentano

in grandezza e tutto cio che e' sempre piu piccolo viene inglobato in macro

istruzioni

anche l'hard disk e' sempre piu capiente , ma con dimensioni piu piccole

dobbiamo crescere , conoscere e migliorare se vogliamo stare al gioco

della tecnologia della quale tutti parliamo male , ma di cui tutti

siamo dipendenti in maniera sempre piu consistente

talvolta in discussioni del tipo quale linguaggio ti piace di piu ci si limita

al pensier proprio di quale ci piace di piu perche non vogliamo conoscere

spaventati da che cosa? da qualcosa che noi stessi abbiamo creato

per la comodita di noi stessi e si critica perche non si conosce

anche i microprocessori , con l'uscita di tecnologie avanzate sono rimpiazzati dai micro controllori e che nessuno mi dica che ' meglio programmare in assembler piuttosto che in basic , linguaggio cosi tanto criticato e vecchio ma tuttora in vigore ed evoluto

poi senti dire che l'istruzione GOTO non lavora bene solo perche il compilatore di quel plc e' fatto male , ma poteva essere FORFU invece che GOTO e cosa cambiava che magari funzionava meglio

eppure devo sentire anche ste stronzate , proprio oggi da un personaggio

che programma plc da 20 anni

ma facciamola finita e se vogliamo andare avanti diamoci da fare,studiamo, proviamo prima di dire questo linguaggio o quello

se sono in africa parlo inglese o francese, se sono in uruguay parlo spagnolo e se sono in brasile parlo portoghese

sono diversi modi di esprimer e le stesse cose indipendentemente da quanto potrebbero piacere o meno

ciao a tutti

Link al commento
Condividi su altri siti

Nell esempio che hai fatto federico non ho capito delle cose, come avviene la successione delle fasi dell'automa perchè viene prima eseguito st00 poi st01....ecc ?, non ho capito bene cosa serve sapere il valore di dbb0 tato che mi sembra non venga mai confrontato. non ho poi capito il senso dell' ultima fase del programma

ST08: u DB200.dbx3.3

spb F1

spa END

F1: call FC1

spa Att

Link al commento
Condividi su altri siti

pensandoci ho capito, in base al valore di dbb0, il comando SPL nel primo segmento determina se saltare a st00 ecc.... e dato che alla fine di ogni fase del ciclo dbb0 viene incrementato di uno i vari "salti" vengono eseguiti in sequenza.

Link al commento
Condividi su altri siti

Quando, circa 25 anni fa, INTEL lanciò il primo compilatore PLM80 per il mitico 8080-8085, dava questa motivazione: "Un programmatore medio scrive circa 20 righe di programma al giorno (si intende che si calcola il tempo dell'analisi, della specificazione, debugging, documentazione, prove funzionali e quant'altro necessario per la certificazion), una riga di PLM80 corrisponde, mediamente, a 10 righe di assembler, pertanto la produttività di un programmatore è moltiplicata per dieci!

Il PLM80 era un magnifico linguaggio ad alto livello, simile al Pascal ed al C, derivato da dal PL-11, che ti permetteva di avere il contatto diretto con la piattaforma HW. E' stato abbandonato nella sua versione PLM86 perchè soppiantato dal C, ma io lo rimpiango ancora.

Questo per esemplificare qunato è più semplice ed efficace scrivere con linguaggi ad alto livello: magari potessimo usare il C per tutti i PLC, avremmo la portabilità totale indipendentemente dall'hardware (ecco perchè i produttori dei PLC tendono a non usarlo o a tenere nascosti gli eventuali compilatori).

Al contrario usare l'assembler può sembrare più semplice perchè le operazioni sono uno a uno, ma gli errori sono moltiplicati per 10. Io, per esempio, che sono sempre distratto perchè mentre faccio una cosa ne penso altre dieci, sbaglio sempre i salti condizionati o mi dimentico dei registri che ho sporcato, poi per trovare l'errore sono lacrime, sudore e tanta m... da spalare.

Link al commento
Condividi su altri siti

Federico Milan

Si AWL l'istruzione

SPL determina in che punto saltare e quindi quale SPA attivare, ovviamente poi come giostrare le cose poi lo decidi, se è una sequenza allaora va bene il metodo che ho messo ovvimante non è l'unico se invece è un vero automa a sati finiti allora bisogna imporrre i salti all'interno dei stati ... ma qui dipende da cosa si vuole e come fare ...

ciao

Link al commento
Condividi su altri siti

Livio Orsini+Oct 21 2002, 12:41 PM-->
CITAZIONE(Livio Orsini @ Oct 21 2002, 12:41 PM)

Era bellissimo: il giusto compromesso tra LM e Linguaggi evoluti

Io pero utilizzavo il PLM96 per 8096-196KB

Dieci anni dopo di te

oggi scrivo in C & Assembler sotto SH2-3(Hitachi) e ti assicuro che qualche volta lo rimpiango anche io.

Modificato: da NULL
Link al commento
Condividi su altri siti

Federico Milan

L'automa è una definizione generica ... i salti non sono l'unico modo, anzi un automa andrebbe fatto con una matrice di stait e una matrice di uscite ... ma questo esula ... dal discorso ...

Siccome una macchina sequenziale è vista anche come un semplice automa e in questi casi è meglio non scomodare le matrici di transizione visto anche l'esigua potenza di calcolo di un PLC ... e visto che sono stati sequenziali ... risulta semplice usare salti ...

Ovviamente non è la regola .... del resto essere generici si sbaglia ma andare nel detaglio non si può per ovvi motivi ...

ciao

Link al commento
Condividi su altri siti

sto realizzando un sistema di sequenze che e' la fine del mondo

praticamente mappo tutti i bit delle utenze , l'offset dei puntatori

il tempo tra una sequenza e un'altra , ed in fine un comando esterno

il tutto gestito da un file di excel che mi calcola tutte le DVx e che vado a caricare nel blocco dati del s7-200

se devo fare qualche operazione di urgenza basta far puntare alla DVx

che precedentemente mappata eseguira il tutto

dimenticavo il tutto parametrizzato per piu di un richiamo

se eventualmente volessi in fase di messo in servizio dover cambiare una sequenza o un tempo non dovro far altro che aprire il file di excel ,modificare , e copiare il valore espresso in doppio intero nel blocco dati , senza toccare minimamente il software , quindi

messa in servizio solo con un pannellino

non e' una figata ????

certo ti devi spaccare un attimino la testa , e studiare gli strumenti che hai a disposizione , ruota word , puntatori shift ecc . ecc.

si puo fare in tanti modi la sequenza

studia , studia , e studia e invece di sprecare il tempo a chiedere quello che nessuno ti dira' , prova , prova ,studia , sbaglia, rifai , ristudia e riprova

ciao

:D:D:D:D

Link al commento
Condividi su altri siti

Mauri+Oct 12 2002, 08:27 PM-->
CITAZIONE(Mauri @ Oct 12 2002, 08:27 PM)

Non penso che esista "il modo PIU' migliore", in ogni caso se non hai molta esperienza ti consiglierei di fare così:

1.Prima di sapere cosa deve fare la macchina chiedere cosa NON DEVE FARE assolutamente la macchina.Il che vuol dire che in "serie" alle uscite dovrai programmare tutte le condizioni di sicurezza indipendentemente dal ciclo automatico o comandi manuali.In questo modo hai la sicurezza di non fare danni, al limite non va! (esempio lo stampo non si abbassa se il carrello non è indietro, oppure la coclea di dosaggio non parte se lo scarico della bilancia non è chiuso)

2.Un uscita anche se comandata più volte nel ciclo deve essere programmata in un unico posto e non utilizzarla nei vari punti del programma.

3.Per quanto riguarda la sequenza prima di iniziare con istruzioni "complesse" (complesse nel senso che in fase di debug potrebbe essere un problema non conoscere a fondo l'istruzione o la funzione utilizzata) utilizzerei dei normali merker con le sole istruzioni set-reset.Tipo passo 1 = set m1.0, passo 2 =set m1.1......fine sequenza reset m1.0,m1.1.....

Questo sistema a mio avviso è valido anche se probabilmente richiede un impegno maggiore di memoria del PLC e un attenzione maggiore nel caso si debba cambiare o modificare il programma.

Ciao :)

Modificato: da NULL
Link al commento
Condividi su altri siti

se al posto di settare o resettare merker usi una word ??

tieni sotto mano meglio la sequenza , hai la possibilita di eseguire 65535

casi o fasi risparmiando 65519 bit ad ogni passo la incrementi o la decrementi se torni indietro e poi fai i controlli a seconda di quanto vale

ed in giro nel programma e' sempre lei , al posto di merker con tanti indirizzi diversi

prova

;)

Link al commento
Condividi su altri siti

Federico Milan

Walter bellissima la tua idea, ... unico mio problema è che sono in un teem di "anziano" e non posso imporre la mia idea ...

figurati che per introdurre le UDT ho dovuto sudare mille camice, per introdurrre i SPL sto ancora litigando ... per introdurre il simbolico ;-( ... behh ci sto lavorando ... ma in S5 si lavorava così male ?!? per fortuna che non lo conosco ... e per fortuna che ho incominciato subito con S7 300.

Walte se ti è possibile senza troppi dettagli o a tua descrizione mi potresti spiegare meglio come realizzi la struttura e come ti giostri con exel ?!?

Infatti sto cercando di imporre una struttura protetta e gestita a sequenze, parametrizzate su DB ... Quel che posso fare però è dare una struttura alle FB/FC che hanno aree mappate su DB, ma se ho capito bene quello che hai fatto e una stra.... fi...a ......

ciao

Link al commento
Condividi su altri siti

Federico Milan+Oct 30 2002, 07:58 AM-->
CITAZIONE(Federico Milan @ Oct 30 2002, 07:58 AM)

Anch'io sono curioso di come fai... e soprattutto mi manca un passaggio: non ho ben capito come fai il passaggio da excel al tuo linguaggio di programmazione. Lo esporti come file di testo e lo reimporti nell'editor???

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