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 :

[CODESYS] Problème de variable qui ne revient pas à 0 quand je "reset" le programme


Sujet :

Automation

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 20
    Points : 11
    Points
    11
    Par défaut [CODESYS] Problème de variable qui ne revient pas à 0 quand je "reset" le programme
    Bonjour,

    dans le cadre d'un projet, j'utilise un contrôleur IFM (CR0403) et un capteur de courant. Ce dernier me renvoie une tension en fonction du courant qui le traverse. J'utilise une entrée tension de mon contrôleur afin de lire ce que renvoie le capteur de courant. A partir de cette donnée, je calcul la puissance et l’énergie consommée par mon installation. Je stocke ces valeurs dans des variables. Cependant quand je relance mon programme (après un reset ou même apres avoir effectué des modifications), certaines variables ne se reset pas et souvent j'ai des valeurs qui n'ont aucun sens (par exemple valeurs négatives d’énergie au lancement du programme). Les valeurs qui se trouvent dans les variables sont aléatoires, et je ne comprend pas car je les initialise bien à 0. Je joins ma déclaration des variables, dites moi si vous voyez quelque chose de choquant car je débute tout juste avec Codesys.

    Merci d'avance pour votre aide.

    Nom : 2016-09-27 10_08_28-CoDeSys - test.pro_ - [PLC_PRG (PRG-FBD)].png
Affichages : 1120
Taille : 11,7 Ko

  2. #2
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Septembre 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 86
    Points : 108
    Points
    108
    Par défaut
    Salut,

    Je ne vois rien d’anormal dans la déclaration montre nous ton code stp

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Voici le code :

    Nom : 2016-09-27 11_20_23-CoDeSys - testcourant.pro_ - [PLC_PRG (PRG-FBD)].png
Affichages : 1198
Taille : 17,1 KoNom : 2016-09-27 11_20_41-CoDeSys - testcourant.pro_ - [PLC_PRG (PRG-FBD)].png
Affichages : 952
Taille : 6,9 Ko

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    PS: ne tenez pas compte du bloc et de la variable nrj, c'était seulement pour visualiser si la remise à zéro fonctionnait pour d'autres variables que celle déclarées a départ.

  5. #5
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Septembre 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 86
    Points : 108
    Points
    108
    Par défaut
    La variable SUPPLY_VOLTAGE_VBB1 c'est la tension derrière le relais de sortie VBB1 ? J'aurais plutôt mis SUPPLY_VOLTAGE_VBBS. Surtout que les relais sont mis à true par le programme.
    Cycle time c'est le temps de cycle de l'automate du coup je comprend pas trop ton calcul énergies instantanée en J ??

    Quelles sont les variables qui ne prennent pas les bonnes valeurs ? En faite tu veux calculer la conso d'energie en Joule ?

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    SUPPLY_VOLTAGE_VBB1 est la tension batterie de mon système. Et SUPPLY_VOLTAGE_VBBS est la tension d'alimentation de mon contrôleur (sur une alimentation externe).

    Si j'ai bien compris CycleTime est le temps que met mon automate à faire un passage dans mon programme, c'est donc mon temps d’échantillonnage de mesure non ? Donc je présume que la valeur de puissance que j'ai, est restée le temps d'un cycle ou est ce faux comme présomption ?

    La variables qui ne prend pas les bonnes valeurs est la variable EnergieEnJ. Oui je souhaite mesurer la consommation en Joule.

  7. #7
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Septembre 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 86
    Points : 108
    Points
    108
    Par défaut
    Ok pour la tension d'alim,
    mais ton calcul ne peux pas marcher avec le temps de cycle de l'automate, ce qu'il faut faire c'est l'intégration de la conso instantanée entre deux appels du calcul

    cycle time c'est le temps qu'il à mis a lire le programme du début à la fin

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    D'accord, Merci.
    Mais je ne vois pas ce que je met comme temps pour l'entrée "TM" de mon intégrateur.

  9. #9
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Septembre 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 86
    Points : 108
    Points
    108
    Par défaut
    tu peux lire le temps system avec le bloc timer_read_us

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    tu veux dire que je dois prendre la différence entre avant et après l'appel de la fonction de lecture de l'entrée ?

  11. #11
    Membre actif
    Homme Profil pro
    développeur en automation industrielle
    Inscrit en
    Mai 2012
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : développeur en automation industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 177
    Points : 265
    Points
    265
    Par défaut
    salut

    pour ton problème de variable qui retombe a zéro, c'est très simple.

    quand tu crée une variable, tu dois la déclarer comme "retain" et si tu veux que la variable ne retombe pas à 0 lors du chargement d'une nouvelle version du programme plc
    tu la place dans persistante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    VAR RETAIN
    	mavariable1: BOOL;
    END_VAR
    VAR RETAIN PERSISTENT
    	mavariable2: BOOL;
    END_VAR

  12. #12
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2016
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    Bonjour et merci pour vos réponses,

    j'ai trouvé d'où venait mon problème de variable qui ne retombe jamais à 0, ce n'est pas dans la déclaration qu'il y a un soucis. Le problème vient des calculs effectués, car quand le programme passe pour la première fois dans la boucle, et que j’intègre ma valeur par rapport a temps de cycle, le temps de cycle n'est pas défini. Enfin il a une valeur aléatoire en mémoire, j'ai donc une valeur aléatoire qui vient se mettre au premier tour dans ma variable "EnergieEnJ" après le calcul. J'utilise donc une constante pour l'intervalle d'integration au premier tour puis je réutilise "CycleTime".

    Par contre, revok, je souhaiterai que tu m'eclaires un peu plus sur le fait de ne pas pouvoir utiliser le temps de cycle comme temps d’échantillonnage dans mon calcul d’intégrale. Je n'arrive pas à voir pourquoi cela est erroné. Merci d'avance.

  13. #13
    Membre régulier
    Homme Profil pro
    Automaticien
    Inscrit en
    Septembre 2015
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Automaticien
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2015
    Messages : 86
    Points : 108
    Points
    108
    Par défaut
    regarde ce lien si ça peux t'aider
    https://en.wikipedia.org/wiki/Numerical_integration

Discussions similaires

  1. problème de variable qui ne veut pas s'executer
    Par lulu.bleu dans le forum ASP.NET
    Réponses: 1
    Dernier message: 14/10/2009, 09h43
  2. [Tableaux] Variable qui ne prend pas sa valeur
    Par stephane78 dans le forum Langage
    Réponses: 11
    Dernier message: 19/08/2006, 20h30
  3. Problème de htmlspecialchars qui ne fonctionne pas
    Par jeremie74 dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2006, 17h40
  4. [Système] variable qui ne passe pas !!!
    Par azorol dans le forum Langage
    Réponses: 21
    Dernier message: 20/02/2006, 10h53
  5. [Tableaux] variable qui ne passe pas
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 31/12/2005, 02h56

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