PDA

Просмотр полной версии : Программа контроля работы насоса



Santim
02.04.2011, 22:47
Доброго времени суток.
Около недели назад начал изучать CoDeSys в связи с необходимостью запрограммировать контроллер ОВЕН ПЛК-63.
Помогите пожалуйста решить задачу.

Нужно написать программу на контроллер ПЛК-63, которая будет обеспечивать аварийную остановку насоса.
Последовательность работы системы будет следующая.

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

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

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

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

Попытки написать данную программу самостоятельно потерпели фиаско, так как программист я не опытный. Теоретически изучил языки МЭК, но на практике пробовал делать только примеры, из документации, что шла с ПЛК.

Буду благодарен за любые подсказки, как реализовать данный проект, или за примеры реализации подобных программ, если вдруг у кого завалялись.
Заранее спасибо)

rovki
02.04.2011, 22:58
Датчик давления на выходе насоса какой?(аналоговый или дискретный)

capzap
02.04.2011, 23:01
Если их показания соответствуют требуемым
Интересная трактовка состояния дискретных сигналов :)
По существу Вы бы выложили свои изыскания, для Вас же легче когда поправят Ваш проект, чтоб Вы не "плавали" в чужих мыслях

Николаев Андрей
03.04.2011, 10:21
На каком языке пишете?
Здесь я бы посоветовал либо LD либо ST.

Santim
04.04.2011, 10:17
Датчик давления на выходе насоса какой?(аналоговый или дискретный)

Дискретный.


Интересная трактовка состояния дискретных сигналов

Сорри за некорректрное описание. Только начал заниматься подобными вопросами, по этому объясняю все так, как понимаю, но судя по всему иногда понимаю не правильно(


По существу Вы бы выложили свои изыскания, для Вас же легче когда поправят Ваш проект, чтоб Вы не "плавали" в чужих мыслях

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


На каком языке пишете?
Здесь я бы посоветовал либо LD либо ST.

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

capzap
04.04.2011, 11:47
по поводу входных дискретных сигналов, разрешение это когда все в состоянии TRUE или если иначе то какова таблица истинности

Santim
04.04.2011, 11:54
Да, разрешение - это когда все 4 входных датчика дают TRUE.
Если хоть один из входных датчиков после опроса остался в состоянии FALSE, выключение двигателя насоса не производить.

capzap
04.04.2011, 12:20
когда открывается заслонка, давление должно упасть, на это тоже не обращать внимание, а тогда напрашивается вопрос есть ли датчик сухого хода

Santim
04.04.2011, 13:06
Спасибо за вопрос по поводу датчика сухого хода. Выясняя этот вопрос узнал, что поступили небольшие изменения задачи.

Датчик давления будет аналоговый с выходом 4...20 мА, а не дискретный, кая я по ошибке написал раньше.

По достижении необходимого давления (0.7 рабочего давления) в трубе с закрытой задвижкой, датчик должен дать сигнал на открытие задвижки и одновременно запустить таймер. За время работы таймера (10 с) задвижка должна полностью открыться.
Если время на таймере закончилось, а задвижка еще не открылась до конца, следует отключить двигатель.
Показания аналогового датчика давления должны сниматься постоянно и в случае, если они упадут до 0.3 рабочего давления, следует отключить двигатель.
Датчик сухого хода в схеме есть, но он не будет подключен к данному контроллеру.

capzap
04.04.2011, 13:12
а какова его цель, он скорее всего тоже будет отключать двигатель, тогда нужна обратная связь от движка, в каком он состоянии

Santim
04.04.2011, 13:35
По поводу датчика сухого хода поговорил с электриком, он сказал, что сам будет заниматься его подключением и что мне вопросами датчика сухого хода заниматься не нужно.
Мне нужно только сделать программу, которая будет обеспечивать включение двигателся при сигналах TRUE c 4 входных датчиков и обеспечивать его аварийную остановку в случае не полного открытия клапана либо в случае недостаточного давления в трубе после полного открытия клапана.

capzap
04.04.2011, 14:12
я бы начал с такого варианта

Santim
04.04.2011, 14:24
Capzap, огромное спасибо за помощь!)
Попробую теперь запрограммировать контроллер, привязать переменные из проги к входам/выходом контроллера и буду смотреть результат.

capzap
04.04.2011, 14:33
без фанатизма, это же просто набросок

Santim
04.04.2011, 14:54
Все равно огромное спасибо)
Набросок ответил на многие возникающие у меня вопросы по поводу будущей програмы.

Леонид
04.04.2011, 15:22
Если их показания соответствуют требуемым

Интересная трактовка состояния дискретных сигналов :)


:D :D :D :D :D :D :D

Santim
06.04.2011, 11:49
Возникла проблема в реализации програмы, до решения которой своими мозгами дойти не получается(
Подскажите, если кто в курсе.

Если 4 входных дискретных датчика (в программе к1,к2,к3,к4) установить в положение TRUE, переменаая pmp принимает значение TRUE и запускает таймер ton1.
Спустя 10 секунд должен передаться (либо не передаться) сигнал от датчика к5. Если датчик в положении TRUE, работа программы должна продолжаться, если же датчик к5 в FALSE, должен пойти сигнал на завершение работы (переменная off_work).
Сигнал то идет (линия связи окрашивается в синий цвет), но переменная off_work не принимает значение TRUE.
В чем проблема и как ее возможно решить?

Архив с программкой прилагаю к сообщению.

Santim
06.04.2011, 12:35
Ответ на вопрос уже нашел. Проблема оказалась в том, что после присвоения переменной значения TRUE, ей же присваивалось FALSE.

Santim
12.04.2011, 11:39
Закончил данную программу управления насосом, подключил к ПЛК63 и записал ее в контроллер, чтобы подключить к нему датчики и проверить на работоспособность.
Сразу же возник вопрос как увязать переменные, использованные в программе с входами/выходами контроллера. Пытался в конфигурации ПЛК входы и выходы назвать именами переменных, как в моей программе. после присвоения имен входных переменных дискретным входам контроллера все работало нормально. Но после попытки присвоить имена выходных переменных релейным выходам контроллера получил ошибку "Проект должен быть корректен для подключения",а внизу написало " Ошибка 3703. ...Несколько объявлений с одинаковым идентификатором".
В чем проблема и как ее решить?

swerder
12.04.2011, 13:33
проблема в том, что вы под 2 раза объявили одни и те же переменные - 1 раз в конфигураторе, второй где-то в программе
удалите объявления из программы и оставьте в конфигураторе

Николаев Андрей
12.04.2011, 15:09
проблема в том, что вы под 2 раза объявили одни и те же переменные - 1 раз в конфигураторе, второй где-то в программе
удалите объявления из программы и оставьте в конфигураторе

Это первое.
Второе - обратите внимание - выхода ПЛК63 требуют числа типа Real, а не bool. В простейшем случае просто используйте преобразование bool_to_real

Santim
12.04.2011, 17:40
Спасибо большое. Буду пробовать.

Santim
14.04.2011, 10:44
Подскажите пожалуйста
-как на CFC делать преобразование bool_to_real для выхордных параметров
-как сдалть так, чтобы запуск программы производился кнопкой "ПУСК" с контроллера, а не с CoDeSys

Николаев Андрей
14.04.2011, 23:04
1.вставляете простой блок. Так и пишете bool_to_real. На вход подается изначальное значение. С выхода - подаете на выход ПЛК.
2. Программно. Вы сами в программе учитываете, что только если вход какой то сработал - запускать таймеры, включать механизмы и т.д.

Santim
15.04.2011, 10:17
2. Программно. Вы сами в программе учитываете, что только если вход какой то сработал - запускать таймеры, включать механизмы и т.д.

У меня программно записано, что после сигнала TRUE с 4 входных датчиков нужно запускать двигатель насоса, но ничего не происходит, пока не нажму в CoDeSys кнопку "старт".
При нажатие кнопки "пуск/старт" на самом ПЛК реакции никакой.

Николаев Андрей
15.04.2011, 10:34
Уважаемый Santim. Прошу Вас потратить еще немного времени на ознакомление с прибором.
Кнопки на лицевой панели - для создания Вашей логики их работы и для некоторых сервисных. То есть данная кнопка не запускает\останавливает работу самого контроллера, а, программно обработанное нажатие на неё и должно давать решение. Для работы с кнопками используется библиотека, идущая в комплекте на диске. Там же есть пример использования.

Для запуска контроллера после записи программы из CoDeSys необходимо действительно либо нажать Старт в CoDeSys, либо перезагрузить контроллер

Santim
15.04.2011, 10:39
Спасибо, пошел перечитывать руководство)