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




Salvare Dei Dati E Visualizarli Su Un Tp170a


Messaggi consigliati

tecnologyassistence
Inserito:

sono in difficolta su un impianto di depurazione dove faccio eseguire dei cicli di rigenerazzione in funzione di alcuni fattori come durata del ciclo la pressione di ingresso e di uscita ecc.

adesso vorrei chiedervi se qualcuno di voi mi sa spiegare come posso fare a sapere ad esempio:

in quale momento la rigenerazione e' partita e memorizzare l'ora in cui il ciclo e' partito e' magari settare delle memorie associate ad un testo che rimangono memorizzate assieme all'ora e' possibile farlo grazie a tutti ciao Domenico


  • Risposte 50
  • Created
  • Ultima risposta

Top Posters In This Topic

  • tecnologyassistence

    24

  • Savino

    18

  • ken

    5

  • Gianmario Pedrani

    1

Gianmario Pedrani
Inserita:

certo lo puoi fare.. però non hai detto che tipo di plc usi, credo un s7300!!!

a questo punto ti crei un blocco dati all'interno del plc e da li salvi tutto quello che vuoi e lo visualizzi.... ciao

tecnologyassistence
Inserita:

si ciao gianmario ho una 314 si ma come faccio

Inserita:

Gianmario ti ha dato la dritta giusta...

Io creerei un DB con un array di strutture in cui memorizzi i dati che vuoi.

Per leggere l'ora userei SFC 1 "READ_CLK".

Ed il gioco è fatto.

Al fronte positivo dell'evento, salvo nel Db i dati che voglio!

Spero di esser stato utile.

Vincenzo

tecnologyassistence
Inserita:

ciao vince grazie per la dritta ma non potresti spiegarmi magari con un esempio ciao e scusa se chiedo troppo

Inserita:

Leggendo il manuale trovi gli esempi.

Premi F1 sul blocco SFC1 e trovi come funziona, semplice no?

tecnologyassistence
Inserita:

grazie ken chiedevo solo un aiuto comunque ho cercato ma non riesco a capire per questo chiedevo una mano a voi comunque mille grazie

Inserita:

sfc1 restituisce in formato date_and_time l'orario attuale della cpu scrivendolo in un'area di memoria (grande abbastanza). sul fronte di salita del tuo evento scrivi l'ora attuale e la data nell'area che ti sei scelto.

tecnologyassistence
Inserita:

ken io ho creato l'ora secondi e minuti usando lb17 ecc..

saresti cosi gentile da farmi un piccolissimo magari solo per capire da dove iniziare

tecnologyassistence
Inserita:

ciao ken intendevo dire un piccolo esempio su come fare ti ringrazio

tecnologyassistence
Inserita:

ciao matteo il mio problema non e l'ora o i minuti in pratica ti faccio un esempio:

se voglio sapere a che ora e' partita una pompa o qualcosaltro e voglio registrare su di una pagina del TP170A ecome devo fare? in pratica mi servirebbe sapere magari associando un merker ad un testo e quindi visualizandolo e contemporaneamente salvare l'ora e i minuti e' possibile farlo ?? ho fatto delle prove ma non ne vengo fuori ho girovagato diversi link ma non ho trovato nulla in merito potresti ancora una volta aiutarmi? :unsure:

ciao Domenico

Inserita:

usa una db nella quale memorizzi i dati (gli orari di partenza ) usa la funzione leggo e trasferisco o move per muoverei dati

nel tp 170a crei una pagina dove ci scrivi start pompa 1 =(valore db)

se i valore è solo 1 tutto finisce qui sono usa i puntatori ampiamente descritti nel forum

tecnologyassistence
Inserita:

ciao puntalino potresti farmi un esempio?

Inserita: (modificato)

Ciao tecnologyassistence ,

ciao ken intendevo dire un piccolo esempio su come fare ti ringrazio
ciao puntalino potresti farmi un esempio?

Dunque, penso che nel Link del mio post precedente ( messaggio #11) sarebbe l'esempio che cerchi ( per ricavere la data ed ora)

Va ben, forse non ti sono simpatico ma.... non fa il caso <_<

P.D. : devi fare click sulla parola Link ( just in case )

Modificato: da Savino
tecnologyassistence
Inserita:

ciao savino assolutamente sei simpaticissimo il problema e che non ho mai programmato a questi livelli non so proprio da dove iniziarci volevo solamente prendere spunto da qualche esempio un po' + semplice ho guardato il link che mi hai suggerito ma mi sono perso spero di riuscire a risolvere il mio problema grazie il vostro aiuto da persone con un po' di esperienza in piu' magari per aiutarmi ad accrescere il mio bagaglio di esperienza non ha da molto che programmo non sono all'inizio ma ho gia' fatto un bel po' di programmini per diverse tipologie di automazioni quindi ti chiedo scusa se ti do una cattiva impressione ma vorrei solamente essere aiutato nella risoluzione del mio problema adesso mi ritrovo il mio pannello quasi completo ho solo da completare questa parte di programma ti sarei molto grato se riusciresti ad aiutarmi magari se non ti chiedo e non pretendo molto con un esempio + semplice . :(

ciao e scusami ancora

Domenico

Inserita: (modificato)

Ciao tecnologyassistence :)

..quindi ti chiedo scusa se ti do una cattiva impressione ma..

Figurati, non ti preocupare...

..ti sarei molto grato se riusciresti ad aiutarmi magari se non ti chiedo e non pretendo molto con un esempio + semplice ....

Dunque, cominciamo per ricavare la data ed ora dal sistema .....

Crea un nuovo blocco DB non so ad esempio DB11 quindi vai sulla barra del menu, inserisci/ blocco S7/ blocco dati... Nome blocco: DB11... Nome simbolico:

DB_SYS_DATA_TIME.
Poi fai click sul nome del blocco per aprirlo ed editarlo....troverai che questo per default ha la lunghezza di 3 righe con la seguente forma:
Address   Name     Type            Initial value 
 0.0                STRUCT
+0.0      DB_VAR   INT             0
=2.0               END_STRUCT
Dovresti sovrascrivere cosi:
Address   Name     Type            Initial value 
 0.0                STRUCT
+0.0      Object   DATE_AND_TIME   DT#90-1-1-0:0:0.000
=8.0               END_STRUCT
Per settare la variabile del tipo DATE_AND_TIME devi fare click col pulsante destro del mause sul box e selezionare dei tipi complessi. Poi inserisci un nuovo blocco FC ad esempio FC 11.... vai in edizione del blocco ed allora sulla intestazione del blocco, nella tabella dell'interfaccia inserisci una variabile TEMP per ottenere il collegamento al DB11 con simbolo DB_SYS_DATA_TIME.
 
Name              Data Type      Indirizzo    Commento
-----------------------------------------------------------------------
DB_SYS_DATA_TIME  Date_And_Time   0.0
Poi nel primo segmento scrivi:
 
CALL  "READ_CLK"    // SFC 1
RET_VAL:=MW172    //  qui una MW qualsiasi
CDT    :="DB_SYS_DATA_TIME".Object     // ( P#DB11.DBX0.0  ) qui ricavi la data ed ora in 8 bytes BCD
Inserisci il FC 11 nel OB1 oppure l'OB35 ed allora, andando in monitoring dovresti visualizzare i dati ricavati in questo modo:
Indirizzo       formato  Valore
--------------------------------------------------------
DB11.DBB   0    Hex      B#16# 06   // anno
DB11.DBB   1    Hex      B#16# 11   // mese
DB11.DBB   2    Hex      B#16# 30   // giorno
DB11.DBB   3    Hex      B#16# 23   //  ora
DB11.DBB   4    Hex      B#16# 25   // min
DB11.DBB   5    Hex      B#16# 51   // sec
DB11.DBB   6    Hex      B#16# 46   // msec
DB11.DBB   7    Hex      B#16# 05   // msec

Vedi se riesci ad impostare la lettura della data ed ora per ogni ciclo di AG od interrupt ... poi vediamo il resto. ;)

Modificato: da Savino
tecnologyassistence
Inserita:

ciao savino ho eseguito tutto alla lettera ma on-line non vedo muovere nulla come faccio?

nell'ob1 ho scritto cosi:

call fc11

carico ob1:db11:fc11 e non vedo nulla .

aspetto una tua risposta

ciao domenico. :(

Inserita:

Ciao :)

ciao savino ho eseguito tutto alla lettera ma on-line non vedo muovere nulla come faccio?

Molto bene!

Dunque, hai creato la tabella per il monitoraggio delle variabile ( VAT_..) con la forma sotto ?

Indirizzo       formato  Valore
--------------------------------------------------------
DB11.DBB   0    Hex      B#16# 06   // anno
DB11.DBB   1    Hex      B#16# 11   // mese
DB11.DBB   2    Hex      B#16# 30   // giorno
DB11.DBB   3    Hex      B#16# 23   //  ora
DB11.DBB   4    Hex      B#16# 25   // min
DB11.DBB   5    Hex      B#16# 51   // sec
DB11.DBB   6    Hex      B#16# 46   // msec
DB11.DBB   7    Hex      B#16# 05   // msec

Cosa ricavi?

tecnologyassistence
Inserita:

no adesso provo scusami ancora :o

Inserita: (modificato)

Ricordati di fare un restart CPU dopo la modifica ( run - stop - run ).

Modificato: da Savino
tecnologyassistence
Inserita:

ciao savino ho fatto quello che mi hai detto i valori della VAT1 sono:

Indirizzo formato Valore

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

DB11.DBB 0 Hex B#16# 06 // anno 090

DB11.DBB 1 Hex B#16# 11 // mese 01

DB11.DBB 2 Hex B#16# 30 // giorno 01

DB11.DBB 3 Hex B#16# 23 // ora 00

DB11.DBB 4 Hex B#16# 25 // min 00

DB11.DBB 5 Hex B#16# 51 // sec 00

DB11.DBB 6 Hex B#16# 46 // msec 00

DB11.DBB 7 Hex B#16# 05 // msec 02

vedo questi valori ma non varia nulla almeno i secondi dovrebbero variare ma dato che io ho gia l'ora secondi e minuti non esiste qualcosa che mi permetta di usarli dandomi la possibilita di memorizzarli in funzione di cio' che mi serve??

momentaneamente io nel mio OB1 ricavo l'ora ecc. facendo cosi:

LB 17

T MB17

LB 16

T MB16

LB 15

T MB15 e cosi via

non possiamo utilizare questo sistema in qualche modo?

non pensavo che fosse cosi complicato crare un tipo storico se cosi si puo' chiamare mi sono trovato molto megli con il TP170b dove ho potuto creare uno storico allarmi ma voglio riuscire anche con questo pannello

peccato che fa solo le segnalazioni di servizio comunque Savino spero con il tuo aiuto di riuscirci ciao

Domenico e grazie ancora.. <_<

Inserita:

evidentemente il TP170A ha delle differenza sia a livello di prezzo che a livello di possibilità di sviluppo rispetto ad un TP170B.

per fare uno storico devi crearti un DB dove, con un puntatore vai a scrivere un dato di seguito all'altro. Se usi la funzione cerca trovi come usare un puntatore. Penso che tu sia già stato aiutato più del necessario. basta leggere i manuali e metterci buona volontà. Sai, a volte si fa prima a scrivere un post o a chiamare un tecnico al telefono che leggere il manuale del protool o winCC e dell'S7, am non è sempre la via più corretta.

DB11.DBB   0    Hex      B#16# 06   // anno
DB11.DBB   1    Hex      B#16# 11   // mese
DB11.DBB   2    Hex      B#16# 30   // giorno
DB11.DBB   3    Hex      B#16# 23   //  ora
DB11.DBB   4    Hex      B#16# 25   // min
DB11.DBB   5    Hex      B#16# 51   // sec
DB11.DBB   6    Hex      B#16# 46   // msec
DB11.DBB   7    Hex      B#16# 05   // msec

hai questo. se ne crei n in fila avrai uno storico. col puntatore vai a scrivere prima sul primo poi sul sendo poi a quello ad n+1 fino a quando ti serve.

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

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




×
×
  • Crea nuovo/a...