DAS  3.1.6 - 18/09/2017
AMS Commands (EN)
*****************************************************************

1

<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
int d, er;
// Read the program revision
TxStr("%%", 1);
d = STS0LEN;
er = RxStr(bufrx, &d);
if(er == 0)
{
sprintf(buf, "AMS II Rev.: %s", bufrx);
// Generic procedure displaying the message
Message(buf);
}
Back to AMS Commands
Back to AMS2 (Advanced Micro Stepping) Controller
*****************************************************************

2

#
Dec. Code
ASCII Char
Param/Format/
Target
Param Range
(Hex)
Action
Implem.Function
2
38
"&"
PAR1 / U8 / A
PAR2 / U8 / B
00h - 4Ch
Default 0.50A
Set the power for the motors
AMS_Power
<b>Programming Example</b>\n
int d, er;
int Pow[2];
Pow[0] = Pow[1] = 40; // 800 mA for each motor
// Send Power
sprintf(buftx, "&%02X%02X", Pow[0], Pow[1]);
TxStr(buftx, 5);
d = ACKLEN;
er = RxStr(buf, &d);
if(er) Message("Error on POWER!");
Back to AMS Commands
Back to AMS2 (Advanced Micro Stepping) Controller
<CENTER>*****************************************************************</CENTER>
  1. IMPOSTA IL PASSO ANGOLARE DEI MOTORI
    #
    Dec. Code
    ASCII Char
    Param/Format/
    Target
    Param Range
    (Hex)
    Action
    Implem.Function
    3
    39
    "'"
    PAR1 / U8 / A
    PAR2 / U8 / B
    00 - 0D
    Set the AMS Steps/round for the stepper motors
    AMS_Step

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!");

Back to AMS Commands
Back to AMS2 (Advanced Micro Stepping) Controller
<CENTER>*****************************************************************</CENTER>
  1. IMPOSTA RAMPA DI ACCELERAZIONE E DECELERAZIONE
    #
    Dec. Code
    ASCII Char
    Param/Format/
    Target
    Param Range
    (Hex)
    Action
    Implem.Function
    4
    40
    "("
    PAR1 / U8 / A
    PAR2 / U8 / B
    00 - FF
    Default 20
    Set the value for the slope
    AMS_Slope

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>
  1. NUMERO IDENTITA' AMS
    #
    Dec. Code
    ASCII Char
    Param/Format/
    Target
    Param Range
    (Hex)
    Action
    Implem.Function
    5
    41
    ")"
    PAR / U8 / AMS
    00 - FF
    Default 0
    Set the new address for the AMS
    AMS_assadd

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; }

Back to AMS Commands
Back to AMS2 (Advanced Micro Stepping) Controller
<CENTER>*****************************************************************</CENTER>
  1. POLARITA' FINE CORSA
    #
    Dec. Code
    ASCII Char
    Param/Format/
    Target
    Param Range
    (Hex)
    Action
    Implem.Function
    6
    42
    "*"
    PAR1 / U8 / H_A
    PAR2 / U8 / W_A
    PAR3 / U8 / H_B
    PAR4 / U8 / W_B
    00 - 01
    Default 0
    Set polarity for the HOME and WORK position
    AMS_SetPolarity

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>

HOME Presetted Values

#
Dec. Code
ASCII Char
Param/Format/
Target
Param Range
(Hex)
Action
Implem.Function
7
43
"+"
PAR1 / U8 / A
PAR2 / U8 / B
00 - 01
Search the HOME position for the specified motor
AMS_Home

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!");


Back to AMS Commands
Back to AMS2 (Advanced Micro Stepping) Controller
*****************************************************************
  1. POSIZIONE DI 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);

  1. POSIZIONE DI HOME CON DEFAULT

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!");

  1. POSIZIONE DI WORK

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!");

  1. POSIZIONE DI WORK CON DEFAULT

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!");

  1. INVERSIONE DIREZIONE

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!");

  1. POSIZIONAMENTO SUI DUE ASSI

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;

}

  1. LEGGE GLI INPUT

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); }

  1. TRACKING

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!");

  1. LEGGE I PASSI EFFETTUATI

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!"); }

  1. MOTORE ON/OFF

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!");

  1. AZZERA LE COORDINATE

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!");

  1. SETTA LA VELOCITA' DI POSIZIONAMENTO

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!");

  1. TRACKING ON/OFF

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!");

  1. ABILITA L'USCITA PWM

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!");

  1. DISABILITA L'USCITA 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!");

  1. STATO DEL POSIZIONAMENTO

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;

}

  1. SCRIVE SULLA PORTA OPTOISOLATA

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);

  1. LEGGE UN CANALE DEL CONVERTITORE A/D

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.

  1. MODO DI POSIZIONAMENTO

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);

  1. DIVISORE

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.

  1. SCRIVE EEPROM

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.

  1. LEGGE EEPROM

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.

  1. CARICAMENTO VALORI INIZIALI

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.

  1. LEGGE LA REVISIONE HARDWARE FPGA

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.

  1. LEGGE LO STATO DEL JOYSTICK Codice decimale: 67 Carattere ASCII: C Parametri: nessuno Restituisce lo stato del joystick su due cifre esadecimali ascii.

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

  1. SCRIVE UN REGISTRO DELLA FPGA

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.

  1. LEGGE UN REGISTRO DELLA FPGA

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.

  1. MODALITA' POSIZIONAMENTO MANUALE CON JOYSTICK

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.

  1. VERIFICA LA POSIZIONE DI HOME

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.

______________________________________________________________________________________
Generated on Mon Sep 18 2017 11:47:04 for DAS - Rel. 3.1.6 - 18/09/2017.