Vai al contenuto
PLC Forum


Temporizzatore Impostabile - imposta tempo tramite DB


simon

Messaggi consigliati

:( 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! :angry: 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


setecastronomy

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 pannello

ITB // converto in BCD

L w#16#2000 // byte più significativo con '2', ovvero base dei tempi in secondi

+I

T MW 192 // valore preset timer

A I 7.0 // condizione attivazione timer

L MW 192

SP T 1

Francamente 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 pannello

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

Saluti

Filippo

Link al commento
Condividi su altri siti

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 costante

U E 0.0

L S5T[at]500ms

SE T 0

U T 0

= A 10.0

Esempio con tempo variabile

U E 0.0

L DB1.DBW 0

SE T 0

U T 0

= A 10.0

I 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

Cesare Nicola
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

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

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

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

Qui il DINT lo converto automaticamente in minuti , ma se volete potete evitare di moltiplicare per 60000 e

Non credo sia cosi' semplice

Il formato S5time è così composto:

byte n:

bit 0-1-2-3 = 3° cifra del valore di tempo in bcd

bit 5-4 = scala dei tempi 0-0 = 0,01s / 0-1 = 0,1s / 1-0 = 1s / 1-1 = 10s

bit 6-7 = non usato

byte n+1:

bit 0-1-2-3 = 1° cifra del valore di tempo in bcd

bit 4-5-6-7 = 2° cifra del valore di tempo in bcd

questo e' quanto scritto da qualcuno del forum ( non ricordo piu' chi )

ed e' funzionante ( usato spesso come guida )

Ciao

Luca

Link al commento
Condividi su altri siti

gentile Luca Bab

Tu 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

Tu puoi anche credere che non sia così semplice

non ti agitare , non e' costruttivo , non dicevo che non funziona , ma che non e' cosi semplice

La 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 )

Ciao

Luca

Link al commento
Condividi su altri siti

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

Agitato? Non so a cosa ti riferisci.
gentile Luca Bab

<_<

notavo una vena ironica , ma forse ho sbagliato

Scusa non volevo irritarti con la mia risposta

assolutamente non irritato :rolleyes:

capito sei uno della vecchia guardia che scrive solo in AWL

no , assolutamente dove posso e ne vale la pena preferisco di gran lunga il KOP

A 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' esserci

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

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 "polite

ok , non ce ne era bisogno :rolleyes::rolleyes:

Ciao

Luca

Link al commento
Condividi su altri siti

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

  • 3 months later...
setecastronomy

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 ?

Grazie

Filippo

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