répéter une tache à une heure précise

Forum traitant des automates industriels de marque Wago et du logiciel codesys
JeremAuto07
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 144
Inscription : 23 sept. 2019, 18:21

répéter une tache à une heure précise

Message par JeremAuto07 »

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
JeremAuto07
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 144
Inscription : 23 sept. 2019, 18:21

Re: répéter une tache à une heure précise

Message par JeremAuto07 »

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 *)
wagodomo
Première mise en service
Première mise en service
Messages : 65
Inscription : 08 déc. 2015, 18:02

Re: répéter une tache à une heure précise

Message par wagodomo »

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 *)
JeremAuto07
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 144
Inscription : 23 sept. 2019, 18:21

Re: répéter une tache à une heure précise

Message par JeremAuto07 »

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 ?
wagodomo
Première mise en service
Première mise en service
Messages : 65
Inscription : 08 déc. 2015, 18:02

Re: répéter une tache à une heure précise

Message par wagodomo »

...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.
Pièces jointes
Sans titre.jpg
JeremAuto07
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 144
Inscription : 23 sept. 2019, 18:21

Re: répéter une tache à une heure précise

Message par JeremAuto07 »

Salut, j'ai bien fait ça mais rien ne marche. ..

Image

Image
Avatar de l’utilisateur
itasoft
Mi homme - Mi automate
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

Message par itasoft »

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
Automaticien privé (de tout)
itasoft@free.fr
Avatar de l’utilisateur
filou59
Forcené des structures
Forcené des structures
Messages : 184
Inscription : 20 oct. 2015, 23:26
Localisation : Nord

Re: répéter une tache à une heure précise

Message par filou59 »

Bonjour

Attention le 750-842 est un controleur 16bit. :idea:

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.
JeremAuto07
Générateur de blocs fonctions
Générateur de blocs fonctions
Messages : 144
Inscription : 23 sept. 2019, 18:21

Re: répéter une tache à une heure précise

Message par JeremAuto07 »

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) ?
Avatar de l’utilisateur
josé
Codeur fou
Codeur fou
Messages : 263
Inscription : 20 oct. 2015, 17:02

Re: répéter une tache à une heure précise

Message par josé »

Bonsoir
en Siemens J'utilise un script global 1 s, c'est le PROFACE qui vas écrire dans l'automate
heure proface.jpg
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 ...
Répondre