Page 1 sur 2

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

Publié : 02 janv. 2020, 21:10
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

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

Publié : 05 janv. 2020, 12:21
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 *)

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

Publié : 06 janv. 2020, 11:16
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 *)

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

Publié : 07 janv. 2020, 17:07
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 ?

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

Publié : 08 janv. 2020, 12:28
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.

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

Publié : 14 janv. 2020, 17:55
par JeremAuto07
Salut, j'ai bien fait ça mais rien ne marche. ..

Image

Image

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

Publié : 14 janv. 2020, 18:11
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

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

Publié : 25 janv. 2020, 10:18
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.

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

Publié : 03 févr. 2020, 16:43
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) ?

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

Publié : 03 févr. 2020, 18:54
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]