SAVE 2007 - Veronafiere 23-25 ottobre 2007 · E possibile definire le dimensioni del buffer ... Due...

57
SAVE 2007 - Veronafiere 23-25 ottobre 2007

Transcript of SAVE 2007 - Veronafiere 23-25 ottobre 2007 · E possibile definire le dimensioni del buffer ... Due...

SAVE 2007 - Veronafiere 23-25 ottobre 2007

AGENDA AGENDA

Introduzione all architettura PACIntroduzione all architettura PACProgrammazione Multithread con OS Real-TimeStrumenti di diagnostica e debugging Execution trace toolkit e Strumenti di diagnostica e debugging Execution trace toolkit e Real-Time System ManagerParallelismo hardware grazie alla tecnologia FPGAParallelismo hardware grazie alla tecnologia FPGAMetodi di comunicazione tra chip FPGA e CPU Real-TimeConclusioni e domandeConclusioni e domande

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Introduzione all architettura PAC

SAVE 2007 - Veronafiere 23-25 ottobre 2007

PAC (Programmable Automation Controller)NI CompactRIONI CompactRIO

Controller Real-Time Chassis riconfigurabileController Real-Time

I/O I/O

I/O

I/OI/O

I/O

Real-Tim

e

Contro

ller

I/O

I/OI/O

I/O

Connectivity ADCSignal

Moduli di I/O

Connectivity ADCSignal

Conditioning

SAVE 2007 - Veronafiere 23-25 ottobre 2007

NI CompactRIO Sistema Riconfigurabile EmbeddedEmbedded

Circuito FPGA riconfigurabileAffidabilità hardware custom,

clock programmabile,

Robustezza estremaDa -40 a 70 °C range di temperatura50 g di certificazione industriale sullo

shock 179.6 mm clock programmabile,triggering, sincronizzazione

shock

OS Real-Time VxWorks

179.6 mm

OS Real-Time VxWorks400 MHz PowerPC

CPU embedded per il controllo, l analisi, 88.1 mml analisi,

e il logging dei dati88.1 mm

Dimensioni ridotte, Bassi consumi179.6 * 88.1 mm

Da 9 a 35 VDC power1, 6 W tipica

I/O industriale ISOLATOCondizionamento del segnale da ±80 mV a ±250 V

Tutto integrato nel modulo Da 9 a 35 VDC power1, 6 W tipicaTutto integrato nel modulo

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Architettura CompactRIOLabVIEW Real-Time affidabilità softwareArchitettura CompactRIOLabVIEW Real-Time affidabilità software

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Programmazione Multithread con OS Programmazione Multithread con OS Real-TimeReal-Time

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Cosa significa Real-time?Cosa significa Real-time?

La risposta Real-time è la capacità, in modo La risposta Real-time è la capacità, in modo affidabile e senza errori, di rispondere ad un

evento o eseguire unoperazione all interno di evento o eseguire unoperazione all interno di un tempo ben definito

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Alcuni termini Real-TimeAlcuni termini Real-Time

Determinismo Una caratteristica del sistema che descrive come in modo affidabile è in grado di rispondere ad un evento o eseguire unoperazione all interno di un tempo ben definitoeseguire unoperazione all interno di un tempo ben definitoLoop Cycle Time Il tempo necessario per eseguire un cicloJitter E l oscillazione rispetto al tempo ciclo desideratoJitter E l oscillazione rispetto al tempo ciclo desideratoEmbedded Definisce un PC all interno di un grosso sistema. Tipicamente un sistema embedded è privo di interfaccia utente, Tipicamente un sistema embedded è privo di interfaccia utente, tastiera e mouse.

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Jitter Range del JitterJitterTempo di ciclo desiderato

Jittermassimo

1

massimoIte

razi

oni

2

3Itera

zion

i

3

44

5Tempo ciclo (secondi)Tempo ciclo (secondi)

Jitter = Variation in Loop Cycle TimeT = Loop Cycle Time. 1/T = Loop RateT = Loop Cycle Time. 1/T = Loop Rate

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Alcuni esempi di applicazioni Alcuni esempi di applicazioni Real-Time

Performance deterministiche

Massima affidabilità

Sistema autonomo

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Strumenti di sviluppo Real-TimeStrumenti di sviluppo Real-Time

Compilatore

Debugger

LinkerLabVIEW Real-Time

Softw

are

Strumenti di analisi

Debugger

Softw

are

Strumenti di analisi

RTOS

Execution Trace Tool

Microprocessore

RTOSLabVIEW Real-Time

Target

Hard

war

e

I/O DeviceHard

war

e

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Architettura Real-TimeArchitettura Real-Time

Programma sul target RTPC Windows (HMI)

Comunicazione Inter-ThreadCommunication

Normal Priority Loop

Time-Critical Loop

Interfaccia utente Loop Looputente

Salvataggio datiSalvataggio dati

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Host ProgramHost Program

Gira sul PC HOST (tipicamente Windows), dove necessario come Windows), dove necessario come interfaccia utenteGestisce task non deterministici

PC Windows (HMI)

Gestisce task non deterministiciPrincipalmente comunicazione con il programma target (RT)Interfaccia programma target (RT)Data loggingAnalisi dei dati

Interfaccia utente

Analisi dei datiCondivisione dei dati con altri sistemi, bus di campo o comunicazione bus di campo o comunicazione standard

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Programma sul target RTProgramma sul target RT

I processi Higher priority hanno precedenza sui processi lower priority

I processi deterministici (Higher priority) sono time-critical tutti gli altri sono definiti in lower priority

Il Multithreading consente di definire le priorità dei vari processi

Programma sul target RT

Inter-ThreadCommunication

Normal Priority

Time-Critical Priority

LoopCritical

Loop

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Metafora del Real-Time Multithreading

PrioritàTime-Critical(solo per un VI)

Priorità normale(solo per un VI)

Priorità normale

Tasks Ambulance

Meccanico(Processore)

Centralinista(Sistema operativo) (Processore)(Sistema operativo)

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Metodo Round-RobinMetodo Round-Robin

CentralinistaCentralinista(Sistema operativo)

Meccanico

Normale

Meccanico(CPU)Normale

NormaleNormale

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Metodo Preemptive

TimeCentralinistaAmbulance

TimeCritical Centralinista

(Sistema operativo)Ambulance

Normale

Meccanico(CPU)Normale (CPU)Normale

Normale

SAVE 2007 - Veronafiere 23-25 ottobre 2007

LabVIEW Real-Time Scheduling

Time Centralinista

LabVIEW Real-Time Scheduling

AmbulanceTimeCritical

Centralinista(Sistema operativo)

Ambulance

Normale

Meccanico(CPU)Normale (CPU)Normale

Normale

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Modalità StarvationNo sleep causes starvationNo sleep causes starvation

B. Above Normal

A. Time Critical

Executing

C. Normal

B. Above NormalWaiting

TimeTimeSleep added may still starve some threads

B. Above Normal

A. Time CriticalSleepingExecutingWaiting

C. Normal

B. Above Normal

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Trasferimento dati tra i threadsTrasferimento dati tra i threads

Programma sul target RT

Inter-ThreadCommunication

Normal Priority

Time-Critical CommunicationPriority

LoopCritical

Loop

Metodi di comunicazione Inter-Thread

Good: Global VariablesGood: Global Variables

Better: Functional Global Variables

Best: Real-Time FIFO

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Real-Time FIFO VIs Best Real-Time FIFO VIs Best

Programma sul target RT

Inter-ThreadCommunication

Normal Priority

Time-Critical CommunicationPriority

LoopCritical

Loop

E possibile definire le dimensioni del bufferLe dimensioni del buffer sono importanti per non perdere datiLe dimensioni del buffer sono importanti per non perdere datiAvviso sull eventuale perdita dei datiUtilizza un trasferimento dati deterministicoUtilizza un trasferimento dati deterministico

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Strumenti di diagnostica e debugging Strumenti di diagnostica e debugging Execution trace toolkit e Real-Time

System ManagerSystem Manager

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Real-Time System Manager (RTSM)

Visualizza la memoria di sistema Visualizza la memoria di sistema e l utilizzo della CPU

Salva su file eventi fuori rangeSalva su file eventi fuori rangeLutilizzo della CPU da differenti livelli di prioritàlivelli di priorità

Visualizza lo status dei VIsRunning, Idle, StoppedRunning, Idle, Stopped

Start/stop dei VI embedded VIs senza una connessione sul front paneluna connessione sul front panel

SAVE 2007 - Veronafiere 23-25 ottobre 2007

LabVIEW Execution Trace ToolkitLabVIEW Execution Trace ToolkitLinterfaccia

dell Execution Trace VI che gira sulTarget dell Execution Trace Toolkit gira sul PC

VI che gira sulTarget

Quando l esecuzione è completata tutti I VI

e gli eventi dei Mentre il VI è in

e gli eventi dei threads vengono

inviati al trace tool sul PC

Mentre il VI è in esecuzione tutti gli

eventi sono registrati su un buffersu un buffer

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Parallelismo hardware grazie alla Parallelismo hardware grazie alla tecnologia FPGA

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Architettura CompactRIOLabVIEW FPGA affidabilità HardwareArchitettura CompactRIOLabVIEW FPGA affidabilità Hardware

SAVE 2007 - Veronafiere 23-25 ottobre 2007

FPGA Field Programmable Gate ArraysFPGA Field Programmable Gate Arrays

FPGA schema e componentiFPGA schema e componentiRHK1

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Slide 28

RHK1 added textDr. Robert H. King; 29/03/2007

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Definire la logica FPGA con LabVIEWDefinire la logica FPGA con LabVIEW

Modulo LabVIEW FPGA Non è necessario Non è necessario conoscere il linguaggio VHDLEsecuzione parallela Esecuzione parallela VERADeterministicoDeterministico

RHK3

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Slide 29

RHK3 moved textDr. Robert H. King; 29/03/2007

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Esempio FPGA semplificato

FEImplementare una logica su un FPGA: F = {(A+B)CD}

E FEECodice LabVIEW FPGA

AAB

CDD

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Cosa è possibile fare con LabVIEW FPGA?FPGA?

I/O Custom , timing e triggeringControllo affidabile ad elevata velocitàControllo affidabile ad elevata velocitàScarica la CPU dal processing Scarica la CPU dal processing Personalizzare IPProtocolli digitali specializzatiProtocolli digitali specializzati

SAVE 2007 - Veronafiere 23-25 ottobre 2007

DAQ IntelligenteDAQ Intelligente

CountersClocks

Simultaneous Analog I/O

CountersCustom CountersPWM

Clocks

Custom Timing and SynchronizationBuilt-in MathFunctionsSimultaneous Analog I/OMultiple Scan RatesCustom Analog Triggering

Custom CountersCustom Timing and SynchronizationFunctions

SAVE 2007 - Veronafiere 23-25 ottobre 2007

La decisione è presa dal softwareLa decisione è presa dal softwareSistema tradizionale

Possibile Crash

Sistema operativo

Application Softw

areIngresso

Hardware

Sistema operativo

Driver API

Application Software

Calcolo

~25 sUUT

Hardware

Sistema operativo

Driver API

Application Software

Calcolo

~25 sTempo di risposta

UUTSistem

a operativo

Application Software

Uscita

SAVE 2007 - Veronafiere 23-25 ottobre 2007

La decisione è presa dall hardwareLa decisione è presa dall hardwareSistema basato su FPGA

Altissima affidabilità

Sistema operativo

Application Software

Ingresso

Hardware

Sistema operativo

Driver API

Application Software

Calcolo

25 ns*UUT

Hardware

Sistema operativo

Driver API

Application Software

Calcolo

25 ns*Tempo di risposta

UUTSistem

a operativo

Application Software

Uscita

* Risposta veloce con 80 e 120 MHz di clock* Risposta veloce con 80 e 120 MHz di clock

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Controllo analogico oltre i 50 kHzControllo analogico oltre i 50 kHz

Controllo in Software (RT) Controllo in FPGASingle PID circa 70 kHz (dual core)

Single PID oltre 300 kHz

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Controllo analogico oltre i 40 kHzControllo analogico oltre i 40 kHz

Controllo in Software Controllo in FPGADue PID Loop circa 30 kHz (RT) Due PID Loop oltre 300 kHz

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Controllo analogico oltre i 40 kHzControllo analogico oltre i 40 kHz

Controllo in Software Controllo in FPGAQuattro PID Loop circa 25 kHz Quattro PID Loop oltre 300 kHz

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Scarica la CPU dal processingScarica la CPU dal processing

Simulazione di sensoriSimulazione LVDT

Simulazione di sensoriAlbero a camme e ruota fonicaLVDTsLVDTs

Codifica e decodifica di sensoriTachimetricaTachimetricaPWMEncoder in quadratura

Encoder in quadratura

Encoder in quadratura

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Personalizzare IPPersonalizzare IP

Connectività verso il VHDL e strumenti terze parti Connectività verso il VHDL e strumenti terze parti per l Intellectual Property Connettività rapida verso gli I/OPanello interattivo per il cambiamento di parametriModularità del codice

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Alcune performance della logica FPGAAlcune performance della logica FPGA

PID analogici Multi-loop embedded oltre i 300 kHzPID analogici Multi-loop embedded oltre i 300 kHzLoop di controllo digitali fino a 1 MS/s. Esecuzione di un singolo ciclo fino a 40 MHz (25 ns). Grazie alla capacità di processing parallelo, laggiunta Grazie alla capacità di processing parallelo, laggiunta di computazioni non necessariamente riducono la velocità dell applicazionevelocità dell applicazione

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Metodi di comunicazione tra chip FPGA e Metodi di comunicazione tra chip FPGA e CPU Real-TimeCPU Real-Time

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Comunicazione tra l FPGA e la parte Real-Timeparte Real-Time

Real-Time Host VIReal-Time Host VI

FPGA VI

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Sincronizzazione e BufferingSincronizzazione e Buffering

I metodiHandshakingHandshakingInterruptsDirect Memory Access

RHK7

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Slide 43

RHK7 modified textDr. Robert H. King; 03/04/2007

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Metodo HandshakingMetodo Handshaking

Handshaking Verifica che il device sia pronto a trasmettere o ricevere

Sincronizzazione Hand-shakedSincronizzazione Hand-shakedL applicazione host utilizza controlli ed indicatori booleani per coordinare le operazioni con il target (flag per il dato disponibile coordinare le operazioni con il target (flag per il dato disponibile e il dato letto)Richiede polling

SAVE 2007 - Veronafiere 23-25 ottobre 2007

HandshakingHandshaking

1. L FPGA acquisisce I 1. L FPGA acquisisce I dati e scrive TRUE al controllo Data Available.Available.

2. Quando Data Available è TRUE l host legge i dati.l host legge i dati.

3. Dopo che i dati sono stati letti, l host scrive vero al Data scrive vero al Data Read.

4. Il loop FPGA è completo quando completo quando Data Read è vero. Note: Utilizzare vettori di piccole

dimensioni

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Metodo InterruptsMetodo Interrupts

Comunica attraverso una linea fisica hardwareIl trigger FPGA manda un segnale all host.Elimina il polling.Elimina il polling.Consente all host di eseguire altre operazioni mentre attende il segnale di interruptUtilizzare gli Interrupts quando l FPGA scambia con l host pochi dati e l host fa altre operazioni di processing

SAVE 2007 - Veronafiere 23-25 ottobre 2007

InterruptsInterruptsImplementazione InterruptImplementazione Interrupt

RHK9SAVE 2007 - Veronafiere 23-25 ottobre 2007

Slide 47

RHK9 Replaced graphic to match manualDr. Robert H. King; 27/02/2007

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Metodo Direct Memory AccessMetodo Direct Memory AccessTrasferisce i dati dall FPGA direttamente alla memoria della Trasferisce i dati dall FPGA direttamente alla memoria della CPU RT attraverso il bus masteringGestisce grosse mole di datiMigliori performance rispetto alla local FIFOMigliori performance rispetto alla local FIFOL host processa i dati mentre l FPGA trasferisce i dati alla memoria hostmemoria hostConsiste in due parti la parte FIFO e la parte hostL FPGA scrive i dati un elemento alla volta verso la memoria FPGAFPGAIl motore DMA trasferisce i dati attraverso il PCI bus verso la memoria hostmemoria host

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Direct Memory AccessDirect Memory Access

Come implementare un Come implementare un DMA FIFO:

L utente definisce il numero di elementinumero di elementiIl motore DMA prova a trasferire i dati trasferire i dati all interno del TimeoutLa DMA FIFO.Read utilizza la CPU per utilizza la CPU per verificare la presenza dei dati richiesti

RHK10

RHK11

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Slide 49

RHK10 wording modified in sub titlewording modified in textadded graphicchanged order of slidesDr. Robert H. King; 27/02/2007

RHK11 modified textDr. Robert H. King; 03/04/2007

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Processo di programmazione di FPGA in LabVIEWin LabVIEW

Convertire un VI FPGA in un codice eseguibileConvertire un VI FPGA in un codice eseguibileIl modulo FPGA compila il VIIl codice grafico viene convertito in VHDL Il codice grafico viene convertito in VHDL Il compilatore Xilinx ISE crea un circuito dal VHDLIl compilatore ottimizza l implementazioneIl compilatore ottimizza l implementazione

Il risultato finale è un bitstream file Bitstream si carica in run time

Windows OS

LabVIEW (cRIO)

Bitstream si carica in run timeBitstream e si ricarica al power-up

On-board flash memoryFPGA VI (1) Intermediate Files

(2) Bit File

CompileServerBit File Embedded

Comunica via BUS PCI con il controller

RHK14

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Slide 50

RHK14 rearranged graphic and textDr. Robert H. King; 29/03/2007

SAVE 2007 - Veronafiere 23-25 ottobre 2007

Conclusioni e domande

SAVE 2007 - Veronafiere 23-25 ottobre 2007