Vai al contenuto
PLC Forum


Wincc Flex - MODIFICA ORA CPU


Messaggi consigliati

Inserito:

Come si aggiorna l'ora della CPU con uno SCADA in WinCC Flex?

A me basterebbe una funzione che mi sincronizzi l'orologio della CPU con quello del PC cone in MicroWIN che potrei avviare tramite un pulsante.

Ciao

Simone


Matteo Montanari
Inserita:

anche in step7 ci sono le funzioni per leggere e per scrivere la data ed ora nella CPU.

apri la biblioteca standard di step7, seleziona la cartella "System Function Blocks"

trovi:

Impostazione dell'orologio con la SFC 0 "SET_CLK"

Lettura dell’orologio con la SFC 1 "READ_CLK"

selezionando il blocco che ti interessa e premendo "F1" ottieni tutte le informazioni che ti servono.

Attenzione al formato delle variabili

Inserita: (modificato)
Come si aggiorna l'ora della CPU con uno SCADA in WinCC Flex?

Ciao,

Vado a naso..

Potresti ricavare la data/ora dal Kernel32 con la Windows API GetLocalTime.

// forma della struttura

typedef struct _SYSTEMTIME {  
    WORD wYear; 
    WORD wMonth; 
    WORD wDayOfWeek; 
    WORD wDay; 
    WORD wHour; 
    WORD wMinute; 
    WORD wSecond; 
    WORD wMilliseconds; 
} SYSTEMTIME; 

/////////////////////////////////

#pragma code ("Kernel32.DLL")
VOID GetLocalTime(LPSYSTEMTIME lpSystemTime   // address of system time structure);
#pragma code()

// my tags

WORD wYearTag;
WORD wMonthTag; 
WORD wDayTag; 
WORD wHourTag; 
WORD wMinuteTag; 
WORD wSecondTag; 


// Crea l'oggetto

SYSTEMTIME Sys_Time; 

// get the date and time

GetLocalTime(&Sys_Time);

// Set wincc tags

SetTagWord('wYearTag',Sys_Time.wYear);
SetTagWord('wMonthTag',Sys_Time.wMonth); 
SetTagWord('wDayTag',Sys_Time.wDay); 
SetTagWord('wHourTag',Sys_Time.wHour); 
SetTagWord('wMinuteTag',Sys_Time.wMinute); 
SetTagWord('wSecondTag',Sys_Time.wSecond);
..

Impostazione dell'orologio con la SFC 0 "SET_CLK"

Poi le variabili PLC associate a i tag sono gli input per "SET_CLK".;)

Modificato: da Savino
Inserita: (modificato)
..l'orologio della CPU con quello del PC cone in MicroWIN

Quindi, se e' per una S7-200 ho visto alla pag. 236 del manuale che ce' la funzione "Set Real-time Clock".

La data sull'orologgio di sistema e' fondata a byte:

Year/Month

Day/Hour

Minute/Second

..

Allora i Tags dello SCADA dovrebbe associare delle memorie di appoggio e quindi fare la conversione da WORD to BYTE ed anche in BCD per poi settare l'orologgio con i nuovi valori. ;)

Modificato: da Savino
Inserita: (modificato)

La funzione set_rtc la conosco ma cio' implica che debba cambiare il codice nella CPU. Possibile che WinCC non abbia una funzione autonoma per aggiornare l'ora della CPU, eppure MicroWinn non utilizza codice per sincronizzare l'ora. Se non trovo altro metterò mano al codice per aggiornarlo.

Ciao

Simone

Modificato: da ennebienne
Matteo Montanari
Inserita:
La funzione set_rtc la conosco ma cio' implica che debba cambiare il codice nella CPU.

quello che sai, se non lo dici, noi non possiamo saperlo.

eppure MicroWinn non utilizza codice per sincronizzare l'ora

sicuro? e la funzione READ_RTC e SET_RTC cosa sono?

Se non trovo altro metterò mano al codice per aggiornarlo

credo sia l'unico modo per raggiungere il tuo obbiettivo.

nel caso volessi utilizzare esempi pre-confezionati di Siemens controlla questo link oppure questo link (in lingua inglese)

Inserita:

In MicroWin al menu' PLC/Orologio hardware... la finestra permette di sincronizzare l'orologio del PLC. Non credo che utilizzo la funzione set_rtc o almeno se la utilizza vuol dire che in ogni CPU è già integrata senza doverla aggiungere nel codice. Solo per questo mi domandavo se non ci fosse già la possibilità di sfruttarla tramite WinCC o se ci fosse una apposita funzione.

Comunque mi sembra che la gestione dell'orologio sia importante e non credevo che non esistesse una funzione apposita e semplice senza doverla integrare nel codice del programma.

Ciao

Simone

Matteo Montanari
Inserita:
In MicroWin al menu' PLC/Orologio hardware... la finestra permette di sincronizzare l'orologio del PLC. Non credo che utilizzo la funzione set_rtc o almeno se la utilizza vuol dire che in ogni CPU è già integrata senza doverla aggiungere nel codice. Solo per questo mi domandavo se non ci fosse già la possibilità di sfruttarla tramite WinCC o se ci fosse una apposita funzione.

anche in step 7 esiste la funzione per aggiornare la data ed ora della cpu con quella del PC, ma come per Microwin è integrata dentro al programma stesso.

molto probabilmente si tratta di un comando di basso livello o qualche codice di comando, come ad esempio il comando e relativa funzione che si utilizza per comunicare ai pannelli operatore.

le funzioni SFC sono "standard" dentro il firmware della CPU, non è detto che comunque il comando dal software utilizzi queste funzioni (trasformando i dati letti dall'"orologio" del pc in dati comprensibili per la CPU).

Comunque mi sembra che la gestione dell'orologio sia importante e non credevo che non esistesse una funzione apposita e semplice senza doverla integrare nel codice del programma.

come è solito ripetere Livio, Siemens = UCCS (Ufficio Complicazione Cose Semplici)

nel sito Siemens ho trovato gli articoli, presenti nei link del messaggio precedente, ed utilizzavano sia ProTool sia WinCC Flexibile, puoi verificare se con WinCC (SCADA evoluto di Siemens) esiste qualcosa che non utilizza SFB/SFC del PLC ma qualche comando diverso, ma credo che non ci sia nulla.

Inserita: (modificato)
Comunque mi sembra che la gestione dell'orologio sia importante e non credevo che non esistesse una funzione apposita e semplice senza doverla integrare nel codice del programma

Dunque, tu stai cercando un " Controllo Date & time" fondato su un .EXE oppure su una OCX in modo da richiamare od incastronare da/in una pagina del tuo progetto SCADA.

Questo controllo ricaverebbe la data e ora dal PC e la sovrascriverebbe direttamente nel orologgio del sistema della CPU, a livello ROM, cioe' senza necesita' di scrivere codice nella RAM, cosi come fa il MicroWin.

Se questo controllo non ce lo hai nella lista di possibili oggetti custom da inserire beh, allora prova contattare l'agente Siemens di zona e vedi cosa potrebbe offrirti in base alla tua versione di WinCC.

Altrimenti, puoi crearti la tua propia finestra che attraverso uno scripts in VB o C, ricaverebbe la data e ora dal PC utilizzando altre funzioni come quella sopra postata oppure vedi sotto "internal functions" cosa avresti disponibile per accedere al orologgio del PC. Poi, associando i tags con le variabili del PLC impostaresti l'orologgio scrivendo del codice in RAM con il blocco SET_RTC .

Ciao.

Modificato: da Savino
Inserita:

Grazie a tutti, mi toccherà fare quello che pensavo ma speravo di evitare con una soluzione piu' veloce.

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