Savino Inserita: 23 settembre 2007 Segnala Inserita: 23 settembre 2007 (modificato) Per quello che ho capito dal tuo ladder... se per il LATCH utilizzi il metodo SET/RESET allora no sarebbe neccessario l'autoritenuta (OR).. poi la memora READY viene disegnata come NO ( --[ ]-- ) piuttosto.. se questa ha uno stato TRUE allora chiude la catena. Modificato: 23 settembre 2007 da Savino
pineto Inserita: 23 settembre 2007 Autore Segnala Inserita: 23 settembre 2007 Savinoscusami ai ragione sui blocchi uscita il contatto READY va cambiato.Ho cercato di aeseguire un screenshot ma il file e piu di 500KB comunque ho allegato unfile in fomato .txt per renderlo piu visibile possibile con una reve descrizione di cme intendo gestire l'intero programma.Vorrei sapere se quello che ho capito e stato autoappreso in modo corretto, per tanto accetto qualsiasi tipo di commento o di consiglio.
Savino Inserita: 23 settembre 2007 Segnala Inserita: 23 settembre 2007 Ho visto l'allegato!Comunque, anche se questo ladder potrebbe di qualche maniera funzionare, il blocco 2 (la sequenza), non sembra molto lineare.. e sarebbe piuttosto magra come richezza di codice..Potrei darti dei consigli, ma per primo avrei bisogno di qualche chiarimento...Con i simboli --( S )-- e --( R )-- intendi dire dei coils SET/RESET?... poi quanti pasi ha la sequenza solo 2, cioe':1- uscita punta2 - rotazione punta..?Poi, per segnalare che la punta e' avanti hai il FC_PUNTA_AVANTI e per segnalare che la punta ha ruotato hai il FC FC_USCITA_PUNTA o cosa ?? Il tuo selettore AUTO quanti contatti commanda, solo 1? Hai anche i movimenti in manuale?
Savino Inserita: 23 settembre 2007 Segnala Inserita: 23 settembre 2007 (modificato) Dunque, supponiamo che la sequenza ha 4 passi:1: avanti punta2: rotazione oraria punta3: rotazione antioraria punta4: indietro puntaLAD Blocco 1 : gestione emergenza - automatico e manuale ----------------------------------------------------- Macchina Pronta PS_RIPRISTINO PS_EM1 PS_EM2 PS_EM3 M_READY | +------[ ]------+-------[ ]------[ ]-------[ ]--------------( )---+ | | | | | M_READY | | | +------[ ]------+ | Automatico in corso PS_START_CICLO_AUTO SEL_AUTO SEL_MAN M_READY M_AUTO_IN_CORSO | +------[ ]------+-------[ ]-------[/]-------[ ]-------------( )---+ | | | | |M_AUTO_IN_CORSO| | | +------[ ]------+ | Manuale in corso SEL_MAN SEL_AUTO M_READY M_MAN_IN_CORSO | +------[ ]--------------[/]-----------------[ ]-------------( )---+ | | | | | =========================================================================== Blocco 2 : gestione sequenza ---------------------------- Commandi eseguiti ----------------- Memoria commando avanti punta eseguito Y0_AVANTI_PUNTA FC_PUNTA_AV M_AV_PUNTA_ESG | +------[ ]------------------------[ ]---------------------(S)---+ | | | Memoria commando rotazione oraria punta eseguito Y2_ROT_OR_PUNTA FC_PUNTA_ROT_OR M_ROT_OR_PUNTA_ESG | +------[ ]------------------------[ ]----------------------(S)---+ | | | Memoria commando rotazione antioraria punta eseguito Y3_ROT_ANTOR_PUNTA FC_PUNTA_ROT_ANTOR M_ROT_ANTOR_PUNTA_ESG | +------[ ]------------------------[ ]----------------------(S)---+ | | | Memoria commando indietro punta eseguito Y1_INDIETRO_PUNTA FC_PUNTA_IND M_IND_PUNTA_ESG | +------[ ]------------------------[ ]----------------------(S)---+ | | | Sequenza eseguita M_AV_PUNTA_ESG M_ROT_ANTOR_PUNTA_ESG M_ROT_ANTOR_PUNTA_ESG M_IND_PUNTA_ESG M_RESET_SQ | +------[ ]-----------------[ ]---------------------[ ]---------------[ ]--------------(S)---+ | | Reset M_RESET_SQ M_AV_PUNTA_ESG | +------[ ]-----------------------------------------+-------(R)-----+---+ | | | | |M_ROT_ANTOR_PUNTA_ESG | | | | +-------(R)-----+ | | | | |M_ROT_ANTOR_PUNTA_ESG | | | | +-------(R)-----+ | | | | |M_IND_PUNTA_ESG| | | | | +-------(R)-----+ | | | | | M_RESET_SQ | | | | +-------(R)-----+ Richiesta di commandi ----------------------- Memoria commando avanti punta M_AUTO_IN_CORSO M_AV_PUNTA_ESG M_AV_PUNTA | +------[ ]------------------------[/]---------------------( )---+ | | | | | M_AV_PUNTA | | | +------[ ]------+ | | Memoria commando rotazione oraria punta M_AV_PUNTA_ESG M_ROT_OR_PUNTA_ESG M_ROT_OR_PUNTA | +------[ ]-----------------------[/]----------------------( )---+ | | | | Memoria commando rotazione antioraria punta M_ROT_OR_PUNTA_ESG M_ROT_ANTOR_PUNTA_ESG M_ROT_ANTOR_PUNTA | +------[ ]---------+--------------[/]----------------------( )---+ | | | Memoria commando indietro punta M_ROT_ANTOR_PUNTA_ESG M_IND_PUNTA_ESG M_IND_PUNTA | +------[ ]------------------------[/]----------------------( )---+ | | =========================================================================== Blocco 3 : gestione uscite ----------------------------- Movimento Avanti punta .. M_AUTO_IN_CORSO M_AV_PUNTA Y0_AVANTI_PUNTA | +---[ ]-----------------[ ]--------------+------------------( )---+ | | | | | | | | | | |M_MAN_IN_CORSO M_AV_MAN | | | +---[ ]-----------------[ ]--------------+ | Movimento Indietro punta.. M_AUTO_IN_CORSO M_IND_PUNTA Y1_INDIETRO_PUNTA | +---[ ]-----------------[ ]--------------+------------------( )---+ | | | | | | | | | | |M_MAN_IN_CORSO M_IND_MAN | | | +---[ ]-----------------[ ]--------------+ | Movimento Avanti punta .. M_AUTO_IN_CORSO M_ROT_OR_PUNTA Y2_ROT_OR_PUNTA | +---[ ]-----------------[ ]--------------+------------------( )---+ | | | | | | | | | | |M_MAN_IN_CORSO M_ROT_OR_PUNTA_MAN | | | +---[ ]-----------------[ ]--------------+ | Movimento Indietro punta.. M_AUTO_IN_CORSO M_ROT_ANTOR_PUNTA Y3_ROT_ANTOR_PUNTA | +---[ ]-----------------[ ]--------------+------------------( )---+ | | | | | | | | | | |M_MAN_IN_CORSO M_ROT_ANTOR_PUNTA_MAN | | | +---[ ]-----------------[ ]--------------+ |Come detto nel post precedente, questa sarebbe una indicazione di massima per segnalarti una via ordinata di stesura del ladder, per una sequenza di 4 passi . Poi, ce ne sono tantissime altre linee di codice da aggiungere tipo i controlli per la posizione logica in partenza di ogni movimento, gestione delle allarme, tempo di controllo per la esecuzione dei movimento e via elencando. Anche tra la esecuzione di ogni passo, si potrebbe aggiungere un tempo di ritardo (ad esempio 100 ms) per fare in modo che il passo da eseguirse non avvenga immediatamente quando la posizione viene raggiunta senon appena dopo. Comunque, le memorie di passo potrebbero venire resetate a fine sequenza oppure volendo tra passo e passo... ma devi cambiare il codice pero'.. anche per la diterminazione dei commandi eseguiti,non sono state presi degli input di retroazione per indicare che il telerruttore od azionamento era stato inserito senon direttamente l'uscita Yx, ma come didattica, va bene cosi. Modificato: 23 settembre 2007 da Savino
pineto Inserita: 24 settembre 2007 Autore Segnala Inserita: 24 settembre 2007 Comunque, anche se questo ladder potrebbe di qualche maniera funzionare, il blocco 2 (la sequenza), non sembra molto lineare.. e sarebbe piuttosto magra come richezza di codice..Il programma che ti ho allegato era solo una bozza di quello che devo fare il programma che ho realizzato e molto piu lineare,quelle due righe che ho realizzato era solo per capire se avevo afferrato il tuo concettoCon i simboli --( S )-- e --( R )-- intendi dire dei coils SET/RESET?... poi quanti pasi ha la sequenza solo 2, cioe':1- uscita punta2 - rotazione punta..?Si! con i simboli --( S )-- e --( R )-- intendo dire SET/RESET.Il programma ha circa 15 passi,come dicevo prima ho realizzato una bozza di come dovrebbero essere gestiti i passiPoi, per segnalare che la punta e' avanti hai il FC_PUNTA_AVANTI e per segnalare che la punta ha ruotato hai il FC FC_USCITA_PUNTA o cosa ??Era solo per inserire un contatto per passare tra un passo è un altroPoi, ce ne sono tantissime altre linee di codice da aggiungere tipo i controlli per la posizione logica in partenza di ogni movimento, gestione delle allarme, tempo di controllo per la esecuzione dei movimento e via elencandoSavino mi potresti descrivere in breve qualche linea di codice ad esempio quelle che mi ai elencato,se non chiedo troppo alla tua generositàAnche tra la esecuzione di ogni passo, si potrebbe aggiungere un tempo di ritardo (ad esempio 100 ms)Nell'esempio che ho allegato non li o messi ma sul programma originale avevo gia inserito dei ritartdi tra i passiComunque, le memorie di passo potrebbero venire resetate a fine sequenza oppure volendo tra passo e passo... ma devi cambiare il codice pero'.. anche per la diterminazione dei commandi eseguiti,non sono state presi degli input di retroazione per indicare che il telerruttore od azionamento era stato inserito senon direttamente l'uscita Yx, ma come didattica, va bene cosi.Lo prendero come consiglioGrazie mille
Savino Inserita: 24 settembre 2007 Segnala Inserita: 24 settembre 2007 Savino mi potresti descrivere in breve qualche linea di codice ad esempio quelle che mi ai elencato,se non chiedo troppo alla tua generosità Gia' fatto sul post precedente!! l'esempio sarebbe per una sequenza di 4 passi. Vedi di estendere il codice seguendo lo stesso principio, per una sequenza di 15 passi.
pineto Inserita: 24 settembre 2007 Autore Segnala Inserita: 24 settembre 2007 Ho allegato due screenshot di alcuni esempi dove ho riscontrato alcune imprecisione che non sono riuscito a capire vi prego di dargli uno squardo, e farmi verificare se ho realizzato bene la funzione ho se sono stato io che ho commesso qualche erroreesempio1esempio2
pineto Inserita: 24 settembre 2007 Autore Segnala Inserita: 24 settembre 2007 Scusate ma c'è un errore sull'esempio1esempio1
del_user_56966 Inserita: 24 settembre 2007 Segnala Inserita: 24 settembre 2007 (modificato) Sei sicuro che vuoi una spiegazione, perchè non mi sembra che quelle già fornite tu le abbiaconsiderate molto ?? Stai ancora programmando in FPWIN PRO come se fosse il vecchio programma NAIS, e questolo si può anche fare, ma non sfrutti molto la potenza della programmazione offerta da quest'ultimo... Modificato: 24 settembre 2007 da alen
pineto Inserita: 25 settembre 2007 Autore Segnala Inserita: 25 settembre 2007 Alen ti chiedo pazienza, ma sono passato da poco al nuvo software FPWIN PRO. Rispetto al vecchi credevo che le cose erano molto simili invece sembra il contrario, tu come avresti realizzato i due blocchi funzione.Soprattutto l'esempio2 te ne sarei veramente grato se mi alleghi un piccolo esempio dei due allegati.Grazie mille
del_user_56966 Inserita: 26 settembre 2007 Segnala Inserita: 26 settembre 2007 Non puoi utilizzare l'ingresso Enabled per resettare le uscite,devi pensare a quest'ingresso come una abilitazione logica, non come una vecchia linea di alimentazione ladder...Enabled su false non fa altro che disabilitare la funzione congelandola!Per utilizzare una funzione con Enabled questo deve essere "Vero"le uscite le puoi azzerare come ti avevo già spiegato semplicemente mettendo a zero la relativa Word (WY). Come vedi nell'esempio semplicemente facendo un Move -F0 ( e nel tuo caso un F11 per più word) costringo le uscitea rimenere a zero per tutto il tempo in cui l'ingresso di "Arresto di Emergenza" collegato a X1 e "Vero".
Stucci Inserita: 25 ottobre 2007 Segnala Inserita: 25 ottobre 2007 Come ha già scritto alen, l' enable serve per abilitare la funzione. Portando l' enable a zero se la bobina è eccitata resta eccitata. E' per questo motivo che l' esempio 1 ti da errore, perchè la seconda funzione dipenderebbe dall' enable della prima e non è permesso.E comunque porta un pò di pazienza, una volta che impari per bene il PRO non ne puoi fare a meno.
del_user_56966 Inserita: 28 ottobre 2007 Segnala Inserita: 28 ottobre 2007 una volta che impari per bene il PRO non ne puoi fare a meno.Questo è vero.... anche se noto un forte problema di adattamento nei programmatorigià formati ad adattarsi al modo di programmare del FPWIN PROCome paragone direi che si nota una similitudine,come tra chi è abituato ad utilizzare il C oppure il VB6 e chi prova a programmare in C++ oppure in .NET
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora