|
сниффер ком порта |
|
|
|
Sep 6 2016, 13:56
|
Группа: Участник
Сообщений: 14
Регистрация: 8-08-15
Пользователь №: 87 893

|
Всем доброго дня. Есть сеть устройств, работающих по протоколу модбас через RS485. Необходимо написать перехватчик сообщений для ком порта, способный ловить паузы между сообщениями. Вот как поймать паузы, пока не соображу. Драйвер возвращает пачки по несколько байт, но поймать получается только длинные паузы (между запросами), а вот разделить запрос-ответ пока не могу. Есть программы снифферы, которые как-то реализуют такую возможность. Надо написать свою, в которой данные преобразовать в удобоваримый вид, удобный для отладки работы сети устройств. В винде это наверное тяжело будет сделать, но может есть способ, о котором я пока не знаю.
|
|
|
|
|
 |
Ответов
|
Sep 7 2016, 18:22
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(DASM @ Sep 6 2016, 21:56)  честно говоря я бы такую задачу решал иначе. А именно - сниффер пишется на МК, и отдает пакеты в комп приплюсовывая к ним time stamp Я бы тоже решал по-другому. А именно: с открытия MSDN и прочтения всего, что касается работы с COM-портом. Чего автор как видно не сделал. Иначе он знал бы о функции SetCommTimeouts() WinAPI и многих других полезных. А не строил пустые предположения. Далее: установил-бы ReadIntervalTimeout and ReadTotalTimeoutMultiplier to MAXDWORD and sets ReadTotalTimeoutConstant to a value greater than zero and less than MAXDWORDкак советует MSDN, повысил приоритет принимающего потока, а также прочитал в MSDN про семейство функций QueryPerformanceFrequency()/QueryPerformanceCounter() и понял бы, что даже 95мкс - не есть проблема. Другое дело что всё это лучше делать на железном RS-232 компа, а не USB-COM переходнике, времянки которого сомнительны. Даже и с железным COM-портом и приоритетом потока ==REALTIME возможно будут проблемы из-за работы других драйверов винды (винта, видео и т.п.). Так что возможно лучше вынести такую работу на уровень драйверов. Цитата(Alex_2015 @ Sep 7 2016, 18:42)  Есть в структуре DCB символ XOFCHAR, который позволяет определить конец посылки. Это вообще из другой оперы. Это для software flowcontrol. Цитата(Alex_2015 @ Sep 7 2016, 18:42)  Была мысль алгоритмически ловить конец посылки через подсчёт CRC, но вариант не самый красивый. Хотя должен привести к результату. Лучше откройте наконец-то MSDN, а не занимайтесь ерундой.
|
|
|
|
|
Sep 8 2016, 03:53
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(zltigo @ Sep 8 2016, 03:06)  К чему опрос счетчиков хоть с тактовой процессора, если их НЕЛЬЗЯ со сколь-нибудь детерминированной точностью привязать к событиям UART. ТСу нужно не опрашивать счётчики, а вести лог обмена по каналу UART. Причём с таймштампами точностью до десятков мкс. Ну или хотя-бы видеть, что между двумя соседними байтами X1 и X2 была хоть какая-то пауза, обнаруженная драйвером канала или её не было. Аппаратура UART 16550 позволяет определять наличие паузы, значит и драйвер это должен видеть. А функция SetCommTimeouts(), как следует из её описания, должна позволить получить эту инфу юзеру. Цитата(Alex_2015 @ Sep 8 2016, 07:23)  Читал я MSDN в своё время, когда осваивал программирование ком порта. Но это ни чего не даёт. Когда драйвер захочет вернуть данные пользовательской программе, тогда и вернёт. И совсем не в режиме реального времени. Т.е. - Вы утверждаете что MSDN врёт, говоря, что: Код If an application sets ReadIntervalTimeout and ReadTotalTimeoutMultiplier to MAXDWORD and sets ReadTotalTimeoutConstant to a value greater than zero and less than MAXDWORD, one of the following occurs when the ReadFile function is called: If there are any bytes in the input buffer, ReadFile returns immediately with the bytes in the buffer. If there are no bytes in the input buffer, ReadFile waits until a byte arrives and then returns immediately. Читаем первую строку с "if" и вторую, видим там слово "immediately", думаем. Я почти уверен, что если приоритет вызывающего потока будет ==THREAD_PRIORITY_TIME_CRITICAL, а приоритет процесса ==REALTIME_PRIORITY_CLASS, то как только аппаратура UART зафиксирует, что в FIFO есть символы и с момента приёма последнего из них прошло более 3.5 символьных интервала, так сразу и вернёт управление вызывающему потоку. Возможно даже хватит меньших приоритетов у процесса/потока, главное - превысить приоритеты всех других работающих в системе потоков. И всё конечно зависит ещё от драйвера. Стандартный виндовый драйвер для UART 16550 на сис. шине должен соответствовать требованиям MSDN. Про сторонние драйвера UART, тем более для USB-UART речи нет - они могут только примерно соответствовать MSDN. Но думаю, если устройство, реализующее CDC-класс USB, при отправке данных, выделяет разные кадры ModBus в отдельные пакеты по USB, то и драйвер CDC-класса под виндой также сможет выполнить требования SetCommTimeouts().
|
|
|
|
|
Sep 8 2016, 06:28
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (jcxz @ Sep 8 2016, 06:53)  ТСу нужно не опрашивать счётчики, а вести лог обмена по каналу UART. Причём с таймштампами точностью до десятков мкс. Повторю еще раз - нет никакого смысла в "таймштампами точностью до десятков мкс", если само событие фиксируемое уже "драйвером" совершенно произвольгую задержку и сами события начинают склеиваться в одно уже на уровне FIFO UART. QUOTE Аппаратура UART 16550 позволяет определять наличие паузы... Нет. Только выдает прерывании при заполнении FIFO и при межбайтовой паузе более 4x символов. При этом прием последующих символов продолжается в то же FIFO. QUOTE видим там слово "immediately", думаем. Когда придумаете, где это "immediately" отнормированно в микросекундах и куда денутся байты пришедшие после 3,5 символьного интервала, причем UART будет еще тянуть собственый 4x символьный таймаут до того, как сгенерит прерывание, обязательно сообщите  . QUOTE (k155la3 @ Sep 8 2016, 09:00)  ps - оно еще и неплохо увязывается с RS485. Ослинные уши пакетного а НЕ БАЙТОВОГО интерфейса USB будут торчать по любому.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 8 2016, 09:10
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(zltigo @ Sep 8 2016, 12:28)  Повторю еще раз - нет никакого смысла в "таймштампами точностью до десятков мкс", если само событие фиксируемое уже "драйвером" совершенно произвольгую задержку и сами события начинают склеиваться в одно уже на уровне FIFO UART. Именно на уровне FIFO эти события никак не склеиваются. От UART есть прерывание заполнения всего FIFO и есть прерывание таймаута. Этих двух прерываний абсолютно достаточно для определения - была дырка между байтами или нет. И для ModBus эти таймштампы не нужны, но нужен факт наличия дырки. Такой алгоритм работы UART есть во многих контроллерах, например LPC17xx. И он позволяет легко разделять кадры по дыркам между ними. И этот алгоритм - наследство от железного 16550. Виндовый драйвер после чтения FIFO конечно может склеить, но как-бы описание SetCommTimeouts() говорит об обратном. Цитата(zltigo @ Sep 8 2016, 12:28)  Нет. Только выдает прерывании при заполнении FIFO и при межбайтовой паузе более 4x символов. При этом прием последующих символов продолжается в то же FIFO. А это не одно и то же? Прерывание по таймауту пришло - считали содержимое FIFO, запомнили что после этого содержимого была пауза. Всё. Или Вы думаете, что вход в ISR может настолько запоздать, что придёт новый символ после 3.5-символьной паузы? Цитата(zltigo @ Sep 8 2016, 12:28)  Когда придумаете, где это "immediately" отнормированно в микросекундах и куда денутся байты пришедшие после 3,5 символьного интервала, причем UART будет еще тянуть собственый 4x символьный таймаут до того, как сгенерит прерывание, обязательно сообщите  . Какие 3.5 + 4 интервала?? Принят очередной байт - запускается счётчик таймаута - он отсчитывает 3.5 символьных интервала - генерится прерывание - ISR считывает содержимое UART, пишет в программный FIFO и пишет туда же признак наличия дырки. А ещё можно в свойствах COM-порта выключить FIFO. Вот тогда будет: пришёл байт, сразу прерывание, ISR кладёт символ в программное FIFO и задача, вызвавшая ReadFile() и ждущая появления данных, тут же переходит из состояния wait в состояние run и получает управление от шедулера и выгребает данные из этого программного FIFO. Вот тогда след. символ точно успеет прийти до входа в ISR. И у драйвера есть все возможности выполнить обязательство "immediately". Цитата(DASM @ Sep 8 2016, 14:14)  MSDN в именно в этой части читал лет 15 назад. Неифга оно так не работает (еще на тех -то компах, когда COM порт не был чудом). Возможно конечно, что есть ошибки в дровах винды. Но принципиальной невозможности организовать со стороны драйвера обнаружение этих дырок я не вижу. И проверять надо под современной виндой.
|
|
|
|
|
Sep 8 2016, 10:42
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (jcxz @ Sep 8 2016, 12:10)  Именно на уровне FIFO эти события никак не склеиваются. От UART есть прерывание заполнения всего FIFO и есть прерывание таймаута. Этих двух прерываний абсолютно достаточно для определения - была дырка между байтами или нет. Разумеется нет. 1) таймаут отрабатывает на 4 символа паузу и приход следующего MODBUS фрейма приведет с склеиванию фреймов. 2) Если драйвера и система не успеет отработать прерывание до прихода следующего фрейма, то они опять склеятся или FIFO или уже в буферах драйвера. 3) Прерывания по таймауту и по заполнению FIFO не отличаются, так что приход прерывания, как такового не означает конца фрейма. QUOTE И для ModBus эти таймштампы не нужны, О чем я Вам уже и писал. QUOTE но нужен факт наличия дырки. к которому они никакого отношения не имеют, о чем уже тоже писал. Тау что помянуты они всуе. QUOTE Такой алгоритм работы UART есть во многих контроллерах, например LPC17xx. И он позволяет легко разделять кадры по дыркам между ними. И этот алгоритм - наследство от железного 16550. Какой "такой"? В том же помянутом всуе LPC17XX есть еще навороты, типа CTI и самое главное, есть в отличие от WIN, жесткое реальное время и кучка аппаратных таймеров для организации поддержки таймаутов, как собственно UART, так и протоколов типа того же MODBUS-RTU (да гореть его недоучкам авторам в аду). Так что для микроконтролера, даже с минималистичным 55, проблем в реализации кривейшего MODBUS нет. QUOTE Виндовый драйвер после чтения FIFO конечно может склеить, но как-бы описание SetCommTimeouts() говорит об обратном. Поворю, что для начала склеит уже аппаратное FIFO UART ну и "описание" ни о чем не говорит, кроме того, что не будет ДОБАВЛЯТЬ никаких ДОПОЛНИТЕЛЬНЫХ таймаутов к тем, которые так или иначе получатся в системе, которая НИКАК НЕ поддерживает реальное время. QUOTE А это не одно и то же? Прерывание по таймауту пришло - считали содержимое FIFO, запомнили что после этого содержимого была пауза. Всё. Перечитайте неписанное выше. QUOTE Или Вы думаете, что вход в ISR может настолько запоздать, что придёт новый символ после 3.5-символьной паузы? Третий раз - сам таймаут FIFO уже 4 символа. Дальше обслуживание прерывания еще может запоздать и еще как, тем более, что тут НЕ микроконтроллерр и Вы висите НЕ на прерывании. На прерывании висит драйвер, который его обслужит, и запустит планировщик системы, который уж потом в меру своих очередей и приоритетов сообщит ожидающему приложению. Результат всего этого плачевен - никакой повторяемости результатов по времени нет. Совсем нет. Смиритесь. Так что надежно работающий снифер выделяющий MODBUS-RTU фреймы из 485 под Win нереален. Для низких скоростой и медленнннннооо отвечающих перeферийных устройств, да, частные реализации оаботающие на конкретной машине, возможны. QUOTE (jcxz @ Sep 8 2016, 12:10)  И проверять надо под современной виндой. Будет только хуже  . Все обещания, которые Вы захотели увидеть в описании драйверов на самом деле тянутся от тех самых Win 3.1/85, котрые еще были как то похожи на "микроконтроллер". В "современных" байтовые интерфесы вообще похоронены де-факто.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Sep 8 2016, 18:02
|
Гуру
     
Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713

|
Цитата(zltigo @ Sep 8 2016, 16:42)  Разумеется нет. 1) таймаут отрабатывает на 4 символа паузу и приход следующего MODBUS фрейма приведет с склеиванию фреймов. 2) Если драйвера и система не успеет отработать прерывание до прихода следующего фрейма, то они опять склеятся или FIFO или уже в буферах драйвера. Кто-ж спорит что в этом случае склеятся. Только: 1) ТС нужна не рабочая система сбора данных, а система для мониторинга в целях отладки. Значит к этой системе можно предъявить спец. требования (отсутствие посторонних задач, достаточная мощность и др., которые обеспечат достаточную реалтаймовость системы и скорость реакции на прерывания железа). 2) рассмотрим как работает ПО в сети обмена ModBus и начинаем думать какие будут минимальные дырки: а) предположим мы наблюдаем обмен двух устройств - устройство А передаёт кадр, устройство Б - принимает, обрабатывает и отвечает (режим запрос-ответ), а наше устройство (комп) мониторит этот обмен со стороны: А передаёт кадр-запрос, заканчивает его передачу (передан последний бит), в приёмнике Б начинается отсчёт таймаута, проходит 4 символьных интервала - устройство Б начинает обработку кадра-запроса, а потом отвечает на него своим кадром-ответом, т.е. - переключает свой драйвер в режим передачи, начинается выдвигание битов первого передаваемого слова ответа. Когда в FIFO устройства-монитора появится этот первый байт ответа? Правильно, через: 4 символа таймаута + время обработки в Б + 1 символ ответа. Даже если предположить, что устройство Б обрабатывает запросы мгновенно, всё равно имеем в устройстве-мониторе паузу в 5 символов! Т.е. - устройство-монитор сгенерит прерывание таймаута как минимум за один символ до прихода 1го символа ответа. А теперь ещё немного подумаем и поймём, что после того как устройство Б переключило свой драйвер RS-485 в режим передачи, то после этого и до начала выдвигания бит первого слова ответа, оно должно обеспечить некую паузу для того, чтобы и устройство А принимающее его ответ заведомо успело переключить свой драйвер RS-485 в режим приёма. А ведь и устройство Б может иметь драйвер RS-485 с гальванической развязкой, которому нужно время на переключение RX->TX и у устройства А тоже может быть такой драйвер, требующий доп. задержки. И ПО ModBus-драйвера, написанное прямыми руками, должно учитывать, что у устройств с которыми оно будет работать, могут быть медленные опторазвязки RS-485, а значит давать возможность или конфигурировать минимальное время переключения себя RX->TX или просто хотя-бы выдерживать это время с большим запасом. Это всё приводит нас к мысли, что паузы запрос-ответ будут заведомо больше чем 5 символьных интервалов. б) конечно возможен вариант системы работающей в режиме не запрос-ответ, а запрос-запрос-запрос-...-ответ (т.е. - цикл запроса состоит из нескольких ModBus-кадров). Или просто в режиме широковещательной передачи кадров. Но, имхо, это редкий вариант. Да и в этом случае такая система должна обспечить чтобы дырки между кадрами были заведомо больше 4 символов, хотя-бы для того чтобы гарантировать чёткое их обнаружение на приёмной стороне. А не работать на грани фола с дыркой между двумя TX-кадрами ==4 символам. Цитата(zltigo @ Sep 8 2016, 16:42)  3) Прерывания по таймауту и по заполнению FIFO не отличаются, так что приход прерывания, как такового не означает конца фрейма. Да ладно? Открываем даташит на LPC17xx содержащий UART с, как в нём утверждается: Register locations conform to 16C550 industry standard. Читаем описание регистра IIR и видим две разные причины прерывания: RDA и CTI. И даже если размер принимаемого кадра равен FIFO trigger level, то всё равно можно обнаружить границу кадра: после получения RDA считать ( FIFO trigger level - 1) символов и через некоторое время получить ещё и CTI, сигнализирующее о границе кадра. Даташит на прародитель 16C550 найти конечно сейчас трудно, но вот эта ссылка например http://www.lookrs232.com/rs232/iir.htm говорит, что и в нём дело обстояло так же. Цитата(zltigo @ Sep 8 2016, 16:42)  Какой "такой"? В том же помянутом всуе LPC17XX есть еще навороты, типа CTI и самое главное, есть в отличие от WIN, жесткое реальное время и кучка аппаратных таймеров для организации поддержки таймаутов, Для "поддержки таймаутов" в LPC17xx таймера не нужны, вполне достаточно RDA и CTI. Это на приём. Только на передачу нужен таймер, чтобы отследить момент опустошения сдвигового регистра передатчика и переключения драйвера RS-485 с TX на RX. Цитата(zltigo @ Sep 8 2016, 16:42)  Третий раз - сам таймаут FIFO уже 4 символа. Дальше обслуживание прерывания еще может запоздать и еще как, тем более, что тут НЕ микроконтроллерр и Вы висите НЕ на прерывании. На прерывании висит драйвер, который его обслужит, и запустит планировщик системы, который уж потом в меру своих очередей и приоритетов сообщит ожидающему приложению. Результат всего этого плачевен - никакой повторяемости результатов по времени нет. Совсем нет. Смиритесь. Это всего лишь слова и предположения. Тут может рассудить только эксперимент(-ы). Я не вижу никаких причин в современной системе, не загруженной тяжёлой работой, имеющей как правило несколько процессорных ядер с ГГц-выми тактовыми частотами, которые почти всё время просто тупо простаивают, не отреагировать на событие почти мгновенно, обработав например прерывание одним ядром и тут же переключить другое ядро на выполнение высокоприоритетного thread-а драйвера сис. уровня UART, а третьим ядром выполнить пользовательский высокоприоритетный код с ReadFile. Цитата(zltigo @ Sep 8 2016, 16:42)  к которому они никакого отношения не имеют, о чем уже тоже писал. Тау что помянуты они всуе. Таймштампы нужны пользовательскому процессу, вызывающему ReadFile(), особенно с выключенным FIFO, чтобы обнаружить дырки: Код LARGE_INTEGER t1, t2; while () ReadFile(); //опустошаем RX-поток UART for (QueryPerformanceCounter(&t2);; t2 = t1) { ReadFile(); QueryPerformanceCounter(&t1); t2.QuadPart = t1.QuadPart - t2.QuadPart; //вот здесь t2 будет или примерно равно 1-му символьному интервалу, если чтение идёт внутри кадра; или больше 4-х символьных кадров, если последняя ReadFile() считала 1-й символ ModBus-кадра //т.е. - поставив пороговое сравнение скажем на сравнение t2 < 3-х символьных интервалов или t2 >= 3 символьным интервалам можно с запасом обнаружить дырку //временем выполнения этого кода на мощном незагруженном процессоре и высокоприоритетном thread-е можно пренебречь }
|
|
|
|
Сообщений в этой теме
Alex_2015 сниффер ком порта Sep 6 2016, 13:56 bolden Добрый день,
если вы ловите запрос+ответ и если не... Sep 6 2016, 14:07 dm37 Можно принимать байты по одному с таймаутом, т.е. ... Sep 6 2016, 14:24 Alex_2015 Такой вариант я рассматривал, но здесь ключевая фр... Sep 6 2016, 14:39 _3m Цитата(Alex_2015 @ Sep 6 2016, 17:39) Осн... Sep 6 2016, 18:08 dm37 т.е. вы подключаетесь к какой либо паре устройств ... Sep 6 2016, 15:06        zltigo QUOTE (jcxz @ Sep 8 2016, 21:02) Т.е. - у... Sep 9 2016, 07:23         Ruslan1 Мне кажется, изначально вопрос некорректно поставл... Sep 11 2016, 18:59         jcxz Цитата(zltigo @ Sep 9 2016, 13:23) Может,... Sep 13 2016, 05:32          zltigo QUOTE (jcxz @ Sep 13 2016, 08:32) Вы пута... Sep 13 2016, 07:28  DASM Цитата(jcxz @ Sep 7 2016, 21:22) Я бы тож... Sep 8 2016, 08:14 Lagman Очень давно, чем то подобным занимался (отлавливал... Sep 6 2016, 20:35 k155la3 Если пишете сами, попробуйте использовать таймауты... Sep 7 2016, 06:47 megajohn Цитата(Alex_2015 @ Sep 6 2016, 17:56) Все... Sep 7 2016, 08:36 Alex_2015 На тему конвертора мысли были. Но только на самый ... Sep 7 2016, 12:42 Alex_2015 Читал я MSDN в своё время, когда осваивал программ... Sep 8 2016, 01:23 k155la3 Если не требуется переносимость-универсальгность, ... Sep 8 2016, 06:00 Alex_2015 Я не утверждаю, что MSDN врёт. Просто констатирую ... Sep 8 2016, 06:11 Alex_2015 Я всё-таки внесу некоторые дополнения.
Использую п... Sep 9 2016, 01:11 juvf 2ТС Тут только аппаратный снифер поможет. Можно сд... Sep 21 2016, 18:29 Lagman Цитата(juvf @ Sep 21 2016, 21:29) Сможет ... Sep 22 2016, 10:16  juvf Цитата(Lagman @ Sep 22 2016, 15:16) it is... Sep 22 2016, 10:20  zltigo QUOTE (Lagman @ Sep 22 2016, 13:16) и есл... Sep 22 2016, 10:40   Lagman Цитата(zltigo @ Sep 22 2016, 13:40) В час... Sep 22 2016, 11:18    demiurg_spb Добрый день коллеги!
Захотелось обсудить вопро... Sep 22 2016, 12:26     megajohn Цитата(demiurg_spb @ Sep 22 2016, 15:26) ... Sep 22 2016, 12:35      demiurg_spb Нет. Интересует именно RS485!
Наверное мне сто... Sep 22 2016, 12:41     zltigo QUOTE (demiurg_spb @ Sep 22 2016, 15:26) ... Sep 22 2016, 13:50      demiurg_spb Цитата(zltigo @ Sep 22 2016, 16:50) Увы, ... Sep 23 2016, 10:45       juvf Цитата(demiurg_spb @ Sep 23 2016, 15:45) ... Sep 23 2016, 11:16        demiurg_spb Цитата(juvf @ Sep 23 2016, 14:16) не един... Sep 23 2016, 11:39        zltigo QUOTE (juvf @ Sep 23 2016, 14:16) не един... Sep 23 2016, 11:55 juvf ЦитатаМастер хочет передать и не знает был ли шум ... Sep 22 2016, 12:47 demiurg_spb Цитата(juvf @ Sep 22 2016, 15:47) Мне бы ... Sep 22 2016, 12:51  juvf Цитата(demiurg_spb @ Sep 22 2016, 17:51) ... Sep 22 2016, 13:08   demiurg_spb Понятно что шумов быть не должно, но они как-бы ес... Sep 22 2016, 13:13    juvf Цитата(demiurg_spb @ Sep 22 2016, 18:13) ... Sep 22 2016, 13:19     demiurg_spb Понятно, что изолированный - это гальванически не ... Sep 22 2016, 13:56 zltigo QUOTE (juvf @ Sep 22 2016, 15:47) Не нужн... Sep 22 2016, 14:07 Ruslan1 Цитата(juvf @ Sep 22 2016, 15:47) когда н... Sep 23 2016, 12:44  demiurg_spb 2juvf:
Я стараюсь на комп не заводить MODBUS-RTU -... Sep 23 2016, 13:04 juvf ps Цитатапомехи могут дать ложный старт-бит.не вс... Sep 22 2016, 12:56 demiurg_spb Цитата(juvf @ Sep 22 2016, 15:56) Про то,... Sep 22 2016, 13:01 juvf Цитатадля любителей растяжек НИКОГДА не работавших... Sep 23 2016, 03:14 zltigo QUOTE (juvf @ Sep 23 2016, 06:14) zltigo,... Sep 23 2016, 09:08  juvf Цитата(zltigo @ Sep 23 2016, 14:08) Все э... Sep 23 2016, 10:34   zltigo QUOTE (juvf @ Sep 23 2016, 13:34) не ради... Sep 23 2016, 11:38 juvf ЦитатаМне безразлично кто и что НЕ делает и по как... Sep 23 2016, 12:09 zltigo QUOTE (juvf @ Sep 23 2016, 15:09) К слова... Sep 23 2016, 12:41 juvf ЦитатаПод голый ПК, ака DOS - без проблем.Поделите... Sep 25 2016, 09:02 zltigo QUOTE (juvf @ Sep 25 2016, 12:02) Поделит... Sep 25 2016, 14:28 Ruslan1 juvf , Вы хотели что-то спросить, или просто еще р... Sep 25 2016, 17:33 net поддержу
особенно про стаффинг
есть же протокол ... Sep 25 2016, 17:38 dm37 немного в поддержу juvf
Если вы работаете по прото... Sep 25 2016, 18:23 AHTOXA Добавлю сюда пару ссылок на предыдущие обсуждения ... Sep 25 2016, 19:10 net QUOTE (dm37 @ Sep 25 2016, 21:23) немного... Sep 26 2016, 08:37 zltigo QUOTE (dm37 @ Sep 25 2016, 21:23) немного... Sep 26 2016, 09:51  net QUOTE (zltigo @ Sep 26 2016, 12:51)
нет... Sep 26 2016, 10:19   zltigo QUOTE (net @ Sep 26 2016, 13:19) попробуй... Sep 26 2016, 11:47    net QUOTE (zltigo @ Sep 26 2016, 14:47)
ктож... Sep 26 2016, 11:56    juvf Цитата(zltigo @ Sep 26 2016, 16:47) у нег... Sep 26 2016, 12:00  juvf Цитата(zltigo @ Sep 26 2016, 14:51) Поним... Sep 26 2016, 10:20 dm37 Цитата"Стандарт" на MODBUS в котором про... Sep 26 2016, 12:21 zltigo QUOTE (dm37 @ Sep 26 2016, 15:21) Надеюсь... Sep 26 2016, 16:49 dm37 to zltigo для информации
во вложении со страницы ... Sep 26 2016, 17:00 AHTOXA Цитата(dm37 @ Sep 26 2016, 22:00) во влож... Sep 26 2016, 19:35  juvf Цитата(AHTOXA @ Sep 27 2016, 00:35) Там к... Sep 28 2016, 08:59   AHTOXA Цитата(juvf @ Sep 28 2016, 13:59) ну тут ... Sep 28 2016, 10:07    net QUOTE (AHTOXA @ Sep 28 2016, 13:07) Но ес... Sep 28 2016, 10:17     _Pasha Цитата(net @ Sep 28 2016, 13:17) а если б... Sep 28 2016, 10:25      net QUOTE (_Pasha @ Sep 28 2016, 13:25) как В... Sep 28 2016, 10:36     demiurg_spb Цитата(net @ Sep 28 2016, 13:17) а если б... Sep 28 2016, 10:55      net QUOTE (demiurg_spb @ Sep 28 2016, 13:55) ... Sep 28 2016, 11:12      _Pasha Цитата(demiurg_spb @ Sep 28 2016, 13:55) ... Sep 28 2016, 11:24 juvf срезюмирую....
Цитата(zltigo @ Sep 3 2015, 1... Sep 27 2016, 06:49 net QUOTE (juvf @ Sep 27 2016, 09:49) QUOTE (... Sep 27 2016, 11:18 demiurg_spb Цитата(juvf @ Sep 27 2016, 09:49) 2demiur... Sep 27 2016, 14:45  net QUOTE (demiurg_spb @ Sep 27 2016, 17:45) ... Sep 27 2016, 15:14  _Pasha Цитата(demiurg_spb @ Sep 27 2016, 17:45) ... Sep 27 2016, 15:22   zltigo QUOTE (_Pasha @ Sep 27 2016, 18:22) Кста,... Sep 27 2016, 20:46    _Pasha Цитата(zltigo @ Sep 27 2016, 23:46) 1) Аб... Sep 28 2016, 06:55     zltigo QUOTE (_Pasha @ Sep 28 2016, 09:55) 1. Не... Sep 28 2016, 11:52      net QUOTE (zltigo @ Sep 28 2016, 14:52) Не ре... Sep 28 2016, 11:56      AHTOXA Цитата(zltigo @ Sep 28 2016, 16:52) Не ре... Sep 28 2016, 12:15       zltigo QUOTE (AHTOXA @ Sep 28 2016, 15:15) Старт... Sep 28 2016, 12:33        net QUOTE (zltigo @ Sep 28 2016, 15:33) Меня ... Sep 28 2016, 12:47        AHTOXA Цитата(zltigo @ Sep 28 2016, 17:33) Если ... Sep 28 2016, 12:55         zltigo QUOTE (AHTOXA @ Sep 28 2016, 15:55) Нет, ... Sep 28 2016, 13:13    net QUOTE (zltigo @ Sep 27 2016, 23:46) 2) На... Sep 28 2016, 07:16 dm37 to АНТОХА
ЦитатаТам как раз сказано, что растяжки ... Sep 27 2016, 13:22 _Pasha да модбас RTU, что там оговаривать Sep 28 2016, 07:42 net QUOTE (_Pasha @ Sep 28 2016, 10:42) да мо... Sep 28 2016, 08:19
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|