Страница 5 из 10 ПерваяПервая ... 34567 ... ПоследняяПоследняя
Показано с 41 по 50 из 96

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

  1. #41
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Нерезиновая, ЮЗАО
    Сообщений
    2,489

    По умолчанию

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

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

    По умолчанию

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

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

    По умолчанию

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

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

    По умолчанию

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

  5. #45
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Нерезиновая, ЮЗАО
    Сообщений
    2,489

    По умолчанию

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

    И это все - если вы сами побайтно пихаете в порт, а не из ЯВУ делает аналог неблокируемого "syscomwrite". В противном случае мастеру нужно учесть :
    1. блуждание данных в собственных системных недрах
    2. время физического ухода данных в линию
    3. ну и тайм-маркер слейва

    Ну и раз пошла такая ... детализация

    4. время разбора пакета слейвом
    5. время формирования ответа слейвом
    6. блуждание данных в собственных системных недрах слева
    7. время в пути до мастера первого (старт) бита
    8. время заскакивания в мастера всех остальных битов сетевого байта
    9. время обслуживания системой прерывания по приходу первого байт на мастере
    10. задержка обращения пользователя к чтению данных из системы чтоб увидеть хотя бы первый пришедший байт для рестарта отсчета таймаута и начале отсчета тайм-маркера (который, в свою очередь будет рестартовать после каждого чтения из системы при условии наличия там данных).

    В зависимости от релиза некоторые пункты могут слится в экстазе. Но все всегда будут.

    Цитата Сообщение от rwg Посмотреть сообщение
    .....в момент перехода мастера к чтению ответа в приемном буфере либо лежит ответ, либо сообщение об ошибке....В остальных случаях мастеру незачем переходить к чтению.
    Ну и как мастер вообще определит читать - пора ? Событие ? Так оно ж формируется из биб-ки/системы. Но при этом остается такой же программой.
    И вот тут-то и переходим к ключевой фразе :
    Цитата Сообщение от rwg Посмотреть сообщение
    Если программа написано правильно.... .
    +100500.
    ТС'у это и предлагал выяснить. Он предложил какие-то цветные пятна несущие кокой-то (по его словам) тайный смысл (видимо в расширенном сознании) и стал измерять ширину распальцовки. Обычное дело.
    Последний раз редактировалось Валенок; 15.09.2018 в 20:29.

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

    По умолчанию

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

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

  7. #47

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Автору темы ничего не мешает заниматся этим онанизмом. Он даже считает что у него что-то получается.
    Но для RTU это в принципе бред. В момент перехода мастера к чтению ответа в приемном буфере пусто (или мусор от помех) т.к. слейв еще принимает запрос или отбивает тайм-маркер а не генерит чего-либо. И если первый же байт не нужный адрес, можно, нет, вру, не можно, а обязательно нужно весь последующий кусок до самого тайм-маркера отправлять в мусор.
    УВ. Валенок. Заметьте,после замечания Ровки обращаюсь к Вам на Вы.Хочу успокоить всех форумчан и Вас в том числе.Решение
    Найдено. К сожалению не на этом форуме. И Ваши рассуждения програмно-филоссовские с применением специфических терминов
    типа онанизма на техническм форуме, не имели успеха. Так ,что относитесь к таким терминам с осторожностью. В решение этого
    вопроса хочу поблагадарить сапзапа и rwq и Юрия,которые поняли суть проблемы. Остальные не поняв сути давали советы косми
    веских масштабов ,не вникая в суть,в том числе и Вы. Теперь о том как эту проблему я решил по советам 3 людей которых я перечи
    слил. Суть проблемы я узнал от Юрия. Направление решения я узнл от RWG. Путь поиска от сапзапа. Учитывая это я обратился на
    американский форум ,благо с англицким дружу. И первый америкос для которого программирование есть хобби,а не специальность ответил мне четко на решение моей проблемы.Он в отличии от валенка понял суть проблемы. Зовут его RIs.
    Он сказал мне,что я не вовремя читаю буфер. И почитав это я получаю только часть буфера,не дочитав его до конца. И этот конец
    ,который я недочитал приклеивается в начало. И посоветовал мне следуещее. Поймать мне первый байт (адресный,как советовал
    rwq) и по нему запустить таймер на время соответствующее времени прохождения одного байта при указанной скорости) и при
    Этом следить за состоянием этого таймера. Поскольку каждый новый байт поступающий в буфер перезапускает этот таймер,то
    Таймер то он не сбросится до конца посылки полного пакета ответа от клиента модбаса.. Програмно отслеживая сброс таймера,
    Я могу сделать вывод,что пакет ответа лежит в буфере. И только с этого момента я его могу читать .
    Логику америкоса я проверил. И получил правильное расположение байтов ответа от слэйва. Всем спасибо. Особенно сапзапу,
    Юрию и RGW.

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

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Справка от кого ?
    Если слейв реализовал машину времени - да. Если не реализовал, то :
    Мастер переходит в чтению после отправки последнего байта.
    Не обязательно. В моих программах Мастер отдаёт блок данных обработчику передачи по СОМ-порту, озадачивает обработчиков приёма по СОМ-порту и таймаутов и отключается. А в нужное время, получив сообщение от обработчика приёма или обработчика таймаута, возвращается к своей работе.

  9. #49

    По умолчанию

    Хочу добавить ,что поиск сырцов,рекомендованных сапзапом не увенчался успехом.
    На форуме ардуинщиков по проблеме модбаса нашел решение,но оно меня не устроило.
    Нашел решение на Расбери,которое мне понравилось. Но до конкретного его анализа не дошел.
    Так,как применил решение америкоса.

  10. #50
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Нерезиновая, ЮЗАО
    Сообщений
    2,489

    По умолчанию

    Заметьте,после замечания Ровки обращаюсь к Вам на Вы.
    У меня рога от "ты" выросли ? Можете даже называть меня грязным подонком купить пару валенков и тыкать в них иголки ))

    Он сказал мне,что я не вовремя читаю буфер. И почитав это я получаю только часть буфера,не дочитав его до конца
    О-о-о. Прочитав некоторые Ваши посты в других темах даже предположить такой глупости от Вас не мог. А Ris без комплексов - предположил. Ему респект.

    Хотя если б ранее сказали что навел на ответ именно rwg - возможно и дошло б. Потому что именно его (rwg) ход мыслей ясен после п#45. Вышел-зашел, а прошло мсек 10-30. Поэтому и ответик мог образоватся. А то что не дождавшись полного ответа генерите запрос .... многих повеселили думаю.
    http://www.owen.ru/forum/showthread.php?t=29367
    Про тоже практически и там п#2. ТС там не Вы, но Вы ж и там отметились.

    Поймать ... первый бай ... по нему запустить таймер ....каждый новый байт поступающий в буфер перезапускает этот таймер,то ...Таймер то он не сбросится до конца посылки полного пакета ответа от клиента модбаса
    На надцатом посту это стало откровением ? )))))

    PS
    ))
    А Ris не советовал помимо таймера еще и общую текущую длину данных в буфере на предмет превышения максимально возможного размера в RTU и самого буфера проверять ?
    Если нет - то и он в глазах упадет.
    Последний раз редактировалось Валенок; 15.09.2018 в 21:12.

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

Похожие темы

  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

Ваши права

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