Как сделать светофор в oni plr

от admin

Как сделать светофор в oni plr

Программирования в программе ONI. Пример «Светофор» Светофор представляет собой электрический фонарь с красным, желтым и зеленым стеклами регулирующий движение транспорта и пешеходов. Элементы нагрузки: Q1 – красный сигнал; Q2 – желтый сигнал; Q3 – зеленый сигнал. Алгоритм работы: Светофор работает в двух режимах: «День», «Ночь». Режим «День» действует с понедельника по воскресенье с 06:00 до 01:00. Режим «Ночь» действует с понедельника по воскресенье с 01:00 до 06:00. Режим «День»: 1. Красный сигнал включен в течении 8 секунд; 2. Красный и желтый сигналы включены в течении 2 секунд; 3. Зеленый сигнал включен 8 секунд; 4. Мигающий (0,5 сек. Вкл., 0,5 сек. Выкл.) зеленый сигнал работает в течении 2 секунд). 5. Желтый сигнал включен в течении 2 секунд. 6. Повтор цикла с п.1. Режим «Ночь» В режиме «Ночь» желтый сигнал светофора мигает с частотой 1 сек. Вкл., 1 сек. Выкл.

Как сделать светофор в oni plr

Здравствуйте!
Я хочу показать, как пишется программа для управления технологическим оборудованием на ПЛК.
Чаще всего я имел дело с ПЛК производства Schneider Electric. Выбранный мной для данной задачи Quantum является самым мощным и дорогим ПЛК данного производителя. Он может управлять оборудованием с тысячами сигналов, для светофора в реальной жизни его никто, естественно, использовать не будет.

Автоматизацией светофоров я никогда не занимался, поэтому алгоритм придумал сам. Вот он:
1. Светофор для регулируемого пешеходного перехода. Т.е. светофор для машин, светофор для пешеходов и кнопка для пешеходов, нажав которую, пешеход уведомляет о желании перейти дорогу.
2. После старта программы загорается зеленый для машин и красный для пешеходов.
3. После нажатия кнопки пешеходом начинает мигать зеленый для машин, затем загорается желтый, затем красный. После этого загорается зеленый для пешеходов, через заданное время он начинает мигать, загорается красный для пешеходов, после этого для машин загорается желтый и красный, затем зеленый.
4. В течение заданного промежутка времени после зеленого на пешеходном светофоре нажатие кнопки пешеходом не запускает алгоритм перехода. Алгоритм перехода запускается в таком случае только по истечению заданного времени.
Программирование ПЛК ведется в среде программирования Unity на языках стандарта МЭК 61131-3. В данный стандарт входят 5 языков. Для примера я выбрал язык функциональных блоков – FBD.
Вот браузер проекта в Unity:

ПЛК состоит из монтажной панели, блока питания (1), контроллера (2), модуля дискретного ввода на 32 сигнала 24В постоянного тока (4), модуля дискретного ввода на 32 сигнала 24В постоянного тока (5). В реальном проекте монтажных панелей, подключенных к одному контроллеру по различным сетям, могут быть десятки, а модулей ввода-вывода – сотни.
Создаем переменные необходимых типов в редакторе переменных:

Переменные, привязанные к каналам модулей ввода-вывода имеют адрес, показывающий, к какой корзине, модулю и каналу привязан сигнал.
Программа состоит из секций, выполняемых каждый цикл сканирования контроллера по порядку.
Упрощенно цикл сканирования контроллера выглядит так:
1. Чтение входных сигналов из модуля ввода в переменные с адресам.
2. Выполнение секций.
3. Запись значений из переменных с адресами в выходные сигналы модулей вывода.
4. Переход на п.1.
Создаем секцию Clock с генератором импульса периодом 0,5 секунды. Блок TP при изменении входного сигнала из 0 в 1 на выходе выдает импульс заданной длительности.

Здесь и ниже скриншоты секций приведены в режиме анимации, а не режиме редактирования. На них отображены значения переменных в текущий момент времени при подключении к ПЛК с загруженной программой (числа для числовых переменных, цвет зеленый (1)-красный (0) для булевских).
Секция Main обрабатывает основную логику.
Блок SR устанавливает выход в 1 при S1=1 и сбрасывает выход в 0 при R=1.
Блок R_TRIG устанавливает выход на 1 цикл сканирования в 1 при переходе входа из 0 в 1 (детектор переднего фронта).
Блок F_TRIG устанавливает выход на 1 цикл сканирования в 1 при переходе входа из 1 в 0 (детектор заднего фронта).
Переменная inButton, привязанная к каналу кнопки, заменена в секции на inButtonForTest для того, чтобы можно было изменить ее значение на симуляторе контроллера без реального оборудования.

Секция Outputs формирует выходные сигналы для управления лампами светофоров.

Загружаем проект в симулятор контроллера:

Значение любых переменных можно посмотреть в анимационной таблице:

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

Пробуем перейти дорогу:

Не ожидал, что для управления такого простого объекта, как светофор, потребуется 30 блоков.
В следующей статье покажу, как написать данную программу, используя все языки стандарта МЭК 61131-3 одновременно.

Лабораторная работа 4, часть 1: простые конечные автоматы (2)

Теперь, когда мы окончательно освоили работу с генератором тактового сигнала и регистрами на Verilog+ПЛИС, пришло время сделать что-то более понятное широкому кругу лиц и приближенное к реальной жизни, чем просто мигающая лампочка. Сделаем сфетофор, который поочереди мигает 3мя лампочками. Но основная полезность светофора в качестве задания в данной лабораторной работе заключается в том, что его реализация представляет из себя простой и наглядный конечный автомат и в дальнейшем именно она ляжет в основу реализаций таких еще более понятных и полезных вещей, как микроэлектронные биороботы и подмножество настоящего процессора MIPS.

Конечный автомат (или машина состояний или стейт-машина — finit state machine) представляет из себя всего-навсего способ описания поведения системы в виде конечного набора состояний и событий, которые переводят систему из одного состояния в другое. Но чтобы долго не мусолить формальные определения, сразу попробуем описать светофор в виде конечного автомата.

Для этого в первую очередь все посмотрим на сам светофор:

и увидим, что он судя по всему может находиться всего в 3х состояниях: красный (red), желтый (yellow) и зеленый (green). Событием для перехода от одного состояния к другому будет истечение времени нахождения в текущем состоянии (для простоты будем считать, что в каждом из состояний сфетофор находится секунду).

Цепочка перехода: красный>желтый>зеленый>желтый>красный>же лтый>зеленый>желтый>.

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

Как видим, переход из желтого состояния по событию "истекла 1 секунда" в данном случае не однозначен, т.к. исходя из одной только нарисованной машины состояний не очень ясно, куда в этот момент переходить — в красное или зеленое. Чтобы сделать правильный выбор, нужно знать в каком состоянии машина находилась перед этим — если она была красная, значит переходить нужно в зеленый, а если была зеленая, то нужно переходить в красный.

Для решения этого вопроса разобьем состояние желтый на две части — желтый1 (yellow1) и желтый2 (yellow2) и перерисуем машину новым образом:

итого получили всего четыре состояния с циклическим переходом: красный>желтый1>зеленый>желтый2>красный> .

Проблема решена, неоднозначности исправлены, конечный автомат получен, приступаем к реализации.

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

module timer
# ( parameter delay_bit = 25 )
(
input clock ,
input reset ,
output finish
) ;

reg [ delay_bit : 0 ] counter ;

always @ ( posedge clock , posedge reset )
begin
if ( reset )
counter <= 0 ;
else if ( ! counter [ delay_bit ] )
counter <= counter + 1 ;
end

assign finish = counter [ delay_bit ] ;
endmodule

Из новых вещей здесь видим конструкцию if/else if/else, которую можно использовать внутри блока always и макрос # ( parameter delay_bit = 25 ) — на тот случай, если мы захотим изменить время сигнала таймера извне (например для 2хсекундного таймера заменить индекс бита и размер счетчика с 25 на 26) и при этом не переписывать модуль (акцентировать внимание на подробностях этой возможности языка Verilog здесь не буду, просто обозначу ее существование).

Входной сигнал clock традиционно — тактовый сигнал 25МГц, выходной сигнал finish опять традиционно показывает статус таймера (0 — считает, 1 — счет окончен), вход reset позволяет управлять таймером — если подать на него 1, таймер будет "взведен" для нового старта (обнуляем счетчик), после этого подать 0 — таймер запустится и отсчитает секунду.

Переходим к реализации конечного автомата в точном соответствии с нарисованной диаграммой — модуль traffic_light.

Для начала определим внешний интерфейс модуля — на входе нам нужен тактовый сигнал clock, который будет гонять светофор из одного состояния в другое, а на выход будем оптавлять значение текущего состояния out_state — т.к. у нас возможных состояний всего 4, для их кодирования как раз хватит ровно 2 бита:

И описываем логику перехода между состояниям машины — главная цель — получить значение для следующего состояния светофора и записать его в регистр next_state:

// detect next state depending on current state
// and current clock — change state one time per second:
// green>yellow1>red>yello2>green>.
always @ ( * )
begin
// start timer if it was reset
timer_one_second_reset = 0 ;
// next state would not change by default
next_state = state ;

case ( state )
state_green :
begin
if ( timer_one_second )
begin
// arm timer to count one second
// before moving to the next state
timer_one_second_reset = 1 ;
// move to the next state
next_state = state_yellow1 ;
end
end
state_yellow1 :
begin
if ( timer_one_second )
begin
// arm timer to count one second
// before moving to the next state
timer_one_second_reset = 1 ;
// move to the next state
next_state = state_red ;
end
end
state_red :
begin
if ( timer_one_second )
begin
// arm timer to count one second
// before moving to the next state
timer_one_second_reset = 1 ;
// move to the next state
next_state = state_yellow2 ;
end
end
state_yellow2 :
begin
if ( timer_one_second )
begin
// arm timer to count one second
// before moving to the next state
timer_one_second_reset = 1 ;
// move to the next state
next_state = state_green ;
end
end
endcase
end

Получился довольно увесистый блок кода, хотя большую часть там занимают копипаста и комментарии, но все равно разберем по частям:

Звездочка в списке чувствительности предлагает компилятору вставить в него все сигналы, которые могут каким-то образом повлиять на значения, вычисляемые внутри текущего блока always — это могут быть конечно сигналы, которые стоят в правой части операторов присвоения <= или =, но также сигналы, которые участвуют в качестве условия в частности в конструкциях case или if.

В данном случае запись со звездочкой будет эквивалентна указанию сигналов state и timer_one_second явным образом:

case ( state )
state_green :
begin
if ( timer_one_second )
begin
// arm timer to count one second
// before moving to the next state
timer_one_second_reset = 1 ;

// move to the next state
next_state = state_yellow1 ;
end
end
// .
endcase

В блоке действия у нас опять стоит еще одна проверка значения сигнала timer_one_second — если он равен 0 (т.е. условие не выполнено), значит таймер не закончил отсчет или не запущен, ничего не делаем. Если timer_one_second равен 1 (условие выполнено), отдаем две команды:

Взводим таймер для нового отсчета секунды (сам отсчет в этот момент еще не пошел — для этого потребуется еще выполнить timer_one_second_reset = 0 ; )

Остальные блоки внутри case полностью аналогичны, отличия только в значениях текущего и следующего состояний.

И финальный штрих — установить новое текущее состояние светофора (попытка будет происходить на каждый clock, те. 25 млн раз в секунду, но реально значение регистра state изменится только тогда, когда изменится значение next_state):

Теперь попробуем понять, что здесь вообще происходит. Система стартует в зеленом состоянии (state и next_state по нулям = state_green = 2'b00 ) с запущенным таймером (внутренний счетчик обнулен, внешний reset тоже 0). Таймер отсчитывает одну секунду, сигнал timer_one_second получает значение 1 и вызывает этим срабатывание 1го блока always @(*), т.к. '*' автоматически поместила timer_one_second в его список чувствительности. Далее внутри 1го блока always 'timer_one_second_reset = 0' не приводит ни к чему, т.к. reset пока что и так 0, 'next_state = state' аналогично — оба регистра до сих пор равны 0, т.е. указывают на зеленое состояние. Внутри case отрабатывает блок для условия 'state_green : ', внутри него также отрабатывает ' if ( timer_one_second ) ' (ради него сюда и пришли) — соответственно далее выполняются две команды — взводим (но пока не запускаем) новый таймер 'timer_one_second_reset = 1 ' и устанавливаем новое значение желтый1 в регистр next_state 'next_state = state_yellow1'. На этом текущая итерация 1го блока always завершается — в итоге next_state получил значение state_yellow1. Почти сразу после этого момента (на очередной такт clock — примерно через одну 25тимиллионную долю секунды) в очередной раз срабатывает второй блок always @(posedge clk), но на этот раз инструкция 'state <= next_state' не отрабатывает вхолостую, а записывает в регистр state новое значение state_yellow1 (оно же отправляется на выход модуля out_state) из регистра next_state, которое не равно его предыдущему значению state_green. Т.о. регистр state в этот момент меняет значение, а это значит, что первый блок always опять начинает отрабатывать уже по новому поводу, т.к. сигнал state тоже находится в его списке чувствительности. Первая инструкция 'timer_one_second_reset = 0' на этот раз спускает взведенный в прошлый раз таймер, и он начинает отсчитывать одну секунду, вторая инструкция 'next_state = state' опять ничего не меняет, внутри case сначала отрабатывает блок 'state_yellow1 : ', однако внутрь ' if ( timer_one_second ) ' он уже не попадает, т.к. в этот момент секунда еще не прошла и timer_one_second=0 — работа 1го блока always опять завершается. Далее через секунду, когда запущенный таймер отработал и установил значение сигнала timer_on_second=1 вместо нуля, опять отрабатывает 1й always — получили ситуацию, почти полностью аналогичную началу этого абзаца, только теперь текущие значения state и next_state равны state_yellow1 — далее все по аналогии и по циклу.

Замечание: последний важный нюанс, который еще не был рассмотрен — нужно обратить внимание, что в 1м блоке always @(*) для записи в регистры значений используется оператор =, а во 2м блоке always @(posedge clk) используется оператор <=. Первый оператор = называется блокируещее присвоение (blocking assignment), второй оператор <= называется неблокирующее присвоение (nonblocking assignment). Неблокирующее присвоение <= похоже на работу оператора assign вне блока always — если внутри блока always расположить подряд несколько инструкций с неблокирующим присвоением, то в нужный момент они все сработают одновременно вне зависимости от порядка расположения. Блокирующее присвоение = работает подругому — вычисление значения и присвоение для каждого следующего регистра не начнется до тех пор, пока не будет вычислено и присвоено значение для предыдущего — порядок расположения инструкций присвоения уже имеет ключевое значение, т.к. вычисляемое значение следующего регистра может зависеть от только что вычисленного значение предыдущего — получается уже некий аналог последотельного выполнения программы. Рассматриваемое упражнение не очень наглядно демонстрирует разницу между блокирующими и неблокирующими присвоениями, поэтому подробнее на них здесь останавливаться пока не буду. Пока достаточно запомнить, что при реализации конечного автомата в таком виде используется два блока always — внутри блокирующего проводятся основные вычисления для следующего состояния — можно сказать статика на текущем временном срезе автомата; а внутри неблокирующего происходит динамика — смена состояний по сигналу импульс-генератора в зависимости от вычисленных в предыдущем блоке значений. Важно, что второй блок завязан на импульс-генератор clock, а первый — нет. Кроме того, нельзя мешать блокирующие и неблокирующие присвоения внутри одного блока always.

Подключение к внешним устройствам ввода-вывода отдельных объяснений уже не требует — в данном случае для простоты и для скорости для всех трех цветов светофора были задействованы встроенные в плату Digilent Basys2 зеленые лампочки, поэтому, чтобы увидеть в них светофор, придется подключить немного воображения, хотя мигают они как нужно — при желании можно легко заменить их на внешние разноцветные светодиоды, подключенные через универсальные порты ввода-вывода PIO.

/**
* Top module to test traffic light.
*/
module traffic_light_top (
input clk ,
output [ 0 : 2 ] ld
) ;

// enumerate state constants
parameter state_green = 2'b00 ;
parameter state_yellow1 = 2'b01 ;
parameter state_red = 2'b10 ;
parameter state_yellow2 = 2'b11 ;

// current state value
wire [ 1 : 0 ] state ;

// connect "clk" and "state" wires to traffic light logic implementation
traffic_light lights ( .clk ( clk ) , .out_state ( state ) ) ;

// display current state on output devices (lamps)
// for state_green switch on green lamp and switch off red and yellow,
// for state_yellow1 and state_yellow2 switch on yellow lamp and switch off green and red,
// for state_red switch on red lamp and swithc off green and yellow.
//
// All actions are performed at on and the same moment — order does not make
// any sense.

// "green" lamp
assign ld [ 0 ] = state == state_green ? 1 : 0 ;
// "yellow" lamp
assign ld [ 1 ] = ( state == state_yellow1 ) | ( state == state_yellow2 ) ? 1 : 0 ;
// "red" lamp
assign ld [ 2 ] = state == state_red ? 1 : 0 ;

# Pin assignment for clock
NET "clk" LOC = "b8" ;

Упражнение 3: самостоятельная работа — сделать робота, управляемого простым конечным автоматом

Группа разбивается на 3 команды, каждая из которых самостоятельно делает Робота Таракана, Робота Скорпиона и Робота Черепаху. Для каждого робота определяется логика его поведения и под нее рисуется новая схема конечного автомата с состояниями и переходами. Далее схема переносится в Verilog по полной аналогии со светофором, в качестве основы проекта берется код светофора. Параллельно идет распиновка сигналов модуля верхнего уровня по внешним интерфейсам (датчики/моторчики), а также сборка корпуса робота и подключение его проводами к выбранным портам ввода-вывода на плате.

Позже будут дополнительные подробности по устройству каждого из роботов отдельно, однако ничего нового в плане языковых конструкций или технологичных концептов по сравнению с сегодняшней лабой там уже не будет — только закрепление полученного опыта на практике с интересной задачей. Код Verilog роботов можно посмотреть уже сейчас — предварительный вариант Робота Скорпиона от меня, Робот Скорпион, Робот Черепаха и Робот Таракан от студентов, про запчасти для корпусов и результаты работы уже были подробности здесь. А пока на очереди процессор MIPS.

Эксперимент № 4. Светофор на Ардуино

Становится уже интереснее. Давайте соберем модель светофора!

В этом эксперименте не будет новых знаний по Ардуино, зато мы изучим пару новых фишек программирования.

Давайте решим как должен работать наш светофор:

  • Предположим, сначала горит зеленый.
  • Затем, когда его время истекает, он начинает мигать; предположим, что с интервалом в 1 сек. 3 раза.
  • Потом ненадолго зажигается желтый (1сек).
  • И включается красный.
  • Спустя несколько секунд цикл повторяется

Необходимые компоненты

  • 3 LED M5: красный, зеленый и желтый
  • 3 резистора на 220R

Схема

Соберем вот эту схему:

Схема сборки светофора на ардуино

Сборка аналогична опыту 2, но тут у нас уже 3 светодиода, и мы задействуем 3 цифровых порта. Каждый светодиод должен быть защищен своим резистором 220 Ом.

Обратите внимание на полярность светодиода: длинная ножка – это плюс, который подключается к цифрому порту, а короткая ножка соединяется с массой (GND).

Сопротивление ставится в разрыв цепи, все равно с какой стороны светодиода – плюса или земли. На схеме сопротивление поставлено со стороны земли (GND).

Вы можете использовать любые цифровые пины ардуино от 2 до 12. Сделайте это как вам удобней, но не забудьте скорректировать номера пинов в скетче.

Скетч

Наш первый скетч выглядит вот так:

Результат

Светофор горит как задумано:

Модель светофора на ардуино.

Объяснение

В скетче даны подробные комментария.

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

Для простоты настройки и тестирования светофора, введен мультипликатор, коэффициент, с помощью которого можно изменять скорость работы светофора:

Цикл for

В скетче мы встретили новое ключевое слово языка C/С++ – for, с помощью которого нужная подпрограмма выполняется циклически заданное число раз. Рассмотрим ее пример:

i – это переменная, которая хранит номер текущего цикла. Назовем ее счетчиком. Счетчик может начинаться с любого числа. В данном случае он равен 0.

i < 5 задает условие, при котором цикл продолжается.

++ – это инкремент, т.е. увеличение значения на 1. Вместо этого инкремента может быть и другое выражение, которое изменяет счетчик циклов, например декремент –i. Также значения счетчика может быть изменено и внутри самой подпрограммы цикла.

Если мы хотим выйти из цикла, по условию, не выполняя все циклы, можно использовать оператор break («прерывать»), вот так:

В данном случае, цикл будет выполнено всего 1 раз, поскольку в конце подпрограммы стоит принудительное завершение цикла с помощью оператора break.

Функции

Обратите внимание на большое число повторяющихся похожих блоков кода. Блоки отличаются лишь номером пина, и временем задержки.

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

Более правильным здесь будет написать пару функций.

Функция – это именованная подпрограмма, которая принимает входные параметры (обычно есть хотя бы один параметр), использует их внутри себя (в теле функции) и может возвращать выходные параметры.

Давайте сделаем две функции:

  • lightUp – зажигает заданный светодиод на заданное время.
  • blink – мигает заданным светодиодом заданное число раз с заданным интервалом.

Каждая из этих функций будет иметь входные параметры:

  • lightUp:
    • pinLed – пин светодиода
    • nDelay – продолжительность свечения светодиода
    • pinLed – пин светодиода
    • nDelay – продолжительность свечения светодиода и, одновременно, продолжительность паузы до следующего включения.
    • nTimes – число циклов мигания

    Все параметры будут целыми (int) константами (const). Запомните: если параметр функции или иная переменная не должна изменяться в ходе работы программы, настоятельно рекомендуется объявлять их как контенту, используя ключевое слово const. Это сократит число возможных ошибок в программе.

    Для определения функции используется следующий шаблон:

    Список параметров – это перечисление через запятую объявление переменных, которые одновременно будут параметрами данной функции.

    О возвращаемых параметрах мы расскажем в следующих экспериментах. Наши функции не будут возвращать никакие параметры. В этом случае в качестве типа возвращаемого параметра надо указывать тип void.

    Вот так будет выглядеть наша первая функция, зажигающая светодиод на заданное время:

    Вот так мы ее используем:

    Посмотрите как изменился наш скетч после введения функций:

    Стало не сколь прямолинейно, но зато гораздо гибче.

    Заключение

    Наша программа стала уже сложнее, а результат – интереснее.

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

    Здесь мы познакомились с такими концепциями программирования как циклы и функции и подготовились для создания чего-то более интересного.

    Главная мысль этого урока: старайтесь минимизировать повторяющийся код. Это поможет в дальнейшей модернизации программы и в повторном использовании кода.

    Помните, что основновной процесс написания программы – это именно непрерывный рефакторинг, т.е. постоянное улучшение программы. Модульность программы и устранение повторений – это первичные условия успешного рефакторинга в дальнейшем.

    Программа для светофора (продолжение). Программирование логического контроллера (ПЛК). Часть 16. 18:07

    Программа для светофора (продолжение). Программирование логического контроллера (ПЛК). Часть 16. фото

    Завершение и наладка программы для управления светофором. Как с помощью простых элементов создать работающую программу. Контроллер ONI. Учебное видео.

    Тема: Технологии
    Теги: программирование, программа, продолжение, логического, контроллера, плк, часть, светофора, элементов, учебное, oni

    Как сделать светофор в oni plr

    Здравствуйте!
    Я хочу показать, как пишется программа для управления технологическим оборудованием на ПЛК.
    Чаще всего я имел дело с ПЛК производства Schneider Electric. Выбранный мной для данной задачи Quantum является самым мощным и дорогим ПЛК данного производителя. Он может управлять оборудованием с тысячами сигналов, для светофора в реальной жизни его никто, естественно, использовать не будет.

    Автоматизацией светофоров я никогда не занимался, поэтому алгоритм придумал сам. Вот он:
    1. Светофор для регулируемого пешеходного перехода. Т.е. светофор для машин, светофор для пешеходов и кнопка для пешеходов, нажав которую, пешеход уведомляет о желании перейти дорогу.
    2. После старта программы загорается зеленый для машин и красный для пешеходов.
    3. После нажатия кнопки пешеходом начинает мигать зеленый для машин, затем загорается желтый, затем красный. После этого загорается зеленый для пешеходов, через заданное время он начинает мигать, загорается красный для пешеходов, после этого для машин загорается желтый и красный, затем зеленый.
    4. В течение заданного промежутка времени после зеленого на пешеходном светофоре нажатие кнопки пешеходом не запускает алгоритм перехода. Алгоритм перехода запускается в таком случае только по истечению заданного времени.
    Программирование ПЛК ведется в среде программирования Unity на языках стандарта МЭК 61131-3. В данный стандарт входят 5 языков. Для примера я выбрал язык функциональных блоков – FBD.
    Вот браузер проекта в Unity:

    ПЛК состоит из монтажной панели, блока питания (1), контроллера (2), модуля дискретного ввода на 32 сигнала 24В постоянного тока (4), модуля дискретного ввода на 32 сигнала 24В постоянного тока (5). В реальном проекте монтажных панелей, подключенных к одному контроллеру по различным сетям, могут быть десятки, а модулей ввода-вывода – сотни.
    Создаем переменные необходимых типов в редакторе переменных:

    Переменные, привязанные к каналам модулей ввода-вывода имеют адрес, показывающий, к какой корзине, модулю и каналу привязан сигнал.
    Программа состоит из секций, выполняемых каждый цикл сканирования контроллера по порядку.
    Упрощенно цикл сканирования контроллера выглядит так:
    1. Чтение входных сигналов из модуля ввода в переменные с адресам.
    2. Выполнение секций.
    3. Запись значений из переменных с адресами в выходные сигналы модулей вывода.
    4. Переход на п.1.
    Создаем секцию Clock с генератором импульса периодом 0,5 секунды. Блок TP при изменении входного сигнала из 0 в 1 на выходе выдает импульс заданной длительности.

    Здесь и ниже скриншоты секций приведены в режиме анимации, а не режиме редактирования. На них отображены значения переменных в текущий момент времени при подключении к ПЛК с загруженной программой (числа для числовых переменных, цвет зеленый (1)-красный (0) для булевских).
    Секция Main обрабатывает основную логику.
    Блок SR устанавливает выход в 1 при S1=1 и сбрасывает выход в 0 при R=1.
    Блок R_TRIG устанавливает выход на 1 цикл сканирования в 1 при переходе входа из 0 в 1 (детектор переднего фронта).
    Блок F_TRIG устанавливает выход на 1 цикл сканирования в 1 при переходе входа из 1 в 0 (детектор заднего фронта).
    Переменная inButton, привязанная к каналу кнопки, заменена в секции на inButtonForTest для того, чтобы можно было изменить ее значение на симуляторе контроллера без реального оборудования.

    Секция Outputs формирует выходные сигналы для управления лампами светофоров.

    Загружаем проект в симулятор контроллера:

    Значение любых переменных можно посмотреть в анимационной таблице:

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

    Пробуем перейти дорогу:

    Не ожидал, что для управления такого простого объекта, как светофор, потребуется 30 блоков.
    В следующей статье покажу, как написать данную программу, используя все языки стандарта МЭК 61131-3 одновременно.

    УПРАВЛЕНИЕ ОСВЕЩЕНИЕМ (Программирование в ONI PLR studio)

    Обращаем Ваше внимание, что в соответствии с Федеральным законом N 273-ФЗ «Об образовании в Российской Федерации» в организациях, осуществляющих образовательную деятельность, организовывается обучение и воспитание обучающихся с ОВЗ как совместно с другими обучающимися, так и в отдельных классах или группах.

    УПРАВЛЕНИЕ ОСВЕЩЕНИЕМ Программирование в ONI PLR studio Выполнила: Петров.

    Курс профессиональной переподготовки

    Пожарная безопасность
    • Сейчас обучается 101 человек из 35 регионов

    Курс повышения квалификации

    Специалист в области охраны труда

    Курс профессиональной переподготовки

    Организация деятельности библиотекаря в профессиональном образовании
    • Сейчас обучается 199 человек из 58 регионов

    «Многозадачность учителя: направления, функции и подходы к реализации»

    Рабочие листы и материалы для учителей и воспитателей

    Более 2 500 дидактических материалов для школьного и домашнего обучения

    Описание презентации по отдельным слайдам:

    УПРАВЛЕНИЕ ОСВЕЩЕНИЕМ Программирование в ONI PLR studio Выполнила: Петров.

    Программирование в ONI PLR studio

    Выполнила: Петрова И.И., преподаватель общетехнических дисциплин
    ГАПО ВО «Вязниковский технико-экономический колледж»

    2. Внимательно изучите описание алгоритма работы схемы освещения (часть 1): B.

    2. Внимательно изучите описание алгоритма работы схемы освещения (часть 1):
    BK получает питание после включения QF и при наличии движения подает питание на катушку КМ.
    Включен SA1 (SA2-отключен) и Вкл. ВК (наличие движения)=> Вкл. KM1 (модульный контактор). => Вкл. EL6 на 5 сек. => Вкл. EL7 на 3сек. => Вкл. EL8 на 2сек. (циклическое повторение).
    При отключении (отсутствии движения) датчика движения цикл прерывается. При Вкл. SA2 цикл останавливается и вкл. EL3 (срабатывание ВК не вызывает реакции системы).
    Включен SA2 (SA1-отключен) Вкл. EL6, EL7, EL8 (срабатывание ВК не вызывает реакции системы).
    Выключены SA1, SA2. – исходное состояние все светильники с выходов логического реле отключены.
    3. Исходя из конкурсного задания выбираем и расставляем на схеме блоки: «Цифровой вход» , «Цифровой выход»
    1. Прежде, чем приступить к выполнению программирования запустите программное обеспечение. Для этого выбираем: «Создать…. Функциональная блок-схема FBD»

    4. Блок «ИЛИ» устанавливаем на схеме для возможности принятия сигналов от нес.

    4. Блок «ИЛИ» устанавливаем на схеме для возможности принятия сигналов от нескольких функциональных блоков. Устанавливаем связи между блоками
    5. Выбираем и устанавливаем элемент «И». Сигнал будет выходить, в том случае, если на все используемые входы блока приходит сигнал
    6. В Специальных функциях выбираем блок «Задержка включения», которая будет использоваться для переключения светильников

    7. От датчика движения ВК и выключателя SA1 подается связь на блок «И», при.

    7. От датчика движения ВК и выключателя SA1 подается связь на блок «И», при этом происходит поочередное включение светильников EL6,EL7, EL8 , при поступлении сигнала с ВК и выключении выключателяSA1

    8. В Специальных функциях выбираем блок «Генератор импульсов», который будет использоваться в схеме для включения светильников с определенным временным интервалом
    9. Устанавливаем блоки в схему и обозначаем связи между блоками «И» до входа на «Генератор» (элемент на схеме В012 напрямую). К элементам В013, В 014 через «Задержку времени включения» элементы В010, В011

    10. На «Задержке включения (В010, В011) выставляем таймер, согласно задания 1.

    10. На «Задержке включения (В010, В011) выставляем таймер, согласно задания

    11. В «Генераторах импульсов» задаем параметры на периодичность вкл/выкл светильников, согласно заданию

    12. Устанавливаем связи от «Генератора импульсов до блоков «ИЛИ»

    13. Устанавливаем связь от входа 1003 (SA2) до блока «И» (В008), для прекращения цикла поочередного включения светильников EL6, EL7, EL8 (входы Q001,Q002, Q003)

    14. Связи от SA1, SA2 на блок «И»(В007), от «И» (В007) на выход Q004, исполь.

    14. Связи от SA1, SA2 на блок «И»(В007), от «И» (В007) на выход Q004, используем для включения светильника EL3 отдельный режим

    15. С SA1 и SA2 связи на блок «И», с установкой функции «НЕ» на вход от SA1. С выхода «И» связи на светильники EL6, EL7, EL8. Выполняются условия задания.
    На входе блока «И» «двойной клик»
    позволяет создать блок «НЕ».

    16. Выполнить алгоритм работы схемы освещения (часть 2): Включен SA3 (SA4- о.

    16. Выполнить алгоритм работы схемы освещения (часть 2):
    Включен SA3 (SA4- отключен) => Включаются EL4, EL5 поочередно с периодом 5 сек.
    Включен SA4 (SA3 — Включен) => Включаются EL4, EL5.
    Выключен SA3 (SA4 — Включен) => Выключаются EL4, EL5 и Включается EL3.

    18. Устанавливаем связи от входов 1003, 1004 (выключатели SA3, SA4) на блок «И». Устанавливаем на вход от SA4 функцию «НЕ»
    17. Вставляем блоки в схему для выключателей SA3, SA4 (вход 1003,1004)

    19. Устанавливаем связи от выхода «И» на «Задержку вкл.» и «Генератор импульс.

    19. Устанавливаем связи от выхода «И» на «Задержку вкл.» и «Генератор импульсов». Исходя из условия задания включаются EL4, EL5 поочередно с периодом 5 сек
    20. Выставляем таймер задержки включения, задержка пуска «Генератора импульсов» для переключения светильников EL4, EL5

    21. Задаем длительность импульсов вкл/откл. светильников EL4, EL5. «Включен SA3 (SA4 отключен), соответственно включаются EL4, EL поочередно с периодом 5 сек»

    22.Устанавливаем связи от SA3, SA4 на входы блока «И»(В015), от выхода «И» д.

    22.Устанавливаем связи от SA3, SA4 на входы блока «И»(В015),
    от выхода «И» до входа блоков «ИЛИ» (В005, В006).
    Тем самым мы реализуем условия КЗ:
    «Включен SA4 (SA3 — Включен) => Включаются EL4, EL5.»
    23. Устанавливаем связи от «SA3» и «SA4» на входы блока «И» (В017), с выхода блока «И» до входа блоков «ИЛИ» (В004, В005, В006).
    Тем самым мы реализуем условия КЗ:
    «Выключен SA3 (SA4 — Включен) => Выключаются EL4, EL5 и Включается EL3.»

    Программирование логического реле светофор oni plr studio

    УПРАВЛЕНИЕ ОСВЕЩЕНИЕМ (Программирование в ONI PLR studio)

    Онлайн-конференция

    «Современная профориентация педагогов
    и родителей, перспективы рынка труда
    и особенности личности подростка»

    Свидетельство и скидка на обучение каждому участнику

    Описание презентации по отдельным слайдам:
    Описание слайда:

    Программирование в ONI PLR studio

    Выполнила: Петрова И.И., преподаватель общетехнических дисциплин
    ГАПО ВО «Вязниковский технико-экономический колледж»

    Описание слайда:

    2. Внимательно изучите описание алгоритма работы схемы освещения (часть 1):
    BK получает питание после включения QF и при наличии движения подает питание на катушку КМ.
    Включен SA1 (SA2-отключен) и Вкл. ВК (наличие движения)=> Вкл. KM1 (модульный контактор). => Вкл. EL6 на 5 сек. => Вкл. EL7 на 3сек. => Вкл. EL8 на 2сек. (циклическое повторение).
    При отключении (отсутствии движения) датчика движения цикл прерывается. При Вкл. SA2 цикл останавливается и вкл. EL3 (срабатывание ВК не вызывает реакции системы).
    Включен SA2 (SA1-отключен) Вкл. EL6, EL7, EL8 (срабатывание ВК не вызывает реакции системы).
    Выключены SA1, SA2. – исходное состояние все светильники с выходов логического реле отключены.
    3. Исходя из конкурсного задания выбираем и расставляем на схеме блоки: «Цифровой вход» , «Цифровой выход»
    1. Прежде, чем приступить к выполнению программирования запустите программное обеспечение. Для этого выбираем: «Создать…. Функциональная блок-схема FBD»

    Описание слайда:

    4. Блок «ИЛИ» устанавливаем на схеме для возможности принятия сигналов от нескольких функциональных блоков. Устанавливаем связи между блоками
    5. Выбираем и устанавливаем элемент «И». Сигнал будет выходить, в том случае, если на все используемые входы блока приходит сигнал
    6. В Специальных функциях выбираем блок «Задержка включения», которая будет использоваться для переключения светильников

    Описание слайда:

    7. От датчика движения ВК и выключателя SA1 подается связь на блок «И», при этом происходит поочередное включение светильников EL6,EL7, EL8 , при поступлении сигнала с ВК и выключении выключателяSA1

    8. В Специальных функциях выбираем блок «Генератор импульсов», который будет использоваться в схеме для включения светильников с определенным временным интервалом
    9. Устанавливаем блоки в схему и обозначаем связи между блоками «И» до входа на «Генератор» (элемент на схеме В012 напрямую). К элементам В013, В 014 через «Задержку времени включения» элементы В010, В011

    Описание слайда:

    10. На «Задержке включения (В010, В011) выставляем таймер, согласно задания

    11. В «Генераторах импульсов» задаем параметры на периодичность вкл/выкл светильников, согласно заданию

    12. Устанавливаем связи от «Генератора импульсов до блоков «ИЛИ»

    13. Устанавливаем связь от входа 1003 (SA2) до блока «И» (В008), для прекращения цикла поочередного включения светильников EL6, EL7, EL8 (входы Q001,Q002, Q003)

    Описание слайда:

    14. Связи от SA1, SA2 на блок «И»(В007), от «И» (В007) на выход Q004, используем для включения светильника EL3 отдельный режим

    15. С SA1 и SA2 связи на блок «И», с установкой функции «НЕ» на вход от SA1. С выхода «И» связи на светильники EL6, EL7, EL8. Выполняются условия задания.
    На входе блока «И» «двойной клик»
    позволяет создать блок «НЕ».

    Описание слайда:

    16. Выполнить алгоритм работы схемы освещения (часть 2):
    Включен SA3 (SA4- отключен) => Включаются EL4, EL5 поочередно с периодом 5 сек.
    Включен SA4 (SA3 — Включен) => Включаются EL4, EL5.
    Выключен SA3 (SA4 — Включен) => Выключаются EL4, EL5 и Включается EL3.

    18. Устанавливаем связи от входов 1003, 1004 (выключатели SA3, SA4) на блок «И». Устанавливаем на вход от SA4 функцию «НЕ»
    17. Вставляем блоки в схему для выключателей SA3, SA4 (вход 1003,1004)

    Описание слайда:

    19. Устанавливаем связи от выхода «И» на «Задержку вкл.» и «Генератор импульсов». Исходя из условия задания включаются EL4, EL5 поочередно с периодом 5 сек
    20. Выставляем таймер задержки включения, задержка пуска «Генератора импульсов» для переключения светильников EL4, EL5

    21. Задаем длительность импульсов вкл/откл. светильников EL4, EL5. «Включен SA3 (SA4 отключен), соответственно включаются EL4, EL поочередно с периодом 5 сек»

    Описание слайда:

    22.Устанавливаем связи от SA3, SA4 на входы блока «И»(В015),
    от выхода «И» до входа блоков «ИЛИ» (В005, В006).
    Тем самым мы реализуем условия КЗ:
    «Включен SA4 (SA3 — Включен) => Включаются EL4, EL5.»
    23. Устанавливаем связи от «SA3» и «SA4» на входы блока «И» (В017), с выхода блока «И» до входа блоков «ИЛИ» (В004, В005, В006).
    Тем самым мы реализуем условия КЗ:
    «Выключен SA3 (SA4 — Включен) => Выключаются EL4, EL5 и Включается EL3.»

    Описание слайда:

    Если Вы считаете, что материал нарушает авторские права либо по каким-то другим причинам должен быть удален с сайта, Вы можете оставить жалобу на материал.

    ONI PLR Studio

    Общие сведения

    Программное обеспечение ONI PLR Studio предназначено для разработки и отладки прикладных программ для логических реле ONI PLR-S и программируемых логических контроллеров ONI PLR-M, с использованием языка диаграмм функциональных блоков FBD.

    Технические требования

    Для установки и использования программного обеспечения ONI PLR Studio необходим IBM PC совместимый компьютер минимально обладающий следующими характеристиками:

    • Процессор класса Pentium 4 или более производительный
    • 256 Мбайт свободной оперативной памяти при работе системы
    • 200 Мбайт свободного дискового пространства под файлы программы
    • Операционная система семейства MS Windows 7,8,10
    • Видеосистема с разрешением не менее 1024 × 768
    • Один свободный USB порт *
    • Один свободный COM порт *

    * Минимально необходим только один порт для подключения к оборудованию в зависимости от типа используемого кабеля-адаптера.

    Установка программы

    Скачайте версию программного обеспечения с сервера aketo. Также актуальную версию программного обеспечения можно бесплатно загрузить с сайта изготовителя по адресу www.oni-system.com. Для запуска процесса установки запустите исполняемый файл дистрибутива программы и следуйте указаниям системы.

    Выберите язык интерфейса программы установщика, который будет использоваться в процессе установки программы и нажмите «ОК» для продолжения.

    Кабель адаптер PLR-S-CABLE-USB

    Кабель адаптер PLR-S-CABLE-USB используется для программирования модулей ЦПУ с персонального компьютера. При использовании кабеля-адаптера PLR-S-CABLE-USB для подключения к оборудованию, необходимо установить драйвер для его корректной работы.

    ПРОГРАММИРУЕМЫЕ ЛОГИЧЕСКИЕ РЕЛЕ ONI PLR-S АЛЬБОМ ПРИМЕРОВ ПРОГРАММ

    1 ПРОГРАММИРУЕМЫЕ ЛОГИЧЕСКИЕ РЕЛЕ ONI PLR-S АЛЬБОМ ПРИМЕРОВ ПРОГРАММ Издание: A01

    2 Содержание 1 Введение Управление. освещением лестничных клеток 3 3 Управление. откатными или секционными воротами 5 4 Управление. насосной парой 7 5 Управление. вытяжной вентиляцией 9 2

    3 1 Введение В данном альбоме представлено описание возможных вариантов применения логических реле серии PLR-S выпускаемых под торговой маркой ONI. Представленные примеры программ могут использоваться, как в приведенном варианте, так и модифицироваться пользователем по своему усмотрению для адаптации к решению поставленных задач. Все представленные в данном альбоме программы размещены на сайте и доступны для свободной загрузки. 2 Управление освещением лестничных клеток Описание задачи Как правило, освещение лестничных клеток многоэтажных зданий включено постоянно независимо от времени суток, что противоречит общим тенденциям по повышению энергоэффективности. Поэтому в настоящее время, в качестве основной меры по экономии электроэнергии, довольно часто используются различные датчики движения. Которые отключают освещение на лестничной площадке при отсутствии движения. Не смотря на кажущуюся простоту и экономичность, такие схемы имеют недостатки. Например, при индивидуальном включении ламп, неизбежен момент, когда, поднимаясь по лестнице, вы попадаете с освещённой лестничной площадки на неосвещенную, т.к. датчик, который должен был включить свет, еще не обнаружил движения. Подобная ситуация не только вызывает дискомфорт, но и опасна, особенно при полном отсутствии иных источников света и в ночное время. В случае если датчики движения включены параллельно и включают одновременно освещение на всех этажах, передвижение становится более комфортным, но данное решение является избыточным, так как не все передвижения ведут на последний этаж. При этом снижается энергоэффективность и срок службы ламп, как следствие включения лишних потребителей и дополнительной коммутации питания. Предлагаемое решение С помощью программируемого логического реле ONI PLR-S можно повысить эффективность управления освещением, сделав его более интеллектуальным. Ниже представлен пример программы реализации управления освещением для 5 этажного здания и описание алгоритма ее работы. 3

    4 Алгоритм работы программы Срабатывание этажного датчика движения включает освещение не только на этаже, где датчик непосредственно установлен, но одновременно и на смежных этажах. Тем самым повышается комфорт передвижения, и не задействуются излишне избыточные ресурсы, как в случае с одновременным включением освещения на всех этажах. Долнительно предусмотрено включение освещения вручную, нажатием кнопки-выключателя. Архив с файлом программы Управление освещением.zip 4

    5 3 Управление откатными или секционными воротами Описание задачи Очень часто откатные или секционные ворота снабжаются электроприводом, управление которым осуществляется при помощи двух-кнопочного пульта управления. Нажатие кнопок на котором напрямую или через контактор коммутирует питание электродвигателя, который включен все время, пока нажата соответствующая кнопка. Такое решение очень просто в реализации, однако не обеспечивает никаких защит и функций безопасности для персонала. Предлагаемое решение Установка программируемого логического реле ONI PLR-S в систему управления откатными или секционными воротами, позволяет автоматизировать процесс управления воротами воротами, а также обеспечить недостающие функции безопасности, защиты и диагностики оборудования. Алгоритм работы программы Управление воротами с использованием программируемого логического реле ONI PLR-S осуществляется также при помощи двух-кнопочного пульта управления. При нажатии кнопки «Открыть» загорается предупредительная лампа или включается звуковой сигнал начала движения, затем через 3 секунды включается привод на открытие ворот. При достижении конечного положения и срабатывания концевого выключателя открытого положения происходит отключение привода. Закрытие ворот происходит аналогично при нажатии кнопки «Закрыть». Остановить движение ворот в любой момент можно нажатием любой кнопки на пульте управления: «Открыть» или «Закрыть». 5

    6 Для безопасности предусмотрен вход блокировки-останова перемещения ворот. Это может быть, например, оптический датчик наличия объекта на линии ворот, или иное условие блокировки. Также дополнительно контролируется время движения ворот, и в случае его превышения, происходит отключение привода и на встроенном экране модуля ЦПУ отображается соотвествующее сообщение. Архив с файлом программы Управление воротами.zip 6

    7 4 Управление насосной парой Описание задачи Для обеспечения бесперебойной циркуляции теплоносителя в сетях отопления во многих случаях устанавливают насосную пару, вместо одиночного насоса, чтобы выполнить условие наличия резерва. При этом нередко на один циркуляционный контур предусмотрен один выход управления насосами, а переключение насосов осуществляется вручную. Предлагаемое решение Установка программируемого логического реле ONI PLR-S в цепь управления позволяет автоматизировать процесс переключения с основного на резервный насос в случае аварии, а также обеспечить автоматическое чередование насосов для равномерно распределения наработки. Алгоритм работы программы При получении сигнала «Пуск» происходит запуск первого насоса. В случае если в течении 5 секунд нет подтверждающего сигнала с реле потока, происходит запуск второго насоса. Если же и в этом случае реле потока не зафиксировало движение теплоносителя, то формируется сигнал общей аварии, дальнейшие попытки пуска блокируются. В случае нормальной работы, смена насосов происходит через временной интервал заданный при настройке. При этом один насос останавливается и одновременно с ним запускается второй. Во время работы на встроенном дисплее отображается отсчет времени до очередной смены насосов, либо сообщение об аварии при ее наличии. 7

    8 Архив с файлом программы Управление насосной парой.zip 8

    9 5 Управление вытяжной вентиляцией Описание задачи В простейшем случае для управления вытяжной вентиляцией используется комнатный термостат, который включает вытяжной вентилятор при превышении значения уставки температурой в помещении. Данная схема проста, однако не позволяет исключить работу вентиляции в случае отсутствия такой необходимости, например, в ночное время или выходные дни, что в свою очередь влечет повышение расходов на энергоносители. Предлагаемое решение С помощью программируемого логического реле ONI PLR-S можно повысить эффективность управление вытяжным вентилятором и тем самым достичь экономии ресурсов. В предлагаемой программе вентилятор также включается в зависимости от температуры помещения, но время его работы определяется заранее настроенным расписанием. Алгоритм работы программы Температура помещения измеряется датчиком с активным выходом (0..10В), который подключен к первому универсальному входу программируемого логического реле ONI PLR-S. Измеренное значение температуры масштабируется и сравнивается с пороговыми уставками включения и выключения, заданными в блоке порогового триггера B001, которые можно изменять при помощи панели, интегрированной в модуль ЦПУ ONI PLR-S. В зависимости от результата сравнения происходит включение или отключение вытяжного вентилятора. 9

    10 Дополнительно предусмотрены возможности ручного управления и управление по расписанию. Во втором случае работа вытяжного вентилятора возможна только в заданные в расписании промежутки времени, что позволяет отключать вентиляцию, например, в нерабочие дни. Работа вентилятора контролируется через вход обратной связи I004 и в случае несоответствия сигналов управления и обратной связи формируется сигнал аварии, который отображается на встроенном дисплее. При нормальной работе, на дисплее отображается текущая температура и значения заданных уставок. Архив с файлом программы Управление вентиляцией.zip 10

    Программируемое логическое реле ONI

    Что такое программируемое логическое реле?

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

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

    Программируемое логическое реле ONI

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

    ONI PLR-S универсален. Это современное и высококачественное оборудование, выбрав которое однажды Вы не будете больше искать более оптимального соотношения качества, надежности и стоимости.

    Что получит пользователь?

    Используя программируемые логические реле ONI PLR-S, Вы получаете:

    • Экономию времени, необходимого на разработку и ввод в эксплуатацию системы;
    • Усовершенствованный, простой и эффективный процесс разработки управляющей программы и настройки параметров оборудования;
    • Высокую производительность системы управления;
    • Оптимизацию стоимости Вашего проекта;
    • Низкую стоимость владения.

    Типовые применения

    Автоматизация технологических процессов:
    • Автоматизация тепличных комплексов;
    • Управление насосными станциями;
    • Управление котельными и системами пароподготовки;
    • Управление конвейерами;
    • Управление приточно-вытяжной и промышленной вентиляцией;
    • Управление дозаторами;
    • Управление системами сбора и возврата конденсата;
    • Управление системами водоснабжения, водоотведения и водоподготовки;
    • Управление системами электрораспределения и освещения;
    • Управление пневматическими системами.
    Объекты:

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

    Автоматизация зданий:
    • Управление освещением;
    • Управление системами вентиляции и климата;
    • Управление лифтами и подъемниками;
    • Управление системой открывания дверей;
    • Управление системой обогрева и отопления;
    • Системы «Умный дом», «Умный офис» и др.
    Объекты:

    Офисные здания, дата-центры, отели, гипермаркеты, торговые центры, склады и т. д.

    Автоматизация установок:
    • Управление системами водоподготовки;
    • Управление системами водоочистки;
    • Управление мобильными офисами и складами;
    • Управление системами сбора и возврата конденсата;
    • Управление системами подготовки пара;
    • Управление системами подготовки воздуха;
    • Управление системами упаковки;
    • Управление сушильными камерами и системами дефростации;
    • Управление конвейерами.
    Объекты:

    Блочно-контейнерные установки, палетайзеры, конвейеры, буферные емкости, насосные станции и т. д.

    Автоматизация энергетики:
    • Управление парогенераторами;
    • Управление системами АВР;
    • Управление системами распределения нагрузок;
    • Управление освещением;
    • Управление энергораспределением.
    Объекты:

    Ветрогенератор, солнечные электростанции, подстанции, дизель-генераторные установки, электрощитовые.

    Ассортимент

    Модель
    PLR-S-CPU-0804 PLR-S-CPU-1206 PLR-S-CPU-1410
    Питание 12-24В DC 12-24В DC 12-24В DC
    Дискретные входы 4 6 8
    Универсальные входы
    (0-10В или дискретные)
    4×10 бит 6×10 бит 6×10 бит
    Выходы 4 (реле 10А) 6 (реле 10А) 10 (реле 10А)
    Экран Нет LCD 4×16 символов LCD 4×16 символов
    Расширение Нет До 16 модулей До 16 модулей
    Часы реального времени Есть. Сохраняемые Есть. Сохраняемые Есть. Сохраняемые
    Размер памяти программы 64 блока 1024 блока / 13К Шагов 1024 блока / 13К Шагов
    Высокоскоростные счетчики Нет 4 канала 60КГц 4 канала 60КГц
    Коммуникации RS232 (Modbus RTU)
    Требуется кабель
    PLR-S-CABLE-RS232
    RS232 (Modbus RTU)
    Требуется кабель
    PLR-S-CABLE-RS232

    Дискретные входы (DI)

    Все программируемые логические реле ONI имеют встроенные дискретные входы. Дискретный вход, который иногда называют бинарным или цифровым, воспринимает одно из двух состояний – логическую единицу или логический нуль (включен/ выключен, открыт/закрыт и т. д.).

    Дискретные входы программируемых логических реле ONI регистрируют сигналы логической единицы при уровне напряжения на них > 8 В DC. Логический нуль считается при уровне напряжения 4..20 мА), а напрямую подключить выбранный датчик к логическому реле и считывать его значения.

    Цифровые выходы (DO)

    Цифровой выход используется в схемах включения и выключения оборудования. Например, включение/выключение света, старт/остановка насосов, подъем/пускание лифтов и подъемников, включение прямого или реверсивного движения конвейеров и т. д. Все программируемые логические реле ONI PLR-S имеют интегрированные цифровые выходы с коммутационной возможностью до 10 А (3 А индуктивной нагрузки).

    Это, например, озволяет включать и выключать оборудование (светильники, двигатели и др.) в сети 220 В AC мощностью до 2 кВт без использования промежуточных реле и контакторов, что экономит время разработки проекта и монтажа оборудования, а также уменьшает стоимость решения. В сети 24 В DC без применения реле и контакторов Вы можете управлять оборудованием мощностью до 240 Вт.

    Как сделать светофор в oni plr

    Учимся создавать устройства на микроконтроллерах: светофор

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

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

    Для проектирования и симуляции работы схемы светофора, (в дальнейшем устройства) я выбрал всеми известную программу ISIS Proteus Professional, с которой вы уже немного знакомы из статьи «обучающий видео курс для начинающих по микроконтроллерам» и возможно не только из неё. Для создания прошивки, (программы для работы устройства) я выбрал графическую среду программирования Flowcode AVR. Которая, по моему мнению, (особенно для начинающих) будет очень интересна. И не только тем, что написание программы происходит фактически построением алгоритма из кубиков, ромбиков и т.д., а ещё вдобавок, начинающий сам начинает понимать как всё-таки работает микроконтроллер, и что ему нужно для того что бы он делал то что от него требуют. Сам я могу писать на СИ , но если нужно создать что то несложное и очень быстро, да ещё и нет ограничений в быстродействии, ресурсах памяти и т.д., всегда запускаю Flowcode и алгоритм быстро, как бы сам собой, превращается в готовую прошивку.

    Версии используемых в статье программ: ISIS Proteus Professional 7, и Flowcode AVR v4.3.6.61. Установите указанные программы на Ваш компьютер, и начнём работать.

    1. Создадим схему нашего устройства, используя ISIS Proteus Professional.

    Для начала создайте папку для выходных файлов проектов в корневом каталоге любого из дисков С или D или другого (например с именем “myprojects”), причём имя папки должно быть латинским (это для того что бы не ругался Flowcode, и не было потом проблем с компиляцией программы). Да и Вам будет удобно, будете знать, где лежат файлы Ваших проектов.

    Открываем или запускаем (кому как нравиться называть) ISIS Proteus Professional. Далее в выпадающем меню файл выбираем «сохранить проект как», или на английском «save as …», указываем путь сохранения файлов проекта (наша папка в корневом каталоге диска “myprojects”). Ну и вводим имя файла “svetofor” например, жмём кнопку сохранить. (см. рис.1,2)

    mc161-1.jpg
    Рис. 1.

    mc161-2.jpg
    Рис.2.

    Далее нужно выбрать из многочисленной библиотеки компонентов необходимые нам. Так что же нам нужно из компонентов для реализации нашего проекта? Поскольку наше устройство не сложное, выберем недорогой микроконтроллер Attiny13A. Для этого в выпадающем меню «Библиотека» выбираем «выбор устройства» (рис.3), можно просто нажать кнопку «Р», в появившемся окне в поле «маска» набираем “attiny”(рис.4), и два раза кликнем по “attiny13”. Микроконтроллер теперь добавлен в список наших устройств. (рис.5)

    mc161-3.jpg
    Рис. 3.

    mc161-4.jpg
    Рис. 4.

    mc161-5.jpg
    Рис. 5.

    Далее выберем чем управлять микроконтроллеру, (в светофоре красный, желтый, зелёный) свет. Выбираем светодиоды, в поле «маска» набираем “led” , в категории “optoelectronics” выбираем (два раза кликаем на каждом) “led-red”, “led-green”, “led-yellow” .(рис.6)

    mc161-6.jpg
    Рис. 6.

    Теперь поскольку падение напряжения на светодиодах 2.2в, а питание у нас 5в., то нужно ставить ограничительные резисторы, для того, чтобы не вывести из строя порты (выходы) микроконтроллера. В поле маска “resistor”, в категории “modeling primitives” находим наш резистор “analog resistor primitive” и тоже два раза кликаем. (рис.7)

    mc161-7.jpg
    Рис. 7.

    mc161-8.jpg
    Рис. 8.

    Всё! Для построения модели нашего устройства у нас почти все есть (рис.8). Почему почти спросите Вы? Казалось бы, всё есть – «мозг» и «исполнительное устройство», но это не совсем так, поскольку нужен еще источник питания устройства, а точнее его модель. Ну об этом ниже. Начинаем собирать схему. Правой кнопкой мыши кликаем на чистом листе и в появившемся меню выбираем «разместить», «компонент», “attiny13”(рис.9,10). Затем наши три светодиода и три резистора (рис.11). Далее выбираем «разместить», «терминал», “ground” . Это как раз и есть один из выводов питания нашей модели устройства (для наглядности схемы договоримся включить светодиоды с общим катодом), как раз этим катодам и нужен минус питания (земля). Обратите внимание на то, что у микроконтроллера отсутствуют выводы питания. Дело в том что программа работает с моделями компонентов, и соответственно выводы питания присущие любой из моделей считает скрытыми.

    mc161-9.jpg
    Рис. 9.

    mc161-10.jpg
    Рис.10.

    mc161-11.jpg
    Рис.11.

    Теперь выбираем выводы микроконтроллера, которые нам нужно будет запрограммировать на вывод данных (выход). Но нужно учесть, что вывод 1 (порт В5) нужен ещё и в качестве “RESET” для программатора, поэтому если мы его задействуем, то запрограммировать микроконтроллер сможем один только раз. Поэтому его трогать не будем, по крайней мере пока. И так обозначим себе следующее:
    А. порт В0 будет управлять красным светодиодом(вывод 5);
    Б. порт В1 – желтым(вывод 6);
    В. порт В2 – зелёным(вывод 7).

    Устанавливаем карандашик на нужный вывод, кликаем левой кнопкой мыши и соединяем порты микроконтроллера с ограничительными резисторами(рис.12,13).

    mc161-12.jpg
    Рис.12

    mc161-13.jpg
    Рис.13

    Аналогично соединим светодиоды по схеме с общим катодом, и подключим каждый анод на нужный резистор: красный на R1; желтый на R2; зелёный на R3 (рис.14).

    mc161-14.jpg
    Рис.14.

    Любуемся созданной схемой, и замечаем что номиналы резисторов сильно велики для зажигания светодиодов, нужно где то порядка 300 Ом, а у нас 10кОм. Кликаем правой кнопкой на резисторе, выбираем в выпадающем меню «правка свойств», и устанавливаем нужный номинал резисторов (рис.15,16,17).

    mc161-15.jpg
    Рис.15.

    mc161-16.jpg
    Рис.16.

    mc161-17.jpg
    Рис.17.

    Вот теперь уже схема модели устройства под названием «светофор» готова. Можно на всякий случай нажать на дискетку и сохранить файл нашего проекта.

    2. Напишем управляющую программу для нашего устройства при помощи Flowcode AVR v4.3.6.61.

    Запускаем Flowcode AVR v4.3.6.61. Выбираем “create a new flowcode flowchart”, в появившемся меню прокруткой выбираем тип микроконтроллера, нам нужен “Attiny13” (рис18,19,20). Далее появляется окно программы с панелями. В выпадающем меню «файл» выбираем «сохранить как», и указываем путь к созданной нами папке в корневом каталоге диска “myproject”, называем файл его именем на английской раскладке клавиатуры “svetofor”. И мы готовы к написанию алгоритма программы.

    mc161-18.jpg
    Рис.18.

    mc161-19.jpg
    Рис.19.

    mc161-20.jpg
    Рис.20.

    Немного о Flowcode.

    Первая инструментальная панель — это панель команд

    mc161-21.jpg
    Рис.21.

    Перечень представленных команд (с лева — на право на рис.21). Input (ввод), Output (вывод), Delay (пауза), Decision (ветвление), Connection Point (две точки соединения), Loop(цикл), Macro (макрос), Component Macro (макрос компонента, добавленного в программу), Calculation (вычисление),String Manipulation (строковые операции), Interrupt (прерывание), C Code (блок кода на языке Си), Comment(комментарий).

    Ниже расположена вторая панель инструментов.

    mc161-22.jpg
    Рис.22

    На ней расположено много всяких устройств, для подключения к портам микроконтроллера (рис.22).

    Вообще я прилагаю к статье “help” на русском языке по работе с этой программой, если что, то заглядывайте туда, (правда перевод там смешной, но разобраться можно).

    Далее давайте определимся с алгоритмом работы светофора и опишем его словами:
    1. Зажигается красный свет и горит, к примеру — 5 секунд (не смейтесь, у нас же всё — таки не настоящий светофор с перекрёстка);
    2. Зажигается желтый на 2 секунды (красный при этом не тухнет);
    3. Тухнет красный и желтый;
    4. Загорается зелёный на 5 секунд;
    5. Зелёный мигает 3 раза;
    6. Тухнет зелёный;
    7. Загорается желтый на 2 секунды;
    8. Тухнет желтый;
    9. Повтор пункта 1 (или конец цикла).

    Теперь этот алгоритм нужно нам запрограммировать в наш микроконтроллер.

    Настроим выходы микроконтроллера, для этого на второй инструментальной панели выбираем «выходы» и «LED», на панели видим добавился наш светодиод (рис.23,24).

    mc161-23.jpg
    Рис.23

    mc161-24.jpg
    Рис.24

    Кликнем на светодиоде правой кнопкой , выберем «расширенные свойства»(ext properties), выберем цвет, размер, и активный уровень (вспомним нашу модель в протеусе, светодиоды подключили с общим катодом, а значит активный уровень выбираем высокий) (рис.25,26) . Теперь ещё раз кликнем правой кнопкой на нём и выберем “connections” (вспомним модель в протеусе, у нас красный порт — В0, желтый — В1, зелёный — В2.) (рис.27,28).

    mc161-25.jpg
    Рис.25

    mc161-26.jpg
    Рис.26

    mc161-27.jpg
    Рис.27

    mc161-28.jpg
    Рис.28

    Таким образом подключаем все три наших светодиода (рис.29).

    mc161-29.jpg
    Рис.29

    Теперь у нас есть чем управлять программно.

    На клетчатом фоне видим два связанных элемента алгоритма, они неизменно присутствуют всегда. Без них никак нельзя это “BEGIN” и “END”, то есть начало и конец выполнения программы. Поскольку микроконтроллеры AVR выполняют программу от начала и до конца, то выполнив «тело программы» он дойдёт до “END” и остановится. Нам этого не нужно, светофор ведь должен работать всё время, пока его не отключат.

    Для этого установим бесконечный цикл выполнения нашей будущей программы. Для этого в первой панели инструментов находим значок “Loop”, что значит цикл, и перетягиваем этот значок на место, между “BEGIN” и “END” (рис.30) .

    mc161-30.jpg
    Рис.30

    Теперь в теле этого цикла и будем осуществлять наш алгоритм. Первым пунктом у нас идёт — включить красный на 5 секунд. Перетягиваем значок “component macro” что значит макрос компонента, а компонент у нас это наш красный светодиод (кстати у него есть имя, он у нас LED0, это можно посмотреть если на нём кликнуть и посмотреть в панель свойств — “property” (рис.31,32).

    mc161-31.jpg
    Рис.31

    mc161-32.jpg
    Рис.32

    Далее, два раза кликнув по значку «макрос компонента» выбираем LED0 и ON, что значит – включить светодиод 0 (рис.33).

    mc161-33.jpg
    Рис.33

    Можно ещё вставить комментарий, что бы было легче ориентироваться по своему алгоритму. Перетянем значок “comment”, два раза на нём кликнем, и пишем свой комментарий (рис.34).

    mc161-34.jpg
    Рис.34

    Красный должен гореть 5 секунд, есть значок “DELAY” что значит задержка (пауза), перетянем его и в его свойствах укажем единицу времени ( с ), и их количество ( 5 ) (рис.35).

    mc161-35.jpg
    Рис.35

    Пунктом 2 у нас идёт включение желтого на 2 секунды, при этом красный не тухнет. Снова: макрос компонента LED1 (он у нас желтый), выбираем LED1, ON, далее DELAY , выставляем 2 и единицы измерения – секунды (рис.36).

    mc161-36.jpg
    Рис.36

    Далее пункт 3, тухнет красный и желтый. И пункт 4, загорается зелёный на 5 секунд. Перетягиваем: макрос компонента , LED0, OFF (выключили красный), макрос компонента, LED1, OFF (выключили желтый), снова макрос компонента , LED2, ON (включили зелёный). Далее перетянем DELAY, 5 sec. (рис.37) .

    mc161-37.jpg
    Рис.37

    Пунктом 5, у нас зелёный мигает 3 раза, то есть тухнет затем пауза, загорается, пауза, и снова тухнет. Здесь немного подумаем, стоит ли переписывать одни и те же действия 3 раза? Конечно же, нет. Используем цикл, перетянем его и кликнем по нему два раза. Поставим галочку на LOOP COUNT (что значит количество циклов), поставим в поле нужное нам количество – это 3 цикла (рис.38). Для наглядности примем паузу между включением и выключением зелёного 0.5 секунды(или 500мс.). Перетягиваем теперь в тело нашего троекратного цикла: макрос компонента LED2, OFF, дальше DELAY, 500 ms, LED2, ON, и DELAY, 500ms. (рис.39).

    mc161-38.jpg
    Рис.38

    mc161-39.jpg
    Рис.39

    Далее пункт 6, выключаем зелёный. Пункт 7 включаем желтый на 2 секунды. Пункт 8 – выключаем желтый. (LED2, OFF; LED1, ON; DELAY, 2 sec.; LED1, OFF). Думаю, что такая запись Вам будет понятна, поскольку эти действия выполнялись уже неоднократно (рис.40).

    Ну вот, и всё ! Мы написали алгоритм программы управления светофором. Давайте проверим, что у нас получилось. Для этого в выпадающем меню “view” выберем “project option”, откроется окно опций проекта. Установим тактовую частоту микроконтроллера 4800000 Гц. (это нужно для правильного расчёта пауз ), и скорость симуляции, в данном случае “fast as possible” (рис.41,42).

    mc161-40.jpg
    Рис.40

    mc161-41.jpg
    Рис.41

    mc161-42.jpg
    Рис.42

    Теперь жмём «ОК», ищем и нажимаем синий треугольник вверху «RUN», (или нажимаем клавишу F5), и наслаждаемся симуляцией работы нашего светофора в Flowcode. Если не работает, или не так работает как надо, то ищем ошибки. Поскольку статья очень подробная то ошибок быть не должно.

    Приступим теперь к компиляции проекта. В выпадающем меню “chip”, выбираем “compile to hex”. Появляется окно компилятора, и индикация его работы (рис.43).

    mc161-43.jpg
    Рис.43

    Должно получится так как на картинке, если ”Return code=1”, проверяем путь к файлу проекта. Напомню что названия всех папок в пути от корневого каталога и файла должно состоять только из латинских символов. Иначе компилятор будет выдавать ошибку (рис.44).

    mc161-44.jpg
    Рис.44

    Открываем папку с проектом, и смотрим на наш HEX файл прошивки (рис.45,46).

    mc161-45.jpg
    Рис.45

    mc161-46.jpg
    Рис.46

    А вот и наш Си файл (рис.47,48).

    mc161-47.jpg
    Рис.47

    mc161-48.jpg
    Рис.48

    Алгоритм
    Рис.49 (наш алгоритм)

    Собственно полученная нами прошивка (код).

    И программа на СИ (находится в архиве ниже).

    Теперь возвращаемся к нашему проекту в Proteus professional. Нам нужно проверить, функционирует ли полученный нами код в модели созданного нами устройства, или нет. Для этого открываем наш файл svetofor.DSN (он у нас в папке myproject), делаем двойной клик на микроконтроллере, откроется окно его свойств (рис.50), так называемые фьюзы поставьте такие как на рисунке (WDTON=1; CLKDIV8=1; RSTDISBL=1; CKSEL=10; SUT=10).

    mc161-50.jpg
    Рис.50

    Выберите путь к “Program file” нажав на кнопку с папкой (укажите путь к нашему HEX файлу) (рис.51).

    mc161-51.jpg
    Рис.51

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

    Как Вам понравилась статья? Старался объяснить, как мог понятней и подробней. Любой (осознанной) критике буду только рад.

    Урок 7 — Светофор на Arduino своими руками. Пишем скетч используя функции

    .Урок 7 - Светофор на Arduino своими руками. Пишем скетч используя функции

    В данном уроке сделаем самый простой светофор из трех светодиодов . Работать он должен вот по такой схеме.

    Работа светофора

    1. Светит только красный цвет нашего будущего светофора.

    2. Не выключая красный сигнал светофора включаем желтый .

    3. Выключаем красный и желтый включаем зеленый.

    4. Выключаем зеленый сигнал светофора включаем желтый.

    После чего цикл повторяем с красного сигнала светофора.

    Для урока нам понадобится:

    • Arduino UNO или Arduino Nano
    • Плата макетная беспаечная
    • Резисторы 220 ОМ
    • Соединительные провода папа-папа
    • Светодиоды 3 или 5 мм.

    Подключим три LED к плате Arduino UNO . У нас получиться вот такая схема.

    Светофор на ардуино своими руками

    Принципиальная схема подключения светофора на Arduino

    Скетч выглядит так

    Для управления светодиодами используем функции digitalWrite().

    Давайте заменим стандартную функции digitalWrite() на свою функцию Led().

    Функция принимает две переменные pin — пин светодиода и status — состояние светодиода HIGH или LOW.

    В итоге получим вот такой скетч

    Как видно по скетчу код стал больше, а функции используют для уменьшения объема кода и упрощения логики. Но мы на этом простом примере посмотрели что такое функция и как передавать переменные в функции в среде разработки arduino IDE.

    Понятие что такое функции и как их объявлять пригодиться нам в следующем уроке.

    Ест вопросы смотрите видео там подробно описываю программу светофора на Arduino.

    Светофор на ПЛК – 30 блоков

    Здравствуйте!
    Я хочу показать, как пишется программа для управления технологическим оборудованием на ПЛК.
    Чаще всего я имел дело с ПЛК производства Schneider Electric. Выбранный мной для данной задачи Quantum является самым мощным и дорогим ПЛК данного производителя. Он может управлять оборудованием с тысячами сигналов, для светофора в реальной жизни его никто, естественно, использовать не будет.

    Автоматизацией светофоров я никогда не занимался, поэтому алгоритм придумал сам. Вот он:
    1. Светофор для регулируемого пешеходного перехода. Т.е. светофор для машин, светофор для пешеходов и кнопка для пешеходов, нажав которую, пешеход уведомляет о желании перейти дорогу.
    2. После старта программы загорается зеленый для машин и красный для пешеходов.
    3. После нажатия кнопки пешеходом начинает мигать зеленый для машин, затем загорается желтый, затем красный. После этого загорается зеленый для пешеходов, через заданное время он начинает мигать, загорается красный для пешеходов, после этого для машин загорается желтый и красный, затем зеленый.
    4. В течение заданного промежутка времени после зеленого на пешеходном светофоре нажатие кнопки пешеходом не запускает алгоритм перехода. Алгоритм перехода запускается в таком случае только по истечению заданного времени.
    Программирование ПЛК ведется в среде программирования Unity на языках стандарта МЭК 61131-3. В данный стандарт входят 5 языков. Для примера я выбрал язык функциональных блоков – FBD.
    Вот браузер проекта в Unity:

    ПЛК состоит из монтажной панели, блока питания (1), контроллера (2), модуля дискретного ввода на 32 сигнала 24В постоянного тока (4), модуля дискретного ввода на 32 сигнала 24В постоянного тока (5). В реальном проекте монтажных панелей, подключенных к одному контроллеру по различным сетям, могут быть десятки, а модулей ввода-вывода – сотни.
    Создаем переменные необходимых типов в редакторе переменных:

    Переменные, привязанные к каналам модулей ввода-вывода имеют адрес, показывающий, к какой корзине, модулю и каналу привязан сигнал.
    Программа состоит из секций, выполняемых каждый цикл сканирования контроллера по порядку.
    Упрощенно цикл сканирования контроллера выглядит так:
    1. Чтение входных сигналов из модуля ввода в переменные с адресам.
    2. Выполнение секций.
    3. Запись значений из переменных с адресами в выходные сигналы модулей вывода.
    4. Переход на п.1.
    Создаем секцию Clock с генератором импульса периодом 0,5 секунды. Блок TP при изменении входного сигнала из 0 в 1 на выходе выдает импульс заданной длительности.

    Здесь и ниже скриншоты секций приведены в режиме анимации, а не режиме редактирования. На них отображены значения переменных в текущий момент времени при подключении к ПЛК с загруженной программой (числа для числовых переменных, цвет зеленый (1)-красный (0) для булевских).
    Секция Main обрабатывает основную логику.
    Блок SR устанавливает выход в 1 при S1=1 и сбрасывает выход в 0 при R=1.
    Блок R_TRIG устанавливает выход на 1 цикл сканирования в 1 при переходе входа из 0 в 1 (детектор переднего фронта).
    Блок F_TRIG устанавливает выход на 1 цикл сканирования в 1 при переходе входа из 1 в 0 (детектор заднего фронта).
    Переменная inButton, привязанная к каналу кнопки, заменена в секции на inButtonForTest для того, чтобы можно было изменить ее значение на симуляторе контроллера без реального оборудования.

    Секция Outputs формирует выходные сигналы для управления лампами светофоров.

    Загружаем проект в симулятор контроллера:

    Значение любых переменных можно посмотреть в анимационной таблице:

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

    Пробуем перейти дорогу:

    Не ожидал, что для управления такого простого объекта, как светофор, потребуется 30 блоков.
    В следующей статье покажу, как написать данную программу, используя все языки стандарта МЭК 61131-3 одновременно.

    УПРАВЛЕНИЕ ОСВЕЩЕНИЕМ (Программирование в ONI PLR studio)

    УПРАВЛЕНИЕ ОСВЕЩЕНИЕМ Программирование в ONI PLR studio Выполнила: Петров.

    2. Внимательно изучите описание алгоритма работы схемы освещения (часть 1):
    BK получает питание после включения QF и при наличии движения подает питание на катушку КМ.
    Включен SA1 (SA2-отключен) и Вкл. ВК (наличие движения)=> Вкл. KM1 (модульный контактор). => Вкл. EL6 на 5 сек. => Вкл. EL7 на 3сек. => Вкл. EL8 на 2сек. (циклическое повторение).
    При отключении (отсутствии движения) датчика движения цикл прерывается. При Вкл. SA2 цикл останавливается и вкл. EL3 (срабатывание ВК не вызывает реакции системы).
    Включен SA2 (SA1-отключен) Вкл. EL6, EL7, EL8 (срабатывание ВК не вызывает реакции системы).
    Выключены SA1, SA2. – исходное состояние все светильники с выходов логического реле отключены.
    3. Исходя из конкурсного задания выбираем и расставляем на схеме блоки: «Цифровой вход» , «Цифровой выход»
    1. Прежде, чем приступить к выполнению программирования запустите программное обеспечение. Для этого выбираем: «Создать…. Функциональная блок-схема FBD»

    4. Блок «ИЛИ» устанавливаем на схеме для возможности принятия сигналов от нес.

    4. Блок «ИЛИ» устанавливаем на схеме для возможности принятия сигналов от нескольких функциональных блоков. Устанавливаем связи между блоками
    5. Выбираем и устанавливаем элемент «И». Сигнал будет выходить, в том случае, если на все используемые входы блока приходит сигнал
    6. В Специальных функциях выбираем блок «Задержка включения», которая будет использоваться для переключения светильников

    7. От датчика движения ВК и выключателя SA1 подается связь на блок «И», при.

    7. От датчика движения ВК и выключателя SA1 подается связь на блок «И», при этом происходит поочередное включение светильников EL6,EL7, EL8 , при поступлении сигнала с ВК и выключении выключателяSA1

    8. В Специальных функциях выбираем блок «Генератор импульсов», который будет использоваться в схеме для включения светильников с определенным временным интервалом
    9. Устанавливаем блоки в схему и обозначаем связи между блоками «И» до входа на «Генератор» (элемент на схеме В012 напрямую). К элементам В013, В 014 через «Задержку времени включения» элементы В010, В011

    10. На «Задержке включения (В010, В011) выставляем таймер, согласно задания 1.

    10. На «Задержке включения (В010, В011) выставляем таймер, согласно задания

    11. В «Генераторах импульсов» задаем параметры на периодичность вкл/выкл светильников, согласно заданию

    12. Устанавливаем связи от «Генератора импульсов до блоков «ИЛИ»

    13. Устанавливаем связь от входа 1003 (SA2) до блока «И» (В008), для прекращения цикла поочередного включения светильников EL6, EL7, EL8 (входы Q001,Q002, Q003)

    14. Связи от SA1, SA2 на блок «И»(В007), от «И» (В007) на выход Q004, исполь.

    14. Связи от SA1, SA2 на блок «И»(В007), от «И» (В007) на выход Q004, используем для включения светильника EL3 отдельный режим

    15. С SA1 и SA2 связи на блок «И», с установкой функции «НЕ» на вход от SA1. С выхода «И» связи на светильники EL6, EL7, EL8. Выполняются условия задания.
    На входе блока «И» «двойной клик»
    позволяет создать блок «НЕ».

    16. Выполнить алгоритм работы схемы освещения (часть 2): Включен SA3 (SA4- о.

    16. Выполнить алгоритм работы схемы освещения (часть 2):
    Включен SA3 (SA4- отключен) => Включаются EL4, EL5 поочередно с периодом 5 сек.
    Включен SA4 (SA3 — Включен) => Включаются EL4, EL5.
    Выключен SA3 (SA4 — Включен) => Выключаются EL4, EL5 и Включается EL3.

    18. Устанавливаем связи от входов 1003, 1004 (выключатели SA3, SA4) на блок «И». Устанавливаем на вход от SA4 функцию «НЕ»
    17. Вставляем блоки в схему для выключателей SA3, SA4 (вход 1003,1004)

    19. Устанавливаем связи от выхода «И» на «Задержку вкл.» и «Генератор импульс.

    19. Устанавливаем связи от выхода «И» на «Задержку вкл.» и «Генератор импульсов». Исходя из условия задания включаются EL4, EL5 поочередно с периодом 5 сек
    20. Выставляем таймер задержки включения, задержка пуска «Генератора импульсов» для переключения светильников EL4, EL5

    21. Задаем длительность импульсов вкл/откл. светильников EL4, EL5. «Включен SA3 (SA4 отключен), соответственно включаются EL4, EL поочередно с периодом 5 сек»

    22.Устанавливаем связи от SA3, SA4 на входы блока «И»(В015), от выхода «И» д.

    22.Устанавливаем связи от SA3, SA4 на входы блока «И»(В015),
    от выхода «И» до входа блоков «ИЛИ» (В005, В006).
    Тем самым мы реализуем условия КЗ:
    «Включен SA4 (SA3 — Включен) => Включаются EL4, EL5.»
    23. Устанавливаем связи от «SA3» и «SA4» на входы блока «И» (В017), с выхода блока «И» до входа блоков «ИЛИ» (В004, В005, В006).
    Тем самым мы реализуем условия КЗ:
    «Выключен SA3 (SA4 — Включен) => Выключаются EL4, EL5 и Включается EL3.»

    Задание выполнено

    Рабочие листы и материалы для учителей и воспитателей

    Более 3 800 дидактических материалов для школьного и домашнего обучения

    Читать:
    Таис рм 41 для дальнобойщиков как настроить

Похожие публикации