ST500 | Commande à distance de variateurs de fréquence en série avec Modbus RS485
La communication entre l’appareil de commande et le variateur de fréquence équipé de la RS485 doit se dérouler en mode RTU. Dans ce cas, le variateur ST500 attend une transmission à 19200 bauds, 8/N/2 en réglage d’usine. L’émission et la réception se font par simple transmission de données des octets en format brut sans autre codage. Des caractères de contrôle supplémentaires ne sont pas nécessaires.
Voici deux exemples de jeux de données envoyés au convertisseur de fréquence :
01 07 20 00 00 01 7E 0A (commande de démarrage, représentée par des chiffres hexadécimaux)
01 07 20 00 00 06 3F C8 (commande d’arrêt, représentée par des chiffres hexadécimaux).
Les enregistrements doivent toujours être envoyés en une seule fois. Si une pause de plus de 1½ caractère se produit entre deux caractères individuels, l’enregistrement n’est pas valable selon la définition du protocole et doit être rejeté.
Brève explication de la structure :
01 = adresse du variateur de fréquence (se règle sur le variateur de fréquence via F9.02)
07 = mémoire volatile, la valeur n’est pas programmée de manière fixe
20 00 = adresse du paramètre de commande
00 01 = mode de fonctionnement en aval
7E 0A = somme de contrôle CRC
Vous trouverez d’autres adresses et fonctions dans le manuel.
Vous pouvez calculer la somme de contrôle CRC comme suit :
Fonction de calcul de la somme de contrôle CRC (en 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);
}
Notez que la somme de contrôle CRC-16 au format Modbus doit être transmise en tant que Little Endian, c’est-à-dire la moitié de poids faible du mot de données avant la moitié de poids fort (en représentation hexadécimale, donc les deux premiers et les deux derniers caractères du résultat sont échangés), afin qu’elle corresponde à l’algorithme du variateur (comme ci-dessus dans la fonction cal_crc16()).
Tags: