ST500 | Frequentieregelaar via Modbus RS485 op afstand aansturen
De communicatie tussen de besturing en de frequentieregelaar met RS485 moet plaatsvinden in RTU-modus. De ST500 verwacht in de fabrieksinstelling een overdracht met 19200 baud, 8/N/2. De bytes worden zonder extra codering als ruwe data verzonden en ontvangen. Extra controlekarakters zijn niet nodig.
Hier twee voorbeeld-datasetten die naar de frequentieregelaar zijn verzonden:
01 06 20 00 00 01 43 CA (Startcommando vooruit, weergegeven als hexadecimale getallen)
01 06 20 00 00 06 02 08 (Stopcommando, weergegeven als hexadecimale getallen)
Datasetten moeten altijd in één geheel worden verzonden. Als er een pauze van meer dan 1½ tekenduur optreedt tussen twee tekens, wordt het dataset als ongeldig beschouwd volgens het protocol en moet het worden genegeerd.
Korte uitleg van de structuur:
01 = Adres van de frequentieregelaar (wordt ingesteld via F9.02)
06 = Parameter instellen of waarde permanent opslaan in EEPROM / 07 = tijdelijk opslaan, niet permanent
20 00 = Adres van de stuurparameter
00 01 = Voorwaartse werking
43 CA = CRC16-controlesom, laagste byte eerst
Meer adressen en functies zijn te vinden in hoofdstuk 12.2.5 van de handleiding.
De CRC-controlesom kan als volgt worden berekend (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);
}
Let op: de CRC-16-controlesom moet in Modbus-formaat als little endian worden verzonden, d.w.z. het lage byte eerst, zodat deze overeenkomt met het algoritme van de regelaar (zoals hierboven in cal_crc16()).
Tags: