1

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

2

Re: CRC Modbus

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.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !

3

Re: CRC Modbus

Díky moc, jdu to hned zkusit rozchodit.

4

Re: CRC Modbus

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.

Pochlubte se - popište jak využíváte své zařízení SDS zde ! Můžete si bezplatně přidat svou reklamu !