simon Inserito: 5 luglio 2007 Segnala Share Inserito: 5 luglio 2007 Ciao a tutti . Sto programmando per la prima volta un plc Siemens Cpu 315 Dp utilizzando il linguaggio Kop in quanto ho sempre programmato plc della omron . Mi sto trovando di fronte ad un problema credo di facile risoluzione ma a quanto sembra non per me! Debbo impostare il valore di un temporizzatore tramite una variabile la quale a sua volta viene scritta tramite un pannello operatore . mi potete aiutare su cosa debbo scrivere sulle impostazioni del timer ...Grazie a tutti Link al commento Condividi su altri siti More sharing options...
setecastronomy Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 Stavo per postare una domanda del tutto simile.La soluzione molto laboriosa che ho trovato io è la seguente (in awl e 'a memoria')L MW 190 // carico la word impostata da pannelloITB // converto in BCDL w#16#2000 // byte più significativo con '2', ovvero base dei tempi in secondi+IT MW 192 // valore preset timer A I 7.0 // condizione attivazione timerL MW 192SP T 1Francamente mi sembra un po' troppo complicato visto che con altri plc posso scrivere qualcosa del tipo:Move word 120 to T1.preset // word 120 contiene il valore impostato da pannelloEsiste un modo più facile ? Ho poi delle difficoltà a capire l'ordine delle operazioni awl per far partire il timer.Sugli esempi trovo sempre A poi L poi SP (o qualche altra modalità).Sarebbe lo stesso fare L poi A e poi SP ?SalutiFilippo Link al commento Condividi su altri siti More sharing options...
Simone70 Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 E' sufficente scrivere il valore del tempo in formato S5T#..... Il valore del tempo può essere una costante o una DBW di una qualsiasi DB. Esempio con costanteU E 0.0L S5T[at]500msSE T 0U T 0= A 10.0Esempio con tempo variabileU E 0.0L DB1.DBW 0SE T 0U T 0= A 10.0I due esempi, in AWL, usano un temporizzatore SE con ritardo all'insersione; l'uscita A10.0 si attiverà con un tempo di ritardo di rispetto all'ingrsso E0.0 e rimarrà attiva finchè l'ingresso sarà attiva. Esistono altri tipi di temporizzatori che potete vedere sull'. dell'S7. Nel caso di simon basterà creare sul pannello operatore un campo di impostazione in formato timere dove si va a modificare la DB1.DBW0 (esempio 2) ed il gioco è fatto. Link al commento Condividi su altri siti More sharing options...
Cesare Nicola Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 Nel caso di simon basterà creare sul pannello operatore un campo di impostazione in formato timere dove si va a modificare la DB1.DBW0 (esempio 2) ed il gioco è fatto.Non sempre i pannelli hanno un formato timer, però: ESA per esempio, che ho utilizzato spesso, non ce l'ha. Io ho sempre fatto come "setecastronomy", salvo che i bit della base dei tempi li impostavo direttamente con SET o RESET anzichè con un trasferimento.Ciao Link al commento Condividi su altri siti More sharing options...
Renzo R. Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 Ho poi delle difficoltà a capire l'ordine delle operazioni awl per far partire il timer.Sugli esempi trovo sempre A poi L poi SP (o qualche altra modalità).Sarebbe lo stesso fare L poi A e poi SP ?Il timer lo imposti con il contenuto di ACC1.Puoi quindi fare l'operazione di caricamento quando vuoi, oppure se hai diversi timer con lo stesso valore caricare il tempo una volta solo.Viene solitamente messo prima del settaggio per chiarezza e per evitare di andare ad aggiungere in fase di modifica un caricamento di qualcosa frapposto tra il tempo del timer e il settaggio dello stesso, provocando spiacevoli stop del PLC.Relativo alla domanda iniziale :Se specifichi anche il tipo di pannello forse qualcuno ti puo' dare indicazioni piu' mirate.Ciao. Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 Debbo impostare il valore di un temporizzatore tramite una variabile la quale a sua volta viene scritta tramite un pannello operatore .Quale range e risoluzione? Link al commento Condividi su altri siti More sharing options...
Lucam Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 Soluzione elegante funzionante con qualsiasi pannello o SCADA:- definire variabile DINT nel PLC su cui scrive pannello o scada (nell'esempio sotto Dati_Superv.Impianto.TEMPI.T3_Minuti)- Usare funzione TIM_S5TI(IN :=DINT_TO_TIME(Dati_Superv.Impianto.TEMPI.T3_Minuti*60000)); (scusate se è in SCL, ma io lo amo......potete usarla in qualsiasi altro linguaggio).- Qui il DINT lo converto automaticamente in minuti , ma se volete potete evitare di moltiplicare per 60000 e rimane in millisecondi, o moltiplicare per 1000 e avrete il set in secondi o qualsiasi altra unità..... Link al commento Condividi su altri siti More sharing options...
Luca Bab Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 Qui il DINT lo converto automaticamente in minuti , ma se volete potete evitare di moltiplicare per 60000 eNon credo sia cosi' sempliceIl formato S5time è così composto:byte n:bit 0-1-2-3 = 3° cifra del valore di tempo in bcdbit 5-4 = scala dei tempi 0-0 = 0,01s / 0-1 = 0,1s / 1-0 = 1s / 1-1 = 10sbit 6-7 = non usatobyte n+1:bit 0-1-2-3 = 1° cifra del valore di tempo in bcdbit 4-5-6-7 = 2° cifra del valore di tempo in bcdquesto e' quanto scritto da qualcuno del forum ( non ricordo piu' chi )ed e' funzionante ( usato spesso come guida )CiaoLuca Link al commento Condividi su altri siti More sharing options...
Lucam Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 gentile Luca BabTu puoi anche credere che non sia così semplice, ma io ho decine di impianti con questo codice che gira e al momento nessun operatore mi ha chiamato perchè non riesce a modificare i tempi. Che nessun abbia mai provato a cambiare un set temporale?Forse non sai leggere il codice o i manuali Siemens. La funzione che uso ( TIM_S5TI) serve proprio per evitare l'impacchettamento di basso livello che tu riporti e che si trova sulla documentazione S7. Certo che se uno si vuole complicare la vita anche quando è semplice non c'è nessun problema.C'è chi va da Verona a Roma facendo la statale fino a Parma poi fino a pistoia, poi giù per il lungomare ed eccoci alla città eterna.Altri invece passano per l'autostrada....... Link al commento Condividi su altri siti More sharing options...
Luca Bab Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 Tu puoi anche credere che non sia così semplicenon ti agitare , non e' costruttivo , non dicevo che non funziona , ma che non e' cosi sempliceLa funzione che uso ( TIM_S5TI)e' la conversione da time a s5time , e mi sembra che non sia la cosa piu' semplice e comoda da usare :1) Il formato TIME e' un 32bit ( S5time e' 16bit ) ( spreco di spazio ) 2) Il formato TIME arriva a T#24D_20H_31M_23S_648MS ( S5time a 2H_46M_30S_0MS ) ( possibilita' di errore in conversione ) 3) Il formato time e' praticamente un doppio intero in millisecondi , quindi obblighi un'operatore ad inserire 3 minuti e 25 secondi come 3x60.000 + 25 x 1000 ( se lo chiedo di inserire ad un meccanico mi spara ) 4) Se conosci bene Siemens , certi blocchi li eviti e ti scrivi 2 righe di codice ( sicuramente molto piu' veloce e meno assetato di risorse )CiaoLuca Link al commento Condividi su altri siti More sharing options...
Lucam Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 Agitato? Non so a cosa ti riferisci.Sul punto due posso darti ragione se uno non mette dei limiti nella variabile scada o pannello.Sul punto 3 lo gestisco con set in secondi o minuti a seconda di cosa serve (l'esempio che ti avevo riportata infatti risporta un set in minuti). A me non capita che uno vuole 46 minuti e 53 secondi nel timer."Spreco di spazio e assetato di risorse molto più veloce": ho capito sei uno della vecchia guardia che scrive solo in AWL.....sempre e comunque. In effetti se uso una decina di istruzioni spreca risorse TIM_S5TI su un 315-2DP con dentro un programma di 35k magari il ciclo medio di 15 millisecondi mi peggiora di quei 100 microsecondi che fanno incavolare il cliente.....Scusa non volevo irritarti con la mia risposta... è una questione di "filosofia". Ho tanti amici che la vedono e pensano come te e con cui discuto spesso magari davanti a un bicchiere di valpolicella. Andando al cuore del problema, con un esempio limite, è come se tutti i programmatori di PC adesso dovessero ancora programmare in assembler e non usare un linguaggio evoluto perchè le risorse del linguaggio le decide e alloca il compilatore che sicuramente non ottimizza come loro.......Lo capisco e accetto solo da chi programma motion control o impacchettamento......Ciao e scusa se la mia risposta precedente non era completamente "polite" Link al commento Condividi su altri siti More sharing options...
Luca Bab Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 Agitato? Non so a cosa ti riferisci.gentile Luca Bab notavo una vena ironica , ma forse ho sbagliatoScusa non volevo irritarti con la mia rispostaassolutamente non irritato capito sei uno della vecchia guardia che scrive solo in AWLno , assolutamente dove posso e ne vale la pena preferisco di gran lunga il KOPA me non capita che uno vuole 46 minuti e 53 secondi nel timer.siccome chi ha fatto la richiesta di aiuto non ha specificato molto , la possibilita' di questa necessita puo' esserciIn effetti se uso una decina di istruzioni spreca risorse TIM_S5TI su un 315-2DP con dentro un programma di 35k magari il ciclo medio di 15 millisecondi mi peggiora di quei 100 microsecondi che fanno incavolare il cliente.....se con 35K giri a 15milli ne hai fatti altri di sprechi , comunque e' come dici tu e' una questione di filosofia , poiche' spreca oggi , spreca domani , per aggiungere una piccola cosa ti serve una CPU piu' grossa ( e magari sei dal cliente ad installare una macchina )Personalmente 15milli ( medio , non massimo ) sono veramente tanti , per te no , Solitamente da pannello operatore gestisco un centinaio di timer , tu solo 10 quindi bisogna analizzare caso per caso .Ciao e scusa se la mia risposta precedente non era completamente "politeok , non ce ne era bisogno CiaoLuca Link al commento Condividi su altri siti More sharing options...
Savino Inserita: 6 luglio 2007 Segnala Share Inserita: 6 luglio 2007 (modificato) ...utilizzando il linguaggio Kop..Debbo impostare il valore di un temporizzatore tramite una variabile la quale a sua volta viene scritta tramite un pannello operatore Nel'esempio di sotto, la MW170 riceve il tempo di Set in un range 0 - 999 secondi (16 minuti e 39 sec.), con una risoluzione di 1 sec. dal tag in formato Decimale del HMI.. impostando il tempo nella MW180 per il timer T1. Ti basterebbe copiare ed incollare il codice in AWL, segmento per segmento che poi verra convertito ergregiamente in LAD(KOP)/ /LAD Network 1 | | | +-----------+ | | CMP>I | M 61.4 +--------------------+ +---------------( )--+ | | | | | | | MW170 -+IN1 | | | | | 999 -+IN2 | | | | | +-----------+ | Network 2 | | M 61.4 M066 +-----[/]------------------------------------------(JMP )--+ | | | Network 3 | | | +-----------+ | | MOVE | +--------------------+EN ENO+--------------- | | | | | | | 999 -+IN OUT+- MW170 | +-----------+ | Network 4 | +--------+ | +--------+ | | M066 | | +--------+ | +--------+ | | | +-----------+ | | I_BCD | +--------------------+EN ENO+--------------- | | | | | | | MW170 -+IN1 OUT+- MW160 | +-----------+ | Network 5 | | | +-----------+ | | CMP<=1 | M 61.0 +--------------------+ +---------------( )--+ | | | | | | | MW160 -+IN1 | | | | | 9 -+IN2 | | | | | +-----------+ | Network 6 | | M 61.0 M022 +-----[/]------------------------------------------(JMP )--+ | | | Network 7 | | | +-----------+ | | MOVE | +--------------------+EN ENO+--------------- | | | | | | | 8 -+IN OUT+- MW166 | +-----------+ | Network 8 | | | +-----------+ | | SHL_W | +--------------------+EN ENO+---------------- | | | | | | | MW160 -+IN OUT+- MW162 | | | | MW166 -+N | | | | | +-----------+ Network 9 | +--------+ | +--------+ | | M022 | | +--------+ | +--------+ | +-----------+ | | CMP> 1 | M 61.1 +--------------------+ +---------------( )--+ | | | | | | | MW160 -+IN1 | | | | | 9 -+IN2 | | | | | +-----------+ | Network 10 | | M 61.1 M033 +-----[/]---+--------------------------------------(JMP )--+ | | | | | M61.2 | +-----[ ]---+ Network 11 | | | +-----------+ | | MOVE | +--------------------+EN ENO+--------------- | | | | | | | 4 -+IN OUT+- MW168 | +-----------+ | Network 12 | | | +-----------+ | | SHL_W | +--------------------+EN ENO+---------------- | | | | | | | MW160 -+IN OUT+- MW174 | | | | MW168 -+N | | | | | +-----------+ Network 13 | | | +-----------+ | | MOVE | +--------------------+EN ENO+--------------- | | | | | | | 4096 -+IN OUT+- MW166 | +-----------+ | Network 14 | | | +-----------+ | | WOR_W | +--------------------+EN ENO+---------------- | | | | | | | MW166 -+IN1 OUT+- MW162 | | | | MW174 -+IN2 | | | | | +-----------+ Network 15 | | | +-----------+ | | SHR_W | +--------------------+EN ENO+---------------- | | | | | | | MW182 -+IN OUT+- MW182 | | | | MW168 -+N | | | | | +-----------+ Network 16 | +--------+ | +--------+ | | M033 | | +--------+ | +--------+ | +-----------+ | | CMP> 1 | M 61.2 +--------------------+ +---------------( )--+ | | | | | | | MW160 -+IN1 | | | | | 153 -+IN2 | | | | | +-----------+ | Network 17 | | M 61.2 M044 +-----[/]------------------------------------------(JMP )--+ | | | Network 18 | | | +-----------+ | | MOVE | +--------------------+EN ENO+--------------- | | | | | | | 8192 -+IN OUT+- MW166 | +-----------+ | Network 19 | | | +-----------+ | | WOR_W | +--------------------+EN ENO+---------------- | | | | | | | MW166 -+IN1 OUT+- MW180 | | | | MW160 -+IN2 | | | | | +-----------+ Network 20 | | M055 +------------------------------------------------(JMP )--+ | | | Network 21 | +--------+ | +--------+ | | M044 | | +--------+ | +--------+| | | +-----------+ | | WxOR_W | +--------------------+EN ENO+---------------- | | | | | | | MW162 -+IN1 OUT+- MW180 | | | | MW182 -+IN2 | | | | | +-----------+ Network 22 | +--------+ | +--------+ | | M055 | | +--------+ | +--------+ | | +-----------+ | | MOVE | +--------------------+EN ENO+--------------- | | | | | | | 0 -+IN OUT+- MW166 | +-----------+ | Network 23 | | T1 | +-----------+ | M 61.3 | S_EVERZ | +--[/]---------------+S Q+------------------ | | | | | | | +TW DUAL+-... | | | | +R DEZ+-... | | | | +-----------+ | Network 24 | | T1 M61.3| +---[ ]---------------------------------------------( )--+ | | | // AWL Network 1 L MW 170 L 999 >I = M 61.4 Network 2 UN M 61.4 SPB M066 Network 3 L 999 T MW 170 NOP 0 Network 4 M066: L MW 170 ITB T MW 160 NOP 0 Network 5 L MW 160 L 9 <=I = M 61.0 Network 6 UN M 61.0 SPB M022 Network 7 L 8 T MW 166 NOP 0 Network 8 L MW 166 L MW 160 SLW T MW 162 NOP 0 Network 9 M022: L MW 160 L 9 >I = M 61.1 Network 10 ON M 61.1 O M 61.2 SPB M033 Network 11 L 4 T MW 168 NOP 0 Network 12 L MW 168 L MW 160 SLW T MW 174 NOP 0 Network 13 L 4096 T MW 166 NOP 0 Network 14 L MW 166 L MW 174 OW T MW 162 NOP 0 Network 15 L MW 168 L MW 182 SRW T MW 182 NOP 0 Network 16 M033: L MW 160 L 153 >I = M 61.2 Network 17 UN M 61.2 SPB M044 Network 18 L 8192 T MW 166 NOP 0 Network 19 L MW 166 L MW 160 OW T MW 180 NOP 0 Network 20 SPA M055 Network 21 M044: L MW 162 L MW 182 XOW T MW 180 NOP 0 Network 22 M055: L 0 T MW 166 NOP 0 Network 23 UN M 61.3 L MW 180 SE T 1 NOP 0 NOP 0 NOP 0 NOP 0 Network 24 U T 1 = M 61.3 //VAT Address Symbol Display Format Status Value Modify Value --------------------------------------------------------------------------- MW 170 DEC 7 7 MW 180 SIMATIC_TIME S5T#7s0ms T 1 SIMATIC_TIME S5T#5s660ms P.D.: Link (come ottenere la Forum Card) Modificato: 6 luglio 2007 da Savino Link al commento Condividi su altri siti More sharing options...
simon Inserita: 7 luglio 2007 Autore Segnala Share Inserita: 7 luglio 2007 grazie a tutti , credo di avere capito Ciao Simone Link al commento Condividi su altri siti More sharing options...
setecastronomy Inserita: 22 ottobre 2007 Segnala Share Inserita: 22 ottobre 2007 Ecco riesumato un vecchio thread dormiente per una domanda collegata.Ma in Fup è possibile avere timer impostabili da pannello ? Sulla mia documentazione (Step 5.4 ) in awl esiste il doppio formato s5t e w#16 (con quest'ultimo imposto il timer 'dinamicamente'), ma in FUP ho solo il formato s5t. Come si fa allora ? E perchè il Fup ha queste complicazioni ?GrazieFilippo Link al commento Condividi su altri siti More sharing options...
dago_ Inserita: 22 ottobre 2007 Segnala Share Inserita: 22 ottobre 2007 credo di avere capitoChe è una gabbia di matti ? 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