IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Automation Discussion :

API schneider : Calcul itératif sur flottants


Sujet :

Automation

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Janvier 2008
    Messages : 4
    Points : 5
    Points
    5
    Par défaut API schneider : Calcul itératif sur flottants
    Bonjour

    J'ai un petit problème avec mes compteurs horaires codés sur des API schneider (TSX micro, premium, M340)

    EN gros, si le moteur est en marche, j'ajoute toute les 36 secondes 0,01 aux compteurs (un centième d'heure = 36 secondes)

    Le problèmes est que l'automate ajoute parfois 0,00999999999 à la place
    Donc, sur un moteur qui tourne 24h/24, le compte n'est pas juste !!!

    J'ai lu dans l'aide PL7 : Il est donc déconseillé de programmer sans précaution des calculs itératifs. Si on souhaite néanmoins programmer ce type de calcul, il appartient à l'applicatif client de gérer les erreurs de troncature.

    Si vous avez une idée pour que l'API n'ajoute que 0,01 et pas plus, pas moins !

    Je suis preneur

    merci

  2. #2
    Expert éminent sénior

    Avatar de Nono40
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2002
    Messages
    8 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2002
    Messages : 8 640
    Points : 19 101
    Points
    19 101
    Par défaut
    Ton problème n'a rien à voir avec Schneider : c'est le cas de n'importe quel PC/cpu/calculatrice faisant une somme de flottant.

    0.01 n'a pas de repérsentation binaire exacte.

    Il te faut travailler sur des entier long et en comptant des secondes ou des centièmes d'heure.

    Prend un compteur que tu incrémentes toutes les secondes tant que le moteur est en marche (sur le front de SY6 S6, c'est plus précis qu'une tempo). Tu as ainsi un temps de marche cumulé en seconde sans problème de précision. La seconde sur un DINT va saturer dans 68ans.

    Tu transformes en heures à l'affichage par la suite.
    Delphi :
    La F.A.Q. , 877 réponses à vos questions !
    264 sources à consulter/télécharger !

Discussions similaires

  1. [Lazarus] Runtime error 207 sur calcul itératif
    Par christophe D dans le forum Lazarus
    Réponses: 4
    Dernier message: 23/06/2014, 14h08
  2. [math] calcul sur flottants
    Par r0d dans le forum C++
    Réponses: 6
    Dernier message: 29/10/2009, 09h57
  3. [VBA-E] calculs automatique sur une seule feuille
    Par repié dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/03/2006, 11h53
  4. Calcul avec des flottants
    Par tarzent dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/12/2005, 11h20
  5. calcul durée sur access
    Par juliette2 dans le forum Access
    Réponses: 2
    Dernier message: 23/11/2005, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo