ST500er | Frequenzumrichter mit Modbus RS485 seriell fernsteuern
Die Kommunikation zwischen dem Steuergerät und dem mit RS485 ausgestatteten Frequenzumrichter muss im RTU-Modus ablaufen. Dabei erwartet der ST500 Umrichter in Werkseinstellung eine Übertragung mit 19200 Baud, 8/N/2. Über einfache Datenübertragung der Bytes im Rohformat ohne weitere Codierung wird gesendet und empfangen. Zusätzliche Steuerzeichen sind nicht notwendig.
Hier zwei Beispiel-Datensätze gesendet an den Frequenzumrichter:
01 06 20 00 00 01 43 CA (Start-Befehl Vorwärts, dargestellt als Hexadezimalzahlen)
01 06 20 00 00 06 02 08 (Stopp-Befehl, dargestellt als Hexadezimalzahlen)
Datensätze müssen immer am Stück gesendet werden. Tritt zwischen zwei einzelnen Zeichen eine Pause von mehr als 1½ Zeichen Dauer auf, so ist der Datensatz laut Protokolldefinition ungültig und zu verwerfen.
Kurze Erklärung der Struktur:
01 = Adresse des Frequenzumrichters (wird am Frequenzumrichter über F9.02 eingestellt)
06 = Steuerparameter setzen oder nichtflüchtige Speicherung eines Parameterwertes im EEPROM / 07 = flüchtige Speicherung, Parameterwert wird nicht fest programmiert
20 00 = Steuerparameteradresse
00 01 = Vorwärtsbetrieb
43 CA = CRC16-Checksumme, unteres Byte zuerst
Weitere Adressen und Funktionen können Sie Kapitel 12.2.5 der Anleitung entnehmen.
Die CRC-Prüfsumme können Sie wie folgt errechnen:
Funktion zur Berechnung der CRC-Prüfsumme (in 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);
}
Beachten Sie bitte, dass die CRC-16-Prüfsumme im Modbus-Format als Little Endian übertragen werden muss, d.h. die niederwertige Hälfte des Datenwortes vor der höherwertigen (in Hexadezimaldarstellung, also die ersten beiden und die letzten beiden Zeichen des Ergebnisses vertauscht werden), damit sie zum Algorithmus des Umrichters (wie oben in der Funktion cal_crc16()) passt.
Tags: