Vai al contenuto
PLC Forum


Countdown Data Impostata


Messaggi consigliati

Inserito:

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!


Inserita:

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

Inserita:

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.

Inserita:

Ciao @alessandropa, però bisogna purtroppo tenere conto dell'anno bisestile ecc... :(
Temo che ci sarà molto da sudare!

Inserita:
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!

Inserita: (modificato)
((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
Inserita: (modificato)
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
Inserita:
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!

Inserita:
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 ;-)

 

Inserita:
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 

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