Gestion de la mémoire d'un API SCHNEIDER MODICON PREMIUM TSXP57

  • Kenza MS
    Kenza MS

    le 16/07/2019 à 20:33 Citer ce message

    Bonjour,
    Je dispose d'un automate Schneider Modicon à processeur PREMIUM TSXP57203 et d'un capteur de niveau (sonde ultra-son) câblé sur maître (accompagné d'un afficheur) IO-LINK avec interface Modbus TCP AL1342.
    Mon travail consiste à calculer la consommation journalière du liquide en question (valeur à l'instant ti - valeur à l'instant ti+24h),de la stocker en mémoire et de pouvoir afficher cette valeur ultérieurement au besoin.
    J'ai donc pensé à créer une section en langage ST pour convertir l'entrée analogique reçue par le capteur et calculer la durée de 24h pour effectuer le deuxième prélèvement pour enfin calculer la différence entre la valeur initiale et la valeur finale.
    Le soucis à présent est de pouvoir parcourir la mémoire de l'API pour y stocker les différentes valeurs après tout calcul fait. Comme je ne maîtrise pas très bien la programmation Schneider ST et encore moins la gestion de la mémoire d'un API, j'ai pensé à créer une 2ème section en langage IL ( programmation en assembleur) mais je ne sais pas si c'est une bonne idée.
    Pouvez-vous m'aider à ce propos ??
    Merci d'avance!
  • EvangerC
    EvangerC
    Modérateur
    Automaticien vétéran

    273 messages
    Inscrit le 01/07/2017

    le 17/07/2019 à 16:52 Citer ce message

    Bonjour Kenza,
    Si je comprend bien tu as besoin de faire un échantillon du niveau de ton liquide toutes les 24h?
    Si oui, combien d’échantillons (donc combien de jour de prélèvement) tu as besoin pour ton analyse?
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

    le 05/08/2019 à 11:29 Citer ce message

    Bonjour,
    Oui c'est bien ça.
    7 jours ( une semaine).
    Pouvez-vous m'aider pour le calcul de la durée de 24h aussi sans passer par le bloc "schedule" ?
    Merci d'avance.
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

    le 05/08/2019 à 12:32 Citer ce message

    Bonjour,
    Je corrige : le prélèvement se fera chaque 8h sur 365 jours (1 année).
  • EvangerC
    EvangerC
    Modérateur
    Automaticien vétéran

    273 messages
    Inscrit le 01/07/2017

    le 05/08/2019 à 13:30 Citer ce message

    Tu peux faire une programmation en LD Ladder sa pose pas de problème.
    Il suffit que tu récupère l'heure de l'automate -(mot système %SW50 -> a %SW54 que tu doit convertir en integer car ils sont en BCD)
    Ensuite tu créé une ligne de prog pour monter une variable a 1 lorsque que l'heure automate passe a la valeur 800 soit 8H du matin ca seras ta variable de top prélèvement.
    Ensuite tu utilise cette variable et sur front montant de celle ci tu écrit la valeur analogique de ton capteur dans un mot (par exemple %MW0 et tu decale la prochaine ecriture au mot %MW0+1)
    Ainsi du mot %MW0 au mot %MW365 tu auras la valeur de ton capteur analogique sur 365 jours.
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

    le 05/08/2019 à 14:04 Citer ce message

    Bonjour,
    En fait ce n'est pas chaque 8h (heure) du matin que je fais un prélèvement mais au bout de chaque 8h (durée) je fais un nouveau prélèvement. Je n'avais pas bien expliqué au début.
    Pour décaler les mots, j'utilise l'écriture indexée?
  • EvangerC
    EvangerC
    Modérateur
    Automaticien vétéran

    273 messages
    Inscrit le 01/07/2017

    le 05/08/2019 à 15:06 Citer ce message

    Oui pour décaler les mots tu peux utiliser l'adresage indexée.
    Pour le prelèvement toute les 8h il suffit de crée un bloc tempo TON (Nom du bloc tempo TON_0 par exemple) et tu met en paramètre 8h soit (t#8h) ensuite en sortie de cette tempo tu attaque la variable de top prélèvement.
    Tu utiliseras le front montant de cette varaiable pour enregistrer ta valeur.
    Pour relancer le bloc tempo automatiquement il te suffit de rajouter en serie en entrée de celle-ci (broche IN) un contact normalement fermée (TON_0.Q)
    Quand la tempo se termineras la variable TON_0.Q va passer a 1 elle va donc te reinitialiser ton bloc temporisation.
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

    le 06/08/2019 à 00:02 Citer ce message

    Ah d'accord! Je ne savais pas que le TON acceptait des durées longues (en heures), merci!
    Pour la remise automatique du compteur jaffecte à IN et Q le même EBOOL c'est ça?
    Merci beaucoup pour toutes les réponses.
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

    le 06/08/2019 à 00:50 Citer ce message

    Ah non je crois que j'ai dit des bêtises! le On eet le Q ne peuvent pas être activés en même temps.

    C'est possible de remettre le ON à 0 quand Q passe à 1 et au début du programme, puisqu'il est cyclique, on met le ON à 1 ?
  • EvangerC
    EvangerC
    Modérateur
    Automaticien vétéran

    273 messages
    Inscrit le 01/07/2017

    le 06/08/2019 à 13:15 Citer ce message

    Tu utilise bien le FFB qui s'apelle TON pour le bloc tempo?
    Car sur ce bloc il n'y a pas de ON
    Considérons que ton bloc tempo s'apelle TON_0
    En entrée IN de ce bloc tempo du met en contact normalement fermée, la variable TON_0.Q
    Et en sortie de ton bloc tempo tu met la variable qui va te servir pour le top prélèvement.
    A chaque fois que ton bloc tempo auras terminer ca tempo de 8h la variable TON_0.Q va passer a 1
    Or celle-ci se trouve en entrée IN de ce même bloc tempo, ce qui a pour effet de réinitialiser ton bloc tempo par la même occasion.
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

    le 06/08/2019 à 14:16 Citer ce message

    Oui en fait je voulais écrire IN* et non pas ON, pardon!
    Comment mettre la variable TON_0.Q en contact normalement fermé à l'entrée IN par programme ?
    Merci :)
  • EvangerC
    EvangerC
    Modérateur
    Automaticien vétéran

    273 messages
    Inscrit le 01/07/2017

    le 06/08/2019 à 14:34 Citer ce message

    Oui en langage ladder
    Tu crée une section en LD tu insère ton bloc tempo TON_0, tu y insère un contact normalement fermée (Raccourcis F3 sur le clavier) Et tu lui donne le nom de TON_0.Q.
    Tu relie le contact normalement fermée a l'entré IN de ton bloc tempo
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

    le 06/08/2019 à 17:14 Citer ce message

    Je peux créer le bloc tempo dans une section en LD et l'appeler dans une section en ST, ou est-ce que je devrai dans ce cas faire tout le programme en LD ?
  • EvangerC
    EvangerC
    Modérateur
    Automaticien vétéran

    273 messages
    Inscrit le 01/07/2017

    le 06/08/2019 à 18:44 Citer ce message

    Tu peux tout faire en LD
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

    le 06/08/2019 à 22:56 Citer ce message

    D'accord, merci beaucoup.
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

    le 07/08/2019 à 17:58 Citer ce message

    Bonjour!
    Une petite question : à quoi sert la sortie ET du temporisateur svp ?
  • EvangerC
    EvangerC
    Modérateur
    Automaticien vétéran

    273 messages
    Inscrit le 01/07/2017

    le 07/08/2019 à 20:00 Citer ce message

    La sortie ET permets de voir le décompte en cours de la temporisation.
  • Kenza MEZIATI SABOUR
    Kenza MEZIATI SABOUR

Répondre à ce message