Par : David Beaulieu École de technologie supérieure INF-130 Travail pratique #1 Utilisé par : David Beaulieu, Frédérick Henri, Hugues Saulnier et Éric Thé Travail en équipe de 2 Gestion de panneaux électriques 1 e Remise à la 5 semaine Objectifs - Se familiariser avec le langage Visual Basic for Applications d’Excel. - Utiliser l’ensemble des notions présentées à présent : les variables, les instructions conditionnelles et itératives, les entrées/sorties, le découpage en sous-programmes, etc. - Respecter les exigences de programmation : l’indentation, l’utilisation de constantes, l’ajout de commentaires, etc. 2 Description du problème : Gestion d’un panneau électrique Que ce soit dans le domaine résidentiel ou le domaine industriel l’installation électrique demande une gestion constante et rigoureuse. À force d’apporter des modifications à un bâtiment et à son installation électrique, il devient parfois difficile de savoir sur quel circuit est branché chacun des équipements et si la puissance des équipements dépasse la puissance règlementaire du circuit. 3 Description de la tâche à accomplir On vous demande de faire un programme informatique qui facilitera la gestion dans le temps d’un panneau électrique. Celui-ci devra permettre de : 1. ajouter des circuits sur un panneau électrique; 2. ajouter des équipements électriques sur les divers circuits du panneau; 3. obtenir un portrait des charges sur chacun des circuits. INF-130 Ordinateurs et programmation A2015/Page 1 4 Définitions des termes techniques Circuit : Ligne électrique de tension constante sur laquelle des équipements sont connectés en série. Disjoncteur : Élément de protection d’un circuit dont la valeur est exprimée en Ampère (A). UPS : Système permettant de fournir une tension durant un certain temps en cas de panne de courant. Son nom provient de l’acronyme des mots « Uninterruptible power supply » qui signifient « Système d’alimentation sans coupure » en français. La capacité d’un UPS à fournir une tension est exprimée en Ampère/heure. Tension d’entrée : La tension d’entrée correspond à la tension qui alimente le panneau. Dans le milieu résidentiel, cette tension est de 240 Volts. Tension de phase : La tension de phase correspond aux sous-tensions possibles de la tension d’entrée. Dans le milieu résidentiel, cette tension est de 120 Volts. Lois d’ohms : Puissance (en Watts) = Tension (en Volts) * Courant (en Ampères) 5 Description des modules fournis 5.1 Module m_interface Ce module vous donne accès à plusieurs fonctions permettant de lire et d’écrire dans les feuilles Excel. Votre première tâche consiste à bien lire les commentaires d’entête de chacune des fonctions qui s’y trouvent. Prenez note qu’il vous est interdit de modifier ce module. INF-130 Ordinateurs et programmation A2015/Page 2 6 Description des modules à coder Votre tâche consiste à coder 17 sous-programmes répartis dans 4 modules. 6.1 Module m_constantes Ce module ne contient que des constantes liées au domaine de l’électricité et qui sont nécessaires à l’écriture des modules m_gestion et/ou m_principal. 6.2 Module m_gestion Ce module comporte dix fonctions servant à consulter les caractéristiques : des circuits, des équipements et du panneau électrique. 6.3 Module m_saisies Ce module contient les trois fonctions publiques saisir_chaine, saisir_entier et saisir_entier_strictement_positif qui permettent respectivement de saisir une chaîne de caractères et un entier au clavier. 6.4 Module m_principal Ce module comporte la fonction privée saisir_tension ainsi que trois procédures associées aux trois boutons-macros dans la feuille « Équipements » : ajouter_nouveau_equipement, ajouter_nouveau_circuit et afficher_statistiques. 7 Ordre de développement suggéré et description des sous-programmes à coder Réalisez les sous-programmes demandés dans l'ordre suivant. Commentez et testez vos sous-programmes au fur et à mesure. Prenez noter qu’une procédure de test est exigée pour les dix premiers sousprogrammes. 7.1 Module m_gestion 1. Fonction : position_circuit_liste Cette fonction retourne la position d'un circuit dans la liste Excel. Entrée : − L’identifiant (ID) du circuit que l’on cherche. Sortie : La position du circuit demandé dans la liste. Requis : − La fonction retourne 0 si l’identifiant du circuit demandé n’est pas dans la liste. − La fonction retourne toujours une valeur dans l’intervalle [0, obtenir_nb_circuit()]. Spécifications : − On présume qu’il n’y a pas de doublon d’identifiants dans la liste. INF-130 Ordinateurs et programmation A2015/Page 3 Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée ID ID ID ID du du du du circuit circuit circuit circuit : : : : Valeur de retour "A1" "B1" "C1" "Z1" 1 5 9 0 2. Fonction : puissance_maximale_circuit Cette fonction calcule la puissance maximale qu'un circuit peut supporter en fonction de la valeur de son disjoncteur et en tenant compte du code électrique qui stipule qu’un disjoncteur ne doit pas être chargé à plus de 80 % de sa capacité. Entrée : − L’identifiant (ID) du circuit dont on souhaite connaître la puissance maximale possible. Sortie : La puissance maximale dont le circuit peut être chargé (en Watts). Requis : − La puissance est calculée avec la formule suivante : = è ∗ ∗ 80% − La fonction retourne 0 si l’identifiant du circuit demandé n’est pas dans la liste. Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée Valeur de retour ID du circuit : "A3" ID du circuit : "B2" ID du circuit : "Z1" 3840 1920 0 3. Fonction : puissance_total_max_circuits Cette fonction calcule la puissance maximale que tous les circuits peuvent supporter. Entrée : Aucune. Sortie : La puissance totale maximale (en Watts). Requis : − La puissance totale est calculée en faisant la somme de la puissance maximale de chacun des circuits du panneau. Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée Aucune INF-130 Ordinateurs et programmation Valeur de retour 20 640 A2015/Page 4 4. Fonction : puissance_consommee_sur_circuit Cette fonction calcule la puissance consommée par les équipements branchés sur un circuit donné. Entrée : − L’identifiant (ID) du circuit pour lequel on souhaite connaître la puissance qui est consommée par les équipements qui y sont branchés. Sortie : La puissance consommée sur le circuit (en Watts). Requis : − La puissance consommée sur le circuit est calculée en effectuant la somme des puissances des équipements connectés à ce circuit. Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée ID ID ID ID du du du du circuit circuit circuit circuit : : : : Valeur de retour "A1" "B4" "C1" "Z1" 150 3400 0 0 5. Fonction : circuit_moins_charge Cette fonction trouve l’identifiant (ID) du circuit le moins chargé dont la tension (en Volts) correspond à la tension spécifiée. La charge d’un circuit correspond à la puissance consommée par les équipements branchés sur ce circuit. Entrée : − La tension des circuits parmi lesquels ont doit rechercher celui qui est le moins chargé (en Volts). Cette tension doit être 120 ou 240 Volts. Sortie : L’identifiant (ID) du circuit qui a la plus faible charge. Requis : − Si plusieurs circuits ont la même charge minimale, la fonction retourne l’identifiant (ID) du premier de ces circuits. − Si aucun circuit ne possède la tension spécifiée, la fonction retourne une chaine vide. Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée Tension du circuit : 120 Tension du circuit : 240 Tension du circuit : 33 INF-130 Ordinateurs et programmation Valeur de retour "A4" "A3" "" A2015/Page 5 6. Fonction : ratio_utilisation_circuit Cette fonction calcule le ratio d'utilisation de la puissance d'un circuit. Entrée : − L’identifiant (ID) du circuit qui a la plus faible charge Sortie : Le pourcentage d’utilisation du circuit sous forme d’entier dans l’intervalle [0, 100]. Requis : − Le ratio est calculé avec la formule suivante : = é ∗ 100 !" Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée ID ID ID ID du du du du circuit circuit circuit circuit : : : : Valeur de retour "B2" "A3" "C1" "Z1" 6 78 0 0 7. Fonction : nb_emplacements_libres Cette fonction calcule le nombre d’emplacements qui ne sont pas occupés sur le panneau électrique. Un circuit dont la tension est égale à la tension d’entrée (240 Volts) occupe deux emplacements dans le panneau. Un circuit dont la tension est égale à la tension de phase (120 Volts) n’occupe qu’un seul emplacement dans le panneau. Entrée : Aucune. Sortie : Le nombre d’emplacements encore disponibles dans le panneau. Requis : − Le nombre d’emplacements libres correspond au nombre total d’emplacements moins le nombre d’emplacements occupés par les circuits qui sont présents dans le panneau. Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée Aucune Valeur de retour 9 8. Fonction : somme_amperage_circuits_panneau Cette fonction calcule la somme des intensités des circuits présents dans le panneau électrique. Entrée : Aucune. Sortie : La somme des intensités des circuits (en Ampères). Requis : Aucun. INF-130 Ordinateurs et programmation A2015/Page 6 Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée Valeur de retour Aucune 165 9. Fonction : puissance_total_consommee Cette fonction calcule la puissance totale consommée par l’ensemble des équipements. Entrée : Aucune. Sortie : La puissance consommée par tous les équipements (en Watts). Requis : − La puissance consommée par tous les équipements correspond à la somme de la puissance consommée par chacun des équipements. Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée Aucune Valeur de retour 9 270 10. Fonction : calcul_temps_ups Cette fonction calcule le temps, exprimé en heures, durant lequel l’UPS peut supporter la charge du panneau. Entrée : Aucune. Sortie : Le temps (en heures). Requis : − Le calcul du temps se fait avec la formule suivante : ℎ = é′&' é) ( * ′é Jeux d’essais Note : Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». Entrée Aucune INF-130 Ordinateurs et programmation Valeur de retour 205,128 A2015/Page 7 7.2 Module m_saisies 11. Fonction : saisir_chaine Cette fonction saisit une chaine de caractère au clavier. Entrées : − Le message de contexte que l'on veut afficher dans la boite de dialogue. − Une référence à une variable dont le contenu sera modifié lorsque l’utilisateur entrera une chaine. Sortie : VRAI si l’utilisateur à entrer une chaine et FAUX s’il n’a rien entré (bouton « Annuler »). Requis : − La fonction retourne FAUX si l’utilisateur appuie sur le bouton « Annuler ». − Lorsque l’utilisateur annule la saisie ou appuie sur le bouton « Annuler », la variable référencée par le second paramètre n’est pas modifiée. Jeux d’essais Entrées Paramètres : message_contexte : "Entrez une chaine" chaine_a_remplir : ? Action : L’utilisateur entre « test » et appuie sur la touche Enter. Paramètres : message_contexte : "Entrez une chaine" chaine_a_remplir : ? Action : L’utilisateur appuie sur « Annuler ». Valeur de retour saisir_chaine = True chaine_a_remplir = "test" saisir_chaine = False chaine_a_remplir = ? 12. Fonction : saisir_entier Entrées : − Le message de contexte que l'on veut afficher dans la boite de dialogue. − Une référence à une variable dont le contenu sera modifié lorsque l’utilisateur entrera un entier. Sortie : VRAI si l’utilisateur a entré un entier et FAUX s’il n’a rien entré (bouton « Annuler »). Requis : − Tant que l’utilisateur entre une donnée qui n’est pas un nombre et n’appuie pas sur le bouton « Annuler », la fonction affiche un message d’erreur et recommence la saisie. − La fonction retourne FAUX si l’utilisateur appuie sur le bouton « Annuler ». − Lorsque l’utilisateur annule la saisie ou appuie sur le bouton « Annuler », la variable référencée par le second paramètre n’est pas modifiée. INF-130 Ordinateurs et programmation A2015/Page 8 Jeux d’essais Entrées Valeur de retour Paramètres : message_contexte : "Entrez un entier" entier_a_remplir : ? Action : L’utilisateur entre « test » et appuie sur la touche Enter. Un message d’erreur s’affiche. L’utilisateur entre « 23 » et appuie sur la touche Enter. Paramètres : message_contexte : "Entrez un entier" entier_a_remplir : ? Action : L’utilisateur appuie sur « Annuler ». saisir_entier = True entier_a_remplir = 23 saisir_entier = False entier_a_remplir = ? 13. Fonction : saisir_entier_strictement_positif Entrées : − Le message de contexte que l'on veut afficher dans la boite de dialogue. − Une référence à une variable dont le contenu sera modifié lorsque l’utilisateur entrera un entier valide. Sortie : VRAI si l’utilisateur a entré un entier valide et FAUX s’il n’a rien entré (bouton « Annuler »). Requis : − Tant que l’utilisateur entre une donnée qui n’est pas un nombre entier positif et n’appuie pas sur le bouton « Annuler », la fonction affiche un message d’erreur et recommence la saisie. − La fonction retourne FAUX si l’utilisateur appuie sur le bouton « Annuler ». − Lorsque l’utilisateur annule la saisie ou appuie sur le bouton « Annuler », la variable référencée par le second paramètre n’est pas modifiée. Jeux d’essais Entrées Valeur de retour Paramètres : message_contexte : "Entrez un entier positif" entier_a_remplir : ? Actions : L’utilisateur entre « test » et appuie sur la touche Enter. Un message d’erreur s’affiche. L’utilisateur entre « -23 » et appuie sur la touche Enter. Un message d’erreur s’affiche. INF-130 Ordinateurs et programmation A2015/Page 9 L’utilisateur entre « 15 » et appuie sur la touche Enter. saisir_entier_strictement_ positif = True entier_a_remplir = 15 Paramètres : message_contexte : "Entrez un entier positif" entier_a_remplir : ? Action : L’utilisateur appuie sur « Annuler ». 7.3 saisir_entier_strictement_ positif = False entier_a_remplir = ? Module m_principal 14. Fonction privée : saisir_tension Entrée : − Une référence à une tension (en volts) dont le contenu sera modifié lorsque l’utilisateur entrera un entier valide. Sortie : VRAI si l’utilisateur a entré un entier valide et FAUX s’il n’a rien entré (bouton « Annuler »). Requis : − La fonction débute en demandant à l’utilisateur d’entrer une tension en volts. − Tant que l’utilisateur entre une donnée qui n’est pas 120 ou 240 et qu’il n’appuie pas sur le bouton « Annuler », la fonction affiche un message d’erreur et recommence la saisie. − La fonction retourne FAUX si l’utilisateur appuie sur le bouton « Annuler ». − Lorsque l’utilisateur annule la saisie ou appuie sur le bouton « Annuler », la variable référencée par le second paramètre n’est pas modifiée. Jeux d’essais Entrées Paramètre : tension_a_remplir : ? Action : L’utilisateur entre « test » et appuie sur la touche Enter. Un message d’erreur s’affiche. L’utilisateur entre « 12 » et appuie sur la touche Enter. Un message d’erreur s’affiche. L’utilisateur entre « 120 » et appuie sur la touche Enter. Paramètre : tension_a_remplir : ? Action : L’utilisateur appuie sur « Annuler ». INF-130 Ordinateurs et programmation Valeur de retour saisir_tension = True tension_a_remplir = 120 saisir_tension = False tension_a_remplir = ? A2015/Page 10 15. Procédure : ajouter_nouvel_equipement Cette procédure permet à l’utilisateur d’ajouter un nouvel équipement dans la liste Excel des équipements. Entrée : Aucune. Sortie : Aucune. Requis : − La procédure demande à l’utilisateur le nom de l’équipement. Si l’utilisateur n’annule pas la saisie, elle saisit la puissance consommée par l’équipement. Si l’utilisateur n’annule pas la saisie, elle saisit la tension d’opération (le voltage de l’équipement). Enfin, si l’utilisateur n’annule toujours pas cette troisième saisie, la procédure tente d’ajouter l’équipement. − La procédure tente toujours de brancher le nouvel équipement sur le circuit du même voltage dont la charge est minimale. − S’il n’existe aucun circuit du même voltage que l’équipement, la procédure affiche un message d’erreur. − Si le circuit dont la charge est minimale ne peut pas supporter l’ajouter de l’équipement (donc, lorsque la puissance consommée + puissance équipement > puissance maximale du circuit), la procédure affiche un message d’erreur. 16. Procédure : ajouter_nouveau_circuit Cette procédure permet à l’utilisateur d’ajouter un nouveau circuit dans la liste Excel des circuits. Entrée : Aucune. Sortie : Aucune. Requis : − La procédure demande à l’utilisateur l’identifiant (ID) du circuit. Si l’utilisateur n’annule pas la saisie, elle saisit le courant du disjoncteur. Si l’utilisateur n’annule pas la saisie, elle saisit la tension du circuit (le voltage). Enfin, si l’utilisateur n’annule toujours pas cette troisième saisie, la procédure tente d’ajouter le circuit. − La procédure va en premier lieu vérifier si l’identifiant (ID) du nouveau circuit n’est pas déjà présent dans la liste des circuits. Si c’est le cas on affiche un message d’erreur et on annule le reste de l’opération d’ajout. Cette validation peut être faite dès la saisie de l’identifiant (ID). − La procédure valide s’il reste suffisamment d’emplacements dans le panneau électrique pour accueillir un circuit de cette tension et si ce n’est pas le cas, elle affiche un message d’erreur. − La procédure valide que la puissance disponible dans le panneau électrique est suffisante pour accueillir le circuit (donc, que la puissance consommée + puissance équipement < puissance maximale du circuit). Si ce n’est pas le cas, elle affiche un message d’erreur. INF-130 Ordinateurs et programmation A2015/Page 11 17. Procédure : afficher_statistiques Cette procédure affiche des informations sur le panneau électrique, sur l’état de chaque circuit et sur la le temps que l’UPS peut supporter la charge. Entrée : Aucune. Sortie : Aucune. Requis : − Afficher un message dont le format est identique à celui qui apparaît à la figure qui suit. 8 1 Contraintes de l'enseignant Votre programme devra respecter les contraintes suivantes : • Il devra respecter les exigences de remise des travaux pratiques. D’ailleurs, la qualité du code vaudra au moins autant de points que le fonctionnement du programme. • Il ne devra contenir aucune variable globale. La présence d’une variable globale entraînera la perte de 25 % des points. • Il ne devra contenir aucun Goto, aucun Exit For et aucun Exit Function. La présence d’une de ces instructions entraînera la perte de 10 % des points. En cas de doute, n’hésitez pas à consulter votre enseignant. BON TRAVAIL! 1 Pour obtenir les résultats présentés, utilisez le fichier Excel fourni par l’enseignant, sans apporter de modification aux feuilles « Équipements » et « Circuits ». INF-130 Ordinateurs et programmation A2015/Page 12