Vai al contenuto
PLC Forum


Utilizzo giorno ed ora


Messaggi consigliati

Salve a tutti,

premetto che sono a digiuno di programmazione,

dovrei realizzare un programmino semplice semplice in somachine 3.1 per un scu655 

il problema è che dovrei attivare un uscita il lunedì e martedì dalle 9:00 alle 11:00

ho provato a leggere qualcosa nel manuale ma non ho capito un granché !!!

Anzi diciamo che non ho capito nulla !!?

Grazie

 

Link al commento
Condividi su altri siti

  • 2 weeks later...

salve a tutti,

allora ho provato a studiare ancora un pò ma purtroppo non riesco ancora a venirne a capo.

In Pratica tramite la funzione "systimertcget" acquisisco l'utc in secondi dal 01/01/1970 poi tramite la funzione "SYSTIMERTCCONVERTUTCTODATE" converto questo valore

in una struttura di tipo "SYSTIMEDATE" e quindi a questo punto mi ritrovo data.wHour data.wsecond ecc.... ecc.. tutto bene se non che la data corrisponde 04/06/2004 e l'ora è un ora avanti a quella attuale.

Ora per l'ora probabilmente si tratta di settare l'ora legale ( come ) ma per la data  ? credo che dovrei "aggiustare" la data in base alla mia posizione utilizzando la funzione

SYSTIMERTCSETTIMEZONE ma non riesco a capire come !

 

Grazie a tutti.

 

Link al commento
Condividi su altri siti

si lo so .... sono 3 giorni che leggo e rileggo quelle due pagine !!!! nell'esempio read plc time c'è solo il blocco funzione systimertcget e poi systimertcconvertutctodate e con quest'ultima funzione viene popolata la struttura ma non riesco a capire perche come data mi da 2004 !!

Grazie

Link al commento
Condividi su altri siti

piccolo aggiornamento/ richiesta,

guardando l'esempio ho visto che devo settare l'ora quindi attraverso i blocchi move ho "caricato" i dati in una struttura di tipo SYSTIMEDATE.

il problema è che nell'esempio che ho il blocco systimertcset ha come ingresso il valore di secondi da impostare ed ha anche un ingresso enable,

nel mio blocco systimertcset invece NON ho l'ingresso enable !

Mi sapete dire dove sbaglio ?
Grazie.

Link al commento
Condividi su altri siti

la data/ora la prende direttamente dal PLC che è collegato per cui devi aggiornarla,

nell'esempio cè anche questo, guardalo bene e vedrai che c'è tutto,

per l'enable: tasto destro sul blocco per abilitarlo (vedi manuale)

ciao

Link al commento
Condividi su altri siti

ciao water e grazie.... ma tasto destro ho "rimuovi parametri non utilizzati " e "aggiornare i parametri" ma anche aggiornando non cambia nulla, l'enable NON esce fuori , anche andando nell'. in linea nell'esempio che trovo l'enable NON c'è,

l'enable lo trovo solo nel pdf di esempio !!!.

l'esempio che sto guardando io  è  questo in pratica:

nel rung 1 leggo la data del plc ( la data che leggo dove la prende ?  )

nel rung 2 converto / inserisco la data in una struttura di tipo systimedate

nel rung 3 sposo ogni singolo valore della struttura nella relativa varibile di tipo UINT ( ma a quale scopo  ? )

nel rung 4 c'è scritto "cambio ora plc ed è qui dove vado a mettere una variabile gia popolata in una nuova struttura

nel rung 5 converto questa nuova struttura in una variabile di tipo dword

nel rung 6 mi assicuro che la conversione sia andata a buon fine ed in caso positivo alzo un bit

nel rung 7 con questo bit abilito il "settaggio" della nuova data nel plc ( cosa che non riesco a fare perche non ho l'enable ) !!!!

ed infine nel rung 8 resetto il bit

 

Mi rendo conto che mi sto affogando in un bicchiere d'acqua  ma non riesco proprio a capire !!!

 

Grazie a tutti.

Link al commento
Condividi su altri siti

ti rispondo al volo

prima di tutto .. sei collegato al PLC On-line? ... sei in modalità simulazione?

l'ora che vedi è presa direttamente dal PLC se sei collegato oppure è un dato di default ma non vedo il problema!

l'esempio serve appunto per regolare l'ora su quella che vuoi tu alla stregua di un normale orologio ..

 

capisco ora che stai usando il Ladder (io non lo uso mai) da qui l'incompresione sull'enable,

non sono un esperto di Ladder perchè non mi piace ma per inserire l'enable:

Strumenti  > Generale > Inserisci modulo con EN/ENO (EN sta ovviamente per Enable)

in CFC invece è più semplice perchè è come ti dicevo,

 

l'esempio è funzionante e non capisco perchè non lo usi così com'è senza riscriverlo,

purtroppo ho la versione di SoMachine 4.2 per cui sicuramente è cambiato qualcosa ...

ciao

Link al commento
Condividi su altri siti

Ciao e grazie infinite.

io uso sm 3.1 il problema non è che non voglio usare l'esempio ma non mi funzia.

Quindi il procedimento sarebbe:

- acquisire la data con get

- converti questo calore in una struttura di tipo systemdate utilizzando convertutctodate 

- modificare l'ora muovendo delle variabili all'interno di un'altra struttura sempre di tipo t

- convertire questa seconda struttura utilizzando convertdatetoutc 

- infine dettare la nuova data plc con systimrtcset . 

è tutto corretto ?? Perché a me non va domani se riesco faccio altre prove !!!!

comunque di sono in online e sto simulando ed ho visto che se inserisco il blocco set non vedo più il valore UTC incrementare !

sara colpa di quel maledetto Enable ?

geazie grazie grazie ? 

 

Link al commento
Condividi su altri siti

strano perchè quando avevo la versione 3.1 l'esempio funzionava benissimo,

comunque ho sempre usato la versione in CFC .. con il ladder non so .. prova a caricare la versione CFC,

la procedura è esattamente quella dell'esempio

 

non ho capito una cosa:

sei on-line con il PLC nel senso che gli hai scaricato il programma e sei quindi andato on-line?

oppure sei in modalità simulazione nel senso che il PLC non c'è è stai appunto simulando?

 

nel secondo caso non puoi scrivere sul PLC perchè non c'è,

si appoggia al datatime del PC ma non può funzionare

ciao

 

Link al commento
Condividi su altri siti

No no ,

ho fisicamente il plc collegato !!

ma non va !!

quindi devo caricare la data modificarla con quella attuale  è serre nel plc la data nuova giusto ?

graZie

Link al commento
Condividi su altri siti

ci provo anche se come dicevo non è semplice senza avere il tuo file e quindi non so cosa stai facendo,

le procedure sono due e distinte tra loro una si occupa di leggere l'ora del PLC l'altra di scriverla/sovrascriverla,

sono ben distinte e con blocchi funzione dedicati, non sono complementari e puoi usarne anche solo una a seconda di quello che ti serve,

per leggere si usa il blocco funzione SysTimeRtcGet che poi andrà trasformato,

per scrivere invece si usa il blocco SysTimeRtcSet, e questomi sembra che sia chiaro,

 

per scrivere però non devi "caricare" la data e poi modificarla ma ricostruirla a parte,

ti crei delle variabili per ogni valore (MyNewYear, MyNewMonth, MyNewHour ...) le trasformi con SYSTIMEDATE,

e poi con il blocco funzione SysTimeRtcSet vai a sovrfascrivere il valore nel PLC, Stop!

ho semplificato, ovviamente dovrai seguire le indicazioni dell'esempio per i pezzi mancanti,

 

nota:

nella mia versione che è la 4.2, ho avuto un problema di funzionamento,

scoprendo per caso (non documentato) che SYTIMEDATE è stato sostituito con RTS_SYSTIMEDATE,

ma non so se con la tua versione è la stessa cosa ...

ciao

Link al commento
Condividi su altri siti

Ciao e grazie,

si a grandi linee è quello che faccio.

nel PDF che ho linkato l'esempio sta a pag 41

accidebti non riesco a capire dove sbaglio ,

domani posto un immagine del mio programma cosa vedi se noti qualcosa di "strano"

grazie ancora

Link al commento
Condividi su altri siti

ecco,

se riesci a dirmi cosa combino te ne sarei veramente molto grato....

in pratica già il primo blocco (SYSTIMERTCCONVERTDATETOUTC) se il bit "resetora" è alto ( e lo è ) mi dovrebbe restituire il valore utc corretto della data 04/02/2018 ore 10:22 invece mi restiuisce (4294967295) che convertito in data è 07/02/2016 ore 07:28:15 !!!

quindi già la prima istruzione ha qualcosa che non va.

 

Grazie infinite.

imm0.jpg

imm1.jpg

imm_2.jpg

Link al commento
Condividi su altri siti

..non uso il Ladder perchè non sopporto la confusione che crea .. ma è un mio limite,

 

vedo che non ci sono tutti i passaggi soprattutto la costruzione della data da sovrascrivere,

per esempio la tua variabile "x_Anno" diventa "Nuova_Data.wYday" che a naso sembra più il giorno dell'anno che l'anno stesso, fai una verifica,

poi la scrittura del nuovo valore deve avvenire con un impulso resettato subito dopo e non in continuo come fai tu (vedi SYSTIMERTCSET),

insomma devi inserire tutto il programma con la dichiarazione delle variabili altrimenti diventa difficile interpretarlo

ciao

Link al commento
Condividi su altri siti

49 minuti fa, Water scrisse:

nsomma devi inserire tutto il programma con la dichiarazione delle variabili altrimenti diventa difficile interpretarlo

nella prima foto puoi vedere la dichiarazione delle variabili.

 

Il programma per ora è tutto quì,x_Anno è inizializzato a 2018 e con il bit resetOra muovo questo valore  nell'elemento della struttura nuova_data.

In pratica con i move vado a popolare l'intera struttura nuova_data con giorno- mese - anno - ora - minuti - secondi.

 

Sbaglio ?

 

Grazie.

 

Link al commento
Condividi su altri siti

52 minuti fa, Water scrisse:

poi la scrittura del nuovo valore deve avvenire con un impulso resettato subito dopo e non in continuo come fai tu (

si ci avevo pensato anche io ma non riesco ad inserire quel maledetto enable nel blocco SYSTIMERTCSET  !!!!

 

Grazie.

Link al commento
Condividi su altri siti

zanellatofabio

In Ladder : Inserisci un MOVE , click su MOVE e scrivi al suo posto SYSTIMERTCSET
Io anni fa, la gestione dell'orologio l'avevo fatta su un blocco in cfc, non cambia molto, avevo sempre usato l'EN.
In ladder a volte, per inserire delle cose, bisognava fare qualche acrobazia.
Ciao e buon lavoro.

 

sys1.jpg

Link al commento
Condividi su altri siti

Diavolo, adesso quasi funzione !!!!

ma che cavolo possibile devo inserire un move per inserire l'enable su sistimertcset ?????????? :blink:

Grazie infinite, comunque ho detto che quasi funziona perche con il get leggo 1517906128 che corrisponde alle 9:35 di oggi invece convertendo questo valore con convertutctodate mi restituisce le 8:36 praticamente un ora indietro credo che sia dovuto al settaggio ora legale/solare giusto ? ( almeno spero )

Come posso cambiarla  ?

grazie.

Link al commento
Condividi su altri siti

Ecco allora sto punto a capo !!!

Domandine:

-Come faccio ad impostare la MIA ora attuale ? Con rtcdrift? Come ?

 

- Quindi posso inserire questo codice solo per esempio se il ciclo è " il primo ciclo" in modo tale che setto l'ora corretta che utilizzato nella mia applicazione.

giusto ?

 grazie infinite !!! 

 

 

Link al commento
Condividi su altri siti

non me ne vogliate !! non riesco ancora a capire se funziona e perché !!

per esempio ora nel primo rung ho  tre move, ho cambiato data . poi ho inserito l'enable anche al quarto rung ( blocco convert date to utc )

alzando un bit con il suo fronte effettuo il move ma poi sotto alzando un altro bito con il suo fronte mi si dovrebbero aggiornare i secondi ( INTENDO QUELLI DEL QUARTO RUNG ) invece ciò non accade, mi ritrovo sempre 4294967295 invece se cambio data effettuo il move quel numero dovrebbe cambiare

quindi anche all'ingresso del blocco set ho 4294967295 che corrisponde al 07/02/2016  ore 07:28  ( ma io ho settato con i move la data a 06-02-2018 19:02

invece nel blocco get mi ritrovo magicamente 1517940868 che è il valore corretto ( ho provato a fare la conversione con questo sito )

infine se tramite il blocco convertutctodate converto questo valore 1517940868  ( che ripeto risulta essere giusto ) mi ritrovo data corretta ma un ora indietro !!!

 

Non so più quello che fare !! se riesco provo a fare un video per farvi vedere !!

 

Grazie.

Link al commento
Condividi su altri siti

zanellatofabio

Sinceramente anche io non riesco a seguirti, inoltre somachine 3 sono anni che non lo uso più e al momento ho la testa in tutta altra cosa.

Qui MyController.Plc Logic.Application.OROLOGIO il blocco esportato che avevo fatto io per leggere e scrivere l'orologio del plc.
Lo puoi importare e poi vedere se ti può essere utile per schiarirti le idee.

 

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