PDA

Просмотр полной версии : Ищу решение задачи с двумя мастерами сети RS-485



sim6
22.11.2019, 10:52
Уважаемые коллеги!
Ищу красивое решение для задачи использования в действующей сети RS-485 двух "мастеров сети" в режиме "симплекс". В действующей сетке предназначенной для снятия показаний десятка трехфазных электросчетчиков серии Меркурий 230, было решено прикрепить дополнительный участок сети предприятия для регулировки некоторых величин через ПЛК63(реализовано) а так же для контроля и архивирования параметров (в перспективе). Все успешно работает естественно пока не подключается компьютер главного энергетика раз в месяц для снятия показаний счетчиков. Появляется второй "мастер сети" и если ПЛК Овен передает по сетке в СМИ2 текущие показания вполне себе успешно, то опрос счетчиков в лучшем случае идет с ошибками и ничего у энергетика не выходит))). В данный момент что бы решить эту "ежемесячно-минутную" проблему, через кнопку "Старт/Стоп" на панели ПЛК63 включается таймер на 5 минут запрещающий открытие порта и передачу в сеть показаний. но так как кабель по большей части не "наш" (АСУ ТП) а электриков. у них резонные требования сделать снятие показаний более комфортным без нажатий кнопок. Теоретически я вижу такой выход из ситуации: ПЛК63 будучи основным "мастером сети" выдает текущие показания на несколько СМИ2 в течении промежутка времени t1=2~5s, далее прослушивает сеть на наличие другого "мастера сети" за период времени t2=2~5s, и если не находит то повторяет опрос и передачу данных в сеть, в противном случае закрывает порт по таймеру на время t3=5m. После отработки таймера по времени t3, снова прослушивается сеть (t1=2~5s) на наличие второго "мастера сети" и если все "чисто" - продолжает работу в штатном режиме циклично проверяя свое "единовластие". Гуглил в рунете по данной теме нет ничего подобного хотя мне кажется что решение вполне может быть простым. Если кто уже знает как это сделать программно причем не важно в CDS v2.3 или CDS v3.5, то поделитесь, буду очень благодарен. Если сам раньше напишу, то выложу тут, может кому пригодится.

melky
22.11.2019, 11:17
з.ы. Два мастера возможно при
1. Синхронизации времени между двумя мастерами, например две Scada системы, и настройки периодов опроса на разное время у каждого мастера. Проверял такое на RapidScada, просто есть в настройках такой лайфхак.

Настраивал опрос каждые 15 секунд. один 5, 20, 35, 50 второй 0, 15, 30, 45 и так по кругу.

2. Передачей команды вашему ПЛК на остановку опроса и опрашивать другой системой. Ну, вероятно придется допилить программу в ПЛК.
Соответственно нужна Scada чтобы занималась этим, родное ПО от счетчиков такого не умеет.

Заменить ПЛК63 на другой с Ethernet портом, снимать показания ЧЕРЕЗ него, ну или по вариантам выше, чтобы сильно не пилить программу в ПЛК

sim6
22.11.2019, 11:40
Скада в данном проекте не предусмотрена, было бы конечно проще. было бы проще если бы второй мастер сети был в виде контроллера но это просто компьютер с адаптером USB-RS485 и реализовать некую автоматизацию возможно только на ПЛК63. Замены которого тоже уже не будет и потому все решения задачи должны быть именно в нем в том варианте который есть.

melky
22.11.2019, 12:41
тогда решения задачи НЕТ. Всегда будете ловить мусор и ошибки и бегать отключать опрос кнопкой. А так удачи.

sim6
22.11.2019, 12:54
Если slave устройства в сеть ничего не выдают а мастер сети выдает какие либо сигналы то логично что главная задача это придумать "прослушиватель сети RS-485" и все! далее уже элементарно написать примочку к нему которая и будет включать таймер в ПЛК63 и "Гасить" его по СОМ порту, или я не прав?

capzap
22.11.2019, 13:02
решение может быть таким: на компе энергетика перед опросом должен включиться слейв, как только плк обнаружит что слейв в сети, посылает в его единственный регистр условное знаечение, получив ответ на запрос функцией записи делает паузу в опросе. Но я бы полностью отключил мастера и так же включил бы мастера, чтоб по окончании опросом компа получить условный сигнал вернуть себя в обычное состояние мастера. А ПК получив сигнал, например запускает скрипт с программой энергетика а после неё стучится в плк чтоб вернуть все обратно

melky
22.11.2019, 13:05
Вы можете в программе ПЛК сделать окно в течении, когда он не будет опрашивать, и время этого окна сказать энергетику.

Проблема качества хода часов в ПЛК. 63-й без Ethernet синхронизацию по ntp не включишь. Был бы ПЛК с Ethernet, то например capzap писал на него программу синхронизации времени.

То есть со временем окно будет смещаться, при отставании или спешке часов.
К тому же вы хотите секунды ловить...

Например написать программу в ПЛК, которая будет и передавать и слушать порт. Но опять же, какие временные рамки ?

Программа энергетика это скорее всего обычный Конфигуратор Меркурий. Они часто просто этой прогой смотрят.

Mask
22.11.2019, 16:10
Я извиняюсь, а просто контроллером принимать еще и показания счетчиков без последующей обработки и потом через него забирать их с компьютера нельзя?

melky
22.11.2019, 16:32
Mask ПЛК63 не имеет Ethernet порта, разве что к Debug подключиться, не помню, можно или нет? debug должен уметь слейвом работать при этом..
з.ы. на десяток счетчиков у ПЛК памяти не хватит, архивы вычитывать, да и немного в ресурсы он упрется...

Валенок
22.11.2019, 16:56
..придумать "прослушиватель сети RS-485" и все! далее уже элементарно написать примочку к нему которая и будет включать таймер в ПЛК63 и "Гасить" его по СОМ порту, или я не прав?
Можно и так

sim6
22.11.2019, 23:57
решение может быть таким: на компе энергетика перед опросом должен включиться слейв, как только плк обнаружит что слейв в сети, посылает в его единственный регистр условное знаечение, получив ответ на запрос функцией записи делает паузу в опросе. Но я бы полностью отключил мастера и так же включил бы мастера, чтоб по окончании опросом компа получить условный сигнал вернуть себя в обычное состояние мастера. А ПК получив сигнал, например запускает скрипт с программой энергетика а после неё стучится в плк чтоб вернуть все обратно

Идея на смом деле интересная, но излишне усложненная в сравнении с вариантом "прослушивателя сети".
Поясняю, сам контроллер находится вместе с точкой регулирования ТП как и несколько индикаторов (Овен СМИ2) в производственном помещении а сетка заходит в сам кабинет энергетика в АБК завода и устанавливать там какие либо слейвы неудобно и уж тем более програмка для комплексного снятия показаний (Астра кажется называется) с графиками нагрузок и историей импульсных значений мощностей за месяц и так далее. Какие скрипты? Зачем? И с этой задачей ПЛК63 никогда так не справится своими возможностями да и не зачем из "жигулей" (ПЛК63) ляпить "ролсройс" если есть "бэха" (Астра)))).

sim6
23.11.2019, 00:15
Как вариант этой же Вашей идеи со слейвом, было бы создание виртуального программного счетчика в ПЛК63, циклический периодический опрос которого программой энергетика отключал бы в ПЛК передачу данных на определенное время (как было описано выше по теме на время t3=5m) причем надо еще умудриться начинать опрос счетчиков именно с этого виртуального да еще пролонгированно не обращая внимание на возможные ошибки связи по сети в течении цикла передачи данных (t1=2~5s) контроллера ПЛК63 ожидая своей очереди (t2=2~5s). Кстати я забыл изначально сказать пчему выбраны такие интервалы времени. 2~5 сек достаточно для передачи показаний в СМИ2 и не критично для реакции на изменения этой информации во время паузы (t2=2~5s), а время для энергетика t3=5m даже с запасом, прога снимает весь архив всех счетчиков примерно за 3,5-4 минуты.

melky
23.11.2019, 09:52
ну так вы же сами предложили прослушиватель порта, только слушать его должен не ПК, а сам ПЛК.

То есть между циклами опроса и передачей на СМИ И при возникновении ошибок чтения (вероятно что кто-то подключился к линии) ПЛК должен остановить опрос всего и вся на 5 минут, с запасом 6. Дождаться когда закончится опрос другого мастера снова включиться в работу.

Я вам предложил сделать фиксированное окно тиншины в течении часа, это уже как административная мера. Либо можете сделать фиксированное окно тишины раз в сутки. Например перед обеденным перерывом и т.д.
Ваши СМИ можете посадить на другой порт ПЛК.

Сделать окно тишины пожалуй самый простой способ. Энергетик будет знать точное время когда он спокойно сможет подключаться и выполнять чтение архивов и т.д.

sim6
23.11.2019, 10:37
ну так вы же сами предложили прослушиватель порта, только слушать его должен не ПК, а сам ПЛК.

То есть между циклами опроса и передачей на СМИ И при возникновении ошибок чтения (вероятно что кто-то подключился к линии) ПЛК должен остановить опрос всего и вся на 5 минут, с запасом 6. Дождаться когда закончится опрос другого мастера снова включиться в работу.

Я вам предложил сделать фиксированное окно тиншины в течении часа, это уже как административная мера. Либо можете сделать фиксированное окно тишины раз в сутки. Например перед обеденным перерывом и т.д.
Ваши СМИ можете посадить на другой порт ПЛК.

Сделать окно тишины пожалуй самый простой способ. Энергетик будет знать точное время когда он спокойно сможет подключаться и выполнять чтение архивов и т.д.

1. ну естественно не ПК, об этом и говорилось что все должно крутиться на самом ПЛК и нигде более.
2. Было бы хорошо если бы в момент подключения в сеть ПК энергетика стали бы появляться ошибки в обмене ПЛК и индикаторами СМИ2, но он (ПЛК) работает надежно как трактор и ни на что не обращает внимания. Хотя надо будет посмотреть статистику, снять какой нибудь лог по ошибкам и это тоже неплохая идея.
3. Фиксированное окно тишины не правильно по двум причинам - некрасивое решение ущемляющее права энергетика как основного хозяина сетки и главное он не может сказать когда конкретно ему нужно будет в следующий раз подключаться в сеть. Ведь это программа не просто снятия показаний но и еще всевозможных аналитических задач. И вторая причина я не случайно разбил цикл на t1,t2,t3 периода времени и все расписал (см. выше по теме) это как раз те промежутки времени комфортные для всех. и в первую очередь для регулирования тех процессов по температуре с онлайн индикацией показаний с допустимой задержкой по времени не более 5 секунд и в момент использования энергетиком лини раз в месяц не более 5 минут.

ну а СМИ2 на другой порт не посадить потому что они тоже на удалении и могут работать только в сети RS-485.

Но как вариант с ошибками в обмене ПЛК со СМИ2 в момент подключения второго мастера сети - идея интересная хотя и требует дополнительного изучения. Спасибо!

melky
23.11.2019, 10:56
Дебуг 232-й порт вроде, ставится преобразователь 232-485 (АС4 или 3 у Овен), тянется параллельно линия существующей, пересаживаются все СМИ на нее. Отвязываем их от линии счетчиков. Это на самом деле правильное логическое решение. тогда окна тишины каждый час вполне оптимальное решение

Ну, договоритесь с энергетиком :) тем более он читает раз в месяц... а так сможет хоть каждый час в окне тишины читать.
вообще энергетик работает на предприятии где все общее для предприятия:)

А ? так вы счетчики никак не читаете из ПЛК ? вы просто сели на эту линию чтобы свои СМИ раскидать ?????

Пожалуй вам надо читать из СМИ данные после отправки, если ошибки нет, переходить к следующему, если ошибка есть, прослушать порт на наличие передачи, если она есть, заткнуться на 5 минут (ну или точнее до времени тишины) если это ложная передача, продолжать, если это энергетик подключился, ждать...
Ну а еще свое архивирование реализовывать по тому же принципу.
з.ы. но я бы сеть разделил на СМИ и счетчики

Будь я энергетиком, я бы как раз потребовал окно тишины, позволив залезть в свою сеть, если другого варианта нет.

melky
23.11.2019, 11:58
Валенок программа у энергетика Мастер, а не слейв. и протокол Меркурий не Modbus.

И кто же ПЛК63 скажет, что он теперь мастер ? ПО у энергетика готовое решение, не предусматривающее подобных вещей

capzap
23.11.2019, 12:18
@echo O88
Set pingip=192.168.0.1
Set ProcessName=putty.exe
:end
ping -n 1 %pingip% >nul || Goto ELSE
TaskList /FI "ImageName EQ %ProcessName%" 2>nul|Find /I "%ProcessName%">nul||(
start /b cmd /c "C:\putty.exe -load aws"
)
Goto PAUSE
::EXIT
:ELSE
TaskKill /IM putty.exe /F > nul
:PAUSE
ping -n 21 127.0.0.1 > nul
Goto endя ведь не зря писал про скрипт. Пример у меня переподключает ssh соединение, если комп во время моего отсутствия перехагрузился или пропадала связь с роутером. Так же можно организовать работу и по этой теме, запустили скрипт который сперва оповещает плк что надо ему отключиться, затем запускает прогу энергетика, когда он её выключит, посылается сигнал плк что может продолжить работу. В итоге сперва слейв, потом два раза мастер, вот что нужно от скрипта

melky
23.11.2019, 13:33
capzap а из скриптов Windows (bat или cmd файлы) можно работать с COM портом ?

хотя в принципе можно и exe написать, чтобы он по сети RS485 послал команду в ПЛК.

Действительно вариант. Можно в exe прописать что нужно, а потом вызвать программу. Дать ему такой же ярлык проги, как у энергетика, либо просто сказать ему, что надо запускать.

Валенок
23.11.2019, 19:35
..и протокол Меркурий не Modbus.
Это что-то принципиально меняет ? Чтение и запись есть ?

Вот вы выше же и предложили решение - запускается другая прога, она - слейв. Как до нее достучится 63й - они "рукипожмут" и 63й теперь слейв, а прога запускает исходного мастера.

И кто же ПЛК63 скажет, что он теперь мастер ?
эта же прога по закрытию исходного мастера, или сам мастер (если позволяет это) или простая тишина заданного периода.

у энергетика готовое решение, не предусматривающее подобных вещей
Не позволяет в нем - сделается вне его. Те же яйца вид сбоку.
ТС же все легко сделает как понял.

SlavikP
26.11.2019, 04:51
Встречал готовое аппаратное решение DevLink-М1 (яндекс и гуголь знают о нем). Он как раз позволяет безболезненно использовать 2 мастера на общей шине rs485.

evg_mart
21.12.2019, 23:23
https://www.devlink.ru/product/promyshlennyy-gsm-terminal-modem-devlink_m60/
Посмотри тут предлагают аппаратную железку для таких случаев может подойдет

Leon7
25.12.2023, 22:58
tSH-735 - отличная железка.

Ollema
02.02.2024, 14:13
Тоже потребовалась подобная задача: в готовую сеть Modbus RTU, надо добавить еще одного мастера. Опрос не частый, поэтому думаю DevLink-М1 справится легко, заказал.

Добавляемый мастер - панель Weintek. Опрашивать должна два устройства. Подскажите, как в этой панели заставить мастера производить опрос через определенное время? Там в настройках порта можно задавать период опроса, но тогда каждое устройство опрашивается через этот период, а мне надо быстро опросить два устройства и сделать паузу секунд 20.

melky
02.02.2024, 14:19
Ollema подобные устройства по идее не имеют нужного функционала. Я про панель. ну и кто первый мастер вы не написали. Может в панели есть возможность опрашивать по скрипту и она еще будет слейвом для первого мастера, который опросив, тут же разрешит опросить и со стороны панели. Ну либо будете время от времени ловить коллизии.

Ollema
02.02.2024, 14:27
Первый мастер - OwenCloud. У панели один только порт.
Понятно, что коллизии неизбежны, но, поскольку облако опрашивает раз в минуту - панель будет в состоянии делать свои дела.
Можно же в панели макросом как то опрашивать и задавать период опроса?

Sergej_
02.02.2024, 15:05
Первый мастер - OwenCloud. У панели один только порт.
Понятно, что коллизии неизбежны, но, поскольку облако опрашивает раз в минуту - панель будет в состоянии делать свои дела.
Можно же в панели макросом как то опрашивать и задавать период опроса?
Панель не такая как у Вас , но думаю таймеры есть.73255

Николай Суриков
02.02.2024, 15:32
Первый мастер - OwenCloud. У панели один только порт.
Понятно, что коллизии неизбежны, но, поскольку облако опрашивает раз в минуту - панель будет в состоянии делать свои дела.
Можно же в панели макросом как то опрашивать и задавать период опроса?

73259
Можно.

Ollema
02.02.2024, 16:47
Спасибо! Буду пробовать.

EFrol
03.02.2024, 08:45
Признаюсь честно, для меня не совсем ясно "что такое красивое решение"!
Поэтому предложу любое https://effatech.ru/oborudovanie/kommutatory-interfeisov/sdi-4241

Ollema
03.02.2024, 10:36
Да уж, мастер в панели Weintek это хрень какая то. Или у меня лыжи не едут. ПР200 упорно не желает отвечать на его запросы. Смотрел анализатором - запросы ОК, ModbusPool отвечает как то угрюмо, ПР200 - только исключительно по настроению.

Перевел панель в слейв - все просто летает. И пишется и читается с той же самой ПР200.

Придется забабахать ПР200 с двумя мастерами.

imaex
03.02.2024, 13:27
2 и более мастера на 485-ом давно реализовано. Думаю, что и не раз. Но это не про modbus ни разу. Задача поставлена некорректно.

Ollema
03.02.2024, 13:33
Потому что уже имеется рабочая система. Никто ее всю переделывать не будет. Появляются новые хотелки и под них реализация.

МихаилГл
03.02.2024, 13:41
Потому что уже имеется рабочая система. Никто ее всю переделывать не будет. Появляются новые хотелки и под них реализация.

Новые хотелки и технические возможности имеющегося оборудования это разные вещи. Нужно понимать к чему это может привести.

Городить два мастера на один модбас может окончиться фиаско. Либо разрабатываете своё ПО с нуля на основе модбас, чтоб в линии не было одновременно 2х мастеров.

melky
03.02.2024, 14:35
Ollema кто у вас первый мастер ? и панель должна управлять или только показывать?

EFrol
03.02.2024, 15:01
У Овена есть прибор, который снят с производства, ЕКОН-134 (https://owen.ru/product/ekon134).
У которого любой порт мог работать в режиме "Запрос-Ответ". В инструкции было сказано, что все запросы ставятся в очередь в FIFO-буфер и полученный ответ отправляется источнику запроса. С помощью него я мог подключать несколько мастеров в одну RS485-ю сеть независимо от протокола. Требовалось только увеличить время таймаута (ожидания ответа) на каждом мастере, так как запрос мог какое-то время ожидать своей очереди. И все работало без проблем.

Сергей0308
03.02.2024, 16:19
Да уж, в смысле, складывается устойчивое впечатление, что(в нашей галактике) нет панелей с 2 портами(интерфейсами RS485), так там ещё и проект понадобится для панели, но это уже программная часть, в смысле, для начала надо решить проблему аппаратной части!

Валенок
03.02.2024, 18:12
1.

Добавляемый мастер - панель Weintek.
И?

2.

Первый мастер - OwenCloud. У панели один только порт.

проясняется

3.

мастер в панели Weintek это.... ПР200 упорно не желает отвечать на его запросы.
не срослось

4.

Придется забабахать ПР200 с двумя мастерами.
На этом этапе можно предположить что ПР таки с 2-мя интерфейсами, что нормально для задачи.
Ну и разбираться с п.3



.. панелей с 2 портами(интерфейсами RS485)
Зачем 3-й интерфейс? И что делать будет 2-й интерфейс в ПР?
Схема сетей - где?

Ollema
03.02.2024, 21:57
ПР с двумя мастерами пока отменяется))
Разобрался с обменом ПР200 - моя вина, не сделал подтяжку в модуле гальваноразвязки для панели. Работаем дальше.

Ollema
03.02.2024, 22:50
73259
Можно.

Спасибо огромное, Николай! Это оказалось именно то, что я искал!