Показано с 1 по 10 из 47

Тема: Modbus RTU CRC16 полином A001h

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Exclamation

    Сейчас проблема что в ответе ничего нет, всё по 0. Порт правильный на контрольном 485 преобразователе индикатор мигает.
    Проверил полярность, перебирал адреса и регистры, ответа в буфере нет. Единственное что смущает в описании протокола 6 байт а в примере 8. И ещё в описании посылки адрес состоит из 2 байт. Не пойму, ведь его можно задать одним байтом.
    Программа без расчёта CRC.
    Устройство просто не отвечает. Преобразователем на шине через Serial Port Monitor отправил число, Codesys увидел.

    По CRC начинаю что-то подозревать. Получается производитель зашил программную обработку контрольной суммы в МК. Алгоритм вычисления по своему коду. Достаточно лишь раз её вычислить и вставлять в код запроса.

    #define __swap_nibbles(x) ((x>>4)|(x<<4))
    unsigned short crc16Calc(unsigned char *buffer, int n)
    {
    unsigned int i;
    unsigned char crc1,crc2,tmp;
    crc1 = crc2 = 0xff;
    for(i = 0;i < n;i++)
    {
    crc2^=buffer[i];

    tmp = __swap_nibbles(crc2)&0x0f^crc2;
    crc2 = crc1;
    crc1 = tmp;
    tmp = __swap_nibbles(tmp)&0xf0;
    crc2 ^= tmp;
    tmp = (tmp<<1)^crc1;
    crc1 >>= 3;
    crc2 = crc2^crc1;
    crc1 = tmp;
    }
    return crc2+(crc1<<8);
    }

    Так вот эта CRC вычисляется от всего пакета? всегда будет разной? Или постоянные числа на последних двух байтах можно вставить и при ответе CRC будет постоянной?
    Смотрю в код, кто-то же писал со знанием дела. Сам не пойму как его интерпретировать. Вставляю в онлайн компилятор C, ошибки есть.
    https://www.onlinegdb.com/online_csharp_compiler

    main.cs(10,0): error CS1525: Unexpected symbol `unsigned' (какой-то неожиданный символ)
    Compilation failed: 2 error(s), 0 warnings
    Вложения Вложения
    Последний раз редактировалось Павел_Хабаровск; 20.05.2021 в 07:30.

Ваши права

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