DAS
3.1.6 - 18/09/2017
|
<CENTER> <TABLE> <TR> <TD> <CENTER><B> # </B> </CENTER></TD> <TD> <CENTER><B> Dec. Code </B> </CENTER></TD> <TD> <CENTER><B> ASCII Char </B> </CENTER></TD> <TD> <CENTER><B> Param/Format/\n Target </B> </CENTER></TD> <TD> <CENTER><B> Param Range\n (Hex) </B> </CENTER></TD> <TD> <CENTER><B> Action </B> </CENTER></TD> <TD> <CENTER><B> Implem.Function </B> </CENTER></TD> </TR> <TR> <TD> <CENTER> 1 </CENTER></TD> <TD> <CENTER> 37 </CENTER></TD> <TD> <CENTER> "%" </CENTER></TD> <TD> <CENTER> None </CENTER></TD> <TD> <CENTER> None </CENTER></TD> <TD> <CENTER> Return the firmware revision </CENTER></TD> <TD> <CENTER> \ref AMS_firmrev </CENTER></TD> </TR> </TABLE> </CENTER> Return the firmware revision times 10.\n <b>Programming Example</b>\n
Target | (Hex) | |||||
PAR2 / U8 / B | Default 0.50A |
<b>Programming Example</b>\n
<CENTER>*****************************************************************</CENTER>
Target | (Hex) | |||||
PAR2 / U8 / B |
Imposta il passo dei motori, i parametri PAR1 e PAR2 vanno a settare il valore del passo, valori validi vanno da 0 a DH per i seguenti valori frazionari del passo nominale:
<b>Programming Example</b>\n\n <tt>
int d, er; int Step[2]; Step[0] = Step[1] = 10; // Imposta 1/125 di passo Trasmette lo step sprintf(buftx, "'%02X%02X", Step[0], Step[1]); TxStr(buftx, 5); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error on STEP!");
<CENTER>*****************************************************************</CENTER>
Target | (Hex) | |||||
PAR2 / U8 / B | Default 20 |
Con questo comando si imposta la lunghezza in passi della rampa di accelerazione e decelarazione dei motori, effettuata durante un posizionamento. Valori validi di PAR vanno da 1 a 255.
<b>Programming Example</b>\n\n <tt>
int d, er; int Slope[2]; Sviluppa la rampa di accelerazione/decelerazione in otto passi Slope[0] = Slope[1] = 8; Trasmette lo slope sprintf(buftx, "(%02X%02X", Slope[0], Slope[1]); TxStr(buftx, 5); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error on SLOPE!");
<CENTER> \e Back \e to \ref amscommands\n \e Back \e to \ref amsmainpage\n </CENTER> <CENTER>*****************************************************************</CENTER>
Target | (Hex) | |||||
Default 0 |
Imposta il nuovo numero di identita' (0-255) dell'AMS indirizzato.
<b>Programming Example</b>\n\n <tt>
int d, er, a; scanf("%d", &a); if(a >= 0 && a <= 255) { sprintf(buftx,")%02X", a); TxStr(buftx, 3); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("New Address Not Done"); Addr = a; }
<CENTER>*****************************************************************</CENTER>
Target | (Hex) | |||||
PAR2 / U8 / W_A PAR3 / U8 / H_B PAR4 / U8 / W_B | Default 0 |
Imposta la polarita', quando attivi, dei fine corsa collegati. I parametri PAR1 e PAR2 riguardano il motore A ed indicano la polarita' (0 - 1) della posizione Home e Work, analogamente i successivi parametri sono per il motore B.
<b>Programming Example</b>\n\n <tt>
int Pol[4], d, er; Imposta l'attivita' di tutti i fine corsa a 1 Pol[0] = Pol[1] = Pol[2] = Pol[3] = 1; sprintf(buftx, "*%02X%02X%02X%02X", Pol[0], Pol[1], Pol[2], Pol[3]); TxStr(buftx, 9); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error: Polarity command");
<CENTER> \e Back \e to \ref amscommands\n \e Back \e to \ref amsmainpage\n </CENTER> <CENTER>*****************************************************************</CENTER>
Target | (Hex) | |||||
PAR2 / U8 / B |
With this command the selected motor(s) (sending 1) rotates counter clock wise since when the input is found active.
The selected motor is automatically switched-on, the angular resolution of 2000 s/r and the frequency of 1 KHz are setted. Also the sampling is made at 1 KHz (1000 times per second)
Programming Example
<tt> int d, er;\n
Search the Home position for motor A and B with the presetted value (2000 s/r, 1KHz)
sprintf(buftx, "+%2X%2X", 1, 1);
TxStr(buftx, 5);
d = ACKLEN;\n er = RxStr(buf, &d);
if(er) Message("Error on HOME!");
Codice decimale: 43 Carattere ASCII:+ Parametri: PAR1, PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01
Questo comando fa posizionare il motore sulla posizione di Home, il motore gira in senso antiorario finche non trova attivo questo ingresso. I parametri PAR1, PAR2 selezionano quale motore e' coinvolto (1 = ON). Questo comando per realizzarsi accende automaticamente il motore coinvolto, imposta un passo di 2000 s/r ed una frequenza di posizionamento di 1KHz. Il campionamento del fine corsa e' effettuato mille volte al secondo. Se si desidera utilizzare una diversa frequenza o passo occorre utilizzare il comando successivo.
Esempio in C: int d, er; Cerca la posizione di Home su entrambi gli assi sprintf(buftx, "+%2X%2X", 1, 1); TxStr(buftx, 5); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error on HOME!", er);
Codice decimale: 60 Carattere ASCII:< Parametri: PAR1, PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01
Questo comando fa posizionare il motore sulla posizione di Home, il motore gira in senso antiorario finche non trova attivo questo ingresso. I parametri PAR1, PAR2 selezionano quale motore e' coinvolto (1 = ON). A differenza del comando precedente viene utilizzata l'attuale frequenza di posizionamento e l'attuale passo. Danbo(21/02/2006): ATTENZIONE: I motori utilizzano la frequenza F2 per il posizionamento e la frequenza F1 per i posizionamenti continui (Home, Work e Tracking) La frequenza F1 di default e' impostata a 125 Hz (=10E6/n/2, dove n = 40000 e' il divisore).Modificando "n" si puo' variare la frequenza F1 iniziale, ma attenzione bisogna anche modificare il moltiplicatore nell'impostazione della frequenza di posizionamento F2. Quindi un modo per utilizzare il comando di Home(o Work) con Default e quello di impostare il divisore, appena prima di effettuare il comando, al valore tale per cui si ottenga la frequenza di posizionamento F2 impostata, poi ri-settare il divisore al valore di Default (40000) Durante le operazioni di Home e Work tutti gli altri task devono essere disabilitati per non interferire con la lettura dello stato delle porte di input.
Esempio in C: int d, er; Cerca la posizione di Home su entrambi gli assi con valori preimpostati sprintf(buftx, "<%2X%2X", 1, 1); TxStr(buftx, 5); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error on HOME!");
Codice decimale: 44 Carattere ASCII:, Parametri: PAR1, PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01
Questo comando fa posizionare il motore sulla posizione di Work, il motore gira in senso orario finche non trova attivo questo ingresso. I parametri PAR1, PAR2 selezionano quale motore e' coinvolto (1 = ON). Questo comando per realizzarsi accende automaticamente il motore coinvolto, imposta un passo di 2000 s/r ed una frequenza di posizionamento di 1KHz. Il campionamento del fine corsa e' effettuato mille volte al secondo. Se si desidera utilizzare una diversa frequenza o passo occorre utilizzare il comando successivo.
Esempio in C: int d, er; Cerca la posizione di Work su entrambi gli assi sprintf(buftx, ",%2X%2X", 1, 1); TxStr(buftx, 5); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error on WORK!");
Codice decimale: 61 Carattere ASCII:= Parametri: PAR1, PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01
Questo comando fa posizionare il motore sulla posizione di Work, il motore gira in senso orario finche non trova attivo questo ingresso. I parametri PAR1, PAR2 selezionano quale motore e' coinvolto (1 = ON). A differenza del comando precedente viene utilizzata l'attuale frequenza di posizionamento e l'attuale passo.
Esempio in C: int d, er; Cerca la posizione di Work su entrambi gli assi con valori preimpostati sprintf(buftx, "=%2X%2X", 1, 1); TxStr(buftx, 5); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error on WORK!");
Codice decimale: 45 Carattere ASCII:- Parametri: PAR1, PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01 Default: 0
Questo comando inverte la rotazione dei motori comandata. Puo' succedere che il motore non giri nel verso voluto, e' quindi possibile effettuare una rotazione dei sensi di rotazione affinche' poi nel comando di posizionamento i sensi CW e CCW siano rispettati. 1 = inverte.
Esempio in C: int Inve[2], d, er; Inverte l'asse 0 Inve[0] = 1; Inve[1] = 0; Trasmette invert sprintf(buftx, "-%02X%02X", Inve[0], Inve[1]); TxStr(buftx, 5); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error on WORK!");
Codice decimale: 46 Carattere ASCII:. Parametri: PAR1, PAR2, PAR3, PAR4 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Unsigned 32 bit, 8 Cifre esadecimali. PAR3 - Byte, 2 Cifre esadecimali. PAR4 - Unsigned 32 bit, 8 Cifre esadecimali. Range Parametri: PAR1.3 = 00-01, PAR2.4 = 00000000-FFFFFFFF
Esegue il posizionamento sui due assi di un numero di passi e direzione voluti. PAR1 indica il senso di rotazione 0 = CW e 1 = CCW mentre PAR2 specifica con otto numeri esadecimali il numero di passi che il motore A deve eseguire, PAR3 e PAR4 sono analoghi per il motore B.L'AMS rispondera' subito con un ACK anche se il posizionamento deve essere sempre eseguito, per verificare la completa attuazione di questo vedere l'esempio sottostante.
Esempio in C: int Revo[2], d, er; unsigned long stepa, stepb; Imposta un posizionamento, in senso orario, di 10000 passi sull'asse 0 Revo[0] = 0; stepa = 10000; Imposta un posizionamento, in senso antiorario, di 3800 passi sull'asse 1 Revo[1] = 1; stepa = 3800; Trasmette numero di passi sprintf(buftx,".%02X%08lX%02X%08lX", Revo[0], stepa, Revo[1], stepb); TxStr(buftx, 21); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("n Step not sent!");
La seguente procedura puo' essere utile per effettuare piu'posizionamenti in sequenza. Infatti AMS risponde subito con ACK quando gli si comanda di eseguire un posizionamento, ma se esiste la necessita' di eseguirne un altro al termine del precedente allora la seguente procedura puo' essere di aiuto. int DoPos(int dira, int dirb, unsigned long stepa, unsigned long stepb) { int d, er = 0; char buf[80];
Testa se il precedente posizionamento e' finito if(stepa) do { TxStr("800", 3); d = STS0LEN; er = RxStr(bufrx, &d); }while(bufrx[0] == '0' && bufrx[1] == '0' && er == 0); if(er) return er;
Testa se il precedente posizionamento e' finito if(stepb) do { TxStr("801", 3); d = STS0LEN; er = RxStr(bufrx, &d); }while(bufrx[0] == '0' && bufrx[1] == '0' && er == 0); if(er) return er;
Trasmette numero di passi sprintf(buftx,".%02X%08lX%02X%08lX", dira, stepa, dirb, stepb); TxStr(buftx, 21);
d = ACKLEN; er = RxStr(bufrx, &d); return er;
}
Codice decimale: 47 Carattere ASCII: / Parametri: Nessuno
Questo comando restituisce lo stato della porta di ingresso dei fine corsa. Viene restituito uno status specificato da due cifre esadecimali, i primi quattro bit sono utilizzati come HOME e WORK per i due assi, mentre i restanti sono a disposizione dell'utente.
Esempio in C: int Revo[2], d, er; TxStr("/", 1); d = STS0LEN; er = RxStr(buf, &d); if(er) Message("Serial Error!", er); else { a = HexBin(buf); sprintf(buf, "A Proxy, Home = %d, Work = %d\nB Proxy, Home = %d, Work = %d\nAll bits = %02XH", (a >> 3) & 1, (a >> 2) & 1, (a >> 1) & 1, a & 1, a); Message(buf); }
Codice decimale: 48 Carattere ASCII: 0 Parametri: DIRa, COUNTa, DIRb, COUNTb Formato Parametri: DIRa.b - Byte, 2 Cifre esadecimali. COUNTa.b - Unsigned 32 bit, 8 Cifre esadecimali. Range Parametri: DIR: 00-01 COUNT: 00000000-FFFFFFFF
Con questo comando e' possibile far eseguire all'AMS un tracking arbitrario su entrambi gli assi. Il parametro DIR specifica la direzione di tracking 0 = CW, 1 = CCW. COUNT rappresenta invece il fattore di divisione che determina insieme alla base dei tempi interna (10 MHz) la frequenza prodotta ai motori, questo valore e' codificato su 8 cifre esadecimali (32 bit unsigned). Per calcolare la frequenza che bisogna fornire al motore per realizzare un certo numero di giri al minuto e': F = 200 / S * N / 60 Dove: F = Frequenza in Hz S = Passo utilizzato, ½ ¼ etc. N = Numero di giri al minuto.
L'equazione che si applica per calcolare i vari parametri e' conoscendo la frequenza necessaria hai motori e': COUNT = 10E6 / F
Al fine di valutare l'errore bisogna considerare il limite del timer utilizzato (32bit). Ad esempio volendo effettuare un tracking di 54.34886793 Hz avremo:
COUNT = 183996 = 10E6 / 54.34886793
E' chiaro che nel timer possiamo caricarvi solo la parte intera da cui ne consegue che la frequenza ottenuta e' :
54.34900759 = 10E6 / 183996
da cui l'errore e':
-0.0001139657 = 54.34886793 - 54.34900759
ovvero la frequenza ottenuta e' piu veloce con un errore in questo caso del 0.000257%.
Esempio in C: int Revo[2], d, er; double t; unsigned long counta, countb;
Imposta il tracking in senso orario sull'asse 0 Revo[0] = 0; Imposta il tracking in senso antiorario sull'asse 1 Revo[1] = 1;
Frequenza di tracking desiderata in Hz per l'asse 0 digitando 0 l'asse non effettua tracking scanf("%lf", &t); t = 10E6 / (2 * t) - 1; counta = (unsigned long) t; Frequenza di tracking desiderata in Hz per l'asse 1 digitando 0 l'asse non effettua tracking scanf("%lf", &t); t = 10E6 / (2 * t) - 1; countb = (unsigned long) t; Invia il comando sprintf(buftx, "0%02X%08lX%02X%08lX", Revo[0], counta, Revo[1], countb); TxStr(buftx, strlen(buftx)); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error while start tracking!");
Codice decimale: 49 Caratteri ASCII: 1 Parametri: PAR1 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01
Legge i passi effettuati di un motore selezionato. Il parametro PAR1 seleziona da quale motore si vuole leggere il numero di passi fatti (0 = A, 1 = B), il comando produce in uscita otto cifre esadecimali (long).
Esempio in C: int d, er; char buf[256];
Legge il numero di passi eseguiti sull'asse 0 strcpy(buftx, "100"); TxStr(buftx, 3);
d = 15; er = RxStr(buf, &d); if(er == 0) { sscanf(buf, "%lx", &ns); sprintf(buf, "Axis 0 Counts: %ld", ns); Message(buf); } else Message("AMS do not echo counts!"); if(er == 0) { Legge il numero di passi eseguiti sull'asse 1 sprintf(buftx, "101", d); TxStr(buftx, 3);
d = 15; er = RxStr(buf, &d); if(er == 0) { sscanf(buf, "%lx", &ns); sprintf(buf, "Axis 1 Counts: %ld", ns); Message(buf); } else Message("AMS do not echo counts!"); }
Codice decimale: 50 Caratteri ASCII: 2 Parametri: PAR1,PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01 Default: 1
Permette togliere corrente ai motori. I parametri PAR1 (A) e PAR2 (B) identificano per ciascuno dei motori quale attivita' si vuole impostare, 0 = spegni, 1 = corrente nominale.
Esempio in C: int d, er; Spegne entrambi i motori TxStr("20000", 5); d = ACKLEN; er = RxStr(bufrx, &d); if(er) Message("Error in motor shutdown!");
Codice decimale: 51 Carattere ASCII: 3 Parametri: PAR1, PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01
Azzera le coordinate (numero di passi effettuati) del motore selezionato, 0 = A, 1 = B.
Esempio in C: int d, er; sprintf(buftx, "3%02d", d); TxStr(buftx, 3); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("AMS error on CLEAR counts!");
Codice decimale: 52 Carattere ASCII: 4 Parametri: PAR1,PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-FF Default: 7
Imposta la velocita' di posizionamento dei motori, il parametro PAR1 accetta un range da 0 a FF con una corrispondenza:
Frequenza di posizionamento (Hz) = 125 * (n + 1)
Impostando quindi 1 avremo 250Hz, 3 = 1KHz etc.
Esempio in C: int Speed[2], d, er; Imposta una velocita' di posizionamento, per entrambi gli assi, di 1000 Hz = 125 * (7 + 1) Speed[0] = Speed[1] = 7; sprintf(buftx, "4%02X%02X", Speed[0], Speed[1]); TxStr(buftx, 5); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Speed not sent!");
Codice decimale: 53 Carattere ASCII: 5 Parametri: PAR1, PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-02
Permette di disabilitare (PAR = 0) o abilitare (PAR = 1) PAR = 2) il tracking su ciascun asse. si puo' anche utilizzare il valore 2 per ignorare l'asse desiderato.
Esempio in C: int d, er; Ferma il tracking su entrambi gli assi TxStr("50101", 5); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error while stop tracking!");
Codice decimale: 54 Carattere ASCII: 6 Parametri: PAR1, PAR2 Formato Parametri: PAR1 - Byte, 8 Cifre esadecimali. PAR2 - Byte, 8 Cifre esadecimali. Range Parametri: 00000001-FFFFFFFF
Abilita l'uscita PWM stabilendo con il parametro PAR1 la durata di inattivita' dell'impulso (0) mentre con il parametro PAR2 si imposta per quanto tempo l'impulso sta attivo (1). La base dei tempi utilizzata e' di 1ms. Per cui si possono ottenere frequenze di uscita da 500Hz a 4.656612873E-10Hz.
Esempio in C: int d, er; Abilita l'uscita PWM con un periodo di 500 ms ON/OFF TxStr("6000001F4000001F4", 17); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error while start PWM!");
Codice decimale: 55 Carattere ASCII: 7 Parametri: Nessuno
Disabilita l'uscita PWM.
Esempio in C: int d, er; Disabilita l'uscita PWM TxStr("7", 1); d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Error while stop PWM!");
Codice decimale: 56 Carattere ASCII: 8 Parametri: PAR1 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01
Permette di verificare se il posizionamento di un asse (PAR1) e' stato completato (1) oppure e' sempre in esecuzione (0). La risposta e' fornita con due cifre esadecimali.
Esempio in C: La seguente procedura puo' essere utile per effettuare piu'posizionamenti in sequenza. Infatti AMS risponde subito con ACK quando gli si comanda di eseguire un posizionamento, ma se esiste la necessita' di eseguirne un altro al termine del precedente allora la seguente procedura puo' essere di aiuto. int DoPos(int dira, int dirb, unsigned long stepa, unsigned long stepb) { int d, er = 0; char buf[80];
Testa se il precedente posizionamento e' finito if(stepa) do { TxStr("800", 3); d = STS0LEN; er = RxStr(bufrx, &d); }while(bufrx[0] == '0' && bufrx[1] == '0' && er == 0); if(er) return er;
Testa se il precedente posizionamento e' finito if(stepb) do { TxStr("801", 3); d = STS0LEN; er = RxStr(bufrx, &d); }while(bufrx[0] == '0' && bufrx[1] == '0' && er == 0); if(er) return er;
Trasmette numero di passi sprintf(buftx,".%02X%08lX%02X%08lX", dira, stepa, dirb, stepb); TxStr(buftx, 21);
d = ACKLEN; er = RxStr(bufrx, &d); return er;
}
Codice decimale: 57 Carattere ASCII: 9 Parametri: PAR1 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. Range Parametri: 00-FF Default: FF
Permette di scrivere sulla porta di uscita optoisolata. SI ricorda che il bit 0 e' utilizzato anche dal PWM.
Esempio in C: int Port, d, er; Mette a 1 il bit 7 e 1 dell'uscita optoisolata Port = 0x82; sprintf(buftx, "9%02X", Port); TxStr(buftx, 3); d = ACKLEN; er = RxStr(bufrx, &d); if(er) Message("Error: Port command", er);
Codice decimale: 58 Carattere ASCII: : Parametri: PAR1 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. Range Parametri: 00-07
Permette di leggere un canale del convertitore A/D da 10 bit, il campo di ingresso di ogni canale e' di 0 - 5V. Vengono restituite quattro cifre esadecimali.
Codice decimale: 59 Carattere ASCII: ; Parametri: PAR1 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01 Default: 0
Permette di abilitare (0) o disabilitare (1) le rampe di accelerazione/decelerazione sui posizionamenti.
Esempio in C: int ESlope[2], d, er; Disabilita le rampe su tutti gli assi Eslope[0] = Eslope[1] = 1; sprintf(buftx, ";%02X%02X", ESlope[0], ESlope[1]); TxStr(buftx, 5);
d = ACKLEN; er = RxStr(buf, &d); if(er) Message("Slope control not sent!", er);
Codice decimale: 62 Carattere ASCII: > Parametri: PAR1,PAR2 Formato Parametri: PAR1 - Unsigned 32 bit, 8 Cifre esadecimali. PAR2 - Unsigned 32 bit, 8 Cifre esadecimali. Range Parametri: 00000000-FFFFFFFF Default: 40000
Imposta la frequenza di base (F1) utilizzata per il tracking ed il posizionamento veloce.
Codice decimale: 63 Carattere ASCII: ? Parametri: PAR1,PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Unsigned 16 bit, 4 Cifre esadecimali. Range Parametri: 00-3F
Scrive la EEPROM interna dell'AMS. Il parametro PAR1 rappresenta l'indirizzo, mentre PAR2 e' un numero che vi si vuole scrivere. Attenzione l'indirizzo 0 e' utilizzato per l'identita' dell'AMS.
Codice decimale: 64 Carattere ASCII: @ Parametri: PAR1 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. Range Parametri: 00-3F Restituisce il contenuto dell EEPROM.
Legge la EEPROM interna dell'AMS. Il parametro PAR1 rappresenta l'indirizzo della EEPROM.
Codice decimale: 65 Carattere ASCII: A Parametri: nessuno
Imposta i parametri iniziali dell'AMS, in particolare per Tracking, Multiplier, Mode, Step, Slope, Enable e Corrente di alimentazione dei motori.
Codice decimale: 66 Carattere ASCII: B Parametri: nessuno Restituisce il valore di revisione su due cifre esadecimali ascii.
Legge la revisione hardware della FPGA che gestisce i motori. Questo comando e' di uso interno per lo sviluppo di programmi diagnostici.
Legge lo stato del joystick in accordo con la seguente tabella:
CODICE AZIONE 0 Joystick disattivo 1 Movimento verso l'alto 2 Movimento verso il basso 4 Movimento verso destra 8 Movimento verso sinistra
Codice decimale: 69 Carattere ASCII: E Parametri: PAR1,PAR2 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Byte, 2 Cifre esadecimali. Range Parametri: 00-FF Scrive il contenuto del registro selezionato.
Scrive il registro interno dell'FPGA. Il parametro PAR1 rappresenta l'indirizzo del registro, PAR2 e' cio' che vi si vuole scrivere.
Codice decimale: 70 Carattere ASCII: F Parametri: PAR1 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. Range Parametri: 00-FF Restituisce il contenuto del registro selezionato.
Legge il registro interno dell'FPGA. Il parametro PAR1 rappresenta l'indirizzo del registro.
Codice decimale: 68 Carattere ASCII: D Parametri: PAR1,PAR2,PAR3 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. PAR2 - Word, 4 Cifre esadecimali. PAR3 - Word, 4 Cifre esadecimali. Range Parametri PAR1: 00-11 Range Parametri PAR1: 0001-FFFF
Questo comando pone l'AMS nella modalita' posizionamento manuale. Una volta che questo comando e' stato avviato l'AMS legge in continuazione lo stato del joystick ed esegue un posizionamento conseguente. Finche' questa modalita' e' attiva vengono accettati solo due comandi:
Inviando il comando 'x' si esce dalla modalita' posizionamento manuale. Inviando il comando '1' si puo' leggere il valore dei contatori con la stessa sintassi del comando analogo LEGGE I PASSI EFFETTUATI.
I parametri che devono essere associati a questo comando sono:
PAR1 la cifra esadecimale piu' significativa stabilisce se a 0 che durante il movimento verso l'alto il valore dei contatori verra' incrementato, diversamente se la cifra conterra' un 1 il valore dei contatori sara' decrementato. Analogamente la stessa cosa vale per la cifra meno significativa che va associata al movimento verso sinistra. PAR2, PAR3 contengono rispettivamente il numero di passi che deve essere eseguito in orizzontale (PAR2) e verticale (PAR3). I valori accettati vanno da 1 a 65535.
Conviene prima di eseguire questo comando di disabilitare il valore di rampa di accelerazione/decelerazione.
Codice decimale: 71 Carattere ASCII: G Parametri: PAR1 Formato Parametri: PAR1 - Byte, 2 Cifre esadecimali. Range Parametri: 00-01
Verifica la posizione di HOME per uno degli assi selezionati (0/1), ritorna 1 se in posizione di HOME.