Page 2 sur 3
Re: ajouter X jours à une date
Posté : 06 mars 2021, 15:42
par djé
Salut,
En 1200 tu es limité par les instructions.
Le seul moyen d'additionner ta valeur time à la date c'est de le faire plusieurs fois.
Ce que tu peut tenter c'est définir ta variable nombre de jour en DINT.
Ensuite:
Tu divises par 24 pour connaître le facteur de répétition (combien de fois 24 jours) -> varFactor
Tu fais le modulo de la même operation pour connaître le reste de la division.-> varResteTmp
Cette variable reste tu la multiplies par 86400 pour avoir le nombre de ms équivalent. (format time par défaut)
->varReste
Tu boucles autant de fois que la variable varFactor pour additionner la date actuelle à la valeur fixe T#24d (time 24 jours)
Tu ajoutes ton reste précédemment calculé au format time.
Ça devrait fonctionner. (si je déconne pas)
Re: ajouter X jours à une date
Posté : 08 mars 2021, 19:14
par JC87
Bonjour,
J'avais pas vu qu'il s'agissait d'un 1200. Cela dit en TIA V15 ou V16 on peut faire du SCL avec des 1200 donc je reste sur mon idée d'adaptation de la librairie OSCAT. On retombe de toutes façons sur l'idée de départ de Djé qui est de transformer la date en DINT.
Pour m'amuser je me suis amusé à convertir vite fait le bloc OSCAT "DAY_OF_YEAR" qui donne le nombre de jour écoulés depuis le début de l'année à partir d'une date et ensuite je l'ai modifié tout aussi vie fait pour calculer un intervalle de jours à partir de deux dates. Bon ça ne marche que pour l'année en cours mais c'est une base, il faudrait gratter un peu plus pour faire chevaucher les années.
JC
Re: ajouter X jours à une date
Posté : 08 mars 2021, 20:54
par philou77
Salut !
Moi me suis amusé avec step7 et ses librairies de base ...
4 réseaux en list.. et hop.. c'est fait !
philou77 a écrit : ↑05 mars 2021, 19:40
Le max étant 24 jours.... 180 c'est pas possible....
sauf si tu décomposes... par bouts de 24jours puis le reste (pour 180 jour, ça fait 8 boucles au total)
Re: ajouter X jours à une date
Posté : 09 mars 2021, 11:48
par JC87
Bonjour,
Moi j'aime pas le List, c'est un langage de barbare

En plus on ne peut faire de bloc en List avec un 1200 alors qu'en SCL oui.
Ce matin j'ai pris le temps de mieux regarder la doc et en fait il existe une fonction DATE_TO_DINT toute prête. Donc en fait ça revient simplement à faire une soustraction de deux dates converties en DINT et ce bloc existait dans la librairie OSCAT sous le nom "DAYS_DELTA". C'est quatre lignes de SCL Step 7 à recopier dans un FC en SCL sous TIA. Difficile de faire plus simple
JC
Re: ajouter X jours à une date
Posté : 09 mars 2021, 12:00
par philou77
re !
Le barbare que je suis salue l'élégante solution..

Re: ajouter X jours à une date
Posté : 09 mars 2021, 12:13
par JC87
philou77 a écrit : ↑09 mars 2021, 12:00
re !
Le barbare que je suis salue l'élégante solution..
Merci mais je n'ai absolument aucun mérite. Tous ces blocs proviennent de librairies que d'autre gars autrement plus malin que moi ont développés. J'ai toujours été très moyen en maths et je galère toujours pour faire ce genre de chose donc parfois il vaut mieux regarder du coté de ceux qui savent:D
JC
Re: ajouter X jours à une date
Posté : 09 mars 2021, 13:52
par philou77
Re: ajouter X jours à une date
Posté : 10 mars 2021, 13:15
par philou77
Re !
JC87 a écrit : ↑09 mars 2021, 11:48
deux dates converties en DINT
sous step7, ça revient à convertir un format DT (complexe et BCD ) en format Date (Dint non signé dont le premier jour est le 1er janvier 1990) !
Et on peut ainsi effectuer facilement des opérations !
j'y avais pas pensé...
Re: ajouter X jours à une date
Posté : 10 mars 2021, 14:46
par JC87
Tout à fait, c'est ce que fait le bloc de conversion T_CONV avec en entrée une date et en sortie un nombre de jours en double entier, c'est le DATE_TO_DINT qu'on voit dans mon bloc "DAYS_DELTA".
En cherchant sur le forum je suis tombé sur un sujet équivalent en Schneider ou quelqu'un avait la même problématique et comme cette conversion n'existait pas en Unity il s'était fait son DATE_TO_DINT maison pour faire la même chose que le bloc Siemens Step7 en SCL et au final travailler lui aussi avec des dates transformées en double entier.
Là on voit bien le principe de ce calcul :
http://forum-automatisme.net/viewtopic. ... t&start=10
JC
Re: ajouter X jours à une date
Posté : 10 mars 2021, 14:59
par itasoft
slts,
la fonction addition d'une durée existe bien sur UNITY ADD_TOD_TIME ou on parle pas de la même chose