Téma: CRC Modbus
Dobrý den,
potřeboval bych poradit s realizací výpočtu CRC. Jde mi o odesílání teplot na zařízení s Modbus komunikací po RS485.
Díky
SDS PLC/PAC: Měření Energie & OnlineTechnology.cz
Network Monitoring System - SDS - Síťový Dohledový Systém
Nejste přihlášen. Přihlaste se, nebo se zaregistrujte.
SDS PLC/PAC: Měření Energie & OnlineTechnology.cz » SDS-C (PLC) » CRC Modbus
Stránky 1
Chcete-li přispívat, musíte se přihlásit nebo projít procesem registrace.
Dobrý den,
potřeboval bych poradit s realizací výpočtu CRC. Jde mi o odesílání teplot na zařízení s Modbus komunikací po RS485.
Díky
Předpokládám realizaci jako program v SDS-C.
Popisu algoritmu pro výpočet CRC je plný Internet, takže to chce najít něco a přepsat do SDS-C.
var CRC16;
var b;
#define SEED 0xFFFF //inicializace pro CRC16
#define GP 0xA001 //generujici polynom (zmenit v pripade jineho protokolu)
Calc_CRC
{
var carry;
var i;
CRC16 = CRC16 ^ (b & 0xFF);
CRC16 = CRC16 & 0xFFFF;
i=0;
nextb:
if (i<8)
{
carry = CRC16 & 0x0001;
CRC16 = CRC16 >> 1;
if (carry != 0)
{ CRC16 = CRC16 ^ GP; };
CRC16 = CRC16 & 0xFFFF;
i++;
goto nextb;
}
}
main
{
//priklad
// spocitat CRC pro text[0] az text[3] (v poli text[0] az text[3] je zprava - toto je priklad...)
// start
CRC16 = SEED; // vzdy spravne nastavit na zacatek
// provest
b = text[0];
Calc_CRC();
b = text[1];
Calc_CRC();
b = text[2];
Calc_CRC();
b = text[3];
Calc_CRC();
// vysledek
echo(' crc je = ', CRC16);
}Budu velmi rád když se se svým projektem (a výsledkem) pochlubíte zde na fóru, aby z toho měli ostatní uživatelé také užitek.
Díky moc, jdu to hned zkusit rozchodit.
MODBUS využije určitě řada dalších uživatelů. Jsem zvědav jak to dopadne.
Nevýhoda u MODBUSu přes sériovou linku je (u běžných verzí MODBUSu) nutnost "trvalé" komunikace mezi zařízeními... snad to tady nebude problém.
Stránky 1
Chcete-li přispívat, musíte se přihlásit nebo projít procesem registrace.
SDS PLC/PAC: Měření Energie & OnlineTechnology.cz » SDS-C (PLC) » CRC Modbus