Vous êtes sur la page 1sur 97

LabVIEW per ESPERTI

Alessandro PLANTAMURA Technical Marketing Engineer - NI Italy

Agenda
Realizzare interfacce utente avanzate

Gestione della memoria e delle prestazioni


Differenti approcci alla programmazione Come strutturare l'architettura di sistemi

embedded
Risorse

Obiettivo - Apprendere come personalizzare il pannello frontale e creare componenti riutilizzabili dell'interfaccia utente che siano conformi ai temi standard del SO. Vedere esempi di rappresentazione dei dati altamente interattivi, finestre di configurazione e modi per aggiungere sfondi allinterfaccia utente.

REALIZZARE INTERFACCE UTENTE AVANZATE IN LABVIEW

Realizzare interfacce utente avanzate

Agenda

Pratici consigli

Interfaccia Desktop

Interfaccia di monitoraggio

Non fare loriginale Pi con meno Tieni a mente lutente finale

1. Non fare loriginale

Usa elementi che sono familiari

Non cambiare il comportamento di oggetti che si assomigliano Fai pulizia, ordine e restile, non reinventare

1. Non fare loriginale

Seppur con qualche spunto di creativit


Pulsanti Icone Menu Dialoghi Terminologia

2. Pi con meno
Troppi elementi tutti assieme distraggono Permetti allutente di focalizzarsi sullessenziale

3. Tieni a mente lutente


Probabilmente non ha una conoscenza approfondita come la tua
Spiega che cosa fanno i pulsanti Tienilio informato su cosa sta facendo il programma

Considera come il tuo utente user la tua applicazione


Mouse e tastiera? Touch Screen pulsanti grandi Allaperto contrasto elevato

Realizzare interfacce utente avanzate

Agenda

Pratici consigli

Interfaccia Desktop

Interfaccia di monitoraggio

Aggiungere didascalie ai pulsanti Suggerimenti dinamici Personalizzazione del menu di esecuzione Utilizzo dei pannelli

Applicare le regole
Applicazione Desktop
Non fare loriginale

Usa controlli di sistema Aggiungi icone familiari ai pulsanti che effettuano azioni Usa la X per chiudere lapplicazione Permetti allutente di nascondere i display meno importanti Nascondi la barra degli strumenti di LabVIEW Usa dialoghi temporanei Personalizza il men di esecuzione

Pi con meno

Tieni a mente lutente

Crea una barra di stato e usa il cursore di occupato per aggiornare lutente Usa suggerimenti per spiegare le funzionalit Permetti allutente di cancellare operazioni lunghe Usa i pannelli per permettere di nascondere parti

Aggiungere didascalie ai pulsanti

Nuova paletta Silver

Suggerimenti dinamici

Personalizzazione del menu di esecuzione

Utilizzo dei pannelli

Area del titolo

Menu / Commandi Area dei contenuti espandibile

Barra di stato

Scomparsa di pannelli

Realizzare interfacce utente avanzate in Labview


Agenda

Pratici consigli

Interfaccia Desktop

Interfaccia di Monitoraggio

Panel Background

Applicare le regole
Console Display informativa
Non fare loriginale

Ispirati prendendo esempi dalla TV, dai siti web o applicazioni simili

Mostra unicamente le informazioni importanti in Pi con modo che siano riconoscibili allistante
meno

Tieneni a mente lutente

Audience passiva lappeal visivo pi importante

Background del pannello

Background con trasparenza

Risorse
UI Interest Group

http://decibel.ni.com/content/groups/ui

Objective - uno dei grandi vantaggi nellusare LabVIEW che le complessit del proprio sistema pc sono astratte, permettendo allutente di concentrarsi sui dati. Tuttavia a volte vogliamo avere un controllo pi diretto sulle performance del nostro codice ed qui che entrano in gioco alcune delle tecniche di ottimizzazione che vedremo oggi.

GESTIONE DELLA MEMORIA E DELLE PRESTAZIONI IN LABVIEW

Gestione della memoria e delle prestazioni


Agenda
Dove ottimizzare Strumenti per il profiling Ottimizzazione della memoria Ottimizzazione di esecuzione

Ridurre luso della memoria, aumentare la velocit La regola del 80/20

Aumentare le prestazioni in LabVIEW

Dove ottimizzare

Strumenti per il profiling

Ottimizzazione della memoria

Ottimizzazione di esecuzione

Benchmark Valutare le performance Identificare le are di miglioramento

Ottimizzazione Migliorare lefficacia Migliorare la velocit

Perch fare profiling sul proprio VI


L80 percento del tempo di esecuzione speso nel 20 percento del codice Miglioramenti in termini di performance hanno maggiore impatto nel 20 percento del codice Indovinare qual il 20 percento difficile

La regola del 80/20 sulle performance del software

Gestione della memoria e delle prestazioni


Agenda
Dove ottimizzare Strumenti per il profiling Ottimizzazione della memoria Ottimizzazione di esecuzione

Strumenti di Windows (Task Manager, perfmon) VI Profiler Desktop Execution Trace Toolkit

Strumenti per il benchmark


Livello SO
Task Manager, Perfmon

Livello LabVIEW
VI Profiler, VI di Benchmark

Livello VI
LabVIEW Desktop Execution Trace Toolkit

Strumenti di sistema
Windows Task Manager
Da unidea di massima se il collo di bottiglia a livello di memoria o di CPU Pu aiutare nellidentificare memory leaks ViewSelect Columns permette di aggiungere dettagli Permette di monitorare Processori Disk I/O Network Tx/Rx Memoria/Paging

Perform

Desktop Execution Trace Toolkit


Traccia sequenze di eventi di VI durante lesecuzione Informazioni su thread e VI Misura del tempo di esecuzione Identifica memory e reference leak

Sessioni multiple

Thread, CPU e memoria

VI

VI Profiler
Statistiche su tempo e memoria per i VI
ToolsProfilePerformance and Memory

Gestione della memoria e delle prestazioni


Agenda
Dove ottimizzare Strumenti per il profiling Ottimizzazione della memoria Ottimizzazione di esecuzione

Utilizzare la in place element structure Nascondere i punti Shift register Creazione di array

Componenti di un VI
Pannello Diagramma Dati
Valori di controlli/indicatori Dati di default Dati costante del diagramma a blocchi
Cosa c in un VI Pannello frontale

Noi carichiamo Diagramma a


blocchi

esclusivamente
Dati

Codice
Diagramma compilato in codice macchina

le parti di cui
Codice abbiamo

bisogno

Dati del pannello e del diagramma


I dati del pannello son detti Operate Data
Controlli e indicatori mantengono una loro copia dei dati, in modo che modifiche al pannello frontale non interferiscono con i calcoli nel diagramma

Operate Buffer

I dati del diagramma si dicono Execution Data


Ogni filo rappresenta un buffer di dati

Transfer Buffer

Transfer Data sono usati per fare copie


Evita problemi nel multithreading

Execution Buffer

Questo VI usa circa 8 KB di dati se aperto il pannello frontale, e circa 4 KB in caso contrario

Mostrare le allocazioni di buffer

Ogni filo un buffer Tipicamente nelle ramificazioni si creano copie Algoritmo In placement di ottimizzazione

La struttura In-Place Element


Permette di modificare in maniera esplicita i dati in place

Dove possibile gestire lallocazione di memoria


Type Coercion
Cambia il tipo di dato di un filo per farlo corrispondere al tipo di dato richiesto
Coercion Dot

Passare valori a SubVI


non bisogna sempre creare una copia
In Place

Shift Register
Lingresso sulla sinistra sempre in place con luscita sulla destra

Always In Place

Creare dei vettori


Quanti modi ci sono per creare un vettore?..

Bad
Rialloca memoria per il vettore ad ogni loop Nessuna ottimizzazione nella compilazione Memoria riservata in fase di load Valori aggiornati in place

Better

Best

Memoria preallocata
Lindicizzazione del tunnel elimina il bisogno di copie

Effetti dellottimizzazione della memoria

Gestione della memoria e delle prestazioni

Agenda
Dove ottimizzare Strumenti per il profiling Ottimizzazione della memoria Ottimizzazione di esecuzione

Usare i setting appropriati di esecuzione Limitare gli aggiornamenti dellinterfaccia

Utilizzo delle memoria nellinterfaccia utente


Ogni controllo della IU richiede memoria per memorizzare la struttura dei dati Quando in esecuzione, i dati di controlli ed indicatori sono una copia aggiuntiva dei dati del diagramma a blocchi I dati di default per i controlli possono contribuire ad un utilizzo non necessario della memoria Le IU dei SubVI generalmente non comportano un utilizzo della memoria

Panel and Diagram data


I dati del pannello son detti Operate Data
Controlli e indicatori mantengono una loro copia dei dati, in modo che modifiche al pannello frontalenon interferiscono con i calcoli nel diagramma

Operate Buffer

I dati del diagramma si dicono Execution Data


Ogni filo rappresenta un buffer di dati

Transfer Buffer

Transfer Data sono usati per fare copie


Evita problemi nel multithreading

Execution Buffer

Questo VI usa circa 8 KB di dati se aperto il pannello frontale, e circa 4 KB in caso contrario

LabVIEW multithreaded e Thread della IU


Gli aggiornamenti del pannello frontale avvengono nel tread della IU La esecuzione avviene in altri thread I dati condivisi devono essere protetti
LabVIEW crea una copia ulteriore detta buffer di trasferimento
Thread messaggi Loop IU Thread

Thread

Exec

Exec

Gestione dell IU

Aggiorna gli indicatori solo quando ne hai bisogno

Di norma pi di 10 volte al secondo eccessivo

I dati sono copiati


dal buffer di esecuzione al buffer di trasferimento dal buffer di trasferimento ai dati operativi degli indicatori

Defer Panel Updates


Defer Panel Updates il metodo da usare quando avvengono cambiamenti multipli alle propriet di controlli/indicatori, come ad esempio nei grafici

Risorse
In LabVIEW

LabVIEW Help
Sul Web ni.com/multicore ni.com/devzone

Obiettivo - Introduzione agli strumenti pi comuni usati per la


progettazione e la simulazione di sistemi avanzati e la loro completa integrazione con LabVIEW

DIFFERENTI APPROCCI ALLA PROGRAMMAZIONE IN LABVIEW

Modelli di progettazione di alto livello


Flusso di dati Codice C
Matematica testuale

Simulazione

Macchina a stati

Graphical System Design Platform

PC/Mac/Linux

PXI

CompactRIO

FlexRIO

Custom

Differenti approcci alla programmazione

Agenda

Strumenti per la simulazione

Nodo MathScript

Piattaforma per la prototipazione Esempi applicativi

Strumenti per la modellazione di sistemi

NI LabVIEW

MapleSoft MapleSim

ITI SimulationX

C / C++

The MathWorks, Inc. Simulink Software

Esterel SCADE

LMS AmeSim

NI MATRIXx SystemBuild

Piattaforma NI per la prototipazione


Control Design & Simulation Module DFD Toolkit
LabVIEW Real-Time

System ID Toolkit Simulation Interface Toolkit


LabVIEW FPGA

Statechart Module

NI Motion Control
LabVIEW Microprocessor

Targets

PXI

cRIO, sbRIO

Desktops & SBCs

32-bit mp

Universit di Michigan
Corso di mecatronica (U)

Segway Human Transporter Prof. Shorya Awtar, ME LabVIEW Real-Time & FPGA LabVIEW Control Design and Simulation Module CompactRIO hardware

Progetti di lavoro di gruppo multidisciplinari


Rensselaer Polytechnic Institute : HOT-V

Teoria

Progetto

Prototipo

Sviluppo

4 Settimane

8 Settimane

1 Settimana

Test HIL di pala eolica


Sviluppo di un sistema di test HIL per la simulazione degli effetti del vento, posizione di pitch e blade per il test del controller della turbina

Siemens Wind Power Denmark

Software - LabVIEW
Control Design and Simulation Real Time FPGA

Hardware - PXI Real Time OS


Multicore Analog I/O Serial

Mass-spring model | SimEx Interacting with Mathscript Window

Simulazione e controllo di sistemi dinamici


Sviluppo con flusso di segnale e file .m Un unico ambiente per:
Simulazione di sistemi dinamici Sviluppo su real-time per rapid control prototiping o simulazione hardware-in-the-loop

[LabVIEW ]\examples\Control and Simulation\Case Studies ..\Mechatronics\DC Motor | ..\Aerospace\F14

Differenti approcci alla programmazione

Agenda

Strumenti per la simulazione

Nodo MathScript

MathScript Real-Time Module Nodo MathScript

Un approcio aperto alla matematica


Programmazione grafica LabVIEW

Measurement Studio (Visual Basic, Visual C++) LabWindows/CVI (C) LabVIEW MathScript Signal Processing & Analysis
Signal Synthesis / Generation Signal Operations / Conditioning Windows Digital Filters Spectral Analysis Wavelets Joint-Time Frequency Analysis Correlation / Convolution Scaling, Mapping Modulation Transforms Point-by-Point

Mathematics
BLAS/LAPAC-based Linear Algebra Polynomial Operations Calculus, Numerics Ordinary Differential Equations Curve Fitting Optimization Interpolation / Extrapolation Probability and Statistics 1D & 2D Evaluation Zeros

LabVIEW MathScript RT
Programmazione testuale avanzata per la progettazione di controllo, elaborazione di segnali, e matematica
Centinaia di funzioni native Riutilizzo di codice .m custom Creazione di funzioni definite dallutente

Una soluzione nativa LabVIEW


Interfacce interattive e programmatiche Possibilit di programmazione ibrida Non richede software di terze parti

LV MathScript - Interactive User


Interfaces
MathScript
Estensione del proprio script file .m con: IU interattiva

LV MathScript Access to real-world I/O


MathScript
Estensione del proprio script file .m con: IU interattiva Accesso allI/O del mondo reale

LV MathScript Graphical Programming


MathScript
Estensione del proprio script file .m con: IU interattiva Accesso allI/O del mondo reale Programmazione grafica

LabVIEW MathScript RT Module

Distribuire file custom di tipo .m nella piattaforma NI Real-Time

Filtro a media mobile MathScript Node & Dataflow + cRIO

Obiettivo - La soluzione NI per il mondo embedded larchitettura RIO, che offre elevata flessibilit e prestazioni ed programmabile usando lo stesso software di progettazione grafica LabVIEW. Vedremo alcuni aspetti da tenere in considerazione programmando questi particolari sistemi di calcolo, prima di realizzare un sistema di monitoraggio e controllo.

COME STRUTTURARE L'ARCHITETTURA DI SISTEMI EMBEDDED

Come strutturare l'architettura di sistemi embedded


Agenda

Architettura

Benchmarking

FPGA

La tecnologia RIO Comunicazione tra e attraverso processi Funzioni di comunicazione

Processo di progettazione embedded


semplificato
Scelta del SO Scelta dellhardware

Scelta dellhardware per il test Scelta del linguaggio di programmazione

Piattaforma tecnologica NI RIO


Application IP Signal Processing IP Control IP Third-Party IP

LabVIEW
LabVIEW Real-Time LabVIEW FPGA
I/O

Middleware Driver APIs Device Drivers I/O Drivers

Processor

FPGA

I/O
Custom I/O

CompactRIO & Single-Board RIO

PXI,PC RIO (R Series,


FlexRIO)

Value
Valore Resistenza Performance Alte Performance

Programmazione LabVIEW su NI RIO

Interfaccia utente

Processore Real-Time

FPGA Riconfigurabi le
LabVIEW FPGA

Moduli di I/O

LabVIEW

LabVIEW RT

Driver I/O

Collegamenti in LabVIEW e piattaforma RIO


BUS di comunicazione BUS industriali

GPRS/GPS

COMUNICAZIONE
Windows Real-Time FPGA

ACQ
LOG
Communicazione nello stesso PC o Target Communicazione tra processi o cicli paralleli Priorit di elaborazione configurabili per i cicli Salvataggio dati offload o elaborazione demandata a unaltra CPU/Core/Thread allinteno dello stesso VI/eseguibile Comunicazione sincrona e asincrona

High

Med

Low

Opzioni di comunicazione tra processi


Variabili condivise (Shared Variable) Aggiornano i loop GUI con lultimo valore

Code Eseguono trasferimento continuo di dati tra cicli su target non deterministici
Eventi dinamici Registrano eventi dinamici per eseguire parti di codice Variabili funzionali globali (FGV) Basate su un subVI non rientrante per proteggere dati critici RT FIFO Trasferiscono dati continui tra loop time critical allinterno del singolo target RT

Opzioni di comunicazione tra target


TCP/IP e UDP Velocit di trasmissione e latenza ottimizzate attraverso protocolli di comunicazione a basso livello Variabili condivise (Shared Variable) Per realizzare rapidamente sistemi distribuiti tramite una configurazione drag-and-drop Accedono allultimo valore nelle varibili di tipo network published Network Streams Trasferimento dati punto a punto in LabVIEW con alta velocit e programmazione minima

Opzioni di comunicazione tra RT e FPGA


NI CompactRIO

LabVIEW Real-Time
LabVIEW Real-Time

FPGA I\O modules SCAN Interface I\O modules FPGA Interface

NI Scan Engine
I/O memory table

I/O Variables

RIO Scan Interface

User FPGA data FPGA Host Interface

Timing
LabVIEW FPGA VI

Opzioni di comunicazione tra RT e FPGA


Variabili di I/O Configurazione Drag-and-drop Semplice modo per trasferire dati tra VI Windows, RT e FPGA Reference Design Paletta di VI Host/RT che permette di configurare ed eseguire acquisizione dati Configure Acquisition Start Read Data Block

FPGA API Interface / DMA Accesso diretto alla memoria attraverso differenti componenti di un sistema

Come strutturare l'architettura di sistemi embedded


Agenda

Architettura

Benchmarking

FPGA

Strumenti per un corretto benchmarking

Ridurre luso della CPU


Creare un Time Budget
a)

Dare priorit a thread in base ai requisiti temporali

Evitare parallelismo eccessivo


b)

Riutilizzare pattern di programmazione comuni Fare benchmark per determinare larchitettura ottimale

c)

Limitare luso delle varriabili condivise Ridurre il carico di task (quando possibile)
Usare lFPGA per lacquisizione dati e algoritmi di controlllo Usare il PC Host per il salvataggio dati, il monitoraggio, e lhosting delle variabili condivise

d)

Creare un Time Budget


Uso CPU (%) = 100 * Somma(Loop 1, Loop 2,.., Loop n],
dove Loop n = (Durata / Periodo)
Task/Loop Controllo Durata (s) 400 Periodo (s) 1000 10,000 Task/Loop Controllo Durata (s) 400 Periodo (s) 1000 25,000

Monitoraggio 3,000

Monitoraggio 3,000

Salvataggio

16,000

30,000

Salvataggio

16,000

80,000

100 * (400/1,000 + 3,000/10,000 + 16,000/30,000) = 123%

100 * (400/1,000 + 3,000/25,000 + 16,000/80,000) = 72%

Nota: rate-monotonic scheduling - si da priorit pi alta ai task con alto rate

Strumenti per un corretto benchmarking


Benchmark con impostazioni di deployment Temporizza i tasks con lesempio RT Benchmarking

Strumenti per un corretto benchmarking


Cattura ed analizza utilizzando il Real-Time Execution Trace Toolkit Monitora le risorse attraverso NI Distributed System Manager
CPU Memoria Avvisi Stato dei VI Valori delle variabili condivise

Ulteriori considerazioni
Installa il set minimo di software
Per aumentare la RAM disponibile Minimizzare interrupt relative ai driver

Crea ed esegui il codice come unapplicazione standalone


Compilazione ottimizzata del codice Rimozione delloverhead dovuta alla IU del pannello frontale

Come strutturare l'architettura di sistemi embedded


Agenda

Architettura

Benchmarking

FPGA

Simulazione con accuratezza a livello ciclo

Flusso semplificato di sviluppo del FPGA


Progettazione

Cycle-Accurate Simulation

Simulazione

Compilazione

Tipi di simulazione

Funzionale o di comportamento Simulazione nel computer di sviluppo


Cycle-Accurate Simulazione con lutilizzo di un simulatore per FPGA commerciale

Simulazione con accuratezza a livello ciclo basata su codice VHDL


Registri DMA

Ambiente
(I/O reali

Host Interface

Codice FPGA

Simulazione con accuratezza a livello ciclo basata su codice VHDL


Simulatore di 3e parti
Registri DMA

Verifica gli ingressi e analizza le uscite

Codice FPGA

Ambiente del modello (I/O)

Simulatore supportato:
Mentor Graphics ModelSim LabVIEW 2010

Xilinx ISim NEW in LabVIEW 2011

Co-simulazione con accuratezza a livello ciclo basata su VI


Registri DMA

Environment
(I/O reali)

Interfaccia Host

Codice FPGA

Co-simulazione con accuratezza a livello ciclo basata su VI


Simulatore di 3e parti
Registri DMA

Verifica gli ingressi e analizza le uscite

Codice FPGA

Ambiente del modello (I/O)

Simulatori supportati: Mentor Graphics ModelSim SE NEW in LabVIEW 2011

Xilinx ISim NEW in LabVIEW 2011

RISORSE

Codice ed esempi
Risorse

Un solo indirizzo per trovare tutto il codice ni.com


EPD Example Programs Aggiornamenti dei driver Esempi della community

Esempi per IP FPGA


Esempi di codice testuale

ni.com/code

Percorsi formativi su LabVIEW


Formazione

Obiettivi:

Accelerare lapprendimento Ridurre i tempi di sviluppo e mantenimento delle applicazioni Applicazioni performanti, scalabili e mantenibili Validare le competenze e standardizzare i metodi di sviluppo
90

Formati di fruizione
Formazione

Good
Autoapprendiment o

Better
Corsi On-line Corsi in Aula

Best
Corsi On-Site

Manuali e CD kit Formazione secondo i propri ritmi Scadenze non imminenti

Formazione con istruttore live 4 ore al giorno Azzeramento delle spese di trasferta Utilizzo di postazioni remote attrezzate Possibilit di rivedere la registrazione del corso

Formazione con istruttore in aula 8 ore al giorno Tempi brevi dapprendimento Utilizzo di postazioni attrezzate Lontano dalle distrazioni quotidiane

Istruttore presso la vostra sede Formazione rivolta a team in azienda Piani formativi personalizzati Date e durata concordate Azzeramento delle spese di trasferta Attrezzature didattiche fornite da NI Test di valutazione

91

NI Training Credits
Ogni servizio Customer Education usufruibile/convertibile tramite NI Training Credits:
1 NI Training Credit = giornata di formazione x persona Corsi in tutti i formati (presso NI, on-line, onsite) Esami di certificazione NI Training & Certification Membership .. Validi 1 anno dalla data di nostra fatturazione Flessibilit di utilizzo dopo lacquisto Soluzione per formare singoli o team di tecnici Metodo per allocare budget in modo produttivo

I benefici:

Dove trovare le informazioni


Formazione

ni.com/training/i

Calendario corsi e sedi di formazione Agende dettagliate dei corsi Soluzioni formative convenienti

Quiz per valutare le proprie competenze


Informazioni sul programma di certificazione

Contattati:

Telefono: E-mail:

+39 02 41309217 italy.service@ni.com

93

Per i partecipanti al LabVIEW Tour 2011


OFFERTA
Gratis 2 Training Credits (equivalenti ad 1 giorno di formazione
offerta del valore di 418 +Iva)

Utilizzabili entro il 30 Marzo 2012 per uno dei seguenti corsi


LabVIEW Core 3 (3 giorni)
Advanced Architectures for LabVIEW (3 giorni) Managing Software Engineering in LabVIEW (2 giorni)

Per ricevere offerta formale selezionare sul questionario Offerta Training Credits o scrivere a italy.service@ni.com E necessaria conferma dordine con 10 giorni danticipo

Cogli lopportunit con la Manutenzione Software


1. Massimizza linvestimento software
La tecnologia dinamica ed i tempi di sviluppo sono ridotti per essere competitivi, innovativi e produttivi

2.

Incrementa la produttivit e le performance, riducendo il fermo macchina


Contatta il Supporto Tecnico per una soluzione pi rapida dei tuoi problemi 10% di sconto sulla Formazione c/o le ns. sedi

3.

Scopri i vantaggi economici


Risparmia il 67% rispetto al costo di aggiornamento della licenza Semplifica la tua pianificazione del budget
Licenza Costo Costo della dellaggiornamento Manutenzione SSP Costo del Software Contract

LabVIEW Full Developer Suite

1.388 2.474

555 990

500 891

NIDays 2012 - Forum Tecnologico sulla Progettazione Grafica di Sistemi

Roma 29 Febbraio 2012 Ergife Palace Hotel 900 mq di area espositiva con oltre 25 espositori Robotics Summit 2012 4 Sessioni tecniche parallele Best Application 2011 Special VP Guest dalla corporate di NI

96

alessandro.plantamura@ni.com

GRAZIE PER LATTENZIONE

Vous aimerez peut-être aussi