Sur cette page

Qt Quick Pompe à eau

Interagir avec un serveur OPC UA pour construire une IHM basée sur QML pour une simple pompe à eau.

L'API QML a été marquée comme dépréciée dans Qt 6.9 et sera supprimée dans une prochaine version.

Qt Quick L'exemple de lapompe à eau montre comment utiliser Qt OPC UA QML API pour interagir avec un serveur OPC UA afin de construire une IHM basée sur QML pour une machine simple.

Application de pompe à eau avec deux réservoirs, commandes de pompe et panneau d'état

Construction du serveur

Avant de pouvoir utiliser les exemples Water Pump, vous devez construire le serveur de simulation Water Pump. Vous pouvez l'ouvrir et le construire dans QtCreator ou à partir du terminal comme d'habitude.

La simulation

Le serveur OPC UA inclus dans cet exemple exécute une simulation d'une machine contenant deux réservoirs, une pompe à eau et une vanne. L'eau peut être pompée du premier réservoir vers le second, puis évacuée du second en ouvrant la vanne. Les deux opérations ont un point de consigne configurable par l'utilisateur qui contrôle la quantité d'eau pompée ou évacuée du second réservoir.

Les nœuds suivants existent sur le serveur :

NodeIdFonction
ns=2;s=MachineDossier contenant les nœuds de méthode et de variable de la machine.
ns=2;s=Machine.StateL'état de la machine
ns=2;s=Machine.Tank1.PercentFilledL'état de remplissage actuel du premier réservoir
ns=2;s=Machine.Tank2.PercentFilledL'état de remplissage actuel du deuxième réservoir
ns=2;s=Machine.Tank2.TargetPercentLe point de consigne pour le pompage et le rinçage
ns=2;s=Machine.Tank2.ValveStateL'état de la vanne du deuxième réservoir
ns=2;s=Machine.DesignationDésignation de la machine lisible par l'homme à des fins d'affichage
ns=2;s=Machine.StartAppeler cette méthode pour démarrer la pompe
ns=2;s=Machine.StopAppeler cette méthode pour arrêter la pompe
ns=2;s=Machine.FlushTank2Appel de cette méthode pour rincer le réservoir 2
ns=2;s=Machine.ResetAppelle cette méthode pour réinitialiser la simulation

Mise en œuvre

Cet exemple utilise des éléments QML pour lire et écrire des valeurs ainsi que des appels de méthode. Toutes les opérations sont asynchrones et gérées par QML en arrière-plan.

Un élément QML représente la machine et ses composants. Cet élément n'a pas d'interface graphique et permet uniquement d'accéder aux propriétés de la machine. Il possède deux réservoirs qui sont des instances d'un composant Tank distinct.

Propriétés

L'élément machine expose toutes les propriétés et sous-éléments en tant que propriétés.

    ...
    readonly property alias tank1: tank1
    readonly property alias tank2: tank2
    readonly property alias state: machineState.value
    readonly property alias tank2PercentFilled: tank2.percentFilled
    readonly property alias tank2valveState: tank2.valveState
    readonly property alias designation: designation.value
    property alias resetMethod: resetMethod
    property alias startMethod: startMethod
    property alias stopMethod: stopMethod
    property alias flushMethod: flushMethod
    ...
Gestionnaires asynchrones

Les parties asynchrones de l'API sont gérées automatiquement par QML car des signaux sont émis par défaut pour chaque changement de propriété.

Par exemple, le bouton permettant de rincer le deuxième réservoir n'est activé que si le backend est connecté au serveur, que la machine est inactive et que le niveau du réservoir est supérieur au point de consigne. En cas de clic, la méthode flushTank2() est appelée sur le serveur.

    Tank2Unit {
        flushButtonEnabled: connection.connected && machine.state === Machine.MachineState.Idle
                            && machine.tank2.percentFilled > machine.tank2.targetPercent
        percentFilled: machine.tank2.percentFilled
        valveState: machine.tank2valveState

Utilisation

Le serveur est démarré automatiquement par l'application IHM. Après s'être connecté au serveur en cliquant sur le bouton Connect, faites glisser le curseur pour définir un point de consigne, puis cliquez sur Start pour commencer à pomper l'eau du premier réservoir vers le second. Après avoir défini un point de consigne inférieur à la valeur actuelle du deuxième réservoir, un clic sur Flush ouvre la vanne.

S'il n'y a plus d'eau, cliquez sur Reset simulation pour remplir le premier réservoir.

Fichiers :

Voir aussi Pompe à eau.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.