répéter une tache à une heure précise
-
- Générateur de blocs fonctions
- Messages : 144
- Inscription : 23 sept. 2019, 18:21
répéter une tache à une heure précise
Bonjour à tous et toutes
Je vous souhaite une bonne année !!
Alors j'explique mon idée, je souhaite piloter une ventilation industriel tout les jours de la semaine deux fois par jour à des tranches horaires prédéfini par l’utilisateur via un IHM.
Par exemple démarrer la ventilation entre 8H00 / 11H00 et entre 15H00 / 20H00
Avez vous une idée pour programmer ça ? existe t il une horloge dans l'API
Ps: mon API est un 750-842
Je vous souhaite une bonne année !!
Alors j'explique mon idée, je souhaite piloter une ventilation industriel tout les jours de la semaine deux fois par jour à des tranches horaires prédéfini par l’utilisateur via un IHM.
Par exemple démarrer la ventilation entre 8H00 / 11H00 et entre 15H00 / 20H00
Avez vous une idée pour programmer ça ? existe t il une horloge dans l'API
Ps: mon API est un 750-842
-
- Générateur de blocs fonctions
- Messages : 144
- Inscription : 23 sept. 2019, 18:21
Re: répéter une tache à une heure précise
j'ai essayer ce programme, mais je n'ai que des "0" qui apparaisse une fois le programme chargé.
VAR_GLOBAL
(* Déclaration des données pour le temps *)
CurDate : DINT; (*Déclaration de la double int pour la date *)
CurTime : DINT; (* Déclaration de la double int pour le temps *)
DTNow: SystemTimeDate;
STNow: SysTime64;
END_VAR
PROGRAM PRG_TIME
VAR
GetExtractCurrentTime:CurTimeEx; (* Declaration de la fonction d’extraction du temps *)
END_VAR
le programme en langage structuré:
(* Gestion de la date et de l’heure dans les différents module*)
DTNow.Year := 0; (* Recupere l’année *)
DTNow.Month := 0; (* Recupere le mois *)
DTNow.Day := 0; (* Recupere le jour *)
DTNow.Hour := 0; (* Recupere l’heure *)
DTNow.Minute := 0; (* Recupere les minutes *)
DTNow.Second := 0; (* Recupere les secondes *)
DTNow.DayOfWeek := 0; (* Recupere la valeur pour le jour de la semaine 1=Lundi, 2=Mardi….. *)
STNow.ulHigh := 0; (* Temps systeme *)
STNow.ulLow := 0; (* Temps systeme *)
VAR_GLOBAL
(* Déclaration des données pour le temps *)
CurDate : DINT; (*Déclaration de la double int pour la date *)
CurTime : DINT; (* Déclaration de la double int pour le temps *)
DTNow: SystemTimeDate;
STNow: SysTime64;
END_VAR
PROGRAM PRG_TIME
VAR
GetExtractCurrentTime:CurTimeEx; (* Declaration de la fonction d’extraction du temps *)
END_VAR
le programme en langage structuré:
(* Gestion de la date et de l’heure dans les différents module*)
DTNow.Year := 0; (* Recupere l’année *)
DTNow.Month := 0; (* Recupere le mois *)
DTNow.Day := 0; (* Recupere le jour *)
DTNow.Hour := 0; (* Recupere l’heure *)
DTNow.Minute := 0; (* Recupere les minutes *)
DTNow.Second := 0; (* Recupere les secondes *)
DTNow.DayOfWeek := 0; (* Recupere la valeur pour le jour de la semaine 1=Lundi, 2=Mardi….. *)
STNow.ulHigh := 0; (* Temps systeme *)
STNow.ulLow := 0; (* Temps systeme *)
Re: répéter une tache à une heure précise
Bonjour
J'ai fait çà et çà marche:
FUNCTION_BLOCK EXTRACTHEURE
VAR_INPUT
END_VAR
VAR_OUTPUT
GetExtractCurrentTime:CurTimeEx; (* Declaration de la fonction d'extraction du temps *)
CurDate: DINT; (* Declaration de la double int pour la date*)
DTNow: SystemTimeDate;
CurTime: DINT; (*Declaration de la double int pour le temps *)
STNow: SysTime64;
END_VAR
VAR
JourSemaine: BYTE;
input: WORD;
END_VAR
(* Gestion de la date et de l'heure dans les differents module*)
DTNow.Year := 0; (* Recupere l'année *)
DTNow.Month := 0; (* Recupere le mois *)
DTNow.Day := 0; (* Recupere le jour *)
DTNow.Hour := 0; (* Recupere l'heure *)
DTNow.Minute := 0; (* Recupere les minutes *)
DTNow.Second := 0; (* Recupere les secondes *)
DTNow.DayOfWeek := 0; (* Recupere la valeur pour le jour de la semaine 1=Lundi, 2=Mardi..... *)
STNow.ulHigh := 0; (* Temps systeme *)
STNow.ulLow := 0; (* Temps systeme *)
xSummer:=0;
GetExtractCurrentTime(SystemTime:=STNow , TimeDate:=DTNow ); (* Extraction du temps courant pour charger les variables precedente *)
CurTime:=DTNow.Hour*10000+DTNow.Minute*100+DTnow.Second; (* On concatene les données du temps pour n'en faire q'une seule variable qui sera utilisable plus facilement *)
CurDate:=DTNow.Day*1000000+DTNow.Month*10000+DTNow.Year; (* Pareil pour la date *)
J'ai fait çà et çà marche:
FUNCTION_BLOCK EXTRACTHEURE
VAR_INPUT
END_VAR
VAR_OUTPUT
GetExtractCurrentTime:CurTimeEx; (* Declaration de la fonction d'extraction du temps *)
CurDate: DINT; (* Declaration de la double int pour la date*)
DTNow: SystemTimeDate;
CurTime: DINT; (*Declaration de la double int pour le temps *)
STNow: SysTime64;
END_VAR
VAR
JourSemaine: BYTE;
input: WORD;
END_VAR
(* Gestion de la date et de l'heure dans les differents module*)
DTNow.Year := 0; (* Recupere l'année *)
DTNow.Month := 0; (* Recupere le mois *)
DTNow.Day := 0; (* Recupere le jour *)
DTNow.Hour := 0; (* Recupere l'heure *)
DTNow.Minute := 0; (* Recupere les minutes *)
DTNow.Second := 0; (* Recupere les secondes *)
DTNow.DayOfWeek := 0; (* Recupere la valeur pour le jour de la semaine 1=Lundi, 2=Mardi..... *)
STNow.ulHigh := 0; (* Temps systeme *)
STNow.ulLow := 0; (* Temps systeme *)
xSummer:=0;
GetExtractCurrentTime(SystemTime:=STNow , TimeDate:=DTNow ); (* Extraction du temps courant pour charger les variables precedente *)
CurTime:=DTNow.Hour*10000+DTNow.Minute*100+DTnow.Second; (* On concatene les données du temps pour n'en faire q'une seule variable qui sera utilisable plus facilement *)
CurDate:=DTNow.Day*1000000+DTNow.Month*10000+DTNow.Year; (* Pareil pour la date *)
-
- Générateur de blocs fonctions
- Messages : 144
- Inscription : 23 sept. 2019, 18:21
Re: répéter une tache à une heure précise
salut !
merci pour l'info !
Aurai tu une ou plusieurs capture d'écran de l'organisation de ton programme ? je ne comprend pas ou tu déclare tes variables, tu crée un bloque fonction ?
merci pour l'info !
Aurai tu une ou plusieurs capture d'écran de l'organisation de ton programme ? je ne comprend pas ou tu déclare tes variables, tu crée un bloque fonction ?
Re: répéter une tache à une heure précise
...oui, il faut créer un bloc de fonction à utiliser ensuite dans les programmes qui le nécessitent , avec des modules de comparaison par exemple.
-
- Générateur de blocs fonctions
- Messages : 144
- Inscription : 23 sept. 2019, 18:21
Re: répéter une tache à une heure précise
Salut, j'ai bien fait ça mais rien ne marche. ..
- itasoft
- Mi homme - Mi automate
- Messages : 7037
- Inscription : 20 oct. 2015, 10:15
- Localisation : Lyon
- Contact :
Re: répéter une tache à une heure précise
sls,
je dirais que dans un premier temps supprimer toutes les 9 lignes des RAZ et voir les valeurs reçues dans la structure DTNow
je dirais que dans un premier temps supprimer toutes les 9 lignes des RAZ et voir les valeurs reçues dans la structure DTNow
Automaticien privé (de tout)
itasoft@free.fr
itasoft@free.fr
Re: répéter une tache à une heure précise
Bonjour
Attention le 750-842 est un controleur 16bit.
L'exemple fourni par Jerem utilise la fonction GetExtractCurrentTime:CurTimeEx qui est présent dans la lib SysLibTime qui est présente pour les controleurs 32Bits.
Je suis pas sur quel existe pour les 16bits.
Attention le 750-842 est un controleur 16bit.
L'exemple fourni par Jerem utilise la fonction GetExtractCurrentTime:CurTimeEx qui est présent dans la lib SysLibTime qui est présente pour les controleurs 32Bits.
Je suis pas sur quel existe pour les 16bits.
-
- Générateur de blocs fonctions
- Messages : 144
- Inscription : 23 sept. 2019, 18:21
Re: répéter une tache à une heure précise
En effet j'ai essayé vos application et rien ne fonctionne pour l'extraction de l'heure...
je ne sais pas trop comment faire, aller lire l'heure et la date sur l'IHM (proface) ?
je ne sais pas trop comment faire, aller lire l'heure et la date sur l'IHM (proface) ?
Re: répéter une tache à une heure précise
Bonsoir
en Siemens J'utilise un script global 1 s, c'est le PROFACE qui vas écrire dans l'automate Ma copie d'écran n'es pas terrible il faut lire :
Date_heure[0]
Date_heure[1]
Date_heure[2]
Date_heure[3]
Date_heure[4]
Date_heure[5]
en Siemens J'utilise un script global 1 s, c'est le PROFACE qui vas écrire dans l'automate Ma copie d'écran n'es pas terrible il faut lire :
Date_heure[0]
Date_heure[1]
Date_heure[2]
Date_heure[3]
Date_heure[4]
Date_heure[5]
Créateur de pannes ...