Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
appnote:an005 [2019/08/29 17:00] – modifica esterna 127.0.0.1 | appnote:an005 [2019/10/30 09:10] (versione attuale) – qem202 | ||
---|---|---|---|
Linea 1: | Linea 1: | ||
+ | ====== AN005 - Procedura per l' | ||
+ | ===== - INTRODUZIONE ===== | ||
+ | |||
+ | Il presente documento ha lo scopo di descrivere le modalità di utilizzo della scheda H2C40 per il comando dei motori passo passo dal punto di vista della programmazione (impostazioni dei device che li comandano) e dal punto di vista hardware (caratteristiche delle schede di pilotaggio). | ||
+ | |||
+ | |||
+ | |||
+ | ===== - COMANDO STEP/ | ||
+ | |||
+ | |||
+ | La figura seguente riporta lo schema a blocchi di un sistema di posizionamento tradizionale, | ||
+ | |||
+ | {{: | ||
+ | |||
+ | Lo strumento QEM implementa il generatore della traiettoria e il loop di posizione. | ||
+ | |||
+ | |||
+ | |||
+ | Il generatore della traiettoria (device EANPOS o CAMMING o JOINT nella famiglia QMOVE e microQMOVE) si occupa di generare il set di posizione ad ogni esecuzione (campionamento). Tale valore è la posizione che dovrebbe assumere l'asse (se fosse ideale, ed è anche detta " | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ===== - PROGRAMMAZIONE ===== | ||
+ | |||
+ | La movimentazione dei motori passo passo può essere effettuata per mezzo di tutti i sistemi che sono provvisti di device di posizionamento che hanno come uscita una tensione analogica (EANPOS, CAMMING3, JOINT) e che sia presente una scheda H2C40 che l' | ||
+ | |||
+ | Il device di posizionamento andrá utilizzato come per i casi con l' | ||
+ | |||
+ | |||
+ | |||
+ | - Nella dichiarazione del device, sul file configurazione, | ||
+ | |||
+ | - Nella dichiarazione del device, sul file configurazione, | ||
+ | |||
+ | - I device di posizionamento che pilotano motori passo passo funzionano in anello aperto per cui non è necessario eseguire il comando LOOPON (anche se si esegue, comunque, non si hanno effetti sull' | ||
+ | |||
+ | - Il parametro //pulse// deve essere impostato al numero di passi/giro del motore nel caso si utilizzi una risoluzione a passo intero. Nel caso di risoluzioni maggiori (create dagli azionamenti con micropassi) il parametro //pulse// deve essere impostato al numero di passo/giro del motore moltilplicato la risoluzione. Ad esempio, avendo un motore da 200 passi/giro ed un azionamento impostato con una risoluzione di 1/10 di passo dovremo impostare il parametro //pulse// con il valore 2000. | ||
+ | |||
+ | - Il parametro //measure// deve essere impostato con il valore | ||
+ | |||
+ | - Il parametro // | ||
+ | |||
+ | |||
+ | |||
+ | ===== - LIMITAZIONI ===== | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== - Impostazione del parametro maxvel ==== | ||
+ | |||
+ | |||
+ | Il valore di //maxvel// è anche restrittivo per la scelta della risoluzione di pilotaggio dell' | ||
+ | |||
+ | |||
+ | |||
+ | motore passo passo 200 passi/giro | ||
+ | |||
+ | azionamento con risoluzione 1/20 di passo | ||
+ | |||
+ | vite con passo 2mm | ||
+ | |||
+ | velocità massima motore 2mt/min | ||
+ | |||
+ | |||
+ | |||
+ | La velocità massima corrisponde a 1000 rpm quindi la frequenza di uscità dovrà essere (1000rpm*4000 imp/ | ||
+ | |||
+ | Si deve quindi verificare che la scheda di pilotaggio sia in grado di generare tale frequenza. In caso contrario si deve abbassare la risoluzione oppure diminuire la velocità massima; ad esempio la scheda H2C40 può raggiungere solamente 50KHz; avremo una velocità massima possibile di 750 rpm oppure abbassando la risoluzione a 1/10 di passo potremo arrivare fino a 1500rpm. | ||
+ | |||
+ | |||
+ | |||
+ | Per agevolare il calcolo del parametro //maxvel// a partire dalla massima frequenza che si desidera ottenere nell' | ||
+ | |||
+ | |||
+ | {{: | ||
+ | |||
+ | |||
+ | ==== - Velocitá ==== | ||
+ | |||
+ | Per le particolarità firmware del generatore di impulsi e della discretizzazione dell' | ||
+ | |||
+ | Per agevolare il calcolo delle velocitá che non hanno l' | ||
+ | |||
+ | {{: | ||
+ | |||
+ | N.B la subroutine funzione solo con unitvel = 1 (Um/s) | ||
+ | |||
+ | N.B nel caso di errore la funzione calco outvel = -1. Sono possibili due errori: 1)unitvel = 0 2) è stato utilizzato un tempo di campionamento che non permette di generare una frequenza di valore finito per es: 3, 6, 7, 9msec, ecc | ||
+ | |||
+ | |||
+ | ===== - SCHEDA HARDWARE ===== | ||
+ | |||
+ | La scheda L2CZ2 (release hardware 1) consente di pilotare nr. 2 azionamenti per motore passo passo. La frequenza massima dell' | ||
+ | |||
+ | I collegamenti della morsettiera sono: | ||
+ | |||
+ | |Nome|Descrizione| | ||
+ | |COM|Comune delle uscite STEP1, DIR1, STEP2, DIR2. Da collegare allo zero volt degli ingressi azionamento.| | ||
+ | |STEP1|Uscite STEP-DIREZIONE per l' | ||
+ | |DIR1|:::| | ||
+ | |STEP2|Uscite STEP-DIREZIONE per l' | ||
+ | |DIR2|:::| | ||
+ | |||
+ | ===== - APPLICATIVO DI ESEMPIO ===== | ||
+ | |||
+ | Di seguito un esempio che dichiara un device EANPOS e muove la posizione tra quota zero e 100. | ||
+ | |||
+ | ==== - Config ==== | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Project | ||
+ | ; Module Name : CONFIG | ||
+ | ; Author | ||
+ | ; Date : 26/04/2007 | ||
+ | ; Time : 16.16.56 | ||
+ | ; Description | ||
+ | ; | ||
+ | |||
+ | |||
+ | ; | ||
+ | ; Constants Definition | ||
+ | ; | ||
+ | ; ConstName | ||
+ | ; | ||
+ | CONST | ||
+ | TC_EANPOS 0005 | ||
+ | |||
+ | |||
+ | ; | ||
+ | ; GLOBAL Variables Definition | ||
+ | ; | ||
+ | ; VarName | ||
+ | ; | ||
+ | GLOBAL | ||
+ | myvel L | ||
+ | |||
+ | ; - Used in CalVel & CalMaxVel | ||
+ | invel L | ||
+ | outvel L | ||
+ | pulse L | ||
+ | meas L | ||
+ | tsample W | ||
+ | unitvel B | ||
+ | decpt B | ||
+ | outfrq L | ||
+ | frqc S | ||
+ | frqp L | ||
+ | maxfrq L | ||
+ | |||
+ | ; | ||
+ | ; TIMER Variables Definition | ||
+ | ; | ||
+ | ; TimerName | ||
+ | ; | ||
+ | TIMER | ||
+ | timer01 | ||
+ | |||
+ | |||
+ | ; | ||
+ | ; Bus Configuration | ||
+ | ; | ||
+ | ; SlotNumber | ||
+ | ; If not present write ' | ||
+ | ; | ||
+ | BUS | ||
+ | 1 992BF 20 | ||
+ | 2 . . | ||
+ | 3 L2CZ2 . | ||
+ | |||
+ | |||
+ | ; | ||
+ | ; INTDEVICE Declaration | ||
+ | ; | ||
+ | INTDEVICE | ||
+ | ep01 EANPOS TC_EANPOS X.X X.X X 3.PULSE01 | ||
+ | </ | ||
+ | |||
+ | ==== - Module 1 ==== | ||
+ | <code QCL> | ||
+ | ; | ||
+ | ; Project | ||
+ | ; Module Name : MODULE1 | ||
+ | ; Author | ||
+ | ; Date : 26/04/2007 | ||
+ | ; Time : 16.16.59 | ||
+ | ; Description | ||
+ | ; | ||
+ | |||
+ | ep01:pulse = 4000 | ||
+ | ep01: | ||
+ | ep01: | ||
+ | ep01: | ||
+ | ep01: | ||
+ | ep01: | ||
+ | ep01: | ||
+ | |||
+ | ;- Calculate maxvel for 50KHz step output | ||
+ | maxfrq = 50000 | ||
+ | pulse = ep01:pulse | ||
+ | meas = ep01: | ||
+ | tsample = TC_EANPOS | ||
+ | unitvel = ep01: | ||
+ | decpt = ep01:decpt | ||
+ | CALL CalMaxVel | ||
+ | IF (NOT(outvel EQ -1)) ; check if an error occur | ||
+ | ep01: | ||
+ | ENDIF | ||
+ | |||
+ | INIT ep01 | ||
+ | WAIT ep01: | ||
+ | |||
+ | myvel = ep01: | ||
+ | |||
+ | MAIN: | ||
+ | |||
+ | ; Calculate setvel based on myvel value | ||
+ | invel = myvel | ||
+ | pulse = ep01:pulse | ||
+ | meas = ep01: | ||
+ | tsample = TC_EANPOS | ||
+ | unitvel = ep01: | ||
+ | decpt = ep01:decpt | ||
+ | CALL CalVel | ||
+ | IF (NOT(outvel EQ -1)) ; check if an error occur | ||
+ | ep01: | ||
+ | ENDIF | ||
+ | |||
+ | timer01 = 1000 | ||
+ | WAIT timer01 | ||
+ | ep01:setpos = 100 | ||
+ | START ep01 | ||
+ | WAIT ep01: | ||
+ | | ||
+ | timer01 = 1000 | ||
+ | WAIT timer01 | ||
+ | ep01:setpos = 0 | ||
+ | START ep01 | ||
+ | WAIT ep01: | ||
+ | |||
+ | WAIT 1 | ||
+ | JUMP MAIN | ||
+ | | ||
+ | |||
+ | |||
+ | |||
+ | ; | ||
+ | ; Calculate velocity for stepper motion | ||
+ | ; | ||
+ | ; Input: | ||
+ | ; invel L - desired velocity | ||
+ | ; pulse L - pulse parameter | ||
+ | ; meas L - measure parameter | ||
+ | ; | ||
+ | ; | ||
+ | ; decpt B - decpt parameter | ||
+ | ; | ||
+ | ; Output: | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
+ | ; Local variables: | ||
+ | ; frqc S | ||
+ | ; frqp L | ||
+ | ; | ||
+ | SUB CalVel | ||
+ | |||
+ | IF ((NOT unitvel) OR (1000%tsample)) | ||
+ | outfrq = -1 | ||
+ | outvel = -1 | ||
+ | ELSE | ||
+ | outfrq = (invel * pulse) / (meas * POW(10, | ||
+ | frqc = 1000.0/ | ||
+ | IF outfrq LE frqc | ||
+ | outvel = invel | ||
+ | ELSE | ||
+ | frqp = outfrq / frqc | ||
+ | frqc = frqp * frqc | ||
+ | outvel = (frqc * meas * POW(10, | ||
+ | ENDIF | ||
+ | ENDIF | ||
+ | ENDSUB | ||
+ | | ||
+ | | ||
+ | ; | ||
+ | ; Calculate max velocity for stepper motion card | ||
+ | ; | ||
+ | ; Input: | ||
+ | ; | ||
+ | ; pulse L - pulse parameter | ||
+ | ; meas L - measure parameter | ||
+ | ; | ||
+ | ; | ||
+ | ; decpt B - decpt parameter | ||
+ | ; | ||
+ | ; Output: | ||
+ | ; | ||
+ | ; | ||
+ | ; Local variables: | ||
+ | ; frqc S | ||
+ | ; frqp L | ||
+ | ; | ||
+ | SUB CalMaxVel | ||
+ | |||
+ | IF (NOT unitvel) | ||
+ | outvel = -1 | ||
+ | ELSE | ||
+ | outvel = (maxfrq * meas * POW(10, | ||
+ | ENDIF | ||
+ | ENDSUB | ||
+ | | ||
+ | END | ||
+ | </ |