PDA

Просмотр полной версии : ПЛК110 и передача на верхний уровень



OverGrow
17.04.2019, 14:28
Доброго времени коллеги. Встала задача по диспетчеризации нескольких корпусов одного объекта. Вопрос: как осуществить передачу большого количества регистров на верхний уровень (около 500-700) минуя побитовое именование в конфигурации плк?

Изучая данный вопрос натыкался на решение через массивы...но точно не понял как реалезовать массиы регистров в языке FB. Подскажите в каком направлении искать ответ.

smk1635
17.04.2019, 14:40
минуя побитовое именование в конфигурации плк?


Что имеется виду ?

OverGrow
17.04.2019, 14:49
В проекте несколько сотен параметров битовой логики (обычно в малом объеме просто в Modbus_Slave задаю в 8 bit каждый из параметров и все). Интересно, возможно ли передавать переменные по Modbus RTU или TCP, не объявляя каждую из них, а отправить файлом или массивом?
Или еще более безумная мысль...возможно ли их объявить как сетевые переменные и просто (например OPC сервером) назначить опрос этих переменных по заданным адресам?

smk1635
17.04.2019, 15:07
Используйте это ФБ.

OverGrow
17.04.2019, 15:14
smk1635, Спасибо, поможет с опросом устройств. Остается дальше понять как развернуть это в обратную сторону на OPC. Но это уже другая история. Еще раз спасибо.

smk1635
17.04.2019, 15:24
ОРС с чем работает?

У MasterScada, к примеру, есть готовый ФБ "Распаковка 32бит_ значения".

В настройках блока указываете кол-во бит - 16, и получаете блок распаковки WORD в 16 бит.

В прочем это любая Скада умеет.

OverGrow
17.04.2019, 15:37
OPC как раз с MasterScada будет работать.
К сожалению установлен контроллер M02, а не тот что заточен для работы непосредственно с MasterScada. Было бы все гораздо проще.

KSergey
17.04.2019, 17:59
Упаковываете свои битовые переменные в DWORD, которые прописываете в конфигурации ПЛК (4byte), опрашиваете их ОРС-сервером, передаёте в Скаду, а там ФБ "Распаковка 32бит_ значения".

OverGrow
18.04.2019, 12:38
Обнаружил что у MasterScada 4D нет такой функции "Распаковка 32бит_ значения".

Andrew_Stranger
18.04.2019, 12:46
Можно скрипт написать свой, либо спросите у техподдержки.

petera
18.04.2019, 12:48
Обнаружил что у MasterScada 4D нет такой функции "Распаковка 32бит_ значения".

Вам не надо ничего изобретать со стороны СКАДЫ
Упаковываете в ПЛК все биты в переменные DWORD, которые помещаете в конфигурации слейва ПЛК как модули 4byte

В ПЛК ОВЕН в слейве области данных для бит(0х, 1х) и регистров(3х, 4х) совпадают
https://www.owen.ru/forum/attachment.php?attachmentid=12345&d=1395648726
Т.е. со стороны СКАДЫ всегда можно читать любые разряды регистров, например 4byte, как отдельные биты 0х или 1х и не нужно прибегать к каким-либо "Распаковка 32бит_ значения".

Если в слейве поместить подряд 20 модулей 4byte, то со стороны СКАДЫ можно читать разряды этих регистров как непрерывную область 0х000..0х639

smk1635
18.04.2019, 19:50
Не вытерплю, выскажусь. :)
ИМХО

Можно работать и с DWORD. Распаковывая по 32 бита.
Можно и с отдельными битами. Со всеми 639 сразу.
Можно, но не нужно.

Во первых, будет очень не удобно просматривать на мониторе иерархию. Разве что там монитор метр на два.
При связывании сигналов надо будет постоянно скролить. Очень неудобно и отнимает кучу времени.
Проект становится трудно читабельным.

Во вторых, лично мне, удобнее когда адресация регистров идет по порядку, а не через один. Спасает от ошибок.И при наладке проще.

В третьих, обычно регистры привязываю к оборудованию. К примеру есть установка № 1 с 26 дискретными сигналами. И установка № 2 с 12 дискретными сигналами. Соответственно для установки № 1 - 2 регистра. Для установки № 2 - 1 регистр.
Соответственно в скада два объекта с названием "Установка №1" и "Установка №2". Куда соответствующие регистры и распаковываются.

Отсюда и вывод, работа с переменными WORD оптимальна.

И вопрос к OverGrow , почему выбор пал на MasterScada4D?

Валенок
19.04.2019, 00:08
Отсюда и вывод, работа с переменными WORD оптимальна
Тоже не утерпел )) Почему WORD ? Оптимально STRING(1000) (ниже)
Зачем это кроилово - тут 1, тут 2 ? Если объекты можно обобщить, но одному нужен будет бит №100 - да не вопрос. Всем объектам по 8 регистров. Даже тем кому нужен только один и его №0. Верхний уровень по TCP ж ? Какая проблема прочитать 125 регистров за раз ?

Не понимаю глубинного смысла в типах для слейва. Это просто область памяти. Был бы стринг, сразу забил бы туда стринг(1000). Какие-то регистры, индексы. Зачем ? Объявил с двух сторон эквивалентные структуры, натянул структуру на стринг и вперед. Да и перетащить проект на другую платформу - секунды.

Как-то давно в слейве подержал контрол-V секунд 10, наколотил в слейв несколько сотен "4 byte", экспортировал и забыл. Только импортирую в каждый новый проект и не парюсь.

smk1635
19.04.2019, 08:49
Какая проблема прочитать 125 регистров за раз ?


Прочитать ни каких проблем. :)
Дело в Scada. Иерархия построения объектов древовидная. Очень тяжело читается большой объем одинаковых сигналов. По этому чем меньше, тем лучше.

Andrew_Stranger
19.04.2019, 12:34
Если OPC Codesys, то и конфигуратор не нужен. Вообще Slave лучше через библиотеку делать, конфигуратор не удобен при большом кол-ве переменных.