PDA

Просмотр полной версии : Варианты передачи уставок/рецептов из Scada в ПЛК



Vitorgan
23.06.2022, 11:18
Уважаемые форумчане, добрый день.
При разработке старого проекта, уже вставал вопрос с передачей большого количества редко обновляемых переменных в обход OPC сервера (для экономии). Тогда мне помог ув. petera.
Работа заключалась в передаче заранее сконфигурированного файла .csv путем использования конфигуратора СП300, как прокладки которая спокойно кушает строки csv, и отправляет в ПЛК. Способ рабочий на 100%, рабочий уже много лет.
Но, есть некоторое количество причин, по которым хочется попробовать уйти от доп. программ:
1) хочется развиваться, может кто подскажет вариант с записью файла в плк напрямую, и вот уже придется изучать разные библиотеки связанные с передачей/приемом файлов и выдергиванием из них строк
2) костыль с эмулятором хоть и работает как часы, но все-таки костыль.
Подскажите пожалуйста, кто как решает данную проблему в середине 2022 года? Есть ли способ из скады дать команду на запись файла в ПЛК? или же вроде бы встречался мне вариант с веб сервером, пробовал кто через него?

Была идея при инициализации scadы, используя 2 переменных OPC передавать последовательно (номер уставки/ значение) в плк, а в режиме онлайн-изменения определенный уставки, выставлять флаг перезаписи, и в плк уже перезаписывать нужную переменную. Пока думаю в эту сторону, но тоже слишком сложное нагромождение. Буду рад любой подсказки.

petera
23.06.2022, 11:50
Уважаемые форумчане, добрый день.
При разработке старого проекта, уже вставал вопрос с передачей большого количества редко обновляемых переменных в обход OPC сервера (для экономии). Тогда мне помог ув. petera.
Работа заключалась в передаче заранее сконфигурированного файла .csv путем использования конфигуратора СП300, как прокладки которая спокойно кушает строки csv, и отправляет в ПЛК. Способ рабочий на 100%, рабочий уже много лет.
Но, есть некоторое количество причин, по которым хочется попробовать уйти от доп. программ:
1) хочется развиваться, может кто подскажет вариант с записью файла в плк напрямую, и вот уже придется изучать разные библиотеки связанные с передачей/приемом файлов и выдергиванием из них строк
2) костыль с эмулятором хоть и работает как часы, но все-таки костыль.
Подскажите пожалуйста, кто как решает данную проблему в середине 2022 года? Есть ли способ из скады дать команду на запись файла в ПЛК? или же вроде бы встречался мне вариант с веб сервером, пробовал кто через него?

Была идея при инициализации scadы, используя 2 переменных OPC передавать последовательно (номер уставки/ значение) в плк, а в режиме онлайн-изменения определенный уставки, выставлять флаг перезаписи, и в плк уже перезаписывать нужную переменную. Пока думаю в эту сторону, но тоже слишком сложное нагромождение. Буду рад любой подсказки.

Не знаю, поможет или нет...
Выкладывал в 2015г. пример для ПЛК - рецепты в файле https://web.archive.org/web/20170804174019/http://www.owen.ru/forum/showthread.php?t=22665
61366

Редактирование, и сохранение в файл сделано с помощью визуализации кодесиса


https://youtu.be/q9sjdc6UYY0?list=PLWZaj_ZBIvwRvbhmC9uVgbGCNqGYEqdJ 1

Vitorgan
23.06.2022, 12:29
Не знаю, поможет или нет...

Я в Вас не сомневался)) снова мой спаситель первым пришел на помощь) Спасибо Вам большое)
Как я понял, в данном варианте все происходит внутри среды кодесис? А пробовали ли вы из вне, с локального пк без кодесис подгрузить файл? для дальнейшей его обработки?

petera
23.06.2022, 12:51
Я в Вас не сомневался)) снова мой спаситель первым пришел на помощь) Спасибо Вам большое)
Как я понял, в данном варианте все происходит внутри среды кодесис? А пробовали ли вы из вне, с локального пк без кодесис подгрузить файл? для дальнейшей его обработки?

Не пробовал, файл не текстовый
Здесь рецепты - массив структур
Один рецепт - структура из четырех полей

TYPE Reciple :
STRUCT
Name:STRING(20); (*Название рецепта*)
Param1:INT;
Param2:INT;
Param3:REAL;
END_STRUCT
END_TYPE
Чем обрабатывать?

ЗЫ.
Зачем редактировать в ПК?
Из скады можно обратиться к любому рецепту в ПЛК по индексу массива, например "n"
Dlina:=Reciples[n-1].Param1;
Glubina:=Reciples[n-1].Param2;
Temperatura:=Reciples[n-1].Param3;

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

Vitorgan
23.06.2022, 13:01
Понял Вас, а если ПЛК сброшен до заводских настроек, файл с ПЛК пропадет? и придется все рецепты вводить занаво? Или же он сохраняется в ПЛК?

petera
23.06.2022, 13:03
Понял Вас, а если ПЛК сброшен до заводских настроек, файл с ПЛК пропадет? и придется все рецепты вводить занаво? Или же он сохраняется в ПЛК?

Вот здесь не знаю, по идее файлы, кроме файлов проекта, в ПЛК должны остаться до момента форматирования памяти, ИМХО

Vitorgan
23.06.2022, 13:20
Значит получается, я делаю интерфейс в скаде в виде например выпадающего списка "рецептов" ( у меня это будет выпадающий список механизмов и элементов системы для которых нужны уставки, например ( Насос - Мин, макс частота, макс ток, и тд) ) при выборе "Насос" я увижу подгруженные в переменные значения именно для Насоса. В принципе такой подход устраивает. Нет проблемы постоянного сравнения переменных скады с плк, "замутов" с переменной времени изменения", я работаю только с ПЛК. Буду пробовать