Vai al contenuto
PLC Forum


Countdown Data Impostata


Gabrcatt

Messaggi consigliati

Ciao a tutti!

Volevo gentilmente avere un aiuto per fare un countdown che ti mostrasse giorni, ore, minuti e secondi che mancano ad una data impostata.... come potrei procedere?

Qui un esempio di cosa vorrei 
image.png.f803bc49a28f18c606b87d8cce1fd2f3.png

Questo visibile da pannello operatore

 

Configurazione: CPU 1510SP F-1 PN + TP2200 COMFORT PRO

 

GRAZIE MILLE A TUTTI!

Link al commento
Condividi su altri siti


Ciao , io avevo fatto un programma per convertire il formato Time di un Timer.ET nei minuti mancanti come da immagine allegata .

 

 

Invece in questo esempio in Javascript (lo puoi facilmente convertire in ST) ti mostra come convertire un numero in secondi in Giorni , Ore , minuti e secondi)

 

function SecondsToString(sec)
{
	var tmp = sec;
	var Days = Math.floor(tmp / 86400);
	tmp -= Days * 86400;
	
	var Hours = Math.floor(tmp / 3600);
	tmp -= Hours * 3600;
	
	var Min = Math.floor(tmp / 60);
	tmp -= Min * 60;
	
	var textDate = "";
	
	if(Days > 0) {
		textDate = textDate + Days + " Days";
	}
	
	if(Hours > 0) {
		if(textDate.length > 0){ textDate += " " };
		textDate = textDate + Hours + " Hours";
	}
	
	if(Min > 0) {
		if(textDate.length > 0){ textDate += " " };
		textDate = textDate + Min + " Minutes";
	}
	
	if(tmp > 0) {
		if(textDate.length > 0){ textDate += " " };
		textDate = textDate + tmp + " Seconds";
	}
	
	return textDate;	
}

 

Cattura.PNG

Link al commento
Condividi su altri siti

Non so se possa funzionare ma, se tu alla data che imposti da pannello(ammessa che sia futura), sottrai la data attuale del plc la variabile risultato è il tuo countdown.

Non lo posso provare sto solo pensando.

Link al commento
Condividi su altri siti

il 2/2/2019 at 08:17 , ifachsoftware scrisse:

Ciao , io avevo fatto un programma per convertire il formato Time di un Timer.ET nei minuti mancanti come da immagine allegata .

 

 

Invece in questo esempio in Javascript (lo puoi facilmente convertire in ST) ti mostra come convertire un numero in secondi in Giorni , Ore , minuti e secondi)

 


function SecondsToString(sec)
{
	var tmp = sec;
	var Days = Math.floor(tmp / 86400);
	tmp -= Days * 86400;
	
	var Hours = Math.floor(tmp / 3600);
	tmp -= Hours * 3600;
	
	var Min = Math.floor(tmp / 60);
	tmp -= Min * 60;
	
	var textDate = "";
	
	if(Days > 0) {
		textDate = textDate + Days + " Days";
	}
	
	if(Hours > 0) {
		if(textDate.length > 0){ textDate += " " };
		textDate = textDate + Hours + " Hours";
	}
	
	if(Min > 0) {
		if(textDate.length > 0){ textDate += " " };
		textDate = textDate + Min + " Minutes";
	}
	
	if(tmp > 0) {
		if(textDate.length > 0){ textDate += " " };
		textDate = textDate + tmp + " Seconds";
	}
	
	return textDate;	
}

 

Cattura.PNG


Ciao! Purtroppo ho capito che bisogna considerare anno bisestile ecc.... esce fuori un casino :( nulla dovrò orientarmi su altro! Grrazie mille a tutti comunque!

Link al commento
Condividi su altri siti

((anno % 4 == 0 && anno % 100 != 0) || anno % 400 == 0)

In C col codice sopra indicato ti indica se l'anno passato è Bisestile .... (considera che % in C vuol dire fare il modulo ossia puoi utilizzare la funzione del PLC MOD)

Ti ho allegato sotto il codice in ST

Cattura.PNG

Modificato: da ifachsoftware
Link al commento
Condividi su altri siti

18 minuti fa, ifachsoftware scrisse:

In C col codice sopra indicato ti indica se l'anno passato è Bisestile ....

 

Almeno sino al prossimo millennio.:smile: (Gli anni millenerari non possono essere bisestili, così dopo il 1996 l'anno bisestile seguente non fu il 2000, ma il 2004)

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

51 minuti fa, Livio Orsini scrisse:

 

Almeno sino al prossimo millennio.:smile: (Gli anni millenerari non possono essere bisestili, così dopo il 1996 l'anno bisestile seguente non fu il 2000, ma il 2004)

Ciao Livio :) in che senso? che tipo gli anni 2000, 3000, 4000 ecc... non avranno il 29 a febbraio?

1 ora fa, ifachsoftware scrisse:

((anno % 4 == 0 && anno % 100 != 0) || anno % 400 == 0)

In C col codice sopra indicato ti indica se l'anno passato è Bisestile .... (considera che % in C vuol dire fare il modulo ossia puoi utilizzare la funzione del PLC MOD)

Ti ho allegato sotto il codice in ST

Cattura.PNG

Ci provo ;) e ti dico

Grazie mille ancora!

Link al commento
Condividi su altri siti

Quote

Gli anni millenerari non possono essere bisestili

Se mi ricordo bene, a non essere bisestili non sono gli anni "millenari", ma ogni 4 secoli. Non è stato bisestile il 1600, non è stato bisestile il 2000, non sarà bisestile il 2400.
Ma non credo che, per noi, questo rappresenti un grosso problema ;-)

 

Link al commento
Condividi su altri siti

1 ora fa, batta scrisse:

Se mi ricordo bene, a non essere bisestili non sono gli anni "millenari", ma ogni 4 secoli. Non è stato bisestile il 1600, non è stato bisestile il 2000, non sarà bisestile il 2400.
Ma non credo che, per noi, questo rappresenti un grosso problema 😉

 

Su questo concordo :D 

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