Ошибка CRC

Включены старые модели, снятые с производства:
Меркурий 200.02, 203.1
Ответить
Аватара пользователя
zhpaul
Сообщения: 3
Зарегистрирован: 26 май 2015, 20:18

Ошибка CRC

Сообщение zhpaul »

Доброго времени суток.
Может кто подскажет, написал процедуру подсчета CRC, и при считывании данных с прибора процентов 5 ответов приходят с CRC не совпадающей с моей посчитанной.

В примере ниже видно ответ прибора с его же контрольной суммой, строкой ниже две CRC, первая - пришедшая в ответе прибора, вторая - посчитанная мной.

Код: Выделить всё

B1 08 05 00 26 05 15 1E 00 00 FF FF 00 00 FF FF 0E 22
220E 220E
B1 08 05 30 26 05 15 1E 00 00 FF FF 00 00 FF FF 4F D2
D24F D24F
B1 08 06 00 26 05 15 1E 00 00 FF FF 00 00 FF FF 0A 21
210A 210D
CRC Error
B1 08 06 30 26 05 15 1E 00 00 FF FF 00 00 FF FF 4C D1
D14C D14C
B1 08 07 00 26 05 15 1E 00 00 FF FF 00 00 FF FF 0A E0
E00A E00D
CRC Error
B1 08 07 30 26 05 15 1E 00 00 FF FF 00 00 FF FF 4C 10
104C 104C
B1 08 08 00 26 05 15 1E 00 00 FF FF 00 00 FF FF 02 EF
EF02 EF02
B1 08 08 30 26 05 15 1E 00 00 FF FF 00 00 FF FF 43 1F
1F43 1F43
Помогите, пожалуйста, понять, каким же образом тогда считать эту CRC?
Мой код на С -

Код: Выделить всё

unsigned crc16(unsigned char *buf, unsigned len)
{
    int i;
    unsigned crc = 0xFFFF;
    while (len--)
    {
        crc ^= *buf++;
        for (i = 8; i--;)
        {
            int f = crc & 1;
            crc >>= 1;
            if (f) crc ^= 0xA001;
        }
    }
    return crc;
}
Аватара пользователя
zhpaul
Сообщения: 3
Зарегистрирован: 26 май 2015, 20:18

Re: Ошибка CRC

Сообщение zhpaul »

Хм.... месяц пост одобряли :) Ошибку уже нашел сам.
Проблема была в настройках СОМ порта, в флагах INLCR и IGNCR. В результате в приходящих байтах 0х0D заменялся на 0х0А...
Аватара пользователя
Sergey
Администратор
Администратор
Сообщения: 1007
Зарегистрирован: 22 янв 2013, 14:01

Re: Ошибка CRC

Сообщение Sergey »

:) одобрение же дело такое... ответственное ...
Аватара пользователя
jam228
Сообщения: 34
Зарегистрирован: 02 фев 2015, 10:26

Re: Ошибка CRC

Сообщение jam228 »

А может кто знает, почему при опросе счетчиков вылезает сообщение "ошибка CRC"?
Аватара пользователя
Sergey
Администратор
Администратор
Сообщения: 1007
Зарегистрирован: 22 янв 2013, 14:01

Re: Ошибка CRC

Сообщение Sergey »

Распространенной причиной является задержка при передаче пакета, программа не дожидается окончания пакета и считает что передача законцена, проверяет целостность пакета и заключает что целостность нарушена о чем и свидетельствует сообщение о CRC. Если в этом случае увеличить множитель и сам системный тайм-аут, то качество связи может улучшиться, программа будет ждать дольше.
Ответить

Вернуться в «Общие вопрос по всем моделям, пломбирование, подключение»