Tag Archives: программирование ПЛК

Программа автомойки на языке CFC

Условие. Все как всегда очень и очень просто. Есть автомойка, работающая в сугубо автоматическом режиме, т.е. пришел с утра хозяин, нажал кнопку «Пуск» и, пока не сбросит ее, мойка моет. Программа управляет двумя воротами с концевыми датчиками  (на въезд и на выезд), помывочной системой и подсчитывает число вымытых машин по сигналу с бесконтактного датчика. Помывочная платформа также оснащена двумя датчиками (в начале и конце платформы) для контроля наличия автомобиля.

Чему можно научиться: язык CFC, работа с таймерами и переменными типа Time, set/reset.

Решение. Как это ни парадоксально самой сложной и трудоемкой частью этой задачи является задание переменных. Итак, приступим.

7 датчиков системы, все дискретные:

(*датчики положения ворот*)

dat_vorot1_open: BOOL;        (* бесконтактный датчик открытия въездных ворот *)

dat_vorot1_close: BOOL;        (* бесконтактный датчик закрытия въездных ворот *)

dat_vorot2_open: BOOL;        (* бесконтактный датчик открытия выездных ворот *)

dat_vorot2_close: BOOL;        (* бесконтактный датчик закрытия выездных ворот *)

(*датчики наличия автомобиля на помывочной платформе*)

dat_pl_vh: BOOL;          (* бесконтактный датчик на въезде на помывочную платформу *)

dat_pl_vyh: BOOL;        (* бесконтактный датчик на выезде с помывочной платформы *)

(*датчик проезда автомобиля через выходные ворота*)

dat_proezd: BOOL;

5 сигналов управления, также дискретные:

(*сигналы управления *)

vorot1_open: BOOL;     (* сигнал открытия въездных ворот *)

vorot2_open: BOOL;     (* сигнал открытия выездных ворот *)

vorot1_close: BOOL;     (* сигнал закрытия въездных ворот *)

vorot2_close: BOOL;     (* сигнал закрытия въездных ворот *)

moyka: BOOL;     (* включение мойки *)

3 временных параметра:

(*временные задержки*)

t_vyezd:TIME:=t#5s;      (* время задержки закрытия выходных ворот после выезда машины *)

t_zad_vkl_moyky:TIME:=t#10S;(*время задержки включения мойки после въезда машины на платформу*)

t_moyky:TIME:=t#2m;(*время мойки*)

Кроме того, кнопка включения системы и счетчик:

chislo_mashin:INT;(*счетчик*)

pusk: BOOL;        (* кнопка запуска *)

ну и для инициализации системы при первом запуске и события проезда:

init: BOOL := 1;

proezd:BOOL;

Теперь перейдем к программе управления. Разберем ее по цепям.

Программа управления

Программа управления

При срабатывании обоих датчиков положения на платформе закрывается дверь въездных ворот и после технологической задержки (выключить зажигание, двери запереть) включает на заданное время режим мойки. Через 2 минуты режим мойки отключается и открываются ворота на выезд.

Следующая цепочка:

Ситуация выезда машины из мойки

Здесь обрабатывается ситуация выезда машины из мойки. После появления заднего фронта с датчика проезда инициируется событие проезда и увеличивается счетчик машин (счетчик реализован в самом простом варианте. Можно использовать стандартный счетчик CTU, тогда необязательно отлавливать фронт).

Теперь событие выезд:

При возникновении события проезд через заданный промежуток времени закрываются выездные ворота и открываются въездные. Для открытия въездных отрабатывается также ситуация инициализации.

Ну и последнее – обработка сигналов концевиков:

Обработка сигналов концевиков

Здесь останавливаются соответствующие приводы и сбрасываются события инициализации и проезда.

 

Мой блог находят по следующим фразам

Пример программы ПЛК на языке ST «Работа с температурным графиком»

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

Чему можно научиться:  создание и использование функций и функциональных блоков; семантика циклов и условных переходов на языке структурированного текста; работа с массивами данных.
Оборудование: для программы управления вентиляцией, частью которой является описанный проект, предпочтительно использовать ПЛК со встроенными аналоговыми входами (проект примера работает в режиме эмуляции)

Оборудование: для программы управления вентиляцией, частью которой является описанный проект, предпочтительно использовать ПЛК со встроенными аналоговыми входами (проект примера работает в режиме эмуляции)

Функциональный блок «Обработка графика»

Функциональный блок «Обработка графика»

Общая программа

Визуализация работы проекта

Визуализация работы проекта

 

Мой блог находят по следующим фразам

Пример программы на языке LD релейных диаграмм (гирлянда)

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

Чему можно научиться:  работа с языком LD, установка параллельно и последовательно реле и катушек, работа с функциональным блоком таймера задержки; использование цикла ПЛК в алгоритме программы; определение булевых и временных переменных; установка и сброс дискретных сигналов (S, R).
Оборудование, на котором предпочтительно реализовывать – программируемое реле (пример сделан в режиме эмуляции).

Выбор языка программирования ПЛК

Раздел переменных

Раздел переменных

Кадры визуализации

Кадры визуализации

Программа ПЛК

Программа ПЛК

Программа ПЛК, запущенная на исполнение

 

Мой блог находят по следующим фразам

Языки программирования ПЛК. Проект ПЛК

У ПЛК есть несколько основных языков программирования. Во-первых, это что-то похожее на языки программирования высокого уровня. Называется язык структурированного текста (по-буржуйски ST). Исключительно удобная штука, если есть навыки программирования. Собственно, для программистов и придумана. Однако когда ПЛК разрабатывался и внедрялся, профессия программиста (в смысле толкового программиста с хорошей технической подготовкой) была еще более дефицитной, чем в наши суровые времена. Посему практичные янки и весь мир следом разработали несколько видов графических языков. Для электриков создали язык релейных диаграмм (по-буржуйски LD). Ничего в общем сложного – шина входов, шина выходов, между ними – схема из релюшек, нормально замкнутых или разомкнутых, ну и таймеров, конечно, триггеров всяких. Плюс в простоте – была бы схема, а программа напишется. Минус в трудностях работы с аналоговыми сигналами.

Другой вид графических языков – язык функциональных блоков (по-буржуйски FBD). Мне он очень напоминает работу, например, с пакетом Simulink программного комплекса Matlab, товарищу напротив — Vissim. Да, в общем, получить техническое образование ни разу не столкнувшись с такого рода ПО трудно.  Основа всего — блоки, соединенные в нужной последовательности линиями связи. Если вы – технарь, пожалуй, наиболее прост для освоения и активного использования. Плюс – наглядность, интуитивная понятность реализуемых алгоритмов. Минусы – работа с циклами. Можно, конечно, но на ST такого рода программки и пишутся легче и короче.
Последний вариант графического языка – алгоритмический (SFC). Это наиболее высокий по уровню графический язык. Каждый его шаг – маленькая (или большая) программа. Очень красивый язык, справедливо обожаемый технологами всех мастей. Позволяет создавать жестко структурированные, удобные для отладки проекты. Минус всего один – браться за его изучение стоит, лишь в достаточной степени освоив язык ST, LD или FBD. Программы для отдельного шага все равно писать на них.

Ах, да. Чуть не забыл. Есть еще что-то похожее на ассемблер. Называется  списком инструкций (по-буржуйски IL). Если вы фанат бесконечной работы с аккумулятором – это для вас. Минусы – длинный программный код, хорошо смотрящийся только в приложениях к диссертации, проблемы отладки. Короче в моем понимании – пятое колесо в телеге программирования ПЛК. Могу быть не прав.

Программа или проект?

Давайте сразу отделим котлеты от мух. Тот код, который мы героически пишем – это конечно программа. Вернее, более точно, программа – это код определяющий цикл работы ПЛК.  Их у контроллера может быть не одна,  не две, а много. Меняться они могут по времени, внешнему или программному событию. То есть программа – вещь достаточно частная. Совокупность же того, что «залито» в контроллер, принято называть проект. Помимо набора программ проект включает в себя подключенные библиотеки, типы данных, визуализации, конфигурации,  настройки конкретного ПЛК и многое другое.

 

Мой блог находят по следующим фразам