Главная страница
    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.047 c
2-1170236307
Piroxyline
2007-01-31 12:38
2007.02.18
Глюки с лэйблом


15-1169849835
esportsux
2007-01-27 01:17
2007.02.18
программа автоматизации работы к/к


15-1169734576
_ozzy_
2007-01-25 17:16
2007.02.18
General Protection Violation


2-1170252333
DelphiLexx
2007-01-31 17:05
2007.02.18
Узнать количество элементов


15-1169883327
Piroxyline
2007-01-27 10:35
2007.02.18
На каком языке?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский