Vai al contenuto
PLC Forum


Array


pineto

Messaggi consigliati

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: da Savino
Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

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 punta

2 - 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?

Link al commento
Condividi su altri siti

Dunque, supponiamo che la sequenza ha 4 passi:

1: avanti punta

2: rotazione oraria punta

3: rotazione antioraria punta

4: indietro punta

LAD 

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: da Savino
Link al commento
Condividi su altri siti

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 concetto

Con i simboli --( S )-- e --( R )-- intendi dire dei coils SET/RESET?... poi quanti pasi ha la sequenza solo 2, cioe':

1- uscita punta

2 - 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 passi

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

Era solo per inserire un contatto per passare tra un passo è un altro

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

Savino 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 passi

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.

Lo prendero come consiglio

Grazie mille

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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 errore

esempio1

esempio2

Link al commento
Condividi su altri siti

Sei sicuro che vuoi una spiegazione, perchè non mi sembra che quelle già fornite tu le abbia

considerate molto ?? :rolleyes:

Stai ancora programmando in FPWIN PRO come se fosse il vecchio programma NAIS, e questo

lo si può anche fare, ma non sfrutti molto la potenza della programmazione offerta da quest'ultimo...

Modificato: da alen
Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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 uscite

a rimenere a zero per tutto il tempo in cui l'ingresso di "Arresto di Emergenza" collegato a X1 e "Vero".

Link al commento
Condividi su altri siti

  • 5 weeks later...

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.

Link al commento
Condividi su altri siti

del_user_56966
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 programmatori

già formati ad adattarsi al modo di programmare del FPWIN PRO

Come 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

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