ST500 | Zdalne sterowanie falownikiem przez Modbus RS485
Komunikacja między sterownikiem a falownikiem wyposażonym w RS485 musi odbywać się w trybie RTU. W ustawieniach fabrycznych falownik ST500 oczekuje transmisji z prędkością 19200 bodów, 8/N/2. Dane są przesyłane i odbierane jako surowe bajty bez dodatkowego kodowania. Nie są wymagane żadne znaki sterujące.
Oto dwa przykładowe zestawy danych wysyłane do falownika:
01 06 20 00 00 01 43 CA (komenda startu do przodu, w zapisie szesnastkowym)
01 06 20 00 00 06 02 08 (komenda zatrzymania, w zapisie szesnastkowym)
Zestawy danych muszą być przesyłane jako całość. Jeśli między dwoma znakami wystąpi przerwa dłuższa niż czas trwania 1½ znaku, zgodnie z protokołem zestaw jest uznawany za nieważny i należy go odrzucić.
Krótkie objaśnienie struktury:
01 = Adres falownika (ustawiany za pomocą F9.02)
06 = Ustawienie parametru lub trwałe zapisanie wartości w EEPROM / 07 = zapis tymczasowy, wartość nie jest trwale zapisywana
20 00 = Adres parametru sterującego
00 01 = Ruch do przodu
43 CA = Suma kontrolna CRC16, bajt niższy najpierw
Więcej adresów i funkcji można znaleźć w rozdziale 12.2.5 instrukcji.
Sumę kontrolną CRC można obliczyć następującą funkcją (w języku C):
unsigned int cal_crc16 (unsigned char *data, unsigned int length)
{
unsigned int i, crc_result = 0xffff;
while (length–)
{
crc_result ^= *data++;
for (i = 0; i < 8; i++)
{
if (crc_result & 0x01)
{
crc_result = (crc_result >> 1) ^ 0xa001;
}
else
{
crc_result = crc_result >> 1;
}
}
}
crc_result = ((crc_result & 0xff) << 8) | (crc_result >> 8);
return (crc_result);
}
Należy pamiętać, że suma kontrolna CRC-16 musi być przesyłana w formacie Modbus jako little endian, czyli najpierw bajt niższy, aby odpowiadała algorytmowi falownika (jak pokazano w funkcji cal_crc16()).
Tags: