Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 20

Тема: Контрольная сумма ТРМ201

  1. #1

    По умолчанию Контрольная сумма ТРМ201

    Добрый день.

    Подскажите пожалуйста алгоритм расчета контрольной суммы
    для ТРМ201.

    Например:

    Запрос значения со входа:

    Адрес 15

    23 47 56 48 47 52 49 4с 4e 4d 4f 51 4b 0d
    CS = 4d 4f 51 4b Как она получилась?

  2. #2

    По умолчанию

    это пакет в ascii виде с начальным и конечным маркерами: #GVHGRILNMOQK\xD
    после распаковки в двоичный вид получаем 0f 10 b2 57 68 a4, контрольная сумма - 68 a4, рассчитывается по следующему алгоритму:

    Код:
    unsigned short owenCRC16(unsigned char* packet, size_t length)
    {
    	size_t i, j;
    	unsigned short crc;
    
    	assert(packet);
    
    	crc = 0;
    	for (i = 0; i < length; ++i)
    	{
    		unsigned char b = packet[i];
    		for (j = 0; j < 8; ++j, b <<= 1)
    		{
    			if ((b ^ (crc >> 8)) & 0x80)
    			{
    				crc <<= 1;
    				crc ^= 0x8F57;
    			}
    			else
    				crc <<= 1;
    		}
    	}
    	return crc;
    }
    подробности в описании протокола ОВЕН.

  3. #3

    Thumbs up

    Спасибо большое.

    Теперь работает!

  4. #4
    незарегистрированный
    Гость

    По умолчанию

    Цитата Сообщение от Дмитрий Егоренков Посмотреть сообщение
    это пакет в ascii виде с начальным и конечным маркерами: #GVHGRILNMOQK\xD
    после распаковки в двоичный вид получаем 0f 10 b2 57 68 a4, контрольная сумма - 68 a4, рассчитывается по следующему алгоритму:

    Код:
    unsigned short owenCRC16(unsigned char* packet, size_t length)
    {
    	size_t i, j;
    	unsigned short crc;
    
    	assert(packet);
    
    	crc = 0;
    	for (i = 0; i < length; ++i)
    	{
    		unsigned char b = packet[i];
    		for (j = 0; j < 8; ++j, b <<= 1)
    		{
    			if ((b ^ (crc >> 8)) & 0x80)
    			{
    				crc <<= 1;
    				crc ^= 0x8F57;
    			}
    			else
    				crc <<= 1;
    		}
    	}
    	return crc;
    }
    подробности в описании протокола ОВЕН.
    Подобная проблема. Смотрел протокол но мало что понял.
    В СИ я полный дуб, пробую силы на Делфи. Помогите пожалуйста, приведите пример на Делфи, или словами опишите алгоритм. Спасибо.

  5. #5

    По умолчанию

    в дельфи я полный дуб, и вам на него время тратить не советую.

    но если вы настаиваете, замените операторы >>, <<, ^, & на shr, shl, xor, and соответственно.

  6. #6
    незарегистрированный
    Гость

    Smile

    Цитата Сообщение от Дмитрий Егоренков Посмотреть сообщение
    в дельфи я полный дуб, и вам на него время тратить не советую.

    но если вы настаиваете, замените операторы >>, <<, ^, & на shr, shl, xor, and соответственно.
    А говорите дуб... http://www.owen.ru/forum/images/icons/icon7.gif
    Smile
    Спасибо, попробую

  7. #7

    По умолчанию

    Контрольная сумма!
    Из приведеннова в форуме примера 23.08.2007, 14:34 помогите разобраться !
    #GVHGRILNMOQK\xD после отбрасывания маркеров начала и конца кадра и перевода в двоичный код получилось:
    00001111 0001000 10110010 01010111 01101000 10100100
    Как считалась контрольная сумма? Объясните подробней с примером типа
    00001111 + 0001000 + 10110010 01010111
    На «С++» примеры и ссылки на протокол приводить не стоит! лучше на пальцах так понятней
    Заранее благодарен!

  8. #8

    По умолчанию

    вы меня извините, но на расчет crc у меня пальцев не хватит. алгоритм на с в этой ветке приведен. если вас интересует математическая основа, ее несложно найти в интернете.

    если коротко, число состоящее из всех битов пакета делится на выбранный полином. crc - остаток от деления.

  9. #9
    незарегистрированный
    Гость

    По умолчанию контрольная сумма для ТРМ138

    Попоробовал посчитать КС по алгоритму Дмитрия Егоренкова для такого запроса:
    GGHIONOKGGGGRVSM получил 2e77, а на самом деле как видите bfc6.
    В чем дело?

  10. #10

    По умолчанию

    Цитата Сообщение от незарегистрированный Посмотреть сообщение
    получил 2e77, а на самом деле как видите bfc6.
    В чем дело?
    не знаю. у меня получается bfc6.

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •