Страница 1 из 6 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 96

Тема: Прошу совета

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

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

    По умолчанию Прошу совета

    На Овеновское ВУ с. STM по модбас рту подаю команду. Мне не важно,когда прийдет ответ. Мне важно знать,ког
    да байты ответа полностью заскочат в буфер STM. Так же могу контролировать каждый входящий байт.Мне
    необходимо по приходу последнего байта вытянуть ответ из буфера, тем самым очистив его. С ответом по DCON
    и ОВЕН. протоколам проблем нет, так как ответы заканчиваются маркером OD. Не зная последнего байта я в бу
    Фере ловлю ответ сдвинутый как попало,т.е байты ответа правильные ,но начало строки ответа
    может быть в середине строки и вообще где угодно.

  2. #2
    Пользователь
    Регистрация
    21.12.2011
    Адрес
    Северодвинск
    Сообщений
    438

    По умолчанию

    А по таймауту длительностью в полтора байта при передаче ответа никак? И кстати, вы должны знать, сколько слов в ответе, начало ответа по перввым двум байтам элементарно определяется.

  3. #3

    По умолчанию

    Цитата Сообщение от VaBo Посмотреть сообщение
    А по таймауту длительностью в полтора байта при передаче ответа никак? И кстати, вы должны знать, сколько слов в ответе, начало ответа по перввым двум байтам элементарно определяется.
    Пробовал с временными фокусами. Все равно информация в строке сдвинута. Если предварительно посчитать количество
    байтов ответа,могу поймать последний байт,но не могу же я для каждой команды это просчитывать.

  4. #4
    Пользователь
    Регистрация
    20.02.2008
    Адрес
    Тверь
    Сообщений
    501

    По умолчанию

    Цитата Сообщение от Одесса Посмотреть сообщение
    Пробовал с временными фокусами. Все равно информация в строке сдвинута. Если предварительно посчитать количество
    байтов ответа,могу поймать последний байт,но не могу же я для каждой команды это просчитывать.
    По адресу устройства находите равный ему первый байт, по первому байту находите команду и длину посылки, по ней находите CRC, если CRC совпало - всё вычислено правильно, иначе ищете другой первый байт.

  5. #5

    По умолчанию

    Цитата Сообщение от rwg Посмотреть сообщение
    По адресу устройства находите равный ему первый байт, по первому байту находите команду и длину посылки, по ней находите CRC, если CRC совпало - всё вычислено правильно, иначе ищете другой первый байт.
    Поясняю боллее конкретно. Выдаю команду 10 03 01 00 00 01 86 АС В ответ должен получить 10 03 02 80 00 25 0Е
    Но получаю 80 00 25 0Е 10 03 02 или 03 02 80 00 25 0Е 10 и тд. Те. байты ответа приходят правильные , но начало
    пакета может начинаться с любого байта .Если бы ответ приходил по декону или овну,проблем бы никаких не было,т.к
    у них в конце пакета служебный символ 0D. Отслеживая входной поток по этому признаку конца я извлекаю данные из
    буфера,этим самым очищаю его. С модбасом такой фокус не проходит. Ваши рекомендации справедливы в том случае,если бы адрес ,который Вы советуете отлавливать и от него плясать,стоял последним в сообщении,а не первым.
    Если я последую Вашему совету и по приходу адреса,буду читать буфер, то кроме байта с этим адресом там ничего не
    будет.
    Решений типа обработать пришедшую строку,те ее упорядочить-не предлагать.Это я сам
    знаю.
    Последний раз редактировалось Одесса; 14.09.2018 в 08:21.

  6. #6
    Пользователь
    Регистрация
    21.12.2011
    Адрес
    Северодвинск
    Сообщений
    438

    По умолчанию

    Цитата Сообщение от Одесса Посмотреть сообщение
    Поясняю боллее конкретно. Выдаю команду 10 03 01 00 00 01 86 АС В ответ должен получить 10 03 02 80 00 25 0Е
    Но получаю 80 00 25 0Е 10 03 02 или 03 02 80 00 25 0Е 10 и тд. Те. байты ответа приходят правильные , но начало
    пакета может начинаться с любого байта.
    Разве такое возможно?

  7. #7
    Пользователь
    Регистрация
    20.02.2008
    Адрес
    Тверь
    Сообщений
    501

    По умолчанию

    Цитата Сообщение от Одесса Посмотреть сообщение
    Выдаю команду 10 03 01 00 00 01 86 АС В ответ должен получить 10 03 02 80 00 25 0Е
    Но получаю 80 00 25 0Е 10 03 02 или 03 02 80 00 25 0Е 10 и тд. Те. байты ответа приходят правильные , но начало
    пакета может начинаться с любого байта .
    Вам надо понять, где что в буфере? Начало пакета в этом примере 10 03 (или при ошибке 10 83) Непонятно, чем знание конца полезнее знания начала.

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

    По умолчанию

    VaBo товарищ CRC считает в онлайн калькуляторе, ему впадлу написать 10 строк кода, чтобы она считалась сама по себе....

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

    Поправка - не обработав один ответ посылает очередной запрос...

  9. #9

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    VaBo товарищ CRC считает в онлайн калькуляторе, ему впадлу написать 10 строк кода, чтобы она считалась сама по себе....

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

    Поправка - не обработав один ответ посылает очередной запрос...
    Мелки Вам неоднократно делали замечания по поводу Вашей невнимательности. Если Вы и дальше будете делать выводы
    космических масштабов не вникнув в суть вопроса это вызовет не только недоумение но даже смех. У меня есть предположение
    что это даже не невнимательность,а элементарная лень прочитать до конца пост и вникнуть в суть проблемы. В этом ответе я легко
    и аргументированно докажу правоту вышеизложенных слов . И в каждом другом посте сделаю то же самое.
    1. Отвечаю на 1 абзц Вашего ответа. Товарищу не впадлу написать 10 строк кода по вычислению СRC. Товарищ написал этот совет
    не программистам,а слесарям-киповцам,для которых слово CRC является матерным ругательством и которым я посоветовал использовать калькулятор для его вычисления.
    2. По второму вопросу насчёт датского королевства. В каком конкретно предложении и какого поста вы видили ,чтобы я посылал
    запрос к устройству не дождавшись ответа по первому запросу? Вы сами родили такое предположение. И в в своей нелепой
    фантазии обвиняете меня.

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

    По умолчанию

    Одесса синхронизироваться необходимо от окончания запроса. в RTU слейв устройство не отвечает когда попало, а только после определения, что запрос прислан именно ему и что CRC запроса соответствует пакету. иначе слейв просто промолчит.
    Послали запрос - ждите ответа.
    з.ы. мне что-то кажется, что вы в многопоточном режиме даже опрос прибора сделали в STM, а это неправильно.
    Последний раз редактировалось melky; 14.09.2018 в 10:01.

Страница 1 из 6 123 ... ПоследняяПоследняя

Похожие темы

  1. Прошу совета...
    от Павел Братковский в разделе Трёп (Курилка)
    Ответов: 21
    Последнее сообщение: 28.02.2017, 10:07
  2. Прошу совета по ПЛК
    от curbat в разделе ПЛК1хх
    Ответов: 6
    Последнее сообщение: 16.07.2015, 08:24
  3. Прошу совета
    от RA9YSS в разделе Наши проекты
    Ответов: 4
    Последнее сообщение: 14.10.2014, 17:39
  4. Прошу помощи и совета. трм 138
    от Nikita13 в разделе Эксплуатация
    Ответов: 12
    Последнее сообщение: 24.03.2011, 12:13
  5. прошу помощи и совета. трм 138
    от Nikita13 в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 24.03.2011, 09:41

Ваши права

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