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

Forum traitant des automates industriels de marque Wago et du logiciel codesys
Répondre
JeremAuto07
Asservi son premier moteur
Asservi son premier moteur
Messages : 24
Enregistré le : 23 sept. 2019, 18:21

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

Message par JeremAuto07 » 02 janv. 2020, 21:10

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
Asservi son premier moteur
Asservi son premier moteur
Messages : 24
Enregistré le : 23 sept. 2019, 18:21

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

Message par JeremAuto07 » 05 janv. 2020, 12:21

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
Asservi son premier moteur
Asservi son premier moteur
Messages : 22
Enregistré le : 08 déc. 2015, 18:02

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

Message par wagodomo » 06 janv. 2020, 11:16

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
Asservi son premier moteur
Asservi son premier moteur
Messages : 24
Enregistré le : 23 sept. 2019, 18:21

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

Message par JeremAuto07 » 07 janv. 2020, 17:07

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
Asservi son premier moteur
Asservi son premier moteur
Messages : 22
Enregistré le : 08 déc. 2015, 18:02

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

Message par wagodomo » 08 janv. 2020, 12:28

...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.
Fichiers joints
Sans titre.jpg

JeremAuto07
Asservi son premier moteur
Asservi son premier moteur
Messages : 24
Enregistré le : 23 sept. 2019, 18:21

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

Message par JeremAuto07 » 14 janv. 2020, 17:55

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 : 3636
Enregistré le : 20 oct. 2015, 10:15
Localisation : Lyon
Contact :

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

Message par itasoft » 14 janv. 2020, 18:11

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

filou59
Aguerri de l'automation
Aguerri de l'automation
Messages : 98
Enregistré le : 20 oct. 2015, 23:26

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

Message par filou59 » 25 janv. 2020, 10:18

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.

Répondre