Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Tempo Simatic - Impostazione da pannello di un tempo


Messaggi consigliati

Inserito:

Ciao a tutti,

in un progetto S7 (cpu 315 2dp) carico il valore di tempo del temporizzatore T1 da una db.

Nella db è dichiarato come tipo s5time.

Collegato al plc ho un pannello op siemens TP270 tramite il quale posso impostare il valore del temporizzatore.

Nel progetto OP la variabile è impostata con rappresentazione decimale con una cifra oltre la virgola

Il problema è che per impostare 10 secondi devo scrivere sul pannello 100,0.

Ho provato a modificare i decimali, cambiare la dichiarazione nella db (word o intero) ma il risultato è lo stesso.

Qual'è il mio errore ? Perchè sicuramente di errore si tratta.

Ciao e grazie


Inserita:

Nessun errore, come per altre cose porbabilmente si sono trovati comodi così i programmatori siemens.

Per scalarlo correttamente puoi usare la conversione lineare della tua variabile nel TP

p.e. tp 0-100 0-10000.

Ciao

Inserita:

Scusa la mia ignoranza, come posso fare per scalare la variabile del TP ?

Ivan

Inserita:

Io di solito metto 3 cifre decimali ed il valore del campo decimale e funziona perfettamente.

Inserita:

Per scalare una variabile la selezioni dalla lista, tasto destro, proprietà, la prima cartella è generale, l'ultima è

conversione, la apri, selezioni conversione lineare, nel campo a sinistra da 0 a 100, in quello a destra da 0 a 10000.

ciao

Cesare Nicola
Inserita:

Non so se ho ben capito, comunque io faccio così:

************************************************************

//Converte in BCD il valore in arrivo dal pannello

//ed imposta la base dei tempi 100ms (bit 12=1, bit 13=0)

L DB10.DBW 1

ITB

T MW 1

SET

R M 1.5

S M 1.4

U E 0.0

L MW 1

SE T 1

************************************************************

In pratica, dal pannello scrivo in DB10.DBW1 un numero in formato decimale. Il valore viene convertito in BCD e traferito in una MW: poi imposto i due bit della MW che determinano la base dei tempi desiderata (vedi . in linea dell'AWL). Il valore della MW, a questo punto, è il valore di caricamento del timer. Se la base dei tempi è, per esempio, 100ms ed ho scritto 5 da pannello, il valore del timer sarà di 5x100ms=500msec.

E' chiaro che così non posso, da pannello, variare la base dei tempi.

Ciao

Matteo Montanari
Inserita: (modificato)

per fare la conversione nel pannello operatore, TP270 dovresti utilizzare la varibile (abbinata al timer) impostandola come "timer". nella pagina utilizzi la rappresentazione decimale con 6 cifre e 3 cifre dopo la virgola. a quel punto i valori che inserisci nel campo sono espressi in secondi.

(p.s. valido sia se utilizzi ProTool sia WinCC Flexible)

-------------------------------------------------------------------------------------------------

questo ti permette di fare la conversione all'interno del programma.

// 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
//;
// = 0 calcolo della durata in 0.01 sec
//;
      L     W#16#0
      T     #BaseTempo
//;
// = 1 calcolo della durata in 0.1 sec
//;
      L     W#16#1000
      T     #BaseTempo
//;
// = 2 calcolo della durata in 1.0 sec
//;
      L     W#16#2000
      T     #BaseTempo
//;
// = 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
//;

Modificato: da keosmm

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