Vai al contenuto
PLC Forum


Pausa / Lavoro Su Siemens S7-300


mbambi

Messaggi consigliati

Salve a tutti.

Devo implementare una semplice logica di pausa /lavoro per una serie di pompe.

Essendo una delle mie prime esperienze con Step 7, ho visto che non è possibile inserire direttamente i tempi che imposto da pannellino (TP-170b) direttamente nel timer (TW), ma si devono fare altri tipi di controlli con CMP e ADD varie .

In attesa di eventuali consigli e di un metodo veloce per sviluppare tale sequenza vi ringrazio anticipatamente.

P.S. Dimenticavo che il linguaggio di programmazione a cui mi riferisco è il KOP.

Modificato: da mbambi
Link al commento
Condividi su altri siti


Matteo Montanari
Essendo una delle mie prime esperienze con Step 7, ho visto che non è possibile inserire direttamente i tempi che imposto da pannellino (TP-170b) direttamente nel timer (TW), ma si devono fare altri tipi di controlli con CMP e ADD varie

sei sicuro di quello che scrivi?

se rendi il tempo impostato nei timer, varibile (ES.DB1.DBW2) e non fisso (S5T#3S) puoi fare assumere a DB1.DW2 tutti i valori che vuoi.

i CMP e ADD varie ti servono se vuoi dare diverse base dei tempi al tuo timer, ma se si tratta di cambiare da 000 a 999 secondi puoi impostare una base dei tempi fissa (secondi appunto) e modificare solo il tuo valore da 000 a 999.

// 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
//;

      U     #AbilitazioneTimer
      L     #SpTimer
      SE   #NumeroTimer

volendo puoi utilizzare anche una varibile per la base dei tempi.

oppure puoi utilizzare la funzione (presente nelle librerie standard "IEC Function Blocks") FC 40 che ti permette di convertire un valore di tempo (TIME) in un valore comprensibile dai timer (S5T).

certo che se il tuo pannellino non permette di inserire e/o modificare le varibili è tutta un altra cosa...

P.S. Dimenticavo che il linguaggio di programmazione a cui mi riferisco è il KOP.

e chi se ne frega, nello step 7 di base hai a disposizione 3 linguaggi, di cui uno lo usano solamente i Krukki, te ne rimangono sempre 2, non fossilizzarti ad utilizzarne solo uno... è come dire che quando piove non esci...

Modificato: da keosmm
Link al commento
Condividi su altri siti

Solitamente io uso delle DB col tipo di dati S5T, queste le farò puntare poi dal pannello; potrai avere così la dbw per il SET del Timer e la dbw per vedere lo scorrere del tempo.

Esempio:

L DB3.DBW 52 //Setti il tempo del timer

SE T 78

LC T 78

T DB3.DBW 54 //Lettura del timer

Non ricordo al momento sul pannello come devi dichiarare il tipo della Db che vai a puntare, ma credo BCD o che ci sia TIMER.

Good Luck, Jake B)

Link al commento
Condividi su altri siti

Per il momento ho fatto come segue:

Ho fatto una conversione utilizzando l'FC40 TIM_S5TI e passando il valore di ritorno al TW del Timer che mi interessa.

Il problema però si è presentato sul pannello perchè inserendo un Campo di I/O non è possibile specificare come formato TIMER e non sono riuscito a trovare qualcosa che mi possa fare una conversione da DECIMALE (da pannello operatore TP170B) a TIMER.

Come posso fare?

Inoltre il valore che inserisco nella TIM_S5TI è in base ms!

Grazie a tutti in anticipo

Link al commento
Condividi su altri siti

Matteo Montanari
Il problema però si è presentato sul pannello perchè inserendo un Campo di I/O non è possibile specificare come formato TIMER

se leggi le caratteristiche di FC 40:

Descrizione

Con la funzione FC 40 è possibile convertire il formato di dati TIME nel formato S5TIME. Durante la conversione si arrotonda per difetto. Se il parametro di ingresso è maggiore del formato S5TIME rappresentabile (maggiore di TIME#02:46:30.000), viene emesso come risultato S5TIME#999.3 ed il risultato binario BIE viene azzerato.


Parametro     Dichiarazione Tipo di dati    Area di memoria                Descrizione
IN            INPUT          TIME           E, A, M, D, L, Cost.           Variabile di ingresso nel formato TIME
RET_VAL       OUTPUT         S5TIME         E, A, M, D, L                  Variabile di ritorno nel formato S5TIME

da nessuna parte è indicato di scirvere TIMER ma TIME.

il valore viene convertito in millisecondi perchè è la base principale dei timer.

Il valore che riesco ad impostare dal pannello operatore mi arriva in ms e devo quindi convertirlo almeno in sec.

Come posso fare?

hai un codice scritto nel mio messaggio precedente, devi somente mettere la varibile (da 0 a 999) nel pannello, utilizzare il codice che ti ho dato con la base dei tempi 2 ed il tuo lavore 1 equivale ad 1 secondo, il valore 10 a 10 secondi, il valore 100 a 100 secondi e così via.

se non ti piace l'awl prendi ogni operazione e mettila in un segmento KOP ed il gioco è fatto.

Link al commento
Condividi su altri siti

Ok, ho capito, ma #BaseTempo a cosa corrisponde rispetto alla mia variabile di tipo S5TIME?

Io devo fare una MOV di W#16#2000 nella BaseTempo della variabile TIME (S5TIME), come faccio ad impostare la BaseTempo di TIME?

Scusa ancora per le semplici domande, ma sono un po' nel panico.

Link al commento
Condividi su altri siti

Ulteriori aggiornamenti:

Ho provato a fare una WOR della base di tempo che mi interessa (1sec.) nella variabile TIME di tipo S5TIME, ma non me l'accetta in ingresso.

Link al commento
Condividi su altri siti

Matteo Montanari

prendi questo codice e copialo in un segmento vuoto del tuo FC

nelle varibili temporanee (nella parte alta della finestra)

devi specificare cosa sono:

Valore_DEC = Int

Valore_BCD = Int

Valore_BCD_word = Word

BaseTempo = Int

BaseTempo_word = Word

SpTimer = S5Time

SpTimer_word = Word

      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

ripsondendo alla tua domanda:

Ok, ho capito, ma #BaseTempo a cosa corrisponde rispetto alla mia variabile di tipo S5TIME?

cosa ne dici di leggere il manuale? nel manuale in linea è presente la parte che spiega il funzionamento dei timer.

inoltre ti chiarisce anche la differenza tra time e timer, dove mi sembra che hai un pò di confusione in testa.

Link al commento
Condividi su altri siti

  • 3 years later...

Ciao a tutti,volevo chiedervi se e dove ho sbagliato.Dopo aver finito un impianto(di sole prese,in quanto sto ristrutturando la casa e quindi faccio un po alla volta)con differenziale da 25A e a valle un mt da 16A,i conduttori ho usato per le prese tutte da 16A fili da 2,5mm con montante da 4mm.Dal contatore al differenziale(sono 7 metri di lunghezza)ho usato fili da 6mm.Toccando col cercafase il verdegiallo proprio in questo tratto ho notato che c'era della corrente,provando col tester un puntale appunto sul verdegiallo della massa e un puntale sul neutro,mi dava una lettura con un - davanti ad una bassa cifra,provando sui due cavi e cioè fase e neutro mi dava la giusta lettura,preciso che il cavo verdegiallo di cui ho parlato ancora non lo collego a nessun dispersore,provando a collegare un qualsiasi punto della terra con un rubinetto ad esempio,la corrente che mi trovavo sul filo di massa non c'era più.Ora io mi chiedo è mai possibile che in un tratto di 7metri con conduttori da 6mm ci sia questa corrente sul gialloverde?E' normale tutto ciò?In quanto ancora non mi collego con il dispersore a terra.Da premettere che nel tratto dal contatore al differenziale i conduttori sono integri.

Grazie per la vostra chiarezza e gentilezza,come sempre!!

Link al commento
Condividi su altri siti

se non erro hai detto che il G/V non è ancora collegato a TERRA, prima fai il collegamento alla palina, poi se ci sono problemi scatta il differenziale.

Penso che sia induzione quella che vedi con il cercafase.

ciao

Link al commento
Condividi su altri siti

Grazie Verosatx,effettivamente ancora non collego l'impianto di terra ad un dispersore e poi quando collego un qualsiasi punto dell'impianto terra ad un corpo entrante nel muro(tipo tubi idraulici),la corrente non ce l'ho più appunto sul gialloverde.Mi spieghi che cos'è l'induzione,e perchè si ha questo effetto??

Link al commento
Condividi su altri siti

l'induzione è quell'effetto che fa girare anche i motori elettrici

quando passa della corrente in un filo, crea un campo elettromagnetico che, se ci sono altri conduttori nei pressi, crea delle correnti (in ambito domestico molto basse),

un altro esempio è il trasformatore dove una "spirale" di filo (primario) crea tensione in una altra "spirale" (secondario)

Link al commento
Condividi su altri siti

Pierluigi Borga

Evita assolutamente di usare tubazioni dell'imp idraulico o altro per creare il dispersore di fatto, dal punto di origine dell'impianto o almeno da una cassetta di derivaz principale colleghi tutti i fili GV e esci con un conduttore di 16mmq da collegare ad un dispersore a picchetto (con pozzetto ispezionabile) oppure anche ai ferri delle armature della fondazione...

Link al commento
Condividi su altri siti

Quindi questo fenomeno,cioè l'induzione,si viene a creare ogni qualvolta si fa un impianto con filo di massa portato ovunque,ma non lo si collega diciamo così al suo "capolinea" e cioè la nuda terra??

Link al commento
Condividi su altri siti

Quindi questo fenomeno,cioè l'induzione,si viene a creare ogni qualvolta si fa un impianto con filo di massa portato ovunque,ma non lo si collega diciamo così al suo "capolinea" e cioè la nuda terra??

No.

Il fenomeno dell'induzione elettromagnetica avviene quando si hanno due o più conduttori affiancati per una parte dipercorso in cui circoli una corrente (alternata).

Infatti un cavo elettrico percorso da corrente crea un campo elettromagnetico, ma il fenomeno è anche contrario, ovvero un campo elettromagnetico (di intensità variabile) genera una corrente in un conduttore.

Nel tuo caso hai due conduttori: in uno dei quali circola una corrente che crea un campo e.m. che interessa anche un altro conduttore che viaggia assieme e parallelamente inducendo una (piccola) corrente.

A mio avviso il fenomeno interessante invece è un accoppiamento capacitivo: due cavi che viaggiano affiancati per un tratto costituiscono un piccolo condensatore. Infatti vi sono 2 conduttori ed un isolante ovvero il dielettrico.

Per questo motivo sul cavo di terra SCOLLEGATO misuri una piccola corrente.

Al di la di queste condiderazioni puramente indicative (non particolarmente tecniche, ne tanto meno precise ed accurate) una volta collegato a terra il cavo di terra molto probabilmente il problema non si presenterà più poichè le piccole correnti dovute ai fenomeni citati verrebberò fugate verso terra.

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