jumpier Inserito: 5 settembre 2003 Segnala Inserito: 5 settembre 2003 Ciao a tutti; dunque, sto utilizzando S7 v5.2 HF3 ed una cpu 318 2DP. In base a richieste del commitente ho dovuto appoggiare parecchie cicliche sui merker e, incredibile ma vero, sono quasi finiti !!!Dunque, l'idea era di apoggiare i merker per testare i fronti di salita (FP o FN) su variabili locali di ambiente. Insomma, tanto per intenderci su quelle variabili che si vedono tirando verso il basso il menù a tendina che è posto sotto il menù nella finestra KOP/AWL/FUP. Il problema è che mentre per gli FB esistono le variabili di tipo STAT (che dovrebbero essere statiche e cioè non si perde il loro contenuto da una scansione alla successiva), per gli FC nulla. E caso vuole che io ho quasi tutti FC ! Dunque, vorrei capire qualosa in più su come si usano e/o impostano le variabili create tramite tale menù e se è possibile aggirare il mio problema in qualche modo ... almeno per i fronti di salita/discesa.Grazie a tutti e buon lavoro.
wally Inserita: 5 settembre 2003 Segnala Inserita: 5 settembre 2003 Io utilizzo alcuni FC abbastanza piccoli, e comunque con poche variabili di appoggio,ed il problema dei fronti e degli appoggi a bit l'ho risolto in questa maniera :1- dichiari una variabile di tipo INT o DINT nei parametri IN-OUT della FC con un nome a piacere (tipo W_UTILIZZI_VARI)2- dichiari i tuoi fronti o appoggi a bit nel campo delle variabili TEMP con inizio 0.02- Appoggi la word o la dword dichiarata IN-OUT su dati locali nella primo segmento del programma L #W_UTILIZZI_VARI T LW 03- metti i segmenti del tuo programma4- nell'ultimo segmento dell'FC appoggi i dati locali su #W_UTILIZZI_VARI L LW 0 T #W_UTILIZZI_VARIfacendo questa procedura hai praticamente 16 bit con memoria, ovviamente nella dichiarazione IN-OUTdella FC metterai un DBW globale.Se invece hai bisogno di grandi quantita' di bit ti conviene convertire gli FC in FBCiaowally
cigo Inserita: 5 settembre 2003 Segnala Inserita: 5 settembre 2003 Se hai finito i merker perchè non apri una db (ad esempio la Db1) e usi i singoli bit dei Byte, cosicchè ottieni lo stesso risultato dei merker senza tirarti matto con le variabili nei FB o FC.Ti faccio un esempio banale: U E 0.0 // Quando questo ingresso va a 1S DB1.DBX 0.0 // Setti il bit 0 del byte 0 della Db1R DB1.DBX 0.1 // Resetti il bit 1 del byte 0 della Db1Ciao e Buon lavoro da Cigognani
beppeconti Inserita: 5 settembre 2003 Segnala Inserita: 5 settembre 2003 Come dice Cigo usi come appoggio per il fronte di salita o di discesa un bit di una DB qualsiasi.Esempio:U M1.0UN DB1.DBX0.0= DB1.DBX0.1 // questo è il fronte di salita di M1.0U M1.0= DB1.DBX0.0Ti conviene anche azzerare all'accensione del PLC i bit del DB1 utilizzati per i frontiCiao
jumpier Inserita: 5 settembre 2003 Autore Segnala Inserita: 5 settembre 2003 OK, grazie a tutti per le dritte. Forse quella che zzecca di più le mie necessità e richieste cliente è l'idea di "WALLY". Però a questo punto ancora una domandina: le variabili di IN-OUT devono essere azzerate ad ogni riavvio della CPU o si azzerano in automatico ogni volta che il processore transita dallo stato di STOP a RUN?Grazie a tutti.
wally Inserita: 5 settembre 2003 Segnala Inserita: 5 settembre 2003 Per avere delle FC slegate dai dati globali, cioe' che possono essere utilizzate piu' volte nello stesso programma e riutilizzabili in impianti diversi, la soluzione migliore e'lavorare con dati locali. Ovviamente se si vuole usare la programmazione nona norma IEC 1131, ma la programmazione tradizionale, si possono usare i bit di unaDB globale es. :U DB10.DBX0.OFP DB10.DBX0.1 (FP = FRONTE POSITIVO / FN = FRONTE NEGATIVO)= DB10.DBX0.2///per jumpierSe le variabili dichiarate come IN-OUT nella CALL della FC sono delle DB,le variabili mantengono il valore dell'ultima esecuzione del programma,non penso comunque che nel tuo caso devi azzerare la variabile, essendoappoggi di altre variabili (input o marker o uscite)ciaowally
paulus Inserita: 10 settembre 2003 Segnala Inserita: 10 settembre 2003 Va ricordato che il numero di byte (a parte la cpu 3182dp) dello stack dei dati locali e' di 256 byte. Se si supera questo valore nella somma delle variabili locali delle FC/FB richiamate, la cpu da' problemi (se non erro va in stop). Nella CPU 3182dp e' possibile aumentare questo valore a scapito di altri registri.
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