PDA

Просмотр полной версии : Автоматизация КНС, нужна помощь с программой



shturik
29.11.2014, 19:16
Добрый день, нужна помощь с написанием программы. Пишу программу для управления КНС. Контроллер ПЛК154А.М. На КНС есть два насоса, включения насосов по уровням, уровни контролируется аналоговым датчиком 4-20 ма (0-500 см). Уровень 175 см, включение насоса 1, уровень 200 включение насоса 2, уровень 50 отключение всех насосов. Есть два поплавка, уровень переполнения (тревога максимальный уровень), уровень сухой ход (тревога минимальный уровень). Необходимо реализовать переключение с ручного режима на автоматический (управление по уровням). В ручном режиме, возможно включать и останавливать насосы по отдельности и оба насоса одновременно, уровни не учитываются. В автоматическом режиме, ручной режим не активен. Включение/выключение насосов с задержкой 10 секунду. Выкладываю программу, пишу впервые, сильно не "пинайте", подскажите как решить эту задачу.

Scream
29.11.2014, 20:36
Практически то же самое делаю сейчас, с понедельника пусконаладка.
Какой аналоговый датчик используете?

По программе.
Используйте константы. Тоесть не нужна вам пременная ust175, вместо нее в ячейке так и пишите "175". Тоже самое про tim1...
Рекомендую попробывать венгерскую запись. Ну это так, лучше работать не станет.
1)Зачем\почему всё глобальное?
2) Как будет меняться режим? Как планируете управлять переменной avto?
У меня например переключатель на щите.
Приложу кусочек кода на скрине как сделал я вкл\ выкл насосами.
15516
У нас чуть по сложнее правда
1) Резервное питание.Отслеживание перехода на резервное питание и уведомление по сети,web,смс.
2) Возможность поставить насос на ремонт (тоесть ни прикаких условиях программа не запустит насос со статусом ремонт, так же он не будет активным)
3) Около 16 аварий + ~130 событий для удаленного мониторинга.
4) Смс уведомление.
5) Автоматическое переключение насосов по моточасам.
6) и еще чуть чуть всяких плюшек.

smk1635
29.11.2014, 20:50
В руководстве на КДС прочитайте про оператор выборки SEL (стр. 304). На первый вход этого оператора подайте сигнал "avto ".

lara197a
30.11.2014, 01:15
Так а зачем ПЛК?
Все можно сделать на ПЧ.

shturik
30.11.2014, 07:23
Спасибо за ответ, так же планирую пусконаладку на понедельник-вторник. Немного более развёрнуто опишу задачу. Есть КНС, на них установлена автоматика GRUNDFOSS Control MC, оба насоса управлялись с помощью их автоматики. Задача первоначальная состоял в том чтобы просто дублировать сигналы на ПЛК и передавать через ПМ1 на master scada, на диспетчерский пункт, где осуществляется мониторинг за состояние автоматики, в итоге выяснилось, что автоматика не работает ни на одной КНС, вышли из строя программы на программных картах. Было решено перевести всё управление на ПЛК 154. Завязываем датчик уровня и поплавки с их автоматики на наш контроллер, также появилась необходимость управлять всей системой с диспетчерского пункта через модемы ПМ1 и с помощью masterscada. По поводу переменных tim1 и ust175, изначально так и прописывал значения прям в программе, но в итоге наткнулся на видеоуроки Гайнутдинова Кирилла, увидел такой метод задания переменных, данный способ показался более удобным. Отвечу на вопросы 1) Есть на диске овен, примеры программ, одна из них, управление насосами, в этой программе управления существует две управляющие программы, как я понял программа инициализации (ST) и непосредственно следующая за ней программа управления, если я правильно понял, в программе инициализации задаются все начальные параметры переменных. (думаю идти по этому пути, но пока ещё не решил :) ). 2) Меняться режим, как вы уже поняли, будет удалённо, в диспетчерской. По поводу сложности, планирую в будущем усложнить программу, с учётом моточасов, датчиков температуры двигателя и т.п. Но так как я в этом деле новичёк и времени ни так много, планирую запустить КНС на простой программе.

shturik
30.11.2014, 14:16
В руководстве на КДС прочитайте про оператор выборки SEL (стр. 304). На первый вход этого оператора подайте сигнал "avto ".

Очень дельный совет, так всё и сделал, спасибо. avto на первый вход, ручной пуск и стоп на второй, пуск и стоп по уровням на третий, при avto = TRUE, значение берётся с третьего входа, при FALSE со второго. Код программы сократился в два раза, завтра протестирую на контроллере.

smk1635
30.11.2014, 16:32
Очень дельный совет, так всё и сделал, спасибо. avto на первый вход, ручной пуск и стоп на второй, пуск и стоп по уровням на третий, при avto = TRUE, значение берётся с третьего входа, при FALSE со второго. Код программы сократился в два раза, завтра протестирую на контроллере.

Ну если пригодилось, то могу дать ещё несколько советов. :)
Но сперва вопрос. Дополнительный модуль дискретных входов будете использовать ? А то у ПЛК 154 всего четыре дискретных входа.

shturik
01.12.2014, 12:28
Ну если пригодилось, то могу дать ещё несколько советов. :)
Но сперва вопрос. Дополнительный модуль дискретных входов будете использовать ? А то у ПЛК 154 всего четыре дискретных входа.

Дополнительного модуля не будет. Перешёл к следующему этапу, настраиваю связь с помощью ПМ1. На диске есть готовый конфиг, принцип следующий, два модема подключены к компьютеру, работают в режиме master и slave, связь через CSD, на объекте ПМ1 подключён к ПЛК. Данные через Lectus Modbus OPC/DDE server попадают в masterscada. Вопрос следующий, есть-ли где-нибудь посмотреть или почитать толковое руководство на настройку переменных в Lectus Modbus OPC/DDE server, кроме справки конечно. В моём случае, предполагаю, что нужно прописать переменные, avto (включение выключение автоматического режима), nasos1 и 2 (контроль включения/выключения), переменные, пуск, стоп, насоса 1, 2 и оба насоса одновременно, авария макс, авария мин, лампа (охранная сигнализация), сброс, ну и думаю переменную уровень (для визуализации уровней).

smk1635
01.12.2014, 13:05
Если используете Мастескаду, то почему бы не воспользоваться их Modbus Universal MasterOPC Server. На 32 точки он бесплатный. Тем более на форуме есть представитель компании Инсат очень оперативно отвечающий на возникшие вопросы.

По передачи данных. Значение уровня лучше преобразовать из REAL в WORD. Все таки протокол Модбас заточен под работу с WORD. По дискретным сигналам. Посмотрите описание функциональных блоков PACK и UNPACK из библиотеки Util. Тогда по сети будете передавать только две - три переменных.