Probléme de stabilité de Smart command
Modérateurs : ramses, Balajol, monteric, j2c
- Daniel-d'Agen
- Newbie
- Messages : 18
- Enregistré le : mar. déc. 28, 2010 21:09 pm
- Localisation : Agen 47
Bonjour à tous
J'ai réalisé une petite supervision, je l'ai lancé hier soir sur un PC sous XP car sous W7 j'avais pu remarquer qu'il y avait des plantages sous Smart Command
C'est apparemment la même chose
Mais j'ai des erreurs sur le fichier Log (copie d'écran) que je n'avais pas au lancement hier soir. Il me semble pourtant que les scripts sont bons ... mais ?
Un autre problème : sur la page 1 de la supervision j'ai posé deux "case à cocher" pour ouvrir et fermer mes portails mais cela fonctionne trés aléatoirement . J'avais mis des "boutons" mais c'était la même chose
je joins le fichier de la supervision + un fichier "fond d'écran"
Merci
J'ai réalisé une petite supervision, je l'ai lancé hier soir sur un PC sous XP car sous W7 j'avais pu remarquer qu'il y avait des plantages sous Smart Command
C'est apparemment la même chose
Mais j'ai des erreurs sur le fichier Log (copie d'écran) que je n'avais pas au lancement hier soir. Il me semble pourtant que les scripts sont bons ... mais ?
Un autre problème : sur la page 1 de la supervision j'ai posé deux "case à cocher" pour ouvrir et fermer mes portails mais cela fonctionne trés aléatoirement . J'avais mis des "boutons" mais c'était la même chose
je joins le fichier de la supervision + un fichier "fond d'écran"
Merci
- Fichiers joints
-
- Plan maison.zip
- (405.38 Kio) Téléchargé 96 fois
-
- Plan maison.zip
- (405.38 Kio) Téléchargé 88 fois
- Pasquall
- Modérateur
- Messages : 264
- Enregistré le : mer. avr. 09, 2008 20:04 pm
- Localisation : Vizille (38)
- Contact :
Merci a un admin de la section régulation de déplacer ce sujet dans la partie Groupement d'achat d'automates programmables
Bonsoir,
- Je sais déjà pourquoi vous boutons d'ouverture/fermeture ne fonctionnent pas.
Dans votre Timer vous faites une lecture systématique du bloc SL IN 1, et donc lorsque vous cliquez sur une case à cocher/bouton pour envoyer la commande, la valeur qui viens d'être définie dans la supervision est écrasé par la lecture du des valeurs du bloc, et donc au finale la valeur que vous venez de modifiée est perdu avant d'être envoyée à l'automate.
Par ailleurs, vous tentez d'effectuer 4 "échanges" (envoie de requêtes + réception de la réponse) en 100 ms, ce qui est assez court. mais après les quelques modif que je vais vous indiquer, ca devrai aller mieux.
Les petites modification que je vous invite a faire sont
SCRIPT DU TIMER
supprimer la lecture et l'écriture systématique du bloc SLIN 1
il devrait rester :
FRAMES.M3_READ_SLOUT_BLOC_1.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET.RECEIVE()
FRAMES.M3_READ_SLOUT_BLOC_1_AG0.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET_AG0.RECEIVE()
Ensuite il y a une erreur dans le script d'initialisation de l'écran SUIVI CHAUFFAGE
FRAMES.M3_READ_SLIN_BLOC_1.SEND()
FRAMES.M3_READ_SLIN_BLOC_1_RET.RECEIVE()
Ce qui est faux
FRAMES.M3_READ_SLOUT_BLOC_1.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_AG0.RECEIVE()
FRAMES.M3_READ_SLOUT_BLOC_1_RET.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET_AG0.RECEIVE()
Ce qui est bon (c'est le jeux des deux erreurs :D )
FRAMES.M3_READ_SLOUT_BLOC_1.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET.RECEIVE()
FRAMES.M3_READ_SLOUT_BLOC_1_AG0.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET_AG0.RECEIVE()
Et pour finir, dans le script d'évènement de l'écran "Température"
Il y a un peu trop de chose, il ne devrai rester que ceci (comme pour l'autre écran)
FRAMES.M3_WRITE_SLIN_BLOC_1.SEND()
FRAMES.M3_WRITE_SLIN_BLOC_1_RET.RECEIVE()
Cela devrai vous aider à avancer, pour ma part le PC est partis pour rester en communication avec mon M3 de test pour la nuit, vois si je reproduit le blocage (sachant que je n'ai pas fait les modifs que je vous ai indiqué)
Cordialement
Pascal.
Bonsoir,
- Je sais déjà pourquoi vous boutons d'ouverture/fermeture ne fonctionnent pas.
Dans votre Timer vous faites une lecture systématique du bloc SL IN 1, et donc lorsque vous cliquez sur une case à cocher/bouton pour envoyer la commande, la valeur qui viens d'être définie dans la supervision est écrasé par la lecture du des valeurs du bloc, et donc au finale la valeur que vous venez de modifiée est perdu avant d'être envoyée à l'automate.
Par ailleurs, vous tentez d'effectuer 4 "échanges" (envoie de requêtes + réception de la réponse) en 100 ms, ce qui est assez court. mais après les quelques modif que je vais vous indiquer, ca devrai aller mieux.
Les petites modification que je vous invite a faire sont
SCRIPT DU TIMER
supprimer la lecture et l'écriture systématique du bloc SLIN 1
il devrait rester :
FRAMES.M3_READ_SLOUT_BLOC_1.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET.RECEIVE()
FRAMES.M3_READ_SLOUT_BLOC_1_AG0.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET_AG0.RECEIVE()
Ensuite il y a une erreur dans le script d'initialisation de l'écran SUIVI CHAUFFAGE
FRAMES.M3_READ_SLIN_BLOC_1.SEND()
FRAMES.M3_READ_SLIN_BLOC_1_RET.RECEIVE()
Ce qui est faux
FRAMES.M3_READ_SLOUT_BLOC_1.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_AG0.RECEIVE()
FRAMES.M3_READ_SLOUT_BLOC_1_RET.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET_AG0.RECEIVE()
Ce qui est bon (c'est le jeux des deux erreurs :D )
FRAMES.M3_READ_SLOUT_BLOC_1.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET.RECEIVE()
FRAMES.M3_READ_SLOUT_BLOC_1_AG0.SEND()
FRAMES.M3_READ_SLOUT_BLOC_1_RET_AG0.RECEIVE()
Et pour finir, dans le script d'évènement de l'écran "Température"
Il y a un peu trop de chose, il ne devrai rester que ceci (comme pour l'autre écran)
FRAMES.M3_WRITE_SLIN_BLOC_1.SEND()
FRAMES.M3_WRITE_SLIN_BLOC_1_RET.RECEIVE()
Cela devrai vous aider à avancer, pour ma part le PC est partis pour rester en communication avec mon M3 de test pour la nuit, vois si je reproduit le blocage (sachant que je n'ai pas fait les modifs que je vous ai indiqué)
Cordialement
Pascal.
En Normandie, ça vole entre deux pluies
En Isère ça vole du tonnerre!!!
Expert en M3 (enfin programmation M3 ^^)
Site de SmartApp
En Isère ça vole du tonnerre!!!
Expert en M3 (enfin programmation M3 ^^)
Site de SmartApp
- Daniel-d'Agen
- Newbie
- Messages : 18
- Enregistré le : mar. déc. 28, 2010 21:09 pm
- Localisation : Agen 47
Ben voilà, quand on a à faire à des spécialistes, ça va de suite mieux !
J'ai pas encore tout compris sur les scripts ... je pense
Faut que je continue à potasser ! !
Modifs effectuées : ça marche beaucoup mieux, tiens ! !
Merci pour ce coup de main !
Par contre, est ce que l'on peut faire des liens (genre hypertexte) pour créer une page d'accueil et pouvoir ensuite aller d'une page à l'autre ... là ce serait le pied, enfin un pied de plus
Et au fait : ça vole par chez vous (moi c'est paramoteur)
J'ai pas encore tout compris sur les scripts ... je pense
Faut que je continue à potasser ! !
Modifs effectuées : ça marche beaucoup mieux, tiens ! !
Merci pour ce coup de main !
Par contre, est ce que l'on peut faire des liens (genre hypertexte) pour créer une page d'accueil et pouvoir ensuite aller d'une page à l'autre ... là ce serait le pied, enfin un pied de plus
Et au fait : ça vole par chez vous (moi c'est paramoteur)
Modifié en dernier par Daniel-d'Agen le ven. janv. 07, 2011 22:32 pm, modifié 1 fois.
- Pasquall
- Modérateur
- Messages : 264
- Enregistré le : mer. avr. 09, 2008 20:04 pm
- Localisation : Vizille (38)
- Contact :
Bonsoir
Alors non on ne peux pas faire de lien genre hyper texte, mais il est possible de faire des boutons de navigation.
Dans le script du bouton, il faut ajouter une ligne qui doit ressembler à ça:
SCREEN."symbole d'un écran".SHOW_ON_TOP()
Ca permet de faire revenir l'écran pointé dans le script au premier plan et donc de naviguer entres les images sans avoir à les réduire ou a utiliser Ctrl+Tab.
Se tromper dans le script au début c'est normal je pense. J'ai essayé de rendre l'éditeur de script suffisamment assisté pour éviter les fautes de frappes, mais appréhender les moment ou sont exécuté les scripts, et ce qu'il font est moins évident.
Pour ce qui est vol, nan pas trop en ce moment
Pascal.
Alors non on ne peux pas faire de lien genre hyper texte, mais il est possible de faire des boutons de navigation.
Dans le script du bouton, il faut ajouter une ligne qui doit ressembler à ça:
SCREEN."symbole d'un écran".SHOW_ON_TOP()
Ca permet de faire revenir l'écran pointé dans le script au premier plan et donc de naviguer entres les images sans avoir à les réduire ou a utiliser Ctrl+Tab.
Se tromper dans le script au début c'est normal je pense. J'ai essayé de rendre l'éditeur de script suffisamment assisté pour éviter les fautes de frappes, mais appréhender les moment ou sont exécuté les scripts, et ce qu'il font est moins évident.
Pour ce qui est vol, nan pas trop en ce moment
Pascal.
En Normandie, ça vole entre deux pluies
En Isère ça vole du tonnerre!!!
Expert en M3 (enfin programmation M3 ^^)
Site de SmartApp
En Isère ça vole du tonnerre!!!
Expert en M3 (enfin programmation M3 ^^)
Site de SmartApp
- Daniel-d'Agen
- Newbie
- Messages : 18
- Enregistré le : mar. déc. 28, 2010 21:09 pm
- Localisation : Agen 47
Et pour ce qui est de la stabilité de Smart command, c'est nickel avec les modifs apportées : j'ai enfin mes courbes qui se sont enregistrées toute la nuit et ce matin pas de plantage
Comme quoi les scripts mal positionnés, cela peut avoir de grosses conséquences
Pour les boutons de navigation : j'ai testé : Ok ça marche du feu de dieu
Juste une autre demande .... j'abuse comme je travaille au 1/10° degrés dans le M3, j'arrive a afficher les valeurs avec la décimale dans Smart command, mais j'ai pas trouvé comment faire pour afficher l'axe Y sur une plage de 0 à 30° au lieu de 0 à 300 .... j'suis nul
Comme quoi les scripts mal positionnés, cela peut avoir de grosses conséquences
Pour les boutons de navigation : j'ai testé : Ok ça marche du feu de dieu
Juste une autre demande .... j'abuse comme je travaille au 1/10° degrés dans le M3, j'arrive a afficher les valeurs avec la décimale dans Smart command, mais j'ai pas trouvé comment faire pour afficher l'axe Y sur une plage de 0 à 30° au lieu de 0 à 300 .... j'suis nul
Modifié en dernier par Daniel-d'Agen le sam. janv. 08, 2011 15:39 pm, modifié 2 fois.
- Pasquall
- Modérateur
- Messages : 264
- Enregistré le : mer. avr. 09, 2008 20:04 pm
- Localisation : Vizille (38)
- Contact :
Bonjour
Pour les boutons de navigation, oui il est possible de mettre des scripts spécifiques pour chaque bouton, c'est dans la troisième case se script nommé "Control Event Script", ce script n'est exécuté que lors d'une action du le contrôle qui est cliqué, notez que si le contrôle en question n'est pas sensé appeler le script global de l'écran, il faut décocher la case "Use Screen Event" (Utiliser l'évènement écran)
Pour ce qui est des courbes entre 0 et 30, je n'ai pas de solution, c'est vrai que je n'y avait pas pensé. Ça pourrai faire l'objet d'une petite évolution
Pascal.
Pour les boutons de navigation, oui il est possible de mettre des scripts spécifiques pour chaque bouton, c'est dans la troisième case se script nommé "Control Event Script", ce script n'est exécuté que lors d'une action du le contrôle qui est cliqué, notez que si le contrôle en question n'est pas sensé appeler le script global de l'écran, il faut décocher la case "Use Screen Event" (Utiliser l'évènement écran)
Pour ce qui est des courbes entre 0 et 30, je n'ai pas de solution, c'est vrai que je n'y avait pas pensé. Ça pourrai faire l'objet d'une petite évolution
Pascal.
En Normandie, ça vole entre deux pluies
En Isère ça vole du tonnerre!!!
Expert en M3 (enfin programmation M3 ^^)
Site de SmartApp
En Isère ça vole du tonnerre!!!
Expert en M3 (enfin programmation M3 ^^)
Site de SmartApp
- Daniel-d'Agen
- Newbie
- Messages : 18
- Enregistré le : mar. déc. 28, 2010 21:09 pm
- Localisation : Agen 47
Pour les boutons de navigation, ça fonctionne très bien . Je n'avais pas vu au début que la fenêtre de script du bas était automatiquement lié à un controle
Pour l'affichage des courbes, ce n'est pas réellement gênant, uniquement lorsqu'on met des valeurs à suivre 0 ou 1 (on ne distingue pas bien les créneaux)
Sinon je m'amuse bien
Pour l'affichage des courbes, ce n'est pas réellement gênant, uniquement lorsqu'on met des valeurs à suivre 0 ou 1 (on ne distingue pas bien les créneaux)
Sinon je m'amuse bien
- Pasquall
- Modérateur
- Messages : 264
- Enregistré le : mer. avr. 09, 2008 20:04 pm
- Localisation : Vizille (38)
- Contact :
Bonjour
Pour l'affichage des courbes, il y a plusieurs ruses simples à mettre en place pour mieux afficher les signaux TOR.
Par exemple, il est possible d'utiliser deux graphiques, et de regrouper tout les TOR dans un seul graphique, mais reste le problème de la superposition des signaux et dans ce cas il faut passer par une fonction et des variables intermédiaires.
Par exemple: je souhaite afficher l'état de 4 signaux TOR qui proviennent des bit 1 à 4 du bloc SL OUT1
Je vais avoir les signaux suivant dans Smartapp
M3_SLOUT1_I1_B1
M3_SLOUT1_I1_B2
M3_SLOUT1_I1_B3
M3_SLOUT1_I1_B4
Je vais créer les variables suivantes comme variables intermédiaires
SLOUT1_I1_B1_CONV
SLOUT1_I1_B2_CONV
SLOUT1_I1_B3_CONV
SLOUT1_I1_B4_CONV
Dans une fonction, je vais écrire le code suivant :
MATHS.ADD(SLOUT1_I1_B1_CONV, M3_SLOUT1_I1_B1, 1)
MATHS.ADD(SLOUT1_I1_B2_CONV, M3_SLOUT1_I1_B2, 3)
MATHS.ADD(SLOUT1_I1_B3_CONV, M3_SLOUT1_I1_B3, 5)
MATHS.ADD(SLOUT1_I1_B4_CONV, M3_SLOUT1_I1_B4, 7)
Cette fonction est à appeler en dernier dans le timer qui s'occupe de lire périodiquement le M3.
Enfin, dans le graphique, au lieu d'utiliser les variables venant du M3, on utilise les variables "converties" (avec un offset) ce qui donne cela (voir pièce jointe)
Pour l'affichage des courbes, il y a plusieurs ruses simples à mettre en place pour mieux afficher les signaux TOR.
Par exemple, il est possible d'utiliser deux graphiques, et de regrouper tout les TOR dans un seul graphique, mais reste le problème de la superposition des signaux et dans ce cas il faut passer par une fonction et des variables intermédiaires.
Par exemple: je souhaite afficher l'état de 4 signaux TOR qui proviennent des bit 1 à 4 du bloc SL OUT1
Je vais avoir les signaux suivant dans Smartapp
M3_SLOUT1_I1_B1
M3_SLOUT1_I1_B2
M3_SLOUT1_I1_B3
M3_SLOUT1_I1_B4
Je vais créer les variables suivantes comme variables intermédiaires
SLOUT1_I1_B1_CONV
SLOUT1_I1_B2_CONV
SLOUT1_I1_B3_CONV
SLOUT1_I1_B4_CONV
Dans une fonction, je vais écrire le code suivant :
MATHS.ADD(SLOUT1_I1_B1_CONV, M3_SLOUT1_I1_B1, 1)
MATHS.ADD(SLOUT1_I1_B2_CONV, M3_SLOUT1_I1_B2, 3)
MATHS.ADD(SLOUT1_I1_B3_CONV, M3_SLOUT1_I1_B3, 5)
MATHS.ADD(SLOUT1_I1_B4_CONV, M3_SLOUT1_I1_B4, 7)
Cette fonction est à appeler en dernier dans le timer qui s'occupe de lire périodiquement le M3.
Enfin, dans le graphique, au lieu d'utiliser les variables venant du M3, on utilise les variables "converties" (avec un offset) ce qui donne cela (voir pièce jointe)
En Normandie, ça vole entre deux pluies
En Isère ça vole du tonnerre!!!
Expert en M3 (enfin programmation M3 ^^)
Site de SmartApp
En Isère ça vole du tonnerre!!!
Expert en M3 (enfin programmation M3 ^^)
Site de SmartApp