Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Вниз

протокол ModBus   Найти похожие ветки 

 
Shumer ©   (2007-01-20 01:53) [0]

Может у кого то есть, алгоритм расчета контрольный суммы методом полинома CRC16 hA001 для протокола Modbus


 
tesseract ©   (2007-01-20 16:19) [1]

В ModBus вообще CRC16 рассчитывается таблично.


 
somewhere   (2007-01-28 14:33) [2]

Расчет контрольной суммы кадра Modbus RTU может выполняться по следую-
щему алгоритму (текст на языке программирования С):
WORD Crc16(BYTE *Data, ULONG size)
{
union
{BYTE b[2]; unsigned short w;} Sum;
char shift_cnt;
BYTE *ptrByte;
ULONG byte_cnt = size;
ptrByte=Data;
Sum.w=0xffffU;
for(; byte_cnt>0; byte_cnt--)
{
Sum.w=(unsigned short)
((Sum.w/256U)*256U+((Sum.w%256U)^(*ptrByte++)));
for(shift_cnt=0; shift_cnt<8; shift_cnt++)
{/*обработка байта*/
if((Sum.w&0x1)==1)
Sum.w=(unsigned short)((Sum.w>>1)^0xa001U);
else
Sum.w>>=1;
}
}
return Sum.w;
}
Пусть какое-либо сообщение, имеющего длину N, записано в массиве
Data[N+2] типа unsigned char. Тогда для этого сообщения контрольную сумму
следует формировать следующим образом:
WORD CheckSumm = Crc16(Data, N);
Data[N] = CheckSumm;
Data[N+1] = CheckSumm>>8;



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.02.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.44 MB
Время: 0.041 c
2-1170158201
Long1
2007-01-30 14:56
2007.02.18
Поиск / Исключение / Замена


2-1170321620
Sour Smile
2007-02-01 12:20
2007.02.18
Как узнать идентификатор материнской платы?


1-1167054426
atruhin
2006-12-25 16:47
2007.02.18
Unit XXX implictly imported into package YYYY


2-1170326279
WhiteBarsik
2007-02-01 13:37
2007.02.18
В EXE не желает включаться "designide"


11-1148456550
Славэн
2006-05-24 11:42
2007.02.18
Canvas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский