Vai al contenuto
PLC Forum


Orologio Con S7 300


d-cautomazione

Messaggi consigliati


lanci SFC1 e vai a scrivere l'orario di sistema in una variabile Date and Time.

Se vuoi modificarla devi usare SFC0

Trovi gli esempi nelle bibblioteche

Link al commento
Condividi su altri siti

Matteo Montanari
potresti mandarmi un esempio perche non riesco ad aprire le librerie "blocco" protetto non so' come fare

avrei voluto risponderti con:

Trovi gli esempi nelle bibblioteche

o utilizzare la funzione cerca del sito

ma dopo alcuni utenti mi accusano, in via indiretta, di essere maleducato.

Le risposte che vengono fuori quando uno si azzarda a chiedere. Si comincia con la semplice risposta di "usa la funzione cerca" ....o nel sito o in internet....per poi continuare con le frecciate che vorrebbero essere ironiche....ma che si rilevano per quelle che sono... una maleducazione unica.

quindi per essere più educato ti rispondo con:

non è enecessario aprire il blocco protetto, primo perchè è protetto, secondo perchè risiede nel firmware della CPU, non puoi toglierlo, modificarlo o altro.

consulta le librerie tramite apri->progetto->librerie

selezione SFC0 e premi F1 per avere informazioni su come utilizzarlo.

stessa cosa per SFC1

oppure puoi consultre il manuale

eventualmente puoi richiedere altre cose se queste non ti bastano, ma darti la pappa pronta...

rimboccati le maniche e prova.

P.S.: Dall'. in linea di Step7 (che credo che tu abbia)

//********************************************************************************
**

//Operandi utilizzati

//Operando  Significato
//E 0.0    Ingresso per la lettura di una variabile temporale in MD 0
//E 0.1    Ingresso per l'impostazione dell'ora
//MW 0    Data, modificabile tramite STATUS VAR 
//MD  2    Ora, modificabile tramite STATUS VAR 
//MW 6    Data attuale 
//MW 8    Giorno attuale 
//MD  10    Ora del giorno attuale 
//********************************************************************************
**

FUNCTION FC 10 : VOID

TITLE = Impostazione e lettura dell'ora della CPU

VERSION : 1.0

VAR_TEMP

IN_UHRZEIT    : TIME_OF_DAY;    // Parametro attuale TOD
OUT_UHRZEIT    : TIME_OF_DAY;    // Parametro attuale TOD
IN_DATUM    : DATE;    // Parametro attuale DATE
OUT_DATUM    : DATE;    // Parametro attuale DATE
IN_UHRZEIT_DATUM    : DATE_AND_TIME;  // Parametro attuale DT
OUT_UHRZEIT_DATUM    : DATE_AND_TIME;    // Parametro attuale DT
AKT_RETWERT    : INT;    // Valore attuale di ritorno
END_VAR

BEGIN

NETWORK
TITLE = Memorizzazione dell'ora e
// della data desiderate
// nelle variabili temporali
    L    D#1997-1-20;    //Predefinizione di una data come costante
    UN    E 0.0;  //se E 0.0 = 0; valore variabile in MW 0 con E 0.0 = 1
    SPB    nko1;
    L    MW 0;  //Predefinizione di un valore in MW 0 come
    //data (modifica tramite STATUS VAR)
nko1:    T    #IN_DATUM;    
    L    TOD#13:30:0.0;    //Predefinizione dell'ora come costante
    UN    E 0.0;  //se E 0.0=0; valore variabile in MD 2 con E 0.0 = 1

SPB    nko2;
    L    MD 2;      //Predefinizione di un valore in MD 2 come
    //ora (modifica tramite STATUS VAR)
nko2:    T    #IN_UHRZEIT;  

NETWORK
TITLE = Collegamento di data e
// ora nella variabile di uscita
// (formato DATE_AND_TIME)
    CALL    FC 3  //FC 3 standard "D_TOD_DT" (conversione di D e
    //TOD in DT)
   (IN1  := #IN_DATUM,    // Riunisce data della variabile di 
    //ingresso (formato DATE)
    IN2    :    = #IN_UHRZEIT,    //e ora della variabile di ingresso

   RET_VAL    := #IN_UHRZEIT_DATUM);    //(Format TIME_OF_DAY) 
    //nella variabile di uscita
    //(formato DATE_AND_TIME)

NETWORK
TITLE = Impostazione dell'ora con fronte di salita
    U    E 0.1;  //Impostazione ora con fronte di salita su E 0.1
    FP    M 255.1; 
    =    M 255.0;  //Merker di fronte

NETWORK
TITLE = Impostazione dell'ora
    U    M 255.0;  // Impostazione ora, se M 255.0=1 (fronte di salita)
    SPBNB    _005;  
    CALL    SFC 0  // SFC 0 "SET_CLK" (impostazione allarme orologio)

  (PDT  := #IN_UHRZEIT_DATUM,    //Data e ora attuali
    RET_VAL    := MW 200);    // Codice di errore 
    //(se SFC elaborata con errori)
_005:    U    BIE; 
    =    A 4.0;  // A 4.0=1, se impostazione ora OK

NETWORK
TITLE = Lettura dell'ora
    CALL    SFC 1  //SFC 1 "READ_CLK" (lettura dell'ora)
   (RET_VAL    := #AKT_RETWERT ,    //Codice di errore 
    //(se SFC elaborata con errori)
    CDT  := #OUT_UHRZEIT_DATUM);    //Ora e data lette 
    //(formato DT)

NETWORK
TITLE = Analisi della data
    CALL    FC 6  //FC 6 "DT_DATE" (conversione da DT a DATE)
   (IN  := #OUT_UHRZEIT_DATUM,    //Lettura di ora e data
    //(formato DT) 
    RET_VAL    := #OUT_DATUM); //Variabile di uscita in formato DATE
    //(data attuale)

NETWORK
TITLE = Visualizzazione della data attuale
    L    #OUT_DATUM;
    T    MW 6;  //Visualizzazione data attuale in MW 6

NETWORK
TITLE = Analisi del giorno della settimana
    CALL    FC 7  //FC 7 "DT_DAY" (conversione da DT a DAY)

  (IN  := #OUT_UHRZEIT_DATUM,    //Lettura di ora e data
    //(formato DT)
    RET_VAL    := MW 8)    //Visualizzazione giorno attuale in MW 8

NETWORK
TITLE = Analisi dell'ora
    CALL    FC 8  //FC 8 "DT_TOD" (conversione da DT a TOD)
   (IN  := #OUT_UHRZEIT_DATUM,  //Ora e data lette
    //(format DT)
    RET_VAL    := #OUT_UHRZEIT);    //Variabile di uscita in formato TOD 
    //(ora attuale del giorno)

NETWORK
TITLE = Visualizzazione dell'ora attuale

L    #OUT_UHRZEIT;
    T    MD 10;  // Visualizzazione ora giorno attuale in MD 10

END_FUNCTION

//********************************************************************************
**
ORGANIZATION_BLOCK OB 1
TITLE = Richiamo della FC 10
VERSION : 1.0

VAR_TEMP
    SYSTEM :    ARRAY [1..20] OF BYTE;
END_VAR

BEGIN

    CALL    FC 10;

END_ORGANIZATION_BLOCK

in questo modo penso di aver soddisfatto le tue richieste.

P.S.: Imparate a leggere i manuali prima di fare richieste basilari come questa.

Modificato: da keosmm
Link al commento
Condividi su altri siti

Le risposte che vengono fuori quando uno si azzarda a chiedere. Si comincia con la semplice risposta di "usa la funzione cerca" ....o nel sito o in internet....per poi continuare con le frecciate che vorrebbero essere ironiche....ma che si rilevano per quelle che sono... una maleducazione unica.

Vorrei proprio sapere chi è quel sapientone che ti bastona in questo modo...

Trovo che molti, quindi in accordo con te, trovino molto più comodo chiedere aiuto alla prima difficoltà, piuttosto che perdere qualche ora per cercare di capire come funzionano le cose, facili o difficili che siano.

Vai keosmm che sei forte!

Link al commento
Condividi su altri siti

Salve d-cautomazione,

Come Ken ti aveva gia' segnalato, puoi leggere ed scrivere l'orologgio di sistema

del PLC utilizando SFC0 ed SFC1.

Come prima cosa, imposta due strutture di data ,

essempio:

DB7 = DBREAD_SYS_DATE_TIME , per ricavare

DB8 = DBWRITE_SYS_DATE_TIME , per impostare

Entrambi DBs hanno questa forma:

Address   Name                 Type            Initial value 
  0.0                           STRUCT
 +0.0      Current_DateTime     DATE_AND_TIME   DT#90-1-1-0:0:0.000
 =8.0                           END_STRUCT
Poi, ti costruisci due FC, FC7= ReadSystemDateAndTime FC8= WriteSystemDateAndTime
-----------------------------------------------------------------------------------
FC7  // Ricava data ed ora dal sistema

CALL SFC 1
INO :="DBREAD_SYS_DATE_TIME".Current_DateTime  // DB 7.DBX0.0
RET_VAL:=MW172   

// Per leggere
DB7.DBB   0  // anno
DB7.DBB   1  // mese
DB7.DBB   2  // giorno
DB7.DBB   3 //  ora
DB7.DBB   4  // min
DB7.DBB   5  // sec
DB7.DBB   6  // msec
DB7.DBB   7  // msec
----------------------------------------------------------------------------------
FC8  //  imposta nuovi valori per ora,min and sec.
L  MB 210            // Flag con nuovo valore
T  DB8.DBB   3
L  MB211
T  DB8.DBB   4
L  MB212
T  DB8.DBB   5

CALL SFC 0
INO :="DBWRITE_SYS_DATE_TIME".Current_DateTime  // DB 8.DBX0.0
RET_VAL:=MW174
------------------------------------------------------------------------------------
Per richiamare il FC 8  da qualche parte.....

          UN M 200.0    // Richiesta d'impostazione , bit M200.0 = 0
          SPB JUMP
          CALL  FC8     // imposta nuovi valori solo una volta
          S M 200.0
JUMP : NOP 0
-------------------------------------------------------------------------------------

FC 7 potrebbe essere richiamato da OB35 .

Fammi sapere se ci sei riuscito a girare........

Saluto.

Link al commento
Condividi su altri siti

Sorry,

Ho sbagliato....

Per richiamare il FC 8  da qualche parte.....

         UN M 200.0    // Richiesta d'impostazione , bit M200.0 = 0
         SPB JUMP
         CALL  FC8     // imposta nuovi valori solo una volta
         S M 200.0
JUMP : NOP 0
piutosto e'
Per richiamare il FC 8  da qualche parte.....

         UN M 200.0    // Richiesta d'impostazione , bit M200.0 = 1
         SPB JUMP
         CALL  FC8     // imposta nuovi valori solo una volta
         R M 200.0
JUMP : NOP 0

Link al commento
Condividi su altri siti

Sempre parlando di orologio.

Il formato è date and time. se ricordo bene sono 8 byte, ogni byte rappresenta tipo anno, mese.... ore secondi.

Su apparecchiature a riga tipo OP7, per visualizzare l'ora dalla CPU, devo perforza creare la vasriabile ora, secondi, etc etc e poi visualizzarle in Hex o esiste un metodo migliore?

Link al commento
Condividi su altri siti

  • 3 years later...

<_< Ciao a tutti, volevo solo chiedere un chiarimento a proposito dei fattori di utilizzo (Ku) e contemporaneità (Kc) da utilizzare per il dimensionamento di un impianto elettrico.

Ci sono delle tabelle, riguardanti anche l'abitazione civile, che indicano i vari fattori da utilizzare?

Se si, dove posso trovarli?

C'è per caso una metodologia di calcolo che permette di individuare in modo semplice tali elementi?

Grazie a tutti :) , aspetto una miriade di risposte :lol:

Link al commento
Condividi su altri siti

Benny Pascucci

Ciao patmen,

le tabelle dei fattori di utilizzazione e contemporaneità le trovi un po' dovunque: libri di impianti, manuali degli impianti elettrici, sul WEB, ad esempio con una semplice ricerca ho trovato questo ottimo link.

Ovviamente troverai valori diversi a seconda della fonte e lì interviene l'esperienza, ma su questo....non posso aiutarti.... :rolleyes:

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