Qt Quick Pompe à eau
Interaction avec un serveur OPC UA pour créer une IHM basée sur QML pour une pompe à eau simple.
L'API Qml a été marquée comme obsolète dans Qt 6.9 et sera supprimée dans une prochaine version.
Qt Quick L'exemple «Pompe à eau » montre comment utiliser l'API QML d'Qt OPC UA pour interagir avec un serveur OPC UA afin de créer une IHM basée sur QML pour une machine simple.

Compilation du serveur
Avant de pouvoir utiliser les exemples de la pompe à eau, vous devez compiler le serveur de simulation de la pompe à eau. Vous pouvez l'ouvrir et le compiler dans QtCreator ou depuis le terminal, comme d'habitude.
La simulation
Le serveur OPC UA inclus dans cet exemple exécute une simulation d’une machine comprenant 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 de ce dernier en ouvrant la vanne. Ces deux opérations disposent d’un point de consigne configurable par l’utilisateur qui contrôle la quantité d’eau pompée vers le second réservoir ou évacuée de celui-ci.
Les nœuds suivants existent sur le serveur :
| NodeId | Fonction |
|---|---|
| ns=2;s=Machine | Le dossier contenant les nœuds de méthode et de variable pour la machine |
| ns=2;s=Machine.State | L'état de la machine |
| ns=2;s=Machine.Tank1.PercentFilled | L'état de remplissage actuel du premier réservoir |
| ns=2;s=Machine.Tank2.PercentFilled | L'état de remplissage actuel du deuxième réservoir |
| ns=2;s=Machine.Tank2.TargetPercent | La valeur de consigne pour le pompage et la purge |
| ns=2;s=Machine.Tank2.ValveState | L'état de la vanne du deuxième réservoir |
| ns=2;s=Machine.Designation | Une désignation lisible par l'utilisateur de la machine à des fins d'affichage |
| ns=2;s=Machine.Start | Appelez cette méthode pour démarrer la pompe |
| ns=2;s=Machine.Stop | Appelez cette méthode pour arrêter la pompe |
| ns=2;s=Machine.FlushTank2 | Appelez cette méthode pour vidanger le réservoir 2 |
| ns=2;s=Machine.Reset | Appelez cette méthode pour réinitialiser la simulation |
Implémentation
Cet exemple utilise des éléments QML pour lire et écrire des valeurs, ainsi que pour appeler des méthodes. 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 ne dispose d’aucune interface graphique et permet uniquement d’accéder aux propriétés de la machine. Il comporte deux réservoirs qui sont des instances d’un composant distinct Tank.
Propriétés
L'élément « machine » expose toutes ses propriétés et sous-éléments sous forme de 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 à chaque modification de propriété.
Par exemple, le bouton permettant de vider le deuxième réservoir n’est activé que si le backend est connecté au serveur, si la machine est inactive et si le niveau du réservoir est supérieur au seuil défini. Lorsqu’on clique dessus, 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.tank2valveStateUtilisation
Le serveur est lancé automatiquement par l’application IHM. Après vous ê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 lancer le pompage de l’eau du premier réservoir vers le second. Après avoir défini un point de consigne inférieur à la valeur actuelle du second réservoir, un clic sur « Flush » ouvre la vanne.
S'il ne reste plus d'eau, cliquez sur « Reset simulation » pour remplir à nouveau le premier réservoir.
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.