luppi24 Inserito: 23 febbraio 2005 Segnala Share Inserito: 23 febbraio 2005 Ciao!, vorrei sapere se e´ possibile con STEP 7 creare dei timer a t variabile, dove t invece che essere costante S5T#3S sia del tipo t=f(x,y) con x,y due variabili misurabili .in pratica mi servirebbe un timer nel quale idealmentre scrivere S5T#tS (t=f(x,y) ). Grazie a tutti. Link al commento Condividi su altri siti More sharing options...
Matteo Montanari Inserita: 23 febbraio 2005 Segnala Share Inserita: 23 febbraio 2005 (modificato) una soluzione di questo tipo era già stata richiesta...in quel caso si voleva utilizzare il dato rilevato da un ingresso analogico come variabile di impostazione tempo.utilizza la funzione cerca e trovi il risultato.consicerando che la varibile di tempo "S5T" è composta da una word a BCD dove vi è la base dei tempi ed il valore di conteggio...!!! Ma usare il manuale in linea fà così schifo ???ci sono anche esempi praticiuna volta che sai come viene gestita la varibile "S5T" accettata dai timer puo costrurti tutte le funzioni che vuoi per determinare il valore che desideri. Modificato: 23 febbraio 2005 da keosmm Link al commento Condividi su altri siti More sharing options...
luppi24 Inserita: 23 febbraio 2005 Autore Segnala Share Inserita: 23 febbraio 2005 grazie keosmm! ho gurdato i post precedenti sui contatori...e ci sono molti esempi in AWL....la cosa che non mi e´ chiara e´ come crearli in FUP, ho guardato sul manuale (non quello in linea) e c´é´la spiegazione dei vari puntatori ma non un esempio di come si creino in FUP.... Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 23 febbraio 2005 Segnala Share Inserita: 23 febbraio 2005 dvi scrivere in BCD dal bit 0 al bit 12 il valore del tuo calcolo (max 999)bit 13 14 è la base tempi00 =centesimi di sec01 =decimi di sec10 =sec11 decine di secbit 15 e 16 irrilevante (meglio comunque lasciarli a 0)comunque sul . in linea cerca :Tipo di dati S5TIMEed è tutto piu' chiaro Link al commento Condividi su altri siti More sharing options...
Matteo Montanari Inserita: 23 febbraio 2005 Segnala Share Inserita: 23 febbraio 2005 Il linguaggio FUP non è tanto utilizzato, normalmente si utilizza il KOP ed AWL (stiamo parlando di Siemens, con altre tipologie di prodotti, i nomi sono differenti, ed il lingauggio "FUP" non è supportato).comunqueper passare dal linguaggio AWL al linguaggio KOP, e quindi interpretabile anche in FUP occorre utilizzare memorie di appoggio (magari anche solomente temporanee, senza nessuna dichiarazione).questo è necessario per poter far comprendere al compilatore cosa e come deve tradurre il segmento.FUNCTION "Timer" : VOID TITLE =Prove e Vari AUTHOR : Keos FAMILY : Keos VERSION : 0.1 VAR_TEMP Valore_DEC : INT; Valore_BCD : INT; Valore_BCD_word : WORD; BaseTempo : INT; BaseTempo_word : WORD; SpTimer : S5TIME; SpTimer_word : WORD; END_VAR BEGIN NETWORK TITLE =impostazione valore 0..999 su timer AWL // Come impostare un valore 0..999 su di un timer //; // Il valore, come detto, deve essere compreso tra // 0 e 999, in base alla base dei tempi si determina // la durata del tempo //; // Il valore deve essere espresso in BCD. //; // Nel caso in cui il valore sia in decimale // occorre fare una conversione: //; L #Valore_DEC; ITB ; T #Valore_BCD; //; // La base dei tempi può assumere 4 diversi valori // = 0 calcolo della durata in 0.01 sec // = 1 calcolo della durata in 0.1 sec // = 2 calcolo della durata in 1.0 sec // = 3 calcolo della durata in 10.0 sec //; // = 3 calcolo della durata in 10.0 sec //; L W#16#3000; T #BaseTempo; //; // Unione tra Base tempo e valore di tempo //; L #Valore_BCD; L #BaseTempo; OW ; T #SpTimer; //; NETWORK TITLE =impostazione valore 0..999 su timer KOP / FUP U( ; U( ; U( ; L #Valore_DEC; ITB ; T #Valore_BCD_word; UN OV; SAVE ; CLR ; U BIE; ) ; SPBNB _005; L W#16#3000; T #BaseTempo_word; SET ; SAVE ; CLR ; _005: U BIE; ) ; SPBNB _006; L #Valore_BCD_word; L #BaseTempo_word; OW ; T #SpTimer_word; SET ; SAVE ; CLR ; _006: U BIE; ) ; SPBNB _007; L #SpTimer_word; T #SpTimer; _007: NOP 0; END_FUNCTIONho riportato un esempio (Sorgente AWL) di quello che dovrebbe servirti.nel primo segmento è impostato come linguaggio AWLnel secondo segmento sono le stesse operazioni ma in linguaggio KOP e/o FUPspero ti renda le cose più semplici da capire.(in awl puoi eseguire ogni operazione, fregandotene di come la varibile è dichiarata (l'errore lo vedi solamente nel risulatato) in Kop o Fup devi dichiarare la variabile come vuole il "blocco/funzione" in caso contrario il compilatore non l'accetta, segnandola in rosso). Link al commento Condividi su altri siti More sharing options...
luppi24 Inserita: 23 febbraio 2005 Autore Segnala Share Inserita: 23 febbraio 2005 [at]steu: con i contatori non ho problemi. ... e´ con il puntatore che ne ho Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 23 febbraio 2005 Segnala Share Inserita: 23 febbraio 2005 con i contatori non ho problemi. ... e´ con il puntatore che ne ho Scusa ma non capisco cosa vuoi dire Link al commento Condividi su altri siti More sharing options...
luppi24 Inserita: 23 febbraio 2005 Autore Segnala Share Inserita: 23 febbraio 2005 devo crearmi un contatote a t variabile.....il tempo viene calcolato da una funzione f(x,y) dove x e y sono due variabili che misuro.il mio problema e´ crearmi un contatore nel quale posso mettere un tempo variabilie e non fisso.Per fare ciö vorrei, una volta calcolato t=f(x,y) inserirlo nel timer (al posto della scrittura S5time) tramite un puntatore.la mia idea era:1-calcolarmi il valore t=f(x,y) ..................gia fatto2-mandare t ad un timer con un puntatore ..........non sono riuscito a farlospero di essere stato chiaro e poco casinista Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 23 febbraio 2005 Segnala Share Inserita: 23 febbraio 2005 Scusami ma devi spiegarti meglio2-mandare t ad un timer con un puntatoredevi puntare il timer?spiegati meglio non capisco Link al commento Condividi su altri siti More sharing options...
luppi24 Inserita: 23 febbraio 2005 Autore Segnala Share Inserita: 23 febbraio 2005 allora supponiamo di avere una pompa che deve svuotare un serbatoio, voglio azionare questa pompa per un tempo t variabile quando raggiungo il livello max.sia qu la portata costante della pompa quando e´ attivatasia qi la portata variabile in entrata (nota perche´ la misuro)sia A la superficie del serbatoiosia dh la differenza tra livello max e min voluti nel serbatoio.La pompa la attivo per un certo tempo t dato da t= (dh*A)/(qi-qu) variabile perche´ qi varia.il mio problema e´: una volta calcolato il mio t come metterlo dentro un timer?la mia idea era calcolarmi il t per mezzo delle solite operazioni ottenendo il risultato in MW100 x esempio e poi mettere dentro il timer al posto tale valore nel TW.....ma questa ultima operazione non so come farla(io uso il linguaggio FUP)spero che sta volta sia chiaro senno´ significa che mi sto rincoglionendo....se non lo sono giä Link al commento Condividi su altri siti More sharing options...
luppi24 Inserita: 23 febbraio 2005 Autore Segnala Share Inserita: 23 febbraio 2005 io ho fatto cosi´........e´ solo un esempio x vedere cosa succede, non corrisponde al vero e proprio azionamento della pompa come nel precedente esempio...infatti ho messo tutte variabili per poi cambiarle inPLCSIM e vedere cosa succede.che ne dite? si accetta il lancio di: babane pomodori cachi.... ma non barbabietole che fanno male ho chiamatoMW1= area serbatoioMW20= differenza livello max e livello minMW40= MW1*MW20MW60=quMW80=qiMW100= qu-qiMW120=tnetwork1 U( O E 0.0 O E 0.1 ) SPBNB _003 L MW 1 L MW 20 *I T MW 40_003: NOP 0network2 L MW 60 L MW 80 -I T MW 100 NOP 0network3 L MW 40 L MW 100 /I T MW 120 NOP 0network4 U E 0.2 L MW 120 SV T 1 NOP 0 NOP 0 NOP 0 NOP 0 Link al commento Condividi su altri siti More sharing options...
luppi24 Inserita: 23 febbraio 2005 Autore Segnala Share Inserita: 23 febbraio 2005 questo programma mi va bene....il problema e´ che per tempi superiori ai 100ms si intoppa e non va.....e devo fare come diceva saggiamente keosmm.....sto vedendo in FUP come cavolo si fa..... Link al commento Condividi su altri siti More sharing options...
OB1-Roby Inserita: 23 febbraio 2005 Segnala Share Inserita: 23 febbraio 2005 (modificato) Se ti può essere utile (il timer è espresso in secondi):L DB10.DBW0 //valore del timer f(x,y)ITBL W#16#2000OWT LW0....L LW0SE T10U T10.....Ciao Modificato: 23 febbraio 2005 da OB1-Roby Link al commento Condividi su altri siti More sharing options...
Matteo Montanari Inserita: 23 febbraio 2005 Segnala Share Inserita: 23 febbraio 2005 (modificato) prendi il segmento 2 dell'esempio che ti ho postato prima...volendo inserisci i tuoi valori, ed altri aggiunti per ottenere la corretta visualizzazioneti diventa una cosa del genere: U( U( U( L MW 120 ITB T MW200 UN OV SAVE CLR U BIE ) ; SPBNB _005; L W#16#3000; T MW202 SET SAVE CLR _005: U BIE ) SPBNB _006 L MW200 L MW202 OW T MW204 SET SAVE CLR _006: NOP 0dopo di che utilizzi il "tuo" timernetwork4U E 0.2L MW 204SV T 1NOP 0NOP 0NOP 0NOP 0ricordati che la base dei tempi (MW202) deve avere le seguenti caratterisitche:// La base dei tempi può assumere 4 diversi valori// = 0 calcolo della durata in 0.01 sec// = 1 calcolo della durata in 0.1 sec// = 2 calcolo della durata in 1.0 sec// = 3 calcolo della durata in 10.0 sec Modificato: 23 febbraio 2005 da keosmm Link al commento Condividi su altri siti More sharing options...
luppi24 Inserita: 24 febbraio 2005 Autore Segnala Share Inserita: 24 febbraio 2005 grazie mille a tutti![at]keosmm: ho fatto come hai detto e va tutto bene..... mi resta pero´ da capire come costruire in FUP la sequenza che hai fatto te per impostare il timer.... anche perche´ sa STL a FUP la tua sequenza non me la converte.... Spero di poter un giorno ricambiare tutte e gentilezze che sto ricevendo in questo Forum.davide Link al commento Condividi su altri siti More sharing options...
luppi24 Inserita: 24 febbraio 2005 Autore Segnala Share Inserita: 24 febbraio 2005 finalmente ce l´ho fatta pure in FUP .....mi sono preso il manuale in STL e mi sono "tradotto" in FUP tutte le funzioni che avete scritto in STL............ora funziona!!! ooooooooooole´!!! Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 24 febbraio 2005 Segnala Share Inserita: 24 febbraio 2005 posso farti una domanda luppi24. Ma qualcuno (il cliente?) ti ha imposto di usare FUP?Io penso che un software, se funziona, non importa in che linguaggio sia scritto. Decidere che tipo di linguaggio utilizzare è conseguenza di diversi fattori:1) Richiesta esplicita del cliente (ove possibile)2) Complessità dell'istruzione o insieme di istruzioni (spesso è preferibile AWL piuttosto che KOP o FUP) 3) Comprensibilità dell'istruzione o insieme di istruzioni (spesso è più chiaro il KOP o il FUP dell'AWL)4) Semplicità del debug (e qui credo che dove si utilizza una qualche grafica è preferibile agli 1 e 0 dell'RLC)5) In alcuni casi anche risparmio di memoria (mi viene in mente il fare operazioni a byte che il KOP non supporta "obbligando" l'uso delle word)Ecco perchè non capisco e sono curioso del tuo accanimento su sto FUP (peraltro usatissimo in Germania e Francia) Link al commento Condividi su altri siti More sharing options...
Matteo Montanari Inserita: 24 febbraio 2005 Segnala Share Inserita: 24 febbraio 2005 mi resta pero´ da capire come costruire in FUP la sequenza che hai fatto te per impostare il timer....strano perchè io l'ho scritta direttamente in kop e tradotta in FUP senza avere nessun problema.visto che però ci sei riuscito ugualmente me ne rallegro...Ma qualcuno (il cliente?) ti ha imposto di usare FUP?da quello che ha affermato luppi24 in altre discussioni non ha nessun cliente ed è ancora uno studiando...che poi si voglia dare le classiche martellate sui maro.i ed utilizzare il FUP penso che siano fatti suoi...anche se leggendo in altri post mi sembra di aver capito che ora è in Cermania...per quanto rigurada i vari linguaggi di programmazione, sono tutti utili e comprensibili, chiaramente con un linguaggio "aperto" come può essere AWL non hai vincoli, e ti è permesso di fare molte più oprazioni senza nessun obbligo, il rovescio della medaglia e che hai maggior possibilità di sbagliare a combinare fra loro le varibili (magari con formato diverso). Link al commento Condividi su altri siti More sharing options...
luppi24 Inserita: 25 febbraio 2005 Autore Segnala Share Inserita: 25 febbraio 2005 Io sto facendo la tesi in germania in una azienda e il FUP mi e´ stato imposto ......per me il PLC e´ una cosa nuovissima (ci trabaccolo da meno di 2 mesi) e non sapevo nemmeno ci fossero 3 linguaggi x programmare in Step 7 .....da quel poco che ho visto il FUP e´ piu´ intuitivo (almeno per me che faccio meccanica) perö AWL e´ migliore sia per liberta´ che per pluralita´ delle funzioni....comunque resta il parere mio personale e di uno assolutamente non esperto..... per non sbagliarmi e per restare meno ignorante sto cominciando a leggermi anche il manuale in AWL poi vuoi mai che un domani mi trovo meglio ed uso quello. Link al commento Condividi su altri siti More sharing options...
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