Как это работает в нашем случае?
- Уровень воды ниже X0. Датчики X0 и X1 включены, реле М1 сработало, поэтому выход Y0 (насос) включен.
- Вода между уровнями X0 и X1. Датчики X1=1, X0=0, но реле М1 останется включенным через «контакт» М1, поэтому насос останется включенным.
- Уровень превысил X1. Датчик X1 выключился, все устройства и цепи выключатся.
Задача, схожая с этой, рассмотрена на рис. 1.6 с той лишь разницей, что функция запоминания срабатывания реле в этомпримере искусственно вводилась цепью самоблокировки, тогда как в примерах на рис. 1.9 и рис. 1.10 использовались функциональные возможности элементов с памятью – триггера Шмитта и RS – триггера.
Но одно в этом примере показательно: у нас не было реле, мы не можем его подержать в руках, но оно уже работает на нас! И таких программно - организованных реле можно использовать в программе очень и очень много.
7. При составлении программы часто возникает потребность принудительной установки какого-либо элемента (допустим, R-S триггера) в одно из двух возможных (ON или OFF) состояний. Для этого предусмотрены команды SET (установить) и RST (сбросить).
8. Команда TIMERиспользуется в программах для вызова различных по величине и характеру работы выдержек времени.
Команда инициализации таймера записывается в формате: (OUT T n K m ),
где: T– обозначение таймера,
n - номер таймера от 1 до 255,
K- обозначение константы,
m - число, до которого будет вестись отсчёт времени. Шаг отсчёта времени может устанавливаться в единицах, десятках и сотнях миллисекунд в зависимости от типа ПК и номера обозначения таймера (в соответствии с нижеприводимой таблицей).
Результат умножения двухбайтного числа 32767 на шаг отсчёта времени равен максимальной выдержки времени, которую способен обеспечить активизируемый таймер.
Таймер с номером 200 на рис. 2.2,а имеет шаг отсчёта 10 ms = 0,01 s (это видно из таблицы). Следовательно, при K=123 он будет формировать выдержку времени, равную 0,01 × 123 = 1,23 s. Аналогично этому таймер T250 на рис 2.2,б - стомиллисекундный, поэтому формируемая им выдержка при K = 345 равна 0,1 × 345 = 34,5 s. Отметим ещё одно: T250 – это таймер с памятью, поэтому при прерывании сигнала X1, он не сбрасывает счёт в ноль, как T200, а только приостанавливает его на время пропадания активизирующего сигнала. С повторным появлением X1 таймер продолжит отсчёт выдержки с ранее накопленного значения. Этим определяется ещё одно различие таймеров с памятью и без неё. Таймеры без памяти сбрасываются в ноль самопроизвольно при снятии сигнала X0, а таймеры с памятью требуют подачи специального сигнала X2 сброса в исходное состояние.
а б
Рис. 2.2
Рис. 2.3
На рисунке 2.3 показаны два способа ввода уставки требуемой выдержки времени. Один из них, а именно уставка с помощью константы, ясен из предыдущего. При нём значение выдержки однозначно задаётся в самом тексте программы номером таймера и конкретным значением числа m, до которого будет вестись счёт. Изменение выдержки в этом случае невозможно без коррекции соответствующей записи в тексте программы.
Чтобы получить более гибкий способ задания выдержки времени, лучше использовать другую возможность, обеспечиваемую средой программирования. Она заключается в том, что величина выдержки времени записывается в отдельный регистр данных D с указываемым номером. Счёт будет вестись до того значения, которое записано в этом регистре. Это особенно удобно в тех случаях, когда программа разрабатывается для управления объектом, работающим не по жестко заданным характеристикам алгоритма управления, а допускает некоторое их изменение в реальных условиях (рис.2.4).
Рис. 2.4
Допустим для определённости, что окончание выгрузки какого – либо продукта из резервуара фиксировалось по срабатыванию датчика уровня. Попробуем сделать это, не прибегая к использованию датчика. Мы можем задать время, по истечении которого выгрузка гарантированно закончится, и будем управлять освобождением резервуара с помощью выдержки времени таймера. Практически сделать это несложно, если циклически повторяющаяся работа объекта будет проходить при одних и тех же условиях. Но если какая – либо характеристика процесса (вязкость среды, объём выгружаемой дозы, проходное сечение канала выгрузки и т.п.) может изменяться, то фактическое время выгрузки будет в каждом конкретном случае иным. Это потребует изменения уставки на формируемую выдержку времени таймера под изменившиеся условия работы. И вот здесь заходит речь о выполнении «обучения» программы новым характеристикам управления.
На рис.2.4 сигнал X0 вызывает переход в режим обучения. Таймеру T0 исходно задана максимально возможная выдержка, так как число 32767 – это десятичный эквивалент заполненного единицами двухбайтового регистра. Длительность нажатия X0 определяется опытным путём по моменту окончания выгрузки дозы. Эта длительность и накопленная таймером T0 выдержка – один и тот же интервал времени, который командой [MOV T0 D0] записывается в регистр D0. К содержимому этого же регистра, как к уставке выдержки времени, будет обращаться впоследствии и таймер T1 в режиме «работа» при включении X1 . Теперь канал выгрузки дозы Y0 будет включаться на время, определяемое регистром D0 до тех пор пока не изменятся условия выгрузки.
Описанная процедура может повторяться многократно путём переключения режимов «обучение» / «работа» чередованием подачи сигналов X0 / X1.
9. Команда COUNTER –счётчик. Счётчик – один из наиболее простых компонентов программного обеспечения контроллеров, так как его назначение состоит в выполнении счёта.
Счётчики бывают: суммирующие – прямой счёт (1, 2, 3, 4 , …); вычитающие – обратный счёт (.…,4, 3, 2, 1); реверсивные - выполняют счёт вверх – вниз (1, 2, 3, 4, 5, 4, 3, 2, 3, 4, 5 ,6, 7, …).
Формат записи команды инициализации счётчика:
(OUT C n K m),
где: C- обозначение счётчика,
n - номер счётчика от 1 до 255,
K - обозначение константы,
m - число, до которого ведётся счёт.
Существующие разновидности счётчиков можно классифицировать на следующие группы:
· 16 – битные счётчики для счёта «вверх» с сохранением и без сохранения полученного результата счёта при отключении питания. Они считают только внутренние программируемые сигналы счёта;
· 32 – битные счётчики для счёта «вверх – вниз» с сохранением и без сохранения результата счёта при отключении напряжения питания. Направление счёта задаётся посредством состояния специальных меркеров. Они также считают внутренние программируемые сигналы счёта.
· 32 – битный высокоскоростной счётчик (быстрый счётчик), позволяющий считать «вверх – вниз. Они обрабатывают очень быстро следующие друг за другом внешние сигналы счёта.
Адресация счётчиков и задание режимов их работы может быть различным. На рисунке 2.5 показано, как это можно сделать для 16 – битного счётчика при непосредственном задании числа счёта (K10).
Рис.2.5
Счётчик C0 будет считать импульсы по входу X1 до 10, после чего перестанет на них реагировать, но переключит состояние своего выхода, а, следовательно, и выход Y0 на уровень ON. Возвращение счётчика в исходное состояние выполняется сигналом сброса RST C0,поступающим по входуX0.
Как и в случае с таймером, коэффициент счёта счётчика можно задавать косвенно через регистр данных. На рисунке 2.6 этот регистр имеет обозначение D20.
Рис.2.6 Рис.2.7
Ранее упоминались в качестве элементов программы меркеры. Меркеры – это промежуточные элементы памяти (рис.2.7), применяемые внутри программы для запоминания двоичных результатов логических связей. “Внутри программы” – это потому, что к ним нельзя подключить аппараты, находящиеся вне контроллера. При единичном состоянии X1 меркер M0 тоже переходит в это состояние, следствием чего будет включение выходов Y2 и Y3. Если сигнал X0 имеет единичное значение, Y2 включится независимо от состояния M0.
Может сложиться ошибочное представление о том, что меркер и внутреннее реле – это одно и то же. При всей своей внешней похожести они имеют и различия. Они заключаются в том, что меркеры по своим номерам делятся на группы, каждой из которых присвоено вполне конкретное смысловое значение. Внутри каждой из групп меркеры в зависимости от номера тоже различаются по функциональному назначению.
Приведём несколько примеров для группы специальных меркеров:
M8002, M8003 – импульс инициализации;
M8012,M8012,M8013 – датчик тактов 10ms, 100ms, 1s;
M8200 – M8234 -если включится один из рядом стоящих специальных меркеров, один из принадлежащих ему счётчиков определяется как счётчик вверх. (M8200 = C200, M8217 – C217 и т.д.). Направление счёта определяется переключением меркера.
По сути дела, меркеры – это частный случай внутренних реле, отмеченные постоянно присвоенными номерами и наделённые вполне определёнными выполняемыми функциями.
Распределение пространства номеров, присваиваемых меркерам в зависимости от их функциональной принадлежности, приведено в таблице.
Напомним, что 16-битные счётчики – это счётчики «вверх». Они поэтому не требуют управления для изменения направления счёта.
Управлять изменением направления счёта можно только в 32 – битных счётчиках, и делать это надо включением / выключением
соответствующего меркера. Использование меркера M8200 (рис.2.8) активизирует счётчик C200 с управлением по входу X0.
Рис. 2.8
Фрагмент программы поясняет содержание диаграмм на рис.2.8. Включенное или выключенное состояние X0 активизирует или отключает M8200. Счетчик подсчитывает сигналы X2, после окончания счёта включает выход Y1. По входу X1 выполняется сброс счётчика. Последней инструкцией в регистр D0 словом двойной длины (DMOV) записывается число 10 для косвенного задания нового коэффициента счёта.
В качестве примера использования языков РКС и СИприводится часть общей программы управления штамповочной машиной (рис. 2.9) [ ]. При выходе ранее отштампованного изделия из штампа сигнал X0 (в синтаксисе Melsec Medoc FX / WIN он записывается как X000) имеет уровень ON. Это означает, что форма освободилась и готова для подготовки её к следующему циклу штамповки.
Рис.2.9
Он начинается с выдвижения штампа из матрицы вправо, под действием команды Y2 при условии, что форсунки подачи воздуха (Y4) и масла (Y6), показанные на блок-схеме алгоритма (рис.2.10), не будут включены – это своего рода блокировка от ложного срабатывания.
Рис.2.10
Эта блокировка обеспечивается записью строки 1 программы (рис.2.12), и она находится в полном соответствии с отображением работы объекта на временных диаграммах процесса (рис. 2.11). Действительно, выходной сигнал на открытие формы Y2 будет выдан при наличии X0 и пассивном состоянии сигналов Y4 и Y6, что равносильно соответствию их отрицаний уровням ON. Этим исчерпывается программное представление работы управляющей схемы по левой ветви алгоритма.
После выдвижения формы сигналом X1 активизируется отработка средней ветви алгоритма. Как видно из строки 2 программы, выход Y4 примет уровень ON, если не будут включены Y2 (выдвижение формы) и Y6 (включение подачи смазки). Цепь сразу встаёт на самоблокировку по Y4 последовательно с нормально замкнутым состоянием выдержки времени таймера Т2. Назначение Т2 как раз и
Рис.2.11
состоит в том, чтобы после его срабатывания остановить выполнение программы по отработке средней, а как можно заметить по строке 3 алгоритма, и правой ветви тоже. Строки 2 и 3 функционально организованы одинаково: самоблокировка по своему выходному состоянию и запрет на включение «своей» ветви, если включена одна из соседних.
За время включённого состояния Y4 или Y6 каретка, несущая форсунки подачи воздуха и смазки, должна совершить два встречных движения: перемещение из исходной точки B в точку A за заданное время выдержки таймера Т1 и вернуться за такое же время обратно в точку B. Первое из этих движений под действием Y3 происходит на интервале, когда Т1 отсчитывает свою выдержку времени, а второе – когда «свою» выдержку отсчитывает Т2. В момент окончания выдержки времени Т2 отработка рассмотренного фрагмента управления объектом завершается. Срабатывание Т2 в строке 5 вызывает переход в OFF сигналов Y4 и Y6 (строки 2 и 3), что, в свою очередь, заставит выключиться сигналы Y3 и Y3 (строки 4 и 5) программы на рис. 2.12.
Рис.2.12
Проведённое рассмотрение принципиальной основы программирования логических контроллеров на языке релейно – контактных схем затронуло только незначительную часть возможностей программной среды MELSEC MEDOC FX / WIN. Подбор материала и степень подробности изложения выбирались из тех соображений, чтобы сделать понятным применение языка РКС в других средах составления программ. Вопросы, более приближенные к практическому программированию, будут рассмотрены в следующих разделах.
Дата добавления: 2016-07-29; просмотров: 2082;