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

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

  1. #1

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

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

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

    По умолчанию

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

  3. #3

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от Одесса Посмотреть сообщение
    Пробовал с временными фокусами. Все равно информация в строке сдвинута. Если предварительно посчитать количество
    байтов ответа,могу поймать последний байт,но не могу же я для каждой команды это просчитывать.
    По адресу устройства находите равный ему первый байт, по первому байту находите команду и длину посылки, по ней находите 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
    Адрес
    Северодвинск
    Сообщений
    340

    По умолчанию

    Цитата Сообщение от Одесса Посмотреть сообщение
    Поясняю боллее конкретно. Выдаю команду 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
    Пользователь
    Регистрация
    27.11.2011
    Адрес
    Краснодар
    Сообщений
    7,251

    По умолчанию

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

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

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

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

    По умолчанию

    Цитата Сообщение от Одесса Посмотреть сообщение
    Выдаю команду 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) Непонятно, чем знание конца полезнее знания начала.

  9. #9

    По умолчанию

    Цитата Сообщение от VaBo Посмотреть сообщение
    Разве такое возможно?
    Байты с прибора Овен приходят в правильной последовательности. Но я сторонним прибором их отловить не могу,так не знаю от чего синхронизироваться.

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

    По умолчанию

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

Страница 1 из 10 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 в разделе Эксплуатация
    Ответов: 26
    Последнее сообщение: 24.03.2011, 14:41
  5. прошу помощи и совета. трм 138
    от Nikita13 в разделе Подбор Оборудования
    Ответов: 2
    Последнее сообщение: 24.03.2011, 09:41

Ваши права

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