PDA

Просмотр полной версии : Связь с газоанализатором по RS-485



intellis
05.09.2016, 10:31
Здравствуйте. Не получается связать ПЛК110 и газоанализатор Сигма-03. Связь через RS485-2. Порт RS485-1 уже занят опросом другого устройства с другими параметрами связи. Наладить связь пытаюсь с помощью библиотеки UNM. Не могу составить правильный запрос к газоанализатору. Не получаем в ответе вообще ничего, даже "мусор". проводное подключение перепроверили много раз, как и параметры связи. Вот выдержка из руководства:

Скорость обмена 19200бит/с, - 8N1. Где: 8- число информационных бит, N-без паритета четности, 1-число стоповых бит.
Информация, считанная контроллером формируется в виде пакета, который передается по каналу RS485 на персональный компьютер (PC) или внешний контролер по запросу вызывающему прерывание МПУ-К . Передача старшим байтом вперед. Запрос от PC на контроллер:
0-ой байт: Сетевой адрес - Например:5h (в нашем случае 1)
1-ой байт: Код команды - G = 47h
2-ой байт: Контрольная сумма - 4Ch

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

melky
05.09.2016, 11:12
Только предстоит.

Поставьте снифер порта и делайте опрос с ПК, чтобы точно понимать что отправляет ПК и возвращает прибор.
Иначе можно гадать долго на кофейной гуще, что у вас не так.

Кстати поделитесь протоколом обмена на данный газоанализатор, а то кроме руководств у себя ничего не нашел (с другим перепутал)

intellis
05.09.2016, 11:58
Вот, только что прислали руководство: https://yadi.sk/i/vRqfiZXeuneAC Судя по первому взгляду, сигмы можно опрашивать по протоколу Овен. Хотя может и ошибаюсь.

melky
05.09.2016, 12:16
С чего вдруг такой вывод ?

intellis
05.09.2016, 12:29
В документе подробное описание протокола овен. Хотя явно вроде ничего не сказано. Времени сесть за комп пока нету, смотрю на ходу.

intellis
05.09.2016, 15:31
Человек из компании-производителя утверждает, что протокол Сигмы идентичен овеновскому протоколу, больше ничего не говорят. Чуть позже попробую еще раз наладить связь и отпишусь.

melky
05.09.2016, 15:32
А мне показалось, что CRC у них разные, не ?

intellis
05.09.2016, 15:43
Похоже, что разные. Техподдержка Сигмы на все вопросы отсылает к приведенному выше мануалу. Типа выкручивайтесь сами.

melky
05.09.2016, 15:51
поэтому ПК + логер порта снимет часть проблем.

intellis
05.09.2016, 15:58
Просто до объекта пока не добрался. Так и сделаю.

intellis
07.09.2016, 20:33
Вот скрин сниффера при обмене с двумя сигмами. К сожалению, все равно не очень понятно, так как присутствуют непонятные символы. С SOH и ETH еще более менее ясно, а вот с другим...26205

intellis
08.09.2016, 16:09
После дополнительного изучения сниффера разобрался вроде, надо отправлять команду типа '01GH' Для опроса сигнализатора с номером 1. тогда начинает что-то приходить. Возникла другая проблема. Приходят непонятные цифры - '0200002120200002120200002' , не соответствующие документации, но помимо этого вот еще что - после отключения сигнализатора данные продолжают поступать еще несколько минут. Откуда неясно. Сигнализатор сидит на RS485-2. На RS-485-1 другое устройство со своим протоколом. Поначалу подумал, что в результате глюка данные по сигнализатору начали идти с RS-485-1, но при полном отключении всех интерфейсов данные энное количество времени все равно идут. Потом перестают. Оба RS-485 работаеют с библиотекой UNM. В то же время обмен по RS-485-1 идет отлично. Похоже на глюк ПЛК, точнее его интерфейса. Никто не сталкивался?

melky
08.09.2016, 21:20
а что родная программа отправляет при запросе и получает в ответ по сниферу?
интересует так же в HEX

intellis
08.09.2016, 22:58
Вот скрин в hex, полученный в режиме наблюдения, то есть при запущенной родной программе, верхний скрин, который в ASCII был получен тем же способом. 26235Кстати, порт RS-485-2, который опрашивает сигнализатор, у меня в режиме RTU. В приведенном скрине все сходится, полученные данные я не проверял, но в ответах есть и номер сигнализатора и код функции. А вот у меня ерунда какая-то. Ковырял настройки порта в Codesys - пока ничего не нашел.

melky
08.09.2016, 23:25
Контрольная сумма в ответе совпадает с документацией и она не Modbus, именно как описано в документации сложение всех байт, два байта, старшим вперед.

в запросе сонтрольная сумма одним байтом.

Попробуйте в терминале в HEX варианте отправить запрос.
Ну и копайте код Codesys

intellis
08.09.2016, 23:45
Да, видел, на скрине все совпадает с документацией. Но с ПЛК не выходит пока. Буду пробовать дальше.

capzap
09.09.2016, 07:42
intellis и melky, Вы читали эту строчку, я просто на скринах этого не вижу, может не внимательно смотрю
Начало и конец кадра обозначаются специальными маркерами

intellis
09.09.2016, 08:37
Да, читал, и да, на скринах нет этих маркеров. Так ведь эта строчка Алена в той части мануала, где описывается протокол Овен. Хотя мне говорили, что протокол сигмы идентичен, нот по видимому это не так.

capzap
09.09.2016, 08:50
так в любом аскишном протоколе есть оконечные маркеры, это в RTU по времени паузы определяется когда завершился пакет.

melky
09.09.2016, 10:54
Судя по ответу прибора от родной программы в HEX варианте там в помине нет никаких маркеров. Все четко по документации включая расчет контрольной суммы.
Прибор работает в RTU режиме а не в ASCII, зачем туда приплели протокол ОВЕН даже непонятно.

з.ы. посылка команды в HEX из терминала точно скажет о результате.

Yegor
09.09.2016, 11:28
зачем туда приплели протокол ОВЕН даже непонятноЯ уже сталкивался с прибором, где модбас был совсем не модбас. Ничего нового.

capzap
09.09.2016, 11:59
попробуйте такой код, под себя только настройте

intellis
09.09.2016, 12:59
Всем спасибо за помощь, вроде все получилось. Проблема была в том, что я неправильно работал со временем посылок и приема команд, "бомбардируя" сигнализатор запросами, не дожидаясь ответа. Сказался недостаток опыта работы с собственными протоколами. Строки запросов у меня '$01GH' и '$02GI'. Обмен RTU-подобный. Получаю на выходе, например с 1-го сигнализатора - 1 71 9 162 155 37 17 183 23 15 плюс еще два байта контрольной суммы, сейчас не могу посмотреть. Превые два байта, это соответственно номер сигнализатора и код функции - 47h = 71. Осталось по формулам вычислить показания с остальных байтов. А вот причем тут Овеновский протокол, я и сам не понял.

Timbo
15.04.2017, 07:20
Добрый день. Не подскажете по подробней как добились работы Сигмы и ПЛК Овен?
код программы(POU), конфигурация ПЛК (настройки RS485 в Universal Network Module), настройки в Конфигураторе задач, код обработки ответа от газоанализатора. Буду очень признателен.