Pagina 1 di 1

Rampa di uscita 0-10V a tempo

Inviato: 22 ott 2007, 15:50
da albyjack
Salve a tutti, volevo chiedere gentilmente come si può ottenere una rampa di uscita 0-10v controllata nel tempo in un PLC Siemens S300.

In sostanza, impostando il tempo da un pannello operatore, come posso controllare una rampa che vada da 0 a 10V nel tempo preimpostato? capisco che l'argomento è complesso, ma sarei grato a chiunque possa darmi qualche informazione.

Re: Rampa di uscita 0-10V a tempo

Inviato: 7 nov 2007, 17:08
da Ivan_Iamoni
Ciao Albyjack,
Di primo acchito ho pensato , "beh! non sara' cosi' difficile", esistera' un blocco apposito, ne esiste uno per ogni cosa.
Poi ho visto che il blocco che piu' si adattava alle tue esigenze era il SFB41 , controllo continuo di grandezze.
Ma per adattarlo allo scopo mi sebrava troppo complicato.
Cosi' in quatro e quattro otto, dalla mia mente malata ho creato questo:

Codice: Seleziona tutto

 
     U     E      0.0                  //se e' presente il segnale di start ....
     SPB   reg                         //salto alla regolazione
     
      UN    E      0.0                  //se non e' presente il segnale di start ....
      L     0
      T     PAW  100                    //azzero l'uscita analogica PAW100
      T     #Step                    //azzero la variabile Step (real)
      T     #Reg                    //azzero la variabile Reg (int)
      BE
     
     

// Calcolo del divisore per la regolazione
      reg:  SET                               //metto RLC ad 1
      L     DB1.DBW    0                //carico il valore di divisione da 1 a 100
      ITD                               //converto in doppia parola
      DTR                               //converto in reale ,il risultato viene scritto in ACCU1
      T   #Temp1                     //lo scrivo nella variabile Temp1(TEMP,REAL) 

      L    2.764800e+004    //prendo il valore reale del valore massimo della word
      L   #Temp1
      /R                                    //lo divido con il divisore
      T     #Step                      //lo scrivo nella variabile Step (TEMP,REAL), divisore

// regolazione  , verifica del raggiungimento valore massimo  per fine regolazione


      L     27648                       //Carico il valore massimo della word
      L     #Reg                         //Carico il valore attuale di regolazione
      >=I                                  //Se la variabile e' maggiore o uguale a 27648 esco dal blocco
      BE                                   //fine della regolazione

// regolazione , esecuzione della rampa
      L     #Step                      //prendo il valore del divisore
      L     #Reg                     //prendo il valore della variabile Reg
      +R                                //eseguo la somma
      RND                               //converto il reale in intero doppia parola
      T    #Reg                    //scrivo il risultato nella variabile #Reg (TEMP,INT)   per il controllo raggiungimento massimo
      T     PAW  100                 //scrivo il risultato nell'uscita analogica.
      BE                                //fine del blocco


Il mio blocco si suddivide in quattro parti , la prima , se non e' presente un segnale di start, azzera le variabli pricipali ed esce.
Se invece il segnale e' presente, nella seconda parte , eseguo un calcolo , prendo il valore massimo di una word 27648, prendo un valore che tu inserisci da pannello un numero da 1 a 100 , e la divido , ottenendo cosi' uno step di regolazione.
Diciamo che tu avevi inserito 50 , il risultato sara' 553.
Nella parte quarta, sommo piu' volte 553 , e scrivo il valore nell'analaogica.
Nella terza parte, al raggiungimento di 27648, esco dal blocco e non proseguo con la somma.
Lo scopo e' questo, se questo segmento lo scrivi in OB35 (interrupt ciclico) con una ciclicita' di 100ms , programmabile dal set-up della CPU, ottieni che il blocco ed il segmento verranno elaborati ogni 100ms (1 decimo di S), quindi ogni decimo di secondo sommi 553, partendo da zero.
Ottieni che la tua rampa, avra' gradini di 553 , e dopo 50 volte raggiungera' il suo valore massimo, cioe' dopo 5 secondi.
Quindi il valore da variare nella tua regolazione sara' il numero di divisioni (50), maggiore e' maggiore sara' il tempo.
Prova cosi' , non ti assicuro che il codice sia OK al 100% , lo ho scritto al volo in aereoporto aspettando il mio volo.
Magari Venerdi avro modo di provarlo in ufficio su di una CPU.
Ciao
Ivan

Re: Rampa di uscita 0-10V a tempo

Inviato: 7 nov 2007, 17:36
da albyjack
Ti ringrazio moltissimo! sei un grande.