Vai al contenuto
PLC Forum


S7 300 - tempo permanenza


barbato giuseppe

Messaggi consigliati

barbato giuseppe

ciao sono nuovo sul forum

e mastico un po di s7

vorrei sapere come faccio a calcolare il tempo di permanenza in un forno a rete

avendo un sensore che legge 4 impulsi su una ruota dentata

Link al commento
Condividi su altri siti


Matteo Montanari

utilizzi un contatore e calcoli opportuni:

utilizzando il segnale che ti viene fornito dal sensore puoi verificare che il forno è in marcia, e sai anche quanto tempo / spazio il forno ha percorso tra un impulso e l'altro.

mettiamo che hai contato 40 impulsi e tra un impulso e l'altro (caratteristiche meccaniche) passono 10 secondi il totale è 400 secondi.

per avere una precisione più accurata dovresti avere più impulsi/giro.

per realizzare il tutto sottoforma di programma puoi utilizzare un contatore (attento che conta sino a 999) oppure incrementare una varibile (MB, MW, DBB, DBW) ricordanti di azzerare il valore quando non ti serve.

Link al commento
Condividi su altri siti

barbato giuseppe

ti ringrazio ma vorrei qualche esempio

io ne ho trovato qualcuno che utilizza divisioni a virgola mobile,ma non

ci capisco proprio tanto :huh:

scusate se voglio imparare

grazie

Link al commento
Condividi su altri siti

Matteo Montanari

come prima cosa devi continuare nello stesso messaggio, crearne uno nuovo, oltre che creare confusione nel seguire la discussione, utilizzi spazio.

scusate se voglio imparare

non è un difetto ma un pregio, quindi niente scuse (non sono necessarie)

ti ringrazio ma vorrei qualche esempio

io ne ho trovato qualcuno che utilizza divisioni a virgola mobile,ma non

ci capisco proprio tanto

potresti mettere il sorgente di questi esempi, lavorando su qualcosa, a piccoli passi è utilie se si hanno a disposizione le stesse cose.

le divioni in virgola mobile (/R) non sono complesse, è come utilizzare Il PLC come un calcolatrice e numeri con decimali.

dal punto di vista pratico sono molto precise, i decimali, dal punto di vista del PLC occorrono risorse maggiori (rispetto all'utilizzo di un contatore).

personalmente io preferisco utilizzare il vilrgola mobile solamente dove è necessario.

Link al commento
Condividi su altri siti

barbato giuseppe

come promesso ti posto il sorgente

si chiama velox

voglio cercare di snellirlo e renderlo più facile da leggere

[FUNCTION "VELOX" : VOID
TITLE =
VERSION : 0.1

BEGIN
NETWORK
TITLE =
//E4.0 SENSORE CONTA IMPULSI SU FRONTE DI DISCESA INCREMENTA MD100
//
      U     "E4.4"; 
      FN    M     50.0; 
      SPBNB _001; 
      L     1.000000e+000; 
      L     MD   100; 
      +R  ; 
      T     MD   100; 
_001: NOP   0; 
NETWORK
TITLE =
//CONFRONTO MD100 SU DIVERSO DA ZERO,CON BIT SISTEMA M250.5 TEMPO 1SEC INCREMENTO
//MD105 X CONTEGGIO TEMPO IMPIEGATO X UN GIRO COMPLETO DI RUOTA VALORE IN MD105=s
      U(  ; 
      L     MD   100; 
      L     0.000000e+000; 
      <>R ; 
      )   ; 
      UN    "E2.3"; 
      U     "M250.5"; 
      FP    M     50.1; 
      SPBNB _002; 
      L     1.000000e+000; 
      L     MD   105; 
      +R  ; 
      T     MD   105; 
_002: NOP   0; 
NETWORK
TITLE =
//CONFRONTO MD100 >=4 MUOVO IL VALORE DI MD105=SEC IN MD110. E AZZERO IL TUTTO X 
//UN NUOVO CONTEGGIO DI TEMPO
      U(  ; 
      L     MD   100; 
      L     4.000000e+000; 
      >=R ; 
      )   ; 
      U     "E4.4"; 
      FP    M     50.2; 
      =     L      0.0; 
      U     L      0.0; 
      SPBNB _003; 
      L     MD   105; 
      T     MD   110; 
_003: NOP   0; 
      U     L      0.0; 
      SPBNB _004; 
      L     0; 
      T     MD   100; 
_004: NOP   0; 
      U     L      0.0; 
      SPBNB _005; 
      L     0; 
      T     MD   105; 
_005: NOP   0; 
NETWORK
TITLE =
//ASZZERAMENTO X FERMO FORNO
      U     "E2.3"; 
      SPBNB _006; 
      L     0; 
      T     MD   110; 
_006: NOP   0; 
NETWORK
TITLE =
//MD110=sec;MD115=MD110\60sec=tempo in minuti; MD120=0,8m\MD115=velocita m\min
//0,8m=LUNGHEZZA PERCORSA X UN GIRO DI RUOTA DALLA RETE
      O(  ; 
      L     MD   110; 
      L     6.000000e+001; 
      /R  ; 
      T     MD   115; 
      UN    OV; 
      SAVE; 
      CLR ; 
      U     BIE; 
      )   ; 
      O(  ; 
      L     8.000000e-001; 
      L     MD   115; 
      /R  ; 
      T     MD   120; 
      UN    OV; 
      SAVE; 
      CLR ; 
      U     BIE; 
      )   ; 
      =     M     50.3; 
NETWORK
TITLE =TEMPO TOTALE
//DIVIDO LA LUNGHEZZA TOTALE DEL FORNO L=25,5m/MD120=MD140 TEMPO TOTALE 
//IN MINUTI IMPIEGATO DALLA BOTTIGLIA PER PERCORRERE TUTTO IL FORNO
      L     2.550000e+001; 
      L     MD   120; 
      /R  ; 
      T     MD   140; 
      NOP   0; 
END_FUNCTION

ti ringrazio dell'aiuto che mi potrai dare ora ed in futuro

Link al commento
Condividi su altri siti

Matteo Montanari

per come il programma è scritto, puoi tradurlo in Kop e renderlo più comprensibile da leggere.

se invecie non hai problemi ad utilizzare AWL, si può semplificare senza utilizzare le memorie di appoggio per i calcoli da verificare se le memorie ti servono solo in questa parte di programma o sono utilizzate anche da altre parti.

se per il conteggio dei secondi (MD105) è consigliato utilizzare un numero in virgola mobile (per renderlo conforme ai dati successivi) per i 4 conteggi degli impulsi puoi utilizzare benissimo un Byte (max 255).

quindi facendo le dovute modifiche, il programma ti rilta in questo modo:

// E4.4 SENSORE CONTA IMPULSI SU FRONTE DI DISCESA INCREMENTA MB100
//;
      U     E      4.4
      FN    M     50.0
      SPBNB _001
      L     1
      L     MB   100
      +I    
      T     MB   100
_001: NOP   0
//;
// CONFRONTO MD100 SU DIVERSO DA ZERO,CON BIT SISTEMA M250.5 TEMPO 1SEC 
// INCREMENTO MD105 X CONTEGGIO TEMPO IMPIEGATO X UN GIRO COMPLETO DI RUOTA VALORE 
// IN MD105=s
//;
      U(    
      L     MB   100
      L     0
      <>I   
      )     
      UN    E      2.3
      U     M    250.5
      FP    M     50.1
      SPBNB _002
      L     1.000000e+000
      L     MD   105
      +R    
      T     MD   105
_002: NOP   0
//;
// CONFRONTO MD100 >=4 MUOVO IL VALORE DI MD105=SEC IN MD110. E AZZERO IL TUTTO X 
// UN NUOVO CONTEGGIO DI TEMPO
//;
      U(    
      L     MB   100
      L     4
      >=I   
      )     
      U     E      4.4
      FP    M     50.2
      SPBNB _003
      L     MD   105
      T     MD   110
//;
      L     0
      T     MB   100
//;
      L     0
      T     MD   105
//;
_003: NOP   0
//;
// AZZERAMENTO X FERMO FORNO
//;
      U     E      2.3
      SPBNB _004
      L     0
      T     MD   110
_004: NOP   0
//;
// Calcolo il tempo in minuti MD110\60sec=tempo in minuti
//;
      L     MD   110
      L     6.000000e+001
      /R    
      T     #TEMP_0
//;
// Calcolo la velocita m\min
// sapendo che 0,8m è uguale alla lunghezza percorsa
// in un giro di ruota dentata dalla rete
//;
      L     8.000000e-001
      L     #TEMP_0
      /R    
      T     #TEMP_0
//;
// Calcolo il tempo totale in minuti:
// 25,5m è la lunghezza toale del forno e quindi
// calcolo il tempo impiegato dalla bottiglia per
// percorrere tutto il forno.
//;
      L     2.550000e+001
      L     #TEMP_0
      /R    
      T     MD   140

ho ragguppato tutto in un unico segmento, per il semplice fatto che utilizzando MB100 come intero, il sistema non ti permette di tradurre in KOP il segmento.

utilizzi la variabile temporanea #TEMP_0 impostata come REAL per eseguire i calcoli in appoggio (ex MD 115 e MD 120).

un consiglio, anziche utilizzare numeri dispari (MD105) utilizza i numeri pari, ti viene più facile da impostare il programma, non cambia nulla a livello di compilazione del PLC, è solamente per comodità.

Link al commento
Condividi su altri siti

Devi andare su contenuto di ambiente, TEMP e quindi scrivi il nome della variabile ed il tipo di dato.

non riesco ad incollare l'immagine per farti vedere come fare.

good luck, jake B)

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