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




Azzerare Numero Real


Messaggi consigliati

Inserito:

Salve a tutti sono nuovo del forum e inesperto, quindi non mi distruggete come mi è successo in un altro forum sono qui per imparare ,sto programmando in kop con step7 una stazione didattica della festo chiamata Handling; tramite wincc ho creato dei campi I/O dove vengono visualizzati i pezzi che produce la macchina ,ok ,not ok e totali...nel kop ho tre contatori che azzero con il reset tramite scada; però sul pc di supervisione visualizzo anche la% di pezzi ok e non ok sempre con altri 2 campi I/O questi numeri sono real,funziona tutto mi dà le percentuali ma come posso fare per creare dei reset dei valori delle percentuali ; per i contatori è stato facile perché hanno il proprio reset invece le percentuali mi escono da due blocchi separati MUL_R ,se potreste spiegarmi ve ne sarei grato non fornisco i dati della cpu per ora sto usando solo il simulatore e wincc in runtime


Inserita:

ciao, fai un MOVE e carichi zero o il valore che vuoi sulla variabile interessata

Inserita:

però le variabili in uscita delle percentuali hanno indirizzo DB2.DBD8 E DB2.DBD12 io nel DB1 "da scada" ho creato 2 reset di tipo bool che volevo utilizzare per resettare poi i due campi con 2 tasti dal pc di supervisione...se metto in entrata al move DB2.DBD8 in uscita gli scrivo zero??mi sa che non ho ben capito...

Inserita:

se metto in entrata al move DB2.DBD8 in uscita gli scrivo zero??

Devi fare esattamente il contrario.

Inserita:

però il tasto reset su pannello che mi azzera i due campi i/o a che variabile lo lego....cioè devo creare due variabili bool che mi azzerano i contatori no?

Inserita:

se selezioni la funzione e premi F1 ti esce l'. e vedi la descrizione. Il valore IN viene scritto sul valore OUT


crei una variabile bool che metti in serie al MOVE per abilitarne la funzione

Inserita:

ora provo il programma, poi ho altre curiosità riguardo i calcoli che ho fatto per calcolare la % dei pezzi ok e not ok,sono stato redarguito in un altro forum...però il docente che è un programmatore abbastanza stimato mi aveva consigliato questo metodo cioè ho tre contatori questi tre contatori danno in uscita pezzi ok non ok e totali ,ho passato queste uscite con move in tre MD queste MD con DI_R le ho trasformate in real, poi ho fatto la MD pezzi ok diviso MD totali e ho memorizzato il risultato in una LD tramite MUL_R ho moltipliato per 100 e in uscita ho la percentuale che volevo ,lo stesso procedimento l ho eseguito con i pezzi non ok l ho stesso procedimento...cosa ho sbagliato?

Inserita:

Se hai usato i contatori S7, ti danno il conteggio in formato BCD (da 0 a 999). Quindi, prima di fare la trasformazione DI_R devi trasformare il dato da BCD a INT (BCD_I). Per essere corretti (anche se per valori da 0 a 999 non cambia nulla) si dovrebbe fare anche la conversione da INT a DINT (I_DI), e solo dopo trasformare in REAL con DI_R.

Questi contatori però, per usare un eufemismo, non sono tanto pratici.

Per contare dei pezzi è molto meglio incrementare una variabile (INT o DINT secondo i limiti da gestire) sul fronte di salita dell'evento, utilizzando ADD_I o ADD_DI

Se poi volessi usare AWL piuttosto che KOP, tutto diventerebbe più semplice.

Esempio, il calcolo della percentuale di pezzi buoni si potrebbe fare così:

      L     "CntPezzi".PzBuoni          //Carica pezzi buoni
      DTR                               //trasforma da DINT a REAL
      L     "CntPezzi".PzTot            //Carica pezzi totali
      DTR                               //Trasforma da DINT a REAL
      /R                                //Dividi   
      UN    OV                          //Se il risultato della divisione è valido
      SPB   _000                        //usa risultato della divisione
      L     0.000000e+000               //Altrimenti imposta 0.0
_000: L     1.000000e+002               //Moltiplica per 100.0 
      *R    
      T     "CntPezzi".PercBuoni        //Risultato: percentuale di pezzi buoni

Inserita:

si infatti anche il docente mi ha riferito che lui e i programmatori in genere non utilizzano i contatori ,ma i blocchi che hai citato tu ; mi sono anche reso conto tornando al mio primo quesito che creare dei reset delle % non serve perché azzerando i contatori di conseguenza si azzerano anche le %;a me non si azzeravano perché avevo fatto un errore nel kop Quindi lo Z_VORW in realtà non restituisce un intero.....credevo di si;nelle operazioni matematiche memorizzare un risultato parziale in una local area è una cosa giusta? tanto poi quel dato non mi servirà più....GRAZIE anche per l'esempio in awl che prossimamente studierò sicuramente

Inserita:

oltre ha quello che mi hai consigliato mi dicevano che il problema di eseguire le conversioni come ho fatto io potrebbe creare dei problemi in caso di processi di comunicazione non sincroni;sapete dirmi qualcosa in merito?

Inserita:

credevo che fosse dez uscita numero bcd e dual invece fosse intero

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