Qt Quick 워터 펌프
간단한 워터 펌프 기계에 대한 QML 기반 HMI를 구축하기 위해 OPC UA 서버와 상호 작용하기.
Qt Quick 워터 펌프 예제는 Qt OPC UA QML API를 사용하여 OPC UA 서버와 상호 작용하여 간단한 기계에 대한 QML 기반 HMI를 구축하는 방법을 보여줍니다.
서버 빌드하기
워터 펌프 예제를 사용하려면 먼저 워터 펌프 시뮬레이션 서버를 빌드해야 합니다. 평소와 같이 QtCreator 또는 터미널에서 열고 빌드할 수 있습니다.
시뮬레이션
이 예제에 포함된 OPC UA 서버는 두 개의 탱크, 워터 펌프 및 밸브가 포함된 기계의 시뮬레이션을 실행합니다. 첫 번째 탱크에서 두 번째 탱크로 물을 펌핑한 다음 밸브를 열어 두 번째 탱크에서 물을 플러시할 수 있습니다. 두 작업 모두 사용자가 구성할 수 있는 설정값이 있어 두 번째 탱크로 펌핑하거나 두 번째 탱크에서 플러시하는 물의 양을 제어할 수 있습니다.
서버에는 다음 노드가 존재합니다:
NodeId | 함수 |
---|---|
ns=2;s=Machine | 머신에 대한 메서드 및 변수 노드가 포함된 폴더 |
ns=2;s=Machine.State | 머신의 상태 |
ns=2;s=Machine.Tank1.PercentFilled | 첫 번째 탱크의 현재 충전 상태 |
ns=2;s=Machine.Tank2.PercentFilled | 두 번째 탱크의 현재 충전 상태 |
ns=2;s=Machine.Tank2.TargetPercent | 펌핑 및 플러싱을 위한 설정값 |
ns=2;s=Machine.Tank2.ValveState | 두 번째 탱크의 밸브 상태 |
ns=2;s=Machine.Designation | 표시 목적으로 사람이 읽을 수 있는 기계의 명칭입니다. |
ns=2;s=Machine.Start | 펌프를 시작하려면 이 메서드를 호출합니다. |
ns=2;s=Machine.Stop | 펌프를 중지하려면 이 메서드를 호출합니다. |
ns=2;s=Machine.FlushTank2 | 탱크 2를 플러시하려면 이 메서드를 호출하세요. |
ns=2;s=Machine.Reset | 시뮬레이션을 리셋하려면 이 메서드를 호출합니다. |
구현
이 예제에서는 QML 항목을 사용하여 값을 읽고 쓸 뿐만 아니라 메서드 호출도 사용합니다. 모든 작업은 비동기식이며 백그라운드에서 QML에 의해 처리됩니다.
QML 항목은 머신과 그 구성 요소를 나타냅니다. 이 항목에는 그래픽 인터페이스가 없으며 기계의 속성에 대한 액세스만 제공합니다. 여기에는 별도의 Tank
컴포넌트의 인스턴스인 두 개의 탱크가 있습니다.
속성
머신 아이템은 모든 프로퍼티와 서브아이템을 프로퍼티로 노출합니다.
... 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 ...
비동기 핸들러
API의 비동기 부분은 기본적으로 모든 속성 변경에 대해 신호가 발생하기 때문에 QML에서 자동으로 처리됩니다.
예를 들어, 두 번째 탱크를 세척하는 버튼은 백엔드가 서버에 연결되어 있고 기계가 유휴 상태이며 탱크 레벨이 설정값 이상인 경우에만 활성화됩니다. 클릭하면 서버에서 flushTank2()
메서드가 호출됩니다.
Tank2Unit { flushButtonEnabled: connection.connected && machine.state === Machine.MachineState.Idle && machine.tank2.percentFilled > machine.tank2.targetPercent percentFilled: machine.tank2.percentFilled valveState: machine.tank2valveState
사용 방법
서버는 HMI 애플리케이션에 의해 자동으로 시작됩니다. Connect 버튼을 클릭하여 서버에 연결한 후 슬라이더를 드래그하여 설정값을 설정한 다음 Start 을 클릭하여 첫 번째 탱크에서 두 번째 탱크로 물을 펌핑하기 시작합니다. 두 번째 탱크의 현재 값보다 낮은 설정값을 설정한 후 Flush 을 클릭하면 밸브가 열립니다.
물이 남아 있지 않으면 Reset simulation 을 클릭하여 첫 번째 탱크를 다시 채웁니다.
파일:
워터 펌프도참조하세요 .
© 2025 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.