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.

          Calcul Nbre jours.PNG

          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 :mrgreen: 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 :D

          Calcul Nbre jours.PNG
          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
          Pas de soucis, je plaisantais.
          :D :D :D

          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