Ricerca e Sviluppo
Copyright Delta Macchine Cnc Srl
Sviluppo driver di sistema
Tutti i software Cnc proposti nel nostro sito utilizzano una tecnologia molto avanzata per generare gli impulsi di step e direzione per ogni
singolo asse. Il software di interfaccia utente viene realizzato con Visual C++ con l'utilizzo di MFC (Microsoft Foundation Classes),
mentre il generatore di impulsi e' realizzato con un driver che viene eseguito @Ring0 (Livello di massima priorita'). Tale architettura
permette prestazioni eccezionali, garantendo accelerazioni e velocità degli assi con grande accuratezza. L'interfaccia utente è
sviluppata a livello User Mode, mentre il driver e' sviluppato in Kernel Mode e quindi in Real Time. Molti software Cnc sono sviluppati
utilizzando un linguaggio a livello User Mode, e tale tecnologia non assicura temporizzazioni accurate poichè i messaggi devono fluire
attraverso i vari layers del Sistema operativo, fino ad arrivare al driver di default del sistema operativo stesso.Si possono verificare i
limiti di tale tecnologia muovendo il mouse mentre il software Cnc sta eseguendo una lavorazione: si udiranno variazioni sui motori e se
essi non hanno sufficiente coppia si avra' l'arresto dell'asse. Tale problematica puo' essere avvertita anche durante l'accesso al disco
rigido.Lo sviluppo di software Cnc a livello User Mode crea una rete con un ritardo non controllabile, e tale variabile di ritardo dipende
dal Sistema operativo in uso e dalle applicazioni che esso sta gestendo. La scrittura di drivers elimina tale ritardo, avendo cosi' la
possibilita' di gestire direttamente la risorsa hardware che vogliamo controllare, senza "ingerenze" del S.o. La comunicazione tra il driver
ed il software avviene tramite funzioni apposite definite in fase di progettazione della nostra architettura. Quindi il driver dovra' allocare
memoria necessaria per posizionare i valori gestiti dal driver, che saranno disponibili al software attraverso la chiamata a funzioni di tipo
IOCTL.
La scrittura di un driver richiede la conoscenza approfondita del dispositivo hardware che si sta controllando, poiche' il driver si occupa
delle temporizzazioni sulle varie linee del dispositivo, oppure la gestione dei vari registri del dispositivo. Inoltre, la scrittura del driver
preclude la conoscenza approfondita del S.o. in uso, anche se la tendenza attuale e' quella di utilizzare un appropriato sistema di
sviluppo che permette la compilazione del driver in funzione dell'ambiente di destinazione. Personalmente ho sviluppato drivers in
ambiente Windows, compilando quindi il driver su varie piattaforme Win3.11, Win98 (driver .VXD) e Windows XP/2000/2003 (driver
.sys).
La Microsoft mette a disposizione un kit per lo sviluppo di driver, gratuitamente e puo' essere richiesto direttamente dal sito
www.microsoft.com DDK (Driver Development Kit).
Il Debag del driver risulta una fase delicata e critica poiche' se il driver presenta errori si possono arrecare danni all'intero s.o. Per il
debug si consiglia l'utilizzo di 2 Pc collegati tramite porta seriale, dove l'Host tiene il sistema di sviluppo ed il software di debug, mentre il
Target viene utilizzato per testare il driver. Tramite un buon software di debug si puo' controllare il Target, bloccare l'esecuzione del driver
e leggere lo stato dei registri del micro e seguire le istruzioni che compongono le procedure del driver.
Una volta testato il driver deve essere preparato un file per poter caricare il driver sul sistema operativo in uso, pronto per la sua
distribuzione (.inf).
Poiche' l'architettura del microprocessore e' notevolmente cambiata a causa di aumento di prestazioni e dispositivi aggiuntivi integrati
nella Cpu, si consiglia di consultare il sito Intel e leggere i 4 volumi concernenti l'architettura del micro e la sua programmazione,
ponendo particolare attenzione al dispositivo Apic locale e la gestione di Interrupt senza il tradizionale 8259. Anche il timer 8253/54 e'
stato soppiantato dal velocissimo timer integrato nell'Apic.(The IA-32 Intel architecture software developer's Manual -Letteratura Intel).
Quindi lo sviluppo di un driver permette di gestire direttamente il dispositivo hardware, gestire locazioni di memoria, registri e Interrupts
dei vari dispositivi quali porte seriali(Irq4), porte parallele(Irq 7), Timer di sistema (Irq0) ecc.@ Ring 0, cosa non permessa @ Ring3
tipica di software .exe in quanto a tale livello non sono permesse alcune operazioni per problemi di stabilita' del s.o. La coscienza di
poter utilizzare qualsiasi istruzione @ Ring 0 prevede una ottima conoscenza dell'hardware e dell'architettura del micro per cui il driver e'
destinato. Per valutare la qualita' dei drivers realizzati, e' possibile scaricare i software : DeltaCnc Demo per la gestione dei motori a
passo e DeltaEncoder Demo per leggere e convertire gli impulsi provenienti da un encoder. Una volta istallato il software demo, i files
Delta1.pdf e Delta2.pdf forniranno tutte le specifiche per l'interfacciamento.(Tali software saranno disponibili sul sito prossimamente).
Il driver puo' essere adattato per controllare qualunque sistema di posizionamento, utilizzando le funzioni di uso generale. Su richiesta e'
possibile implementare funzioni specifiche per il controllo, movimentazione e posizionamento di sistemi. Tramite il driver e' possibile
generare impulsi di spostamento, acquisire lo stato di sensori, controllare encoders, il tutto in Real Time. In definitiva, il driver sviluppato,
si presta ottimamente nella gestione di linee di automazione e controllo, movimentazione macchine utensili, sistemi automatici di
verniciatura, sistemi automatici di dosaggio, sistemi di manipolazione ecc.
Anche il software di interfaccia a livello UserMode (.exe) e' personalizzabile secondo l'applicazione che si vuole realizzare, avendo gia'
in libreria tutte le funzioni per la comunicazione con il driver. Tale approccio riduce al minimo i tempi di sviluppo di applicazioni custom,
evitando quindi tempi per la scrittura del driver, test ed integrazione con l'eseguibile. L'intero prodotto (driver+software) e' dedicato alle
risorse R&D delle aziende.
Dalla progettazione alla produzione secondo specifiche del cliente
Delta Macchine Cnc srl è in grado di supportare il cliente dalla fase di progettazione fino
alla fase di produzione del progetto finito.
Tutte le nostre librerie software/firmware sono appositamente scritte secondo
un'architettura riutilizzabile in modo da poter essere esportate ed incluse nel progetto del
committente, riducendo notevolmente il tempo di sviluppo dell'intera applicazione custom.
Una volta realizzato il progetto finale, mettiamo a disposizione del cliente i macchinari
necessari per realizzare la produzione: centri di lavoro, pantografi, taglio laser C02, taglio
laser fibra, macchinari per il montaggio automatico di componenti elettronici e sistemi di
test.
L'alto grado di automazione presente all'interno della nostra azienda assicura qualità e
velocità nella produzione, consentendo di abbattere i costi di produzione: questo è il
segreto del nostro grande successo.
Delta Macchine Cnc srl e' proprietaria dei sorgenti dei software di controllo macchine, firmware implementati su microcontrollori e di tutti i
progetti meccanici. L'esperienza nello sviluppo hardware-software di controllo assi ci permette di conoscere in dettaglio tutte le
problematiche relative al posizionamento e ci conferisce notevoli referenze che ci distinguono da coloro che si limitano ad assemblare
risorse di altri produttori, poiche' non titolari dei files sorgenti.
Hardware sempre aggiornato
Il nostro continuo sforzo nel seguire il continuo sviluppo della tecnologia ci permette di avere
prodotti sempre piu’ prestanti ed efficienti.
La migrazione dei nostri firmware verso nuove piattaforme ci permette di essere sempre al
passo con i tempi, proponendo sistemi molto evoluti.
I nostri software ed hardware sono inoltre interfacciabili con programmi molto diffusi in ambito
scientifico, quali LabView(™) e MathLab(™), permettendo di gestire traiettorie molto
complesse ed il campionamento di dati utili per un’interpretazione maggiormente dettagliata
dell’applicazione.
I nostri microprocessori offrono prestazioni eccellenti, in grado di svolgere molte operazioni in
Real-Time, senza mai ‘perdere’ un evento.
Le temporizzazioni dei segnali risultano molto accurate grazie all’utilizzo di Timer ad altissima risoluzione, caratteristica fondamentale
per avere movimenti fluidi, silenziosi ed affidabili. Abbiamo adeguato anche la tecnologia costruttiva dell’hardware, sempre piu’ potente e
di dimensioni ridotte, adeguandoci ai nuovi packages dei produttori di microprocessori.
Un esempio di tale tecnologia e’ implementata sul nostro modulo MicroCC, sviluppato intorno ad un processore a 600Mhz di tipologia
Arm(™), con dimensioni totali del modulo di appena 30x30mm
Modulo MicroCC con cpu Arm 600Mhz. Dim.30x30mm
Test di funzionamento e stress
Appositi sistemi di test permettono di valutare lo stress subito dai componenti meccanici, dopo moltissime movimentazioni.
Questa tecnica ci permette un continuo miglioramento dei sistemi implementati sulle nostre macchine, incrementando la durata dell’intero
sistema.
I test effettuati inviano costantemente dati verso un database, in base al quale vengono valutati gli affaticamenti degli ingranaggi, l’usura
di sistemi a cinghia, il calore sviluppato dai motori. In base ai risultati, e’ possibile intraprendere soluzioni sempre piu’ efficienti. Inoltre
vengono utilizzate tecniche di allineamento laser che permettono di ottenere risultati notevoli, specialmente nel risolvere problemi di
planarita’ su macchine con area di lavoro molto ampia.
Protocollo di comunicazione MicroCC
Le figure mostrano il protocollo di comunicazione USB implementato sulla nostra scheda Usb MicroCC
Comunicazione tipo Bulk
Velocità : HS (Hight Speed a 480Mb/s
Acquisizione della fase di setup tramite analizzatore hardware