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

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

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

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

    По умолчанию

    Цитата Сообщение от rwg Посмотреть сообщение
    Вам надо понять, где что в буфере? Начало пакета в этом примере 10 03 (или при ошибке 10 83) Непонятно, чем знание конца полезнее знания начала.
    Программными средствами я могу контролировать любой байт залетающий в буфер. Допустим могу отловить 1 адресный байт
    и по этому событию могу прочитать буфер. Но толку от этого не будет,потому что буфер будет пуст,так туда ещё ничего не успело
    залететь. Если бы этот адресный байт был последним,то я бы отловив этот байт ,и по этому событию прочитав буфер, увидил бы
    Все данные,где последним был бы адресный байт.

  2. #2

    По умолчанию

    Все проблему решил костылем. Обработал принятую строку следующим образом. Нашел в строке адресный байт и его индекс.
    путем перебора. Не очень сложными программными манипуляциями вырезал адресный байт с байтами следующими за ним до

    конца строки. И поставил этот байтовый блок в начало строки. Понимаю,что это не лучший метод решения,но лучшего не знаю.

    Спасибо тему закрываю.

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

    По умолчанию

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

  4. #4

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от Одесса Посмотреть сообщение
    Я согласен с Вами,что рыть нужно в направлении указанном Вами,что и делаю в настоя
    щий момент.
    а там посмотреть как реализован протокол в modbus.lib и взять из него стоящие моменты, например очистка буфера...
    ЗЫ jamod еще есть в сырцах
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  6. #6
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,271

    По умолчанию

    Цитата Сообщение от rwg Посмотреть сообщение
    А что Вам мешает отловить сперва адресный байт, потом байт с командой, потом байты CRC, разобрать весь пакет на лету? Или проделать то же самое, набрав в буфер все принятые байты за время до следующего запроса?
    Автору темы ничего не мешает заниматся этим онанизмом. Он даже считает что у него что-то получается.
    Но для RTU это в принципе бред. В момент перехода мастера к чтению ответа в приемном буфере пусто (или мусор от помех) т.к. слейв еще принимает запрос или отбивает тайм-маркер а не генерит чего-либо. И если первый же байт не нужный адрес, можно, нет, вру, не можно, а обязательно нужно весь последующий кусок до самого тайм-маркера отправлять в мусор.

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

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Автору темы ничего не мешает заниматся этим онанизмом. Он даже считает что у него что-то получается.
    Но для RTU это в принципе бред. В момент перехода мастера к чтению ответа в приемном буфере пусто (или мусор от помех) т.к. слейв еще принимает запрос или отбивает тайм-маркер а не генерит чего-либо. И если первый же байт не нужный адрес, можно, нет, вру, не можно, а обязательно нужно весь последующий кусок до самого тайм-маркера отправлять в мусор.
    Для справки. Если программа написано правильно, в момент перехода мастера к чтению ответа в приемном буфере либо лежит ответ, либо сообщение об ошибке. Мастеру при этом даже не обязательно ждать таймаута конца передачи. В остальных случаях мастеру незачем переходить к чтению.
    Последний раз редактировалось rwg; 15.09.2018 в 19:08.

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

    По умолчанию

    Цитата Сообщение от rwg Посмотреть сообщение
    Для справки. Если программа написано правильно, в момент перехода мастера к чтению ответа в приемном буфере либо лежит ответ, либо сообщение об ошибке. Мастеру при этом даже не обязательно ждать таймаута конца передачи. В остальных случаях мастеру незачем переходить к чтению.
    а где, кстати, обозначено что реализуют мастера?
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  9. #9
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,125

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    а где, кстати, обозначено что реализуют мастера?
    Цитата Сообщение от Одесса Посмотреть сообщение
    На Овеновское с. STM по модбас рту подаю команду. Мне не важно,когда прийдет ответ....
    ...............в первой посте
    электронщик до мозга костей и не только

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

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    ...............в первой посте
    ну и кто тут троль?
    Упоминание слова мастер присутствует? Да есть описание работы ведущего и что.

    Ситуация, когда в приемный буфер приходит последовательность запроса модбас но частично меняющая куски запроса (конец с началом), может существовать только когда этот буфер слейва и не корректная работа мастера, который не ждет ответов от слейвов, а каждый цикл шлет запросы
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

Страница 1 из 2 12 ПоследняяПоследняя

Похожие темы

  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

Ваши права

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