ajouter X jours à une date

Forum traitant des automates industriels de marque Siemens.
Avatar du membre
djé
Dieu du process
Dieu du process
Messages : 864
Enregistré le : 20 oct. 2015, 09:55
Localisation : Bretagne, Pays de la Loire, Nantes
Contact :

Re: ajouter X jours à une date

Message 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)
          Le monde se divise en 10 catégories:les personnes qui comprennent le binaire,et les autres.

          Dans tout ce que vous apprenez, seuls 10% vont vous servir,mais vous ne savez pas lesquels ...
          Avatar du membre
          JC87
          Mi homme - Mi automate
          Mi homme - Mi automate
          Messages : 2242
          Enregistré le : 20 oct. 2015, 13:00
          Localisation : Nouvelle Aquitaine

          Re: ajouter X jours à une date

          Message 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
          "On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
          philou77
          Mi homme - Mi automate
          Mi homme - Mi automate
          Messages : 2142
          Enregistré le : 21 oct. 2015, 10:00
          Localisation : Ile de France

          Re: ajouter X jours à une date

          Message 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)
          Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
          Avatar du membre
          JC87
          Mi homme - Mi automate
          Mi homme - Mi automate
          Messages : 2242
          Enregistré le : 20 oct. 2015, 13:00
          Localisation : Nouvelle Aquitaine

          Re: ajouter X jours à une date

          Message 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
          "On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
          philou77
          Mi homme - Mi automate
          Mi homme - Mi automate
          Messages : 2142
          Enregistré le : 21 oct. 2015, 10:00
          Localisation : Ile de France

          Re: ajouter X jours à une date

          Message par philou77 »

          re !

          Le barbare que je suis salue l'élégante solution..:-)
          Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
          Avatar du membre
          JC87
          Mi homme - Mi automate
          Mi homme - Mi automate
          Messages : 2242
          Enregistré le : 20 oct. 2015, 13:00
          Localisation : Nouvelle Aquitaine

          Re: ajouter X jours à une date

          Message 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
          "On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
          philou77
          Mi homme - Mi automate
          Mi homme - Mi automate
          Messages : 2142
          Enregistré le : 21 oct. 2015, 10:00
          Localisation : Ile de France

          Re: ajouter X jours à une date

          Message par philou77 »

          Pas de soucis, je plaisantais.
          :D :D :D
          Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
          philou77
          Mi homme - Mi automate
          Mi homme - Mi automate
          Messages : 2142
          Enregistré le : 21 oct. 2015, 10:00
          Localisation : Ile de France

          Re: ajouter X jours à une date

          Message 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é...
          Modifié en dernier par philou77 le 10 mars 2021, 15:05, modifié 1 fois.
          Si vous avez compris tout ce que je viens d'écrire, c'est que j'ai dû faire une erreur quelque part ! :D
          Avatar du membre
          JC87
          Mi homme - Mi automate
          Mi homme - Mi automate
          Messages : 2242
          Enregistré le : 20 oct. 2015, 13:00
          Localisation : Nouvelle Aquitaine

          Re: ajouter X jours à une date

          Message 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
          "On veut faire du zéro défaut mais on a zéro bonhomme et zéro budget, et bien à la fin on a zéro résultat..."
          Avatar du membre
          itasoft
          Mi homme - Mi automate
          Mi homme - Mi automate
          Messages : 7806
          Enregistré le : 20 oct. 2015, 10:15
          Localisation : Lyon
          Contact :

          Re: ajouter X jours à une date

          Message 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
          Automaticien privé (de tout)
          itasoft@free.fr
          Répondre