Контрольная сумма crc + modbus rtu

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ต.ค. 2024

ความคิดเห็น • 34

  • @aleksanderdragonage5670
    @aleksanderdragonage5670 5 ปีที่แล้ว +5

    Спасибо за видео!!! Все доступно понятно. Буду ждать следующего видео.

  • @ВеселыйСтудент-ъ3й
    @ВеселыйСтудент-ъ3й ปีที่แล้ว +1

    Дополню. При приеме всех данных(включая црц) можно весь этот пакет прогнать по црц алгоритму. И если в результате вычисления функция црц вернет 0, то это нам будет говорить о том, что пакет пришел целым. И его уже можно обрабатьвать на свое усмотрение.

  • @деншибаев-у5ю
    @деншибаев-у5ю 5 ปีที่แล้ว +2

    Спасибо за труд. Отличная подача материала в меру просто в меру сложно ничего лишнего.

  • @JurasskParkChannel
    @JurasskParkChannel 5 ปีที่แล้ว +11

    Ну вот... Я думал, хоть здесь расскажут простым языком как всё происходит. :) Без обид, но для новичка данное видео выглядит как "вот код, он работает, видите я посчитал его, и на сайте проверил. О! Сошлось. Значит код работает. Используйте его". А в жизни, когда я изучал modbus для меня было проблемой понять как его вычислять, так и не понял и начал искать исходники с уже готовым вариантом. А учитывая, что каждый пишет на своем языке, то этот пример не всегда подходит. :)

    • @АлександрПисанец
      @АлександрПисанец  5 ปีที่แล้ว +4

      Вы представляете сколько нужно потратить времени, на детальное объяснение, я к этому не готов. Я и так трачу уйму времени на столь мало востребованную тематику.

    • @f33net
      @f33net 5 ปีที่แล้ว +2

      А поискать "теория циклической контрольной суммы" не пробовали? :)

    • @JurasskParkChannel
      @JurasskParkChannel 5 ปีที่แล้ว +2

      f33net для этого надо знать это название ) я его не знал )

    • @f33net
      @f33net 5 ปีที่แล้ว +1

      @@JurasskParkChannel яндекс всё знает - спрашивайте чаще...

    • @JurasskParkChannel
      @JurasskParkChannel 5 ปีที่แล้ว +1

      f33net Яндекс знает всё - это не оспоримо, но как составить запрос не зная этой темы и тем более слов "теория контроля циклической суммы"? Вам сверху озарение даёт такую информацию? Думаю вряд-ли. Для этого нужно, чтобы ее кто-то вам сообщил, например, учитель или книга. )

  • @sashahfa3480
    @sashahfa3480 5 ปีที่แล้ว +6

    Очень познавательно. Оформление шикарное. Но когда же дальше?

  • @ybpvin
    @ybpvin 5 ปีที่แล้ว +2

    Спасибо! Очень нужное видео. Лайк.

  • @Nakojher
    @Nakojher 4 ปีที่แล้ว +3

    Если в обработку включить и КС, то на выходе должен быть ноль. Именно таким образом и проверяется обычно crc.

  • @NoName-ut9wd
    @NoName-ut9wd 3 ปีที่แล้ว

    sasha brat davomi ham bo'lsin !!! продолжай брат спасибо за видео

  • @user_user_320
    @user_user_320 5 ปีที่แล้ว +2

    Перфекто! Спасибо за видео!)

  • @simmmr.9040
    @simmmr.9040 หลายเดือนก่อน

    Принимающему устройству в данном случае вовсе необязательно работать с контрольной суммой отдельно - достаточно посчитать контрольную сумму всех принятых данных (включая контрольную сумму) - результат должен быть равен нулю. Ну и выкладывать десяток строк кода в архиве в doc-файле - это нечто даже для 2018 года.
    int crc_chk ( unsigned char* data, unsigned char length ) {
    register unsigned int j, reg_crc = 0xFFFF;
    while (length--) {
    reg_crc ^= *data++;
    for (j = 0; j < 8; j++)
    reg_crc = reg_crc & 0x01 ? (reg_crc >> 1) ^ 0xA001 : reg_crc >> 1;
    }
    return reg_crc;
    }

  • @sergyakim8131
    @sergyakim8131 5 ปีที่แล้ว

    Спасибо. За три коротких видео понятно про RTU.

  • @СергейПростяков-г9с
    @СергейПростяков-г9с 5 ปีที่แล้ว +1

    Очень бы хотелось в таком же ключе разобрать работу с CAN шиной

  • @ИванСидоров-к9м
    @ИванСидоров-к9м 5 ปีที่แล้ว +2

    А если рассчитывать со всеми байтами, то при правильной CRC ответом будет 0. Во всяком случае у меня на ассемблере функция так работает. Попробуйте, правда это будет чуть дольше, чем простое дальнейшее сравнение, но иногда много проще.

    • @ОПОРЭЛ
      @ОПОРЭЛ 3 ปีที่แล้ว

      Здравствуйте Иван.
      Не поделитесь функцией на Ассемблере? С уважением, Андрей.

    • @ИванСидоров-к9м
      @ИванСидоров-к9м 3 ปีที่แล้ว

      @@ОПОРЭЛ пишите, куда кинуть.

  • @Bvv4529
    @Bvv4529 5 ปีที่แล้ว +1

    Здравствуйте. Очень нравятся ваши видео, я по ним много научился и собрал интересного. Ваши "пособия программирования AVR на C" были мне настолько полезны, что я тепер ставлю лайки под всеми вашими видео, даже если не очень интересно само видео. Очень приятно смотреть и доходчиво обьясняете. Но вот мне понадобилось поработать с микросхемой по шине I2C, но я не совсем понимаю как работать с регистрами другой микросхемы через данную шину. Планируется ли видео по етому поводу?
    А так спасибо за ваши труды. Успехов и процветания :)

    • @АлександрПисанец
      @АлександрПисанец  5 ปีที่แล้ว

      Здравствуйте. Честно говоря нет желания эту тему подымать, очень много нужно самому вспоминать чтобы все доходчиво объяснить. Вам в помощь может стать книга
      ' микрoконтроллеры семейства mega '

  • @alexal2154
    @alexal2154 5 ปีที่แล้ว +1

    Здравствуйте Александр,
    Спасибо большое за Ваш труд,
    Если есть возможность, можете
    Рассказать о CAN_BUS. И MCP2515.
    С уважением Alexander.

  • @РЭА-э2х
    @РЭА-э2х 5 ปีที่แล้ว +1

    супер

  • @elliottalderson4692
    @elliottalderson4692 ปีที่แล้ว

    А вычисление КС с таблицей, как делается? Вроде с ней быстрее работать должно.

  • @AAAAAA-ny4ib
    @AAAAAA-ny4ib ปีที่แล้ว

    Почему по мадбасу в начале отправляется 00 ...?

  • @АнонимАнаномный
    @АнонимАнаномный 2 ปีที่แล้ว +1

    тоесть crc это не просто сумма полученных слов? wtf?

  • @ЕвгенийТ-к9з
    @ЕвгенийТ-к9з 5 ปีที่แล้ว

    Для примера рассчитаем контрольную сумму нескольких 16-битных слов: 0x398a, 0xf802, 0x14b2, 0xc281. Находим их сумму с поразрядным дополнением.
    0x398a + 0xf802 = 0x1318c → 0x318d
    0x318d + 0x14b2 = 0x0463f → 0x463f
    0x463f + 0xc281 = 0x108c0 → 0x08c1
    Теперь находим поразрядное дополнение до единицы полученного результата:
    0x08c1 = 0000 1000 1100 0001 → 1111 0111 0011 1110 = 0xf73e или, иначе - 0xffff − 0x08c1 = 0xf73e. Это и есть искомая контрольная сумма.

    • @maddocrusmad464
      @maddocrusmad464 4 ปีที่แล้ว

      Что такое поразрядное дополнение, XOR?

  • @imm2891
    @imm2891 6 หลายเดือนก่อน

    Весь цикл уроков отлично объяснены и понятны, кроме данного. Не хватает примеров и поэтому каша в голове и как итог, нулевое понимание.

    • @simmmr.9040
      @simmmr.9040 หลายเดือนก่อน

      А чего там собственно понимать? Дан набор байт, функция считает контрольную сумму, кладёт в отклик, принимающая сторона получает переданные байты, считает контрольную сумму по тому же алгоритму самостоятельно и сравнивает с полученной - теоретические основы, заложенные в работу чёрного ящика - функции подсчёта контрольной суммы - для того, чтобы Вы просто сравнили два числа - неважны, берёте и пользуетесь, если интересует теория (из каких соображений выбрано «магическое число» 0xA001? какова вероятность совпадения контрольной суммы при искажении более одного бита информации во входном потоке?) разумно совсем не в роликах про ModBus (ModBus - всего лишь частный случай применения теории).