- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Корректор газа
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 11 сен 2020, 08:15
- Имя: Андрей
- Страна: Молдова
Корректор газа
Всем доброго времени суток.
Я не знал в какой раздел обратиться, решил что этот будет более подходящим.
У меня имеется газовый корректор «TC - 90/K». У него имеется интерфейс RS232 через 6 PIN DIN 45322, к устройству прилагается родное программное обеспечение Win PADS. Оно прекрасно работает и устройство с помощью родной программы прекрасно читается. Но меня интересует вопрос написания своего арограммного обеспечения для чтения данного устройства. К данному устроству имеется документация в которой описан протокол опроса, я испробовал всё что там описано, но устройство либо молчит, либо отвечает мне b'00'.
Прошу помощи понять как(или скорей какой) правильно отправить запрос корректору что бы он выдал мне информацию хранимую в себе. Скрипт для опроса его я сделал на языке python. С другими устройствами скрипт прекрасно общается как через com порт, так и через сеть. Я обычно меняю только запрос или вариант подключеия.
Документацию к устройству прилагаю.
Я не знал в какой раздел обратиться, решил что этот будет более подходящим.
У меня имеется газовый корректор «TC - 90/K». У него имеется интерфейс RS232 через 6 PIN DIN 45322, к устройству прилагается родное программное обеспечение Win PADS. Оно прекрасно работает и устройство с помощью родной программы прекрасно читается. Но меня интересует вопрос написания своего арограммного обеспечения для чтения данного устройства. К данному устроству имеется документация в которой описан протокол опроса, я испробовал всё что там описано, но устройство либо молчит, либо отвечает мне b'00'.
Прошу помощи понять как(или скорей какой) правильно отправить запрос корректору что бы он выдал мне информацию хранимую в себе. Скрипт для опроса его я сделал на языке python. С другими устройствами скрипт прекрасно общается как через com порт, так и через сеть. Я обычно меняю только запрос или вариант подключеия.
Документацию к устройству прилагаю.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- не первый раз у нас
- Сообщения: 320
- Зарегистрирован: 31 окт 2017, 16:45
- Имя: Дмитрий
- Страна: Россия
- город/регион: Калининград
- Благодарил (а): 9 раз
- Поблагодарили: 82 раза
Корректор газа
обычно используют снифферы сом-порта, чтобы посмотреть обмен между заводской прогой и устройством, затем корректируют свой софт, делают те же запросы, что и в заводском софте, не особо вдаваясь в детали для чего они, просто забирают из ответов нужную инфу
-
- эксперт
- Сообщения: 1621
- Зарегистрирован: 06 янв 2016, 19:45
- Имя: Петров В.Л.
- Страна: Россия
- город/регион: Красноярск
- Благодарил (а): 70 раз
- Поблагодарили: 190 раз
Корректор газа
Аналогично. Я так с пожарными датчиком мертвой конторы разбирался. Дико порадовал школьный уровень разработчиков, все оказалось предельно тупо.
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 11 сен 2020, 08:15
- Имя: Андрей
- Страна: Молдова
Корректор газа
Его запросы описаны в документации, по факту он шлет запрос "L4=.", я уже его перехватил и точно такой же отправил ему. В ответ не получил ничего. Скорее всего это особенности опроса по RS232, там задесйтвованы CTS и RTS. Скорее всего их надо как-то правильно использовать.
-
- администратор
- Сообщения: 17579
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 824 раза
- Поблагодарили: 1652 раза
Корректор газа
значит Ваш запрос не точно такой же. Только и всего. :)pelathaon писал(а): ↑15 сен 2020, 21:22 Его запросы описаны в документации, по факту он шлет запрос "L4=.", я уже его перехватил и точно такой же отправил ему. В ответ не получил ничего. Скорее всего это особенности опроса по RS232, там задесйтвованы CTS и RTS. Скорее всего их надо как-то правильно использовать.
Отличия могут быть не только в данных, но и в таймингах и в физике. Например контроль передачи по CTS/RTS/DTR, ни один сниффер этого не покажет, нужен терминал с отображением их не просто лампочками, а на диаграмме общего потока данных.
В кабеле связи оторвите все провода, кроме Tx, Rх и GND, даже если там перемычки (их тоже убрать). Если родной софт без них продолжит общаться с прибором - значит дело не в этом.
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 11 сен 2020, 08:15
- Имя: Андрей
- Страна: Молдова
Корректор газа
Это как раз таки и проверялось в первую очередь, по документации изначально собрал самый обычный описанный вами кабель. Родное ПО с прибором отказалось общаться. Потом методом долгих проб и ошибок наконец-то удалось собрать кабель с перемычками, и только тогда он заработал с родным софтом.
Я опирался на то, что в ПО "Serial Port Monitor Free" у меня запрос полностью совпадал с тем, что посылал родной софт.
Скорее всего еще нужны определенные тайминги запроса и приема ответа, это я тоже допускаю. Но я не знаю как это выяснить, к сожалению.
Не могли бы подсказать название такого ПО которым я могу подсмотреть как же все таки происходит обмен?
-
- администратор
- Сообщения: 17579
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 824 раза
- Поблагодарили: 1652 раза
Корректор газа
ну как же он совпадал, если Вы выше пишете что там аппаратный контроль трафика (об этом говорит необходимость перемычек). Теперь надо сходить в настройки порта в виндовсе и посмотреть, что стоит там - там установить контроль трафика "отсутствует" и снова проверить связь только с тремя проводами Rx Tx GND. Если и на этот раз для связи понадобится установить перемычки, а без них никак - значит родной софт это (аппаратный контроль через прямой доступ к порту) и делает и анализирует CTS/RTS/DTR и это зачем-то ему очень надо. Вот и первое возможное отличие.
Второе возможное отличие - это тайминги. Надо посмотреть, с какой задержкой уходит каждый байт в провода, это не сниффером делается, а другим COM-портом. Есть вероятность что буфер в UARTе вмешивается и вы шлёте данные через него, а родной софт, получив прямой доступ к порту, этот буфер не использует. Если первая проверка окажется положительной (перемычки нужны при отключённом контрой траффика в виндовсе), то скорее всего так и есть.
Поздний вопрос: а протокол-то какой? Какой-то свой или там модбас? Может Вы CRC забыли или считаете её некорректно?
Отправлено спустя 3 минуты 50 секунд:
послушать трафик прямо в проводах через другой порт, гарантированно отключив в нем буфер, и построив временную диаграмму.
Готовый софт для этого не скажу, не знаю. В каком-то терминале я видел такую возможность, но нету его больше у меня точно.
По вопросам работы Форума можно обратиться по этим контактам.
-
- администратор
- Сообщения: 17579
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 824 раза
- Поблагодарили: 1652 раза
Корректор газа
Я исхожу из того, что раз на родной софт прибор отвечает, а на Ваш софт - нет - значит есть разница, просто Вы её ещё не нашли. Чудес-то не бывает.
Как-то лично столкнулся с тем что кривой драйвер (в смысле чип) UARTа определённые байты воспринимал как собственные команды и просто глотал их из запроса, они исчезали, а CRC оставалась неизменной, соответственно приёмник считал посылку ошибочной потому что CRC посылке уже не соответствовала, и просто игнорировал и не отвечал.
Это удалось выяснить только прослушав саму физическую линию на стороне приемника и последующего ручного анализа трафика: в логе трафика передатчика находили запросы без ответов, затем искали эти запросы в логе трафика со стороны приемника.
И пока не ткнули носом производителя передатчика (а не приемника) в это - он естественно считал что мы ему сказки рассказываем, да мы и сами не считали это возможным пока не увидели.
В общем, не ленитесь и проверяйте абсолютно всё. Если и не найдёте, то как минимум солидно поднимете свои познания и квалификацию.
Как-то лично столкнулся с тем что кривой драйвер (в смысле чип) UARTа определённые байты воспринимал как собственные команды и просто глотал их из запроса, они исчезали, а CRC оставалась неизменной, соответственно приёмник считал посылку ошибочной потому что CRC посылке уже не соответствовала, и просто игнорировал и не отвечал.
Это удалось выяснить только прослушав саму физическую линию на стороне приемника и последующего ручного анализа трафика: в логе трафика передатчика находили запросы без ответов, затем искали эти запросы в логе трафика со стороны приемника.
И пока не ткнули носом производителя передатчика (а не приемника) в это - он естественно считал что мы ему сказки рассказываем, да мы и сами не считали это возможным пока не увидели.
В общем, не ленитесь и проверяйте абсолютно всё. Если и не найдёте, то как минимум солидно поднимете свои познания и квалификацию.
По вопросам работы Форума можно обратиться по этим контактам.
-
- здесь недавно
- Сообщения: 46
- Зарегистрирован: 30 ноя 2011, 15:36
- Имя: Сидоров С.И.
- Благодарил (а): 7 раз
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 11 сен 2020, 08:15
- Имя: Андрей
- Страна: Молдова
Корректор газа
Всем спасибо за ответы, всё получилось все прекрасно. Теперь интересует вопрос устройства которое позволит передавать всё это по сети передачи данных. В руках был planet ICS-100 с поддержкой RS232/RS485 но через него не заработало, хотя в принципе должно было т.к. он поддерживает все необходимые параметры.
Может кто-то посоветует простое и недорогое устройство которое позволит работать с корректором через сеть передачи данных?
Может кто-то посоветует простое и недорогое устройство которое позволит работать с корректором через сеть передачи данных?
-
- не первый раз у нас
- Сообщения: 320
- Зарегистрирован: 31 окт 2017, 16:45
- Имя: Дмитрий
- Страна: Россия
- город/регион: Калининград
- Благодарил (а): 9 раз
- Поблагодарили: 82 раза
Корректор газа
если у вас проблема была только в посылаемых в корректор байтах, а не в паузах, rts/cts или еще в чем-то хитром (с чем простой преобразователь Eth/rs232 может не справиться), то например er108 от teleofice . Если нужно по беспроводным сетям - promodem.ru.
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 11 сен 2020, 08:15
- Имя: Андрей
- Страна: Молдова
Корректор газа
Проблема в RTS/CTS, по спецификации ICS-100 это дело умеет. Однако, не работает почему-то. Может через преобразователи нужно каки-то особым способом опрос делать?Sokolov_Dmitry писал(а): ↑19 сен 2020, 12:29 если у вас проблема была только в посылаемых в корректор байтах, а не в паузах, rts/cts или еще в чем-то хитром (с чем простой преобразователь Eth/rs232 может не справиться), то например er108 от teleofice . Если нужно по беспроводным сетям - promodem.ru.
-
- почётный участник форума
- Сообщения: 3927
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 20 раз
- Поблагодарили: 220 раз
Корректор газа
Не исключено. Если, как Евгений выше писал, драйвер управляет линиями CTS/RTS, то с преобразователем и тем что у него в мозгах можно разбираться долго. По мне бы проще было свой сделать на Raspberry или чем подобном, чем пытаться чужое творение заставить работать так как мне надо.
Но, есть еще момент: у Вас, если я верно понял, корректор с батарейным питанием. Да на последовательном интерфейсе еще и оптосоединитель нарисован.
Очень похоже на то, что прибор (или непосредственно оптосоединитель) не умеет формировать уровни для RS-232. И просто коммутирует оптопарой на rx компьютера напряжение с какой-то другой ноги его же порта. Достаточно часто встречающаяся схема. Кстати, штатные оптопорты практически всех счетчиков работают точно по тому же принципу, только в одном случае оптопара впаяна в плату, а в другом она образуется при поднесении головки ку прибору. Часто для этого используется сигнал DTR, но возможны варианты. И в этом случае, как опрос не реализуй, если в преобразователе на эту ногу ничего не подается - поможет только паяльник.
Крайний раз сталкивался с этим для опроса через родной кабель с опторазвязкой теплосчетчика от Kamstrup посредством Adam4520. Пришлось вскрыть Adam, найти внутри него развязывающий DC-DC преобразователь и от него кинуть перемычку на какую-то (сейчас уже не вспомню) ногу 232-го порта. Тогда заработало, но гарантия на adam, естественно, слетела. Хотя, вроде работает до сих пор.
Попробуйте найти схему родного кабеля и проверить, все ли используемые в кабеле провода задействованы в ICS-100. Можно цешкой, RS-232 не предусматривает в нормальном состоянии нулевых напряжений.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- не первый раз у нас
- Сообщения: 320
- Зарегистрирован: 31 окт 2017, 16:45
- Имя: Дмитрий
- Страна: Россия
- город/регион: Калининград
- Благодарил (а): 9 раз
- Поблагодарили: 82 раза
Корректор газа
судя по техописанию корректора вы используете адаптерный кабель типа kd-100 между корректором и компьютером. Помимо сигналов по нему подается питание на корректор 5..10В, также линия передачи из корректора использует нестандартный выход +3в/+0,8в вместо стандартного +3в/-3в. Подается ли питание при использовании ic-100 (при отключенном от корректора кабеле тестером измерить на контактах 1-6) ? Также может быть ic-100 не работает на таких логических уровнях входного сигнала rxd.
-
- здесь недавно
- Сообщения: 6
- Зарегистрирован: 11 сен 2020, 08:15
- Имя: Андрей
- Страна: Молдова
Корректор газа
Подается, 4.2 вольта.Sokolov_Dmitry писал(а): ↑25 сен 2020, 13:07 Подается ли питание при использовании ic-100 (при отключенном от корректора кабеле тестером измерить на контактах 1-6) ?
Да, там внутри батарейка на 3.6V, 2700mah
К сожалению, нужно именно готовое решение.
Я еще раз перечитал внимательно технические спецификации ICS-100, и кажется я нашел проблему. Скриншот приложил.
Выше мне накидали названий приборов которые я просил, но они не подходят в виду своей высокой цены, поэтому может кто-то подскажет максимально недорогое решение?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- почётный участник форума
- Сообщения: 3927
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 20 раз
- Поблагодарили: 220 раз
Корректор газа
Подозрительно мало. При подключении от того, с чем заведомо работает (от компа или чего подобного) там сколько?
Что на других ногах порта ICS-100? Относительно 5-го вывода?
Режим порта в ics, надеюсь, верно установлен, rs-232.
Осциллографом нет возможности глянуть Rx и Tx при попытках обмена?
Что касается управления потоком - если это делается аппаратно, то никакой пареобразователь тут, скорее всего, не заработает. Потому как прямое управление RTS/CTS делается на уровне API Windows, и само собой, по линии связи не передается. Т.е. как только Вы переходите с RS-232 на что-то другое - эти линии физически обрываются.
Совет
скорее всего не сработает, прибор вообще потеряет питание. Но вот поотрывать все, что не нужно, кроме этих 4,2В (придется вызвонить, откуда эти провода приходят) можно попробовать. Т.е. на заведомо работающей схеме соорудить "удлинитель" RS-232 "мама-папа", оставив только Rx, Tx, GND и ту линию, откуда берутся эти 4,2В.
В общем, судя по няпряжению, у Вас в ICS нестандартные уровни используются. И это не классический 232, а TTL. Замерьте, если есть возможность, что на Rx-Tx относительно пятой ноги COM-порта.
А про скрипт пока можно забыть - проблема похоже аппаратная. Если с родным софтом все заработает через ICS, то можно уже и свой опрос писать.
Последний раз редактировалось Никита 30 сен 2020, 11:18, всего редактировалось 1 раз.
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- администратор
- Сообщения: 17579
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 824 раза
- Поблагодарили: 1652 раза
Корректор газа
Пока не проверено - всё остальное пустое, видимо. Но автор похоже либо решил проблему либо не решил - нам в любом случае не рассказал.
По вопросам работы Форума можно обратиться по этим контактам.
-
- почётный участник форума
- Сообщения: 3927
- Зарегистрирован: 20 янв 2010, 22:23
- Имя: Никита
- Страна: РФ
- город/регион: Мурманск
- Благодарил (а): 20 раз
- Поблагодарили: 220 раз
Корректор газа
Судя по тому, что подыскивает недорогое решение - не решил.
Но в любом случае, на мой косой взгляд, проблема не локализована - проблема может быть либо в уровнях, либо в управлении потоком. И это требует разных подходом. Проблема с аппаратным управлением потоком при управлении линиями RTS/CTS средствами драйвера исключает применение любого преобразователя интерфейсов в принципе. А вот если проблема с другой стороны - корректор не успевает за компом и пытается опустить CTS - шансы есть, возможно удастся подобрать преобразователь, который умеет это корректно обрабатывать. А может иметь место и сочетание. Вот схему кабеля бы увидеть...
Опыт - это когда на смену вопросам: "Что? Где? Когда? Как? Почему?" приходит единственный вопрос: "Нахрена? "
-
- не первый раз у нас
- Сообщения: 320
- Зарегистрирован: 31 окт 2017, 16:45
- Имя: Дмитрий
- Страна: Россия
- город/регион: Калининград
- Благодарил (а): 9 раз
- Поблагодарили: 82 раза
Корректор газа
разберитесь с питанием. Откуда оно идет? От внешнего БП или от DTR линии СОМ-порта компьютера? В компьютер кабель вставляете в СОМ-порт или преобразователь USB/rs232? Сравните уровени напряжения питания при работе от компьютера и от преобразователя. В ТО корректора написано должно быть 5...10В. Если от преобразователя меньше (4,2В), чем от компьютера (5-10В), то нужно сделать переходник DB9-DB9 в разрыв СОМ-порт компьютера и кабеля. На этом переходнике можно сравнивать (осциллографом) разницу в уровнях на линиях Rx,Tx, CTS/RTS, +V,GND при работе от компа и преобразователя. Если питание меньше чем от компа, используете внешнее в разрыв на переходнике. Не работают CTS/RTS разбираетесь с виртуальным сом-портом и преобразователем (самые дешевые модели не поддерживают CTS/RTS). Разобравшись с уровнями сигналов при работе от компа, т.е. четко поняв что должно быть на выходе rs232 преобразователя можно обратиться с вопросом в телеофис по поводу использования er108 касательно rts/cts ( может скрипты на python поддерживаются, чтобы работать CTS/RTS, DTR).