ST500 | Controllo remoto del convertitore di frequenza in serie con Modbus RS485

La comunicazione tra l’unità di controllo e il convertitore di frequenza dotato di RS485 deve avvenire in modalità RTU. In questo caso, l’inverter ST500 si aspetta una trasmissione con 19200 baud, 8/N/2 nell’impostazione di fabbrica. Tramite la semplice trasmissione dei dati vengono inviati e ricevuti i byte in formato grezzo senza ulteriore codifica. I caratteri di controllo aggiuntivi non sono necessari.

 

Ecco due esempi di set di dati inviati al convertitore di frequenza:

01 07 20 00 00 01 7E 0A (comando di avvio, rappresentato come numeri esadecimali).

01 07 20 00 00 06 3F C8 (comando di arresto, rappresentato come numeri esadecimali)

I set di dati devono sempre essere inviati in un unico esemplare. Se tra due singoli caratteri si verifica una pausa di durata superiore a 1½ carattere, il record di dati non è valido secondo la definizione del protocollo e deve essere scartato.

 

Breve spiegazione della struttura:

01 = Indirizzo del convertitore di frequenza (è impostato sul convertitore di frequenza tramite F9.02).

07 = memorizzazione volatile, il valore non è programmato in modo permanente

20 00 = Indirizzo del parametro di controllo

00 01 = Funzionamento in avanti

7E 0A = somma di controllo CRC

Ulteriori indirizzi e funzioni sono riportati nel manuale.

 

Il checksum CRC può essere calcolato come segue:

Funzione per il calcolo del checksum CRC (in C):

unsigned int cal_crc16 (unsigned char *data, unsigned int length)
{
unsigned int i,crc_value=0xffff;

while(length–)
{
crc_result ^= *data++;
for(i=0; i<8; i++)
{
if(crc_result & 0x01)
{
crc_result = (crc_value >> 1)^0xa001;
}
else
{
crc_result = crc_result >> 1;
}
}
}
crc_result = ((crc_result & 0xff) << 8) | (crc_result >> 8);

return(crc_result);
}

 

Si noti che il checksum CRC-16 deve essere trasmesso in formato Modbus come little endian, ossia la metà inferiore della parola dati prima della metà superiore (in notazione esadecimale, ossia i primi due e gli ultimi due caratteri del risultato sono scambiati), in modo che corrisponda all’algoritmo dell’inverter (come nella funzione cal_crc16() di cui sopra).

Torniamo alle domande sul convertitore di frequenza ST500.

Tags: