Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя
Показано с 31 по 40 из 47

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

  1. #31
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от Павел_Хабаровск Посмотреть сообщение
    Готов за вознаграждение поручить создать пример для опроса устройства (вообще там 15шт)
    https://owen.ru/forum/showthread.php?t=13584 не благодарите
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

  2. #32

    По умолчанию

    Цитата Сообщение от Павел_Хабаровск Посмотреть сообщение
    Спасибо что не оставили без внимания...
    Готов за вознаграждение поручить создать пример для опроса устройства (вообще там 15шт)
    Ребята! Мне просто не хватает знаний для программирования данного момента. Ранее не сталкивался.
    Всю остальную водоподготовку сделал, там стандартные овеновские МВВ.
    С этим протоколом застрял.
    Учимся по ходу движения. В данном случае нужен учитель с указкой.
    15 плат по 7вх. 4 вых. Хотя бы на одной пример решить.
    Зачем тебе считать КС если modbus.lib это сама делает. Тебе надо убедиться, что твое устройство работает по протоколу Modbus RTU.

  3. #33

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    )) ему ж на st надо. Сказали уже - modbus.lib, хоть за ради только crc
    Перевести код с C на ST можно без проблем.

  4. #34
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Судя по коду расчета там CRC не Modbus

  5. #35

    По умолчанию

    У этого устройства нестандартный протокол. modbus.lib тут не поможет. Надо пользоваться SysLibCom.
    Последний раз редактировалось Newcomer; 20.05.2021 в 13:41.

  6. #36
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    10,583

    По умолчанию

    Вот на C# код для расчета CRC Modbus, видно что хоть и на C или на чем там у вас, отличается

    Код:
    public static ushort CRC16_Modbus(byte[] msg)
            {
                const ushort polinom = 0xa001;
                ushort code = 0xffff;
    
                for (int i = 0, size = msg.Length; i < size; ++i)
                {
                    code ^= (ushort)(msg[i] << 8);
    
                    for (uint j = 0; j < 8; ++j)
                    {
                        code >>= 1;
                        if ((code & 0x01) != 0) code ^= polinom;
                    }
                }
                return code;
            }

  7. #37

    По умолчанию

    В любом случае, благодарю.
    Зачем тебе считать КС если modbus.lib это сама делает. Тебе надо убедиться, что твое устройство работает по протоколу Modbus RTU.
    Согласен про modbus.lib. А вот чтобы убедится что устройство работает надо запрос сделать с КС (верно?)(у меня их два на столе).
    Capzap, товарищ! (Обратился бы по имени, так всё-таки правильней). Я понял ваш посыл - добиваться своим умом и трудом. Каждый должен быть на своём месте и оттачивать мастерство. Честно, того же мнения. В этом и есть смысл развития...
    Эх, сейчас бы машину декомпрессии времени, разобрался бы детальней с задачей.
    Ну да ладно. Ухожу на повторный круг образования. По результату сообщу.

  8. #38

    По умолчанию

    Цитата Сообщение от Павел_Хабаровск Посмотреть сообщение
    В любом случае, благодарю.

    Согласен про modbus.lib. А вот чтобы убедится что устройство работает надо запрос сделать с КС (верно?)(у меня их два на столе).
    Capzap, товарищ! (Обратился бы по имени, так всё-таки правильней). Я понял ваш посыл - добиваться своим умом и трудом. Каждый должен быть на своём месте и оттачивать мастерство. Честно, того же мнения. В этом и есть смысл развития...
    Эх, сейчас бы машину декомпрессии времени, разобрался бы детальней с задачей.
    Ну да ладно. Ухожу на повторный круг образования. По результату сообщу.
    modbus.lib тебе не нужна. Надо пользоваться SysLibCom и самому считать и отправлять КС. При приеме пакета-отклика то же надо будет считать КС.
    Последний раз редактировалось Newcomer; 20.05.2021 в 14:16.

  9. #39

    По умолчанию

    Продолжаем разбор.
    Как правильно получить контрольную сумму, для модбас? Тренируюсь на МВА.
    Скриншот 21-05-2021 174202.jpg

    Думал прогнать через проверку CRC и добавить недостающие байты, но ноля не получается.
    Скриншот 21-05-2021 174401.jpg

    Добавил байты
    Скриншот 21-05-2021 174908_2.jpg

    Нет ноля.
    Скриншот 21-05-2021 174939_2.jpg

    Обыкновенно CRC_GEN вычисляет контрольную сумму, которая присоединеняется к оригинальному сообщению. Если теперь снова вычислить контрольную сумму сообщения вместе с присоединенной к нему контрольной суммой, то в результате получится 0.
    Последний раз редактировалось Павел_Хабаровск; 21.05.2021 в 11:36.

  10. #40
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,224

    По умолчанию

    Цитата Сообщение от Павел_Хабаровск Посмотреть сообщение
    Продолжаем разбор.
    Как правильно получить контрольную сумму, для модбас? Тренируюсь на МВА.
    Вложение 55219

    Думал прогнать через проверку CRC и добавить недостающие байты, но ноля не получается.
    Вложение 55220

    Добавил байты
    Вложение 55221

    Нет ноля.
    Вложение 55222
    ссылку можно на документ, где написано что контрольная сумма должна быть равна нулю
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

Страница 4 из 5 ПерваяПервая ... 2345 ПоследняяПоследняя

Ваши права

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