Merci bien pour ces compliment.
Alors j'ai jeté un coup d'oeil à ton fichier SmartApp et j'ai trouvé ton erreur. Alors pour le coup je ne vais pas te faire de fichier corriger, mais t'expliquer ou est ton erreur, et comment la corrigé, ce sera plus formateur.
Ton principal problème se situe au niveau des scripts d'évènement de l'écran, et sur la compréhension du mécanisme des trames (ce qui ne me surprend pas outre mesure, c'est un point qui n'est pas aisé à bien assimiler)
Alors tout d'abord le script d'initialisation de l'écran :
Code : Tout sélectionner
FRAMES.TCPMB_WRITE_1_IN_REG_FROM_AD12.SEND()
FRAMES.TCPMB_WRITE_1_IN_REG_FROM_AD12_RET.RECEIVE()
FRAMES.TCPMB_WRITE_1_IN_REG_FROM_AD13.SEND()
FRAMES.TCPMB_WRITE_1_IN_REG_FROM_AD13_RET.RECEIVE()
FRAMES.TCPMB_READ_1_OUT_REG_FROM_AD14.SEND()
FRAMES.TCPMB_READ_1_OUT_REG_FROM_AD14_RET.RECEIVE()
Dans le cas de l'initialisation de la supervision il faut absolument éviter d'écrire car les valeurs qu'a mémorisé la supervision ne sont pas à l'image de ce qu'il y a dans le M3, ce qui fait qu'avec ce que tu as écrit, tu remet systématiquement les entrée ETH du M3 à 0, ce n'est pas grave en soit, mais si tu t'en servait comme valeur de consigne, ca devient un vrai problème puisque qu'a chaque démarrage de la supervision tu perdrai ce qui est dans la mémoire du M3. Ces 4 premières lignes sont donc bonnes mais pas au bon endroit, on y reviendra.
Comme je l'expliquai juste avant, lors de l'initialisation les valeur de la supervision ne sont pas cohérents avec celle dans le M3, et il va donc falloir les lire. Le code qui effectue ceci serai le suivant :
Code : Tout sélectionner
FRAMES.TCPMB_READ_1_IN_REG_FROM_AD12.SEND()
FRAMES.TCPMB_READ_1_IN_REG_FROM_AD12_RET.RECEIVE()
FRAMES.TCPMB_READ_1_IN_REG_FROM_AD13.SEND()
FRAMES.TCPMB_READ_1_IN_REG_FROM_AD13_RET.RECEIVE()
Ensuite les 2 dernières lignes font une lecture d'une sortie ETH (je rappel qu'un échange complet avec le M3 est composé d'un envoie et d'une réception) Le faire a l'initialisation est une bonne chose, mais le problème c'est que la sortie ne sera plus jamais lue une fois la supervision initialisé alors que le but est bien sur de voir la sortie évoluer. Ces deux lignes la doivent être copié dans le script d'un timer afin d'être exécuté périodiquement et donc de lire régulièrement les sorties Ethernet du M3. Avec ceci, ton problème de mise a jour du compteur devrai être résolu.
Passons maintenant au script d'évènement de l'écran, ou la il y un truc plus embêtant:
Code : Tout sélectionner
FRAMES.TCPMB_WRITE_2_IN_REG_FROM_AD12.SEND()
FRAMES.TCPMB_READ_1_OUT_REG_FROM_AD14.SEND()
La deuxième ligne n'a rien à faire ici, mais avec le coup de timer que j'ai expliqué avant elle n'a plus de raison d'être. Par contre je souhaite juste attirer ton attention sur un point. Ta première ligne marche bien malgré l'absence de réception du retour du M3, car lorsque tu envoie une commande d'écriture du M3, la valeur que tu veux écrire est contenue dans la trame, mais par contre, dans le cas d'une lecture, la valeur est contenue dans la réponse du M3, et donc si tu ne traite jamais la réponse, la valeur de la supervision n'est jamais mise à jour même si le M3 à répondu.
Bon j'espère qu'avec tout cas, tu vas mieux comprendre le "pourquoi du comment" ca marchait pas. Si tu as d'autres questions, n'hésite pas.
Note que je remettrait ce message dans le sujet adéquate, une fois que le sujet sera revenu dans la partie M3 (il est partis dans la catégorie "Régulation" sans que je sache pourquoi)
Pascal.