Vai al contenuto
PLC Forum


Ora Cpu in intero....


VINZENT

Messaggi consigliati

Gentilissimi,

S7_300 programmata con tia portal v13.

Leggo l'ora del PLC con il blocco funzioni SFC1 e lo metto in una area dati db con il formato DT.

Leggo tranquillamente.

Pero' ora vorrei puntare il singolo byte per estrarre anno,mese,ora,minuti,secondi.

Che blocco uso? oppure l'istruzione in AWL quale sarebbe? o difficoltà a fare il puntatore.

Grazie

sfc1 DT.png

Link al commento
Condividi su altri siti


Operational Amplifier

Se guardi nel DB dove hai configurato il dato in formato DTL vedrai che è una struttura di variabili e troverai già le informazioni che ti servono.

Buon Lavoro

Link al commento
Condividi su altri siti

Operational Amplifier

Bene...lo devi scomporre, appoggia il dato su una variabile temporanea di un FC e poi leggi il singolo byte puntando all'area, sono 8 Byte.

 

DT.png

Link al commento
Condividi su altri siti

perfetto..gia' fatto tutto..e la tabella che mi hai girato lo gia' vista...ma non so come creare un puntatore per leggere solo la data o l'ora

Link al commento
Condividi su altri siti

sto' gia' tentando di copiarlo...ma mi manca il CDT che io non ho.

e inoltre vorrei sapere sulla prima righa dell'anno...cosa ci metto tu hai messo LB0 a cosa si riferisce?

 

Link al commento
Condividi su altri siti

Operational Amplifier

Aspetta facciamo un passo indietro...vedo che non stai capendo l'esempio che ti ho allegato.

Quel CDT che vedi nel mio esempio per te è l' OUT (del blocco di sistema) e lì metti una variabile temporanea di tipo DT (sopra nell'albero di step7), fino a quì non dovresti avere problemi giusto?

Link al commento
Condividi su altri siti

Operational Amplifier

Perchè con il Tia Portal accere in quel modo non è il massimo devi usare lo slice access digita il nome della variabile temporanea poi fai .b di byte

Link al commento
Condividi su altri siti

  • 4 months later...

Io lo ho fatto in questo modo e ti garantisco che funziona, provalo anche tu.

Fai attenzione che la variabile CDT è temporanea ed è definita come date_and_time.

 

      SET

  

      CALL  "READ_CLK"
       RET_VAL:=#error
       CDT    :=#readDateAndTime

 

 

      LAR1  P##readDateAndTime

 

/// Lettura dell'anno

      L     B [AR1,P#0.0]
      T     "DB_PANNELLI_PEZZI".READ_DT.ANNO

/// Lettura del mese

      L     B [AR1,P#1.0]
      T     "DB_PANNELLI_PEZZI".READ_DT.MESE

/// Lettura del giorno

      L     B [AR1,P#2.0]
      T     "DB_PANNELLI_PEZZI".READ_DT.GIORNO

/// Lettura dell'ora

      L     B [AR1,P#3.0]
      T     "DB_PANNELLI_PEZZI".READ_DT.ORA

/// Lettura dei minuti

      L     B [AR1,P#4.0]
      T     "DB_PANNELLI_PEZZI".READ_DT.MINUTI

/// Lettura dei secondi

      L     B [AR1,P#5.0]
      T     "DB_PANNELLI_PEZZI".READ_DT.SECONDI

/// Lettura del giorno della settimana

      L     B [AR1,P#7.0]
      L     B#16#F
      UW                                // And a parola a 16 bit
      T     "DB_PANNELLI_PEZZI".READ_DT.WEEKDAY
 

Link al commento
Condividi su altri siti

Se provi a fare una ricerca nel forum l'argomento è stato trattato varie volte.
Addirittura se non erro, il buon batta aveva messo a disposizione una libreria che spacchettava il formato DT.

 

Comunque in sostanza i metodi descritti sopra dovrebbero andare, si tratta solo di scomporre il DT andando a leggere i singoli byte come descritto dalla struttura che trovi nella guida Step7

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