HAL Tutorial completo 4 PDF

Title HAL Tutorial completo 4
Author Vetterli Vitali
Course Cim e digital manufacturing
Institution Università degli Studi di Palermo
Pages 114
File Size 5.3 MB
File Type PDF
Total Downloads 88
Total Views 142

Summary

HAl...


Description

HAL Tutorial Completo Ver. 0.71 22 Maggio 2019 http://linuxcnc.org/docs/devel/html/hal/intro.html http://linuxcnc.org/docs/devel/html/hal/basic-hal.html http://linuxcnc.org/docs/devel/html/hal/tutorial.html http://linuxcnc.org/docs/devel/html/hal/rtcomps.html http://linuxcnc.org/docs/devel/html/gui/pyvcp.html http://linuxcnc.org/docs/html/ladder/ladder-intro.html http://linuxcnc.org/docs/devel/html/ladder/classic-ladder.html http://linuxcnc.org/docs/devel/html/ladder/ladder-examples.html

Introduzione HAL Sommario HAL sta per Hardware Abstraction Layer. Al livello più alto è semplicemente un modo per consentire a un certo numero di blocchi di costruzione di essere caricati e interconnessi per assemblare un sistema complesso. La parte hardware è perché HAL è stato originariamente progettato per semplificare la configurazione di LinuxCNC per un'ampia varietà di dispositivi hardware. Molti degli elementi costitutivi sono driver per dispositivi hardware. Tuttavia, HAL può fare molto di più che configurare semplicemente i driver hardware.

1. HAL si basa sulle tecniche di progettazione di sistemi tradizionali HAL si basa sugli stessi principi utilizzati per progettare circuiti e sistemi hardware, quindi è utile esaminare prima questi principi. Qualsiasi sistema (inclusa una macchina CNC), è costituito da componenti interconnessi. Per la macchina CNC, tali componenti potrebbero essere il controller principale, i servoamplificatori o gli azionamenti passo-passo, i motori, gli encoder, i finecorsa, i pulsanti pendenti, forse un VFD per l'azionamento del mandrino, un PLC per l'esecuzione di un cambio utensile, ecc. Bisogna selezionare, montare e collegare questi pezzi insieme per creare un sistema completo.

1.1. Selezione delle parti Il costruttore della macchina non deve preoccuparsi di come funziona ogni singola parte. Li tratta come scatole nere. Durante la fase di progettazione, decide quali parti utilizzerà: stepper o servi, quale marca di servoamplificatori, quale tipo di interruttori di limite e quanti, ecc. Le decisioni dell'integratore su quali componenti specifici utilizzare si basano su ciò che componente fa e le specifiche fornite dal produttore del dispositivo. La dimensione di un motore e il carico che deve guidare influenzeranno la scelta dell'amplificatore necessario per eseguirlo. La scelta dell'amplificatore può influire sui tipi di feedback richiesti dall'amplificatore e dai segnali di velocità o di posizione che devono essere inviati all'amplificatore da un controllo. Nel mondo HAL, l'integratore deve decidere quali componenti HAL sono necessari. Di solito ogni scheda di interfaccia richiede un driver. Ulteriori componenti potrebbero essere necessari per la generazione del software di impulsi di passo, funzionalità PLC e una vasta gamma di altri compiti.

1.2. Progettazione dell'interconnessione Il progettista di un sistema hardware non solo seleziona le parti, ma decide anche in che modo tali parti saranno interconnesse. Ogni scatola nera ha terminali, forse solo due per un semplice interruttore, o dozzine per un servoazionamento o un PLC. Hanno bisogno di essere collegati insieme. I motori si collegano ai servoamplificatori, i finecorsa si collegano al controller e così via. Mentre il costruttore di macchine lavora sulla progettazione, crea un grande schema elettrico che mostra come tutte le parti dovrebbero essere interconnesse. Quando si utilizza HAL, i componenti sono interconnessi da segnali. Il progettista deve decidere quali segnali sono necessari e come dovrebbero connettersi.

1.3. Implementazione Una volta completato lo schema elettrico, è il momento di "costruire" la macchina. I pezzi devono essere acquisiti e montati, e quindi sono interconnessi secondo lo schema elettrico. In un sistema fisico, ogni interconnessione è un pezzo di filo che deve essere tagliato e collegato ai terminali appropriati. HAL fornisce una serie di strumenti per aiutare a costruire un sistema HAL. Alcuni strumenti consentono di connettere (o disconnettere) un singolo filo. Altri strumenti consentono di salvare un elenco completo di tutte le parti, i cavi e altre informazioni sul sistema, in modo che possa essere ricostruito con un singolo comando.

1.4. analisi Pochissime macchine funzionano correttamente la prima volta. Durante il test, il costruttore può utilizzare un tester per vedere se un finecorsa funziona o per misurare la tensione continua che passa in un servomotore. Può collegare un oscilloscopio per controllare la messa a punto di un'unità o per cercare il rumore elettrico. Potrebbe trovare un problema che richiede di cambiare lo schema elettrico; forse una parte deve essere collegata in modo diverso o sostituita con qualcosa di completamente diverso. HAL fornisce gli equivalenti software di un voltmetro, oscilloscopio, generatore di segnale e altri strumenti necessari per testare e sintonizzare un sistema. Gli stessi comandi utilizzati per costruire il sistema possono essere utilizzati per apportare modifiche in base alle esigenze.

1.5. Sommario Questo documento è rivolto a persone che già sanno come fare questo tipo di integrazione del sistema hardware, ma che non sanno come connettere l'hardware a LinuxCNC. Il design hardware tradizionale come descritto sopra finisce sul bordo del controllo principale. Fuori dal controllo ci sono un sacco di scatole relativamente semplici, collegate insieme per fare tutto il necessario. Dentro, il controllo è un grande mistero - un'enorme scatola nera che speriamo funzioni… HAL estende questo tradizionale metodo di progettazione hardware all'interno della grande scatola nera. Rende i driver di dispositivo e persino alcune parti interne del controller in scatole nere più piccole che possono essere interconnesse e persino sostituite proprio come l'hardware esterno. Consente allo schema di cablaggio del sistema di mostrare parte del controller interno, anziché solo una grande scatola nera. E, cosa più importante, consente all'Integratore di testare e modificare il controller usando gli stessi metodi che userebbe sul resto dell'hardware. Termini come motori, amplificatori ed encoder sono familiari alla maggior parte degli integratori di macchine. Quando parliamo di usare un cavo schermato a otto conduttori extra flessibile per collegare un encoder alla scheda di ingresso del servo nel computer, il lettore capisce immediatamente di cosa si tratta e viene indirizzato alla domanda, che tipo di connettori avrò bisogno per collegare ciascuna estremità. Lo stesso tipo di pensiero è essenziale per l'HAL, ma la sequenza di specifici pensieri potrebbe richiedere un po' di tempo per andare a regime. L'uso delle parole HAL può sembrare un po' strano all'inizio, ma il concetto di lavorare da una connessione all'altra è lo stesso. Questa idea di estendere lo schema elettrico all'interno del controller è ciò che HAL è tutto. Se hai dimestichezza con l'idea di interconnettere le scatole nere hardware, probabilmente non avrai problemi a usare l'HAL per interconnettere le scatole nere del software.

2. Concetti HAL Questa sezione è un glossario che definisce i termini chiave HAL ma è leggermente diversa da un glossario tradizionale perché questi termini non sono disposti in ordine alfabetico. Sono organizzati dalla loro relazione o flusso nel mondo di HAL. Componente Quando abbiamo parlato della progettazione hardware, abbiamo fatto riferimento ai singoli pezzi come parti , blocchi predefiniti , scatole nere , ecc. L'equivalente HAL è un componente o componente HAL. (Questo documento usa il componente HAL quando è probabile che ci sia confusione con altri tipi di componenti, ma normalmente usa solo componenti ). Un componente HAL è un pezzo di software con input, output e comportamento ben definiti, che possono essere installati e interconnessi secondo necessità. Parametro Molti componenti hardware hanno regolazioni che non sono collegate ad altri componenti ma devono comunque essere accessibili. Ad esempio, i servoamplificatori hanno spesso potenziometri per consentire regolazioni di taratura e punti di prova in cui è possibile collegare un misuratore o un mirino per visualizzare i risultati di sintonizzazione. I componenti HAL possono anche avere tali elementi, che sono indicati come parametri. Esistono due tipi di parametri: i parametri di input sono equivalenti ai potenziometri: sono valori che possono essere regolati dall'utente e rimangono fissi una volta impostati. I parametri di uscita non possono essere regolati dall'utente - sono equivalenti ai punti di test che consentono il monitoraggio dei segnali interni. Pin I componenti hardware hanno terminali che vengono utilizzati per interconnetterli. L'equivalente HAL è un pin o un pin HAL. (Il pin HAL viene utilizzato quando necessario per evitare confusione.) Tutti i pin HAL hanno un nome e i nomi dei pin vengono utilizzati quando li si interconnette. I pin HAL sono entità software che esistono solo all'interno del computer. Physical Pin Molti dispositivi I / O hanno pin o terminali fisici reali che si collegano all'hardware esterno, ad esempio i pin di un connettore di una porta parallela. Per evitare confusione, questi sono indicati come pin fisici. Queste sono le cose che sporgono nel mondo reale. Signal In una macchina fisica, i terminali di componenti hardware reali sono interconnessi da fili. L'equivalente HAL di un filo è un signal (segnale) o un segnale HAL. I segnali HAL collegano i pin HAL come richiesto dal costruttore della macchina. I segnali HAL possono essere scollegati e ricollegati a piacere (anche mentre la macchina è in funzione). Type Quando si utilizza l'hardware reale, non si collegherà un'uscita relè a 24 volt all'ingresso analogico +/- 10 V di un servoamplificatore. I pin HAL hanno le stesse restrizioni, che si basano sul loro tipo. Sia i pin che i segnali hanno tipi e i segnali possono essere collegati solo a pin dello stesso tipo. Attualmente ci sono 4 tipi, come segue:

   

bit - un singolo valore VERO / FALSO o ON / OFF float - un valore in virgola mobile a 64 bit, con circa 53 bit di risoluzione e oltre 1000 bit di intervallo dinamico. u32 - un intero senza segno a 32 bit, i valori legali sono compresi tra 0 e 4.294.967.295 s32 - un intero con segno a 32 bit, valori legali da -2,147,483,647 a +2,147,483,647

Function I componenti hardware reali tendono ad agire immediatamente sui loro input. Ad esempio, se cambia la tensione di ingresso a un servoamplificatore, anche l'uscita cambia automaticamente. Tuttavia i componenti software non possono agire automaticamente. Ogni componente ha un codice specifico che deve essere eseguito per svolgere il compito di quel componente. In alcuni casi, quel codice viene semplicemente eseguito come parte del componente. Tuttavia, nella maggior parte dei casi, specialmente nei componenti in tempo reale, il codice deve essere eseguito in una sequenza specifica ed a intervalli specifici. Ad esempio, gli input dovrebbero essere letti prima che i calcoli vengano eseguiti sui dati di input e le uscite non dovrebbero essere scritte fino a quando non vengono eseguiti i calcoli. In questi casi, il codice è reso disponibile al sistema sotto forma di una o più function (funzioni). Ogni funzione è un blocco di codice che esegue un'azione specifica. L'integratore di sistema può utilizzare i thread per pianificare una serie di funzioni da eseguire in un ordine particolare ed a intervalli di tempo specifici. Thread Un thread è un elenco di funzioni eseguite a intervalli specifici come parte di un'attività in tempo reale. Quando un thread viene creato per la prima volta, ha un intervallo di tempo specifico (periodo), ma nessuna funzione. Le funzioni possono essere aggiunte al thread e verranno eseguite nell'ordine ogni volta che il thread viene eseguito. Ad esempio, supponiamo di avere un componente parport denominato hal_parport. Quel componente definisce uno o più pin HAL per ogni pin fisico. I pin sono descritti nella sezione doc di quel componente: i loro nomi, come ogni pin, si riferiscono al pin fisico, sono invertiti, puoi cambiare polarità, ecc. Ma questo da solo non prende i dati dai pin HAL ai pin fisici . Ci vuole del codice per farlo, ed è qui che le funzioni entrano in scena. Il componente parport ha bisogno di almeno due funzioni: una per leggere i pin di input fisici e aggiornare i pin HAL, l'altra per prendere i dati dai pin HAL e scriverli sui pin di output fisici. Entrambe queste funzioni fanno parte del driver parport.

3. Componenti HAL Ogni componente HAL è un pezzo di software con input, output e comportamenti ben definiti, che possono essere installati e interconnessi secondo necessità. Questa sezione elenca alcuni dei componenti disponibili e una breve descrizione di ciò che ciascuno fa. I dettagli completi per ciascun componente sono disponibili più avanti in questo documento.

3.1. Programmi esterni con link HAL motion Un modulo in tempo reale che accetta comandi NML di movimento e interagisce con HAL

[Neutral Message Language fornisce un meccanismo per gestire più tipi di messaggi nello stesso buffer, oltre a semplificare l'interfaccia per la codifica e la decodifica dei buffer in formato neutro e il meccanismo di configurazione.] iocontrol Un modulo dello spazio utente che accetta comandi I / O NML e interagisce con HAL classicladder Un PLC che utilizza HAL per tutti gli I / O halui Un programma spaziale utente che interagisce con HAL e invia comandi NML, è destinato a funzionare come un'interfaccia utente completa usando manopole e interruttori esterni

3.2. Componenti interni stepgen Generatore di impulsi di passo del software con anello di posizione. Vedi la sezione [sec: stepgen] encoder Contatore di encoder basato su software. Vedi la sezione [encoder] pid Anelli di controllo proporzionale / integrale / derivativo. Vedi la sezione [pid] siggen Un generatore di seno / coseno / triangolo / onda quadra per il test. Vedi la sezione [siggen] supply Una semplice fonte per i test.

3.3. Driver hardware hal_ax5214h Un driver per la scheda I / O digitale AX5241H di Axiom Measurement & Control hal_gm Scheda GM6-PCI General Mechatronics hal_m5i20 Scheda Mesa Electronics 5i20 hal_motenc Scheda Vital MOTENC-100 hal_parport Porta parallela per PC. hal_ppmc Famiglia di controllori Pico Systems (PPMC, USC e UPC)

hal_stg Scheda Servo To Go (versione 1 e 2) hal_vti Controllore PCI ENCDAC-4 Vigilant Technologies

3.4. Strumenti e utilità halcmd Strumento a riga di comando per configurazione e ottimizzazione. Vedi la sezione [halcmd] halgui Strumento GUI per configurazione e tuning (non ancora implementato). halmeter Un pratico multimetro per segnali HAL. Vedi la sezione [halmeter] . halscope Oscilloscopio di memorizzazione digitale con funzionalità complete per segnali HAL. Vedi la sezione Halscope . Ciascuno di questi elementi costitutivi è descritto in dettaglio nei paragrafi successivi.

4. Problemi di temporizzazione in HAL A differenza dei modelli fisici di cablaggio tra scatole nere su cui abbiamo detto che l'HAL è basato, il semplice collegamento di due pin con un hal-signal è molto inferiore all'azione del caso fisico. La logica del relè reale è costituita da relè collegati tra loro e quando un contatto si apre o si chiude, la corrente scorre (o si arresta) immediatamente. Altre bobine possono cambiare stato, ecc. E succede tutto. Ma nella logica ladder in stile PLC, non funziona in questo modo. Solitamente in un singolo passaggio attraverso la scala, ciascun ramo viene valutato nell'ordine in cui appare e solo una volta per passaggio. Un esempio perfetto è un ladder, con un contatto NC in serie con una bobina. Il contatto e la bobina appartengono allo stesso relè. Se questo fosse un relè convenzionale, non appena la bobina viene eccitata, i contatti iniziano ad aprirsi e disenergizzarlo. Ciò significa che i contatti si chiudono di nuovo, ecc. ecc. Il relè diventa praticamente un cicalino. Con un PLC, se la bobina è OFF e il contatto è chiuso quando il PLC inizia a valutare il ramo, quindi quando finisce quel passaggio, la bobina è ON. Il fatto che accendendo la bobina si apra l'alimentazione del contatto viene ignorata fino alla prossima passata. Al passaggio successivo, il PLC vede che il contatto è aperto e diseccita la bobina. Quindi il relè passa ancora rapidamente tra acceso e spento, ma a una velocità determinata dalla frequenza con cui il PLC valuta il ramo. In HAL, la funzione è il codice che valuta i rami. Infatti, la versione realtime di HAL-aware di ClassicLadder esporta una funzione per fare esattamente questo. Nel frattempo, un thread è la cosa che esegue la funzione a intervalli di tempo specifici. Proprio come è possibile scegliere di avere un PLC che valuta tutti i suoi rami ogni 10 ms, o ogni secondo, è possibile definire thread HAL con periodi diversi.

Ciò che distingue un thread da un altro non è ciò che fa il thread - che è determinato da quali funzioni sono connesse ad esso. La vera distinzione è semplicemente la frequenza di esecuzione di un thread. In LinuxCNC potresti avere un thread da 50 us e un thread da 1 ms. Questi sarebbero creati in base a BASE_PERIOD e SERVO_PERIOD, i tempi effettivi dipendono dai valori nel tuo file ini. Il prossimo passo è decidere cosa deve fare ciascun thread. Alcune di queste decisioni sono le stesse in (quasi) qualsiasi sistema LinuxCNC: ad esempio, il comando di movimentocomando viene sempre aggiunto al servo-thread. Altre connessioni sarebbero fatte dall'integratore. Questi potrebbero includere l'aggancio delle funzioni di lettura dell'encoder del driver STG e di scrittura DAC al servo thread, o l'hooking della funzione stepgen al thread di base, insieme alle funzioni di parport per scrivere gli step sulla porta.

Riferimento base di HAL Sommario 1. Comandi HAL

1.1. loadrt 1.2. addf 1.3. loadusr 1.4. net 1.5. setp 1.6. sets 1.7. unlinkp 1.8. Comandi obsoleti

2. Dati HAL 2.1. Bit 2.2. Float 2.3. s32 2.4. u32

3. File HAL 4. Componenti HAL 5. Componenti logici 5.1. and2 5.2. not 5.3. or2 5.4. xor2 5.5. Esempi di logica

6. Componenti di conversione 6.1. weighted_sum

Questo documento fornisce un riferimento sulle basi di HAL.

1. Comandi HAL Informazioni più dettagliate possono essere trovate nella pagina man di halcmd: run man halcmd in una finestra di terminale. Per visualizzare la configurazione HAL e controllare lo stato dei pin e dei parametri, utilizzare la finestra Configurazione HAL nel menu Macchina in AXIS. Per vedere lo stato di un pin aprire la scheda Watch e fare clic su ciascun pin che si desidera guardare e verrà aggiunto alla finestra di controllo.

Figura 1. Finestra di configurazione HAL

1.1. loadrt Il comando loadrt carica un componente HAL in realtime. Le funzioni dei componenti in realtime devono essere aggiunte a un thread per essere aggiornati alla velocità del thread. Non è possibile caricare un componente dello spazio utente nello spazio tempo reale. La sintassi e un esempio: loadrt loadrt mux4 count=1

1.2. addf Aggiunge funzione functname al thread nomefile. L'impostazione predefinita è aggiungere la funzione nell'ordine in cui si trova nel file. Se la posizione è specificata, aggiunge la funzione a quel punto nel thread. Posizione negativa indica la posizione rispetto alla fine della thread. Ad esempio 1 è l'inizio del thread, -1 è la fine del thread, -3 è terzo a partire dalla fine. E' importante caricar alcune funzioni in un certo ordine, come le funzioni di lettura e scrittura di parport. Il nome della funzione è solitamente il nome del componente più un numero. Nell'esempio seguente viene caricato il componente or2 e la funzione show mostra il nome della funzione or2 $ halrun halcmd: loadrt or2 halcmd: show function Exported Functions: Owner CodeAddr Arg 00004 f8bc5000 f8f950c8

FP NO

Users 0

Name or2.0

È necessario aggiungere una funzione da un componente HAL in tempo reale a un thread per ottenere la funzione da aggiornare alla velocità del thread. Di solito ci sono due thread come mostrato in questo esempio. Alcuni compon...


Similar Free PDFs