bannerbannerbanner
полная версияТабличный ПЛК.Табличное программирование контроллеров

Владимир Васильевич Стретенцев
Табличный ПЛК.Табличное программирование контроллеров

Полная версия

2.3. Семь строк таблицы

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

2.4. Логические операции над входными переменными

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


Пока в программе управления шлагбаумом применялись только две операции над входными переменными – «=» и NOT. Табличная программа с использованием логической операции AND над входными переменными показана на рис. 19. В ней можно увидеть, что силовое питание включено, аварий нет, стрела шлагбаума находится в верхнем конечном положении, следовательно, шлагбаум открыт.


Рис. 19. Использование логических операций над входными переменными в программе управления шлагбаумом


Для того чтобы ввести в программу управления шлагбаумом кнопку «Шунт», используется логическая операция «И». Так как двигатель остановлен срабатыванием верхнего концевого выключателя, сбросившего ячейку RS в первом столбце с помощью триггерной ячейки R в строке 10, то для обхода концевого выключателя и продолжения движения необходимо отменить сброс, переведя триггерную ячейку R в строке 10 в ноль. Это можно сделать нажатием на кнопку «Шунт» и ее удержанием, в этом состоянии аргумент операции «логическое И» в строке 9 станет нолем, сделает результат в строке 10 также равным нолю и отменит сброс.

Так как кнопка «Шунт» – нормально открытая и при нажатии дает единицу, а для блокировки сигнала конечного выключателя нужен ноль, то сигнал от кнопки «Шунт» необходимо инвертировать. Логическое И инвертированных сигналов от конечного выключателя и кнопки «Шунт» через триггерную ячейку R будет сбрасывать ячейку RS команды пуска двигателя при достижении стрелой конечного положения, а нажатие на кнопку «Шунт» будет блокировать сброс. Таким образом, при удержании кнопки «Шунт» нажатием на кнопку «Открыть» можно поднять стрелу выше верхнего концевого выключателя. Этот момент отображен в табличной программе на рис. 20.


Рис. 20. Обход верхнего концевого выключателя нажатием на кнопку «Шунт»


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

2.5. Применение таймера с задержкой на включение

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

Добавим к программе управления шлагбаумом возможность контролировать время выполнения операции. Для этого в качестве входных данных используем значения выходных переменных «команда „Вверх“» и «команда „Вниз“», управляющих двигателем шлагбаума. Время операции будем контролировать таймером с задержкой на включение TON. В таблице на рис. 21 выходное значение таймера в строке 18 станет равным единице только в том случае, если сигнал на входе таймера продержится равным единице больше установленного времени. То есть если при подъеме стрелы шлагбаума двигатель остается включенным больше 8 секунд, то на выходном контакте 13 установится логическая единица.


Рис. 21. Использование таймеров в программе управления шлагбаумом


Этим выходным сигналом можно включить индикатор «Авария» или звуковое оповещение. Чтобы не усложнять программу, не будем вводить дополнительную кнопку квитирования аварий. Применим кнопку «Стоп», которая подключена к контакту номер 7. При возникновении нештатной ситуации нажатие на кнопку «Стоп» квитирует аварию и отключает, к примеру, звуковой сигнал. Однако при этом произойдет сброс ячеек RS в первых двух столбцах и будет потеряна информация о направлении движения шлагбаума до возникновения аварийной ситуации. Это несколько усложнит задачу сервисной службы найти причину, по которой стрела шлагбаума не может подняться или опуститься за заданное время.

Состояние программы в аварийной ситуации представлено на рис. 21, из которого можно увидеть, что вышло время операции «поднять шлагбаум». Стрела шлагбаума находится между верхним и нижним конечными положениями. Силовое питание включено, кнопка «Открыть» нажата и отпущена. Сформирована команда «вверх». Таймер в строке 18 установил на своем выходе логическую единицу. За 8 секунд стрела шлагбаума не дошла до верхнего концевого выключателя.

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

Чтобы не повредить двигатель шлагбаума при перегрузке, добавим в программу еще одну строку – для автоматического отключения команд «Вверх» и «Вниз» при возникновении аварийной ситуации. Табличная программа с добавленной строкой 20 представлена на рис. 22. Теперь при возникновении аварийной ситуации двигатель шлагбаума остановится и оператор будет уведомлен об аварии, например, звуковым сигналом. Отключается звуковое оповещение нажатием на кнопку «Стоп».


Рис. 22. Табличная программа управления шлагбаумом с аварийной блокировкой пуска


Рассмотрим способ блокировки подробнее. В случае, показанном на рис. 22, при возникновении аварийной ситуации команды управления двигателем не сбрасываются, а блокируются. Результат логического И по столбцу будет равен нолю не из-за сброса ячейки RS в столбце, а по причине нулевого состояния активных ячеек в строке 20. Можно отключать команды «Вверх» и «Вниз» по-другому, заменив в строке 20 операцию инверсии на «=» и переведя активные ячейки в триггерные активные ячейки типа R. При возникновении аварии двигатель также будет отключен. Только в этом случае ценная информация о направлении движения стрелы шлагбаума перед аварией будет утеряна. Если помеха для движения стрелы может быть устранена без привлечения специалистов сервисной службы, то нажатие на кнопку «Стоп» квитирует аварию и восстанавливает работоспособность шлагбаума.

2.6. Применение таймера, формирующего импульс

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

В таблице на рис. 22 к выходу 13 контроллера, который отвечает за индикацию аварийной ситуации, подключены световой и звуковой сигналы. При аварии звуковой сигнал будет включен до тех пор, пока оператор не нажмет кнопку «Стоп». Это не всегда удобно, так как вместе с отключением звукового сигнала отключается и световая индикация, которая могла быть подтверждением факта аварийной остановки.

Чтобы разделить световую и звуковую сигнализации, добавим в программу выходную переменную «Авария, звук» (рис. 23). Для ограничения длительности звукового сигнала используем таймер, формирующий импульс, TP. Установим длительность звукового сигнала в 2 секунды. Теперь при возникновении аварийной ситуации пуск двигателя будет заблокирован, раздастся короткий звуковой сигнал, индикаторная лампа «Авария» будет гореть до тех пор, пока не будет нажата кнопка «Стоп». На рис. 23 показано состояние программы, когда вышло время операции «открыть шлагбаум». Стрела не достигла своего верхнего положения за 8 секунд. Звуковой сигнал включен – и будет отключен через 0,845 секунды.

 

Рис. 23. Табличная программа управления шлагбаумом с ограничением длительности аварийного звукового сигнала


2.7. Управление скоростью


Многие современные шлагбаумы замедляют ход стрелы возле конечных положений. Такое решение делает его движение плавным, уменьшает износ деталей, повышает безопасность эксплуатации. Находящиеся рядом со шлагбаумом люди могут успеть среагировать на начало движения. При этом время открывания шлагбаума может даже сократиться: замедление во время пуска и остановки будет компенсировано прохождением средней зоны с повышенной скоростью.



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


Рис. 24. Табличная программа управления шлагбаумом с предварительными выключателями


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

Для реализации режима работы шлагбаума с изменением скорости движения стрелы необходимо ввести в программу две входные переменные, отражающие состояние предварительных выключателей, и одну выходную переменную, которая будет включать повышенную скорость. Обозначим ее как «2-я скорость».

В таблице, представленной на рис. 24, отображено состояние шлагбаума после нажатия кнопки «Открыть». В этот момент команда «вверх» запустит двигатель стрелы шлагбаума на пониженной скорости. На ограничение скорости будет влиять ноль в строке 13 от сработавшего нижнего предварительного выключателя. После прохождения нижнего предварительного выключателя значение в строке 13 станет равным единице, активная ячейка в этой строке тоже станет равной единице. Следовательно, логическое И по пятому столбцу и выходная переменная «2-я скорость» также будут равны единице. Стрела шлагбаума начнет двигаться с повышенной скоростью до верхнего предварительного выключателя, далее при его срабатывании произойдет замедление.

Из таблицы видно, что на отключение высокой скорости влияют три активные ячейки в пятом столбце. Состояние одной из них, в строке 10, зависит от кнопки «Шунт». Сделано это для того, чтобы при необходимости обойти концевые выключатели движение стрелы происходило на пониженной скорости.

2.8. Итог

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

3. Табличное программирование. Особенности

3.1. Формат файла программы

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


Рис. 25. Формат текстового файла табличной программы:

\t – символ табуляции, \r – символ перевода каретки, \n – символ перевода строки


Для редактирования и отладки программ, сформированных в виде таблиц, была написана специальная программа[3] на языке JavaScript – чтобы не зависеть от конкретной операционной системы и иметь возможность запускать ее офлайн в любом современном браузере. По сути, это HTML-файл размером немногим более 100 килобайт. Безусловно, возможны и другие реализации, так как формат файла таблицы полностью открыт, а алгоритм пересчета таблицы несложен. Редактирование таблицы в окне браузера не вызывает каких-либо трудностей, все функции интуитивно понятны человеку, работавшему в любой электронной таблице. В отличие от обычных приложений, у такой реализации есть отличие: из окна браузера файл не перезаписывается, его можно только сохранить как дополнительную копию в папку «Загрузки» или другую папку, для этого назначенную. Отсюда недостаток такого метода – периодически необходимо удалять ненужные копии. Так как файлы таблиц небольшого размера, то хранение нескольких последовательно сохраненных файлов дает возможность контролировать ход редактирования и при необходимости возвращаться на некоторое количество шагов назад.

Рассмотрим структуру файла таблицы. Каждая строка файла разделена на поля символом табуляции. Как и у любого текстового файла в Windows, строка оканчивается возвратом каретки (\r) и переводом строки (\n). Первая строка текстового файла табличной программы представлена на рис. 26 – это заголовок всей таблицы.


Рис. 26. Первая строка текстового файла табличной программы


Первое поле содержит выражение «строк – столбцов – активных ячеек – >» и введено для того, чтобы проверить, соответствует ли содержимое файла табличной программе. Если текстовый файл начинается с другой фразы, то это не табличная программа. Далее идут поля с набором чисел 42, 5, 33 – это количество строк, столбцов и активных ячеек таблицы. Следующее поле – это имя файла длиной до 32 символов. В нашем случае имя файла – «Проба_01.txt». Первое число после имени файла отвечает за адреса битовых переменных. Второе число отвечает за адреса аналоговых переменных. В данном случае битовые переменные имеют адреса с 1 по 99. Для аналоговых переменных выделены адреса со 100 по 140. При этом не учитывается, какие из переменных входные, а какие выходные или внутренние. Нумерация входов и выходов контроллера, а также распределение переменных по адресам будут зависеть от реализации самого контроллера. Одним из решений может быть назначение адресов входных и выходных переменных равными соответствующим номерам контактов на разъеме контроллера. Тогда табличной программой можно воспользоваться как списком сигналов, подключенных к разъемам контроллера.

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


Рис. 27. Вторая строка текстового файла табличной программы


Рассмотрим назначение полей строки. Первое поле с названием «Комментарий строки» содержит комментарий к данной строке. Это может быть имя переменной, описание назначения входа или что-то другое. В пересчете таблицы поле комментария не участвует. Второе поле, «Адрес входной», – это, собственно, адрес переменной, по которому к этой переменной обращаются. Несмотря на то, что тип переменной можно определить, используя данные об адресах переменных в первой строке файла, следующее поле, «Тип входной», определяет, является ли переменная битовой или аналоговой или же это указатель. Поле «Начальное значение» соответствует своему названию и содержит число, которое подставляется в ячейку при первом пересчете таблицы. Если число в поле «Тип входной» будет определяться как указатель, то поле «Начальное значение» будет содержать номер одной из строк, результат которой используется в данной строке. Следующие два поля, «Код операции» и «Тип результата», определяют операцию над входными переменными и тип получаемого результата.

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

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


Рис. 28. Пример записи данных строки табличной программы в текстовом виде


Следующий раздел файла содержит данные о выходных переменных. Номер первой строки раздела в текстовом файле можно получить, прибавив к числу во втором поле заголовка файла число 2. Это количество строк таблицы плюс две первые строки с заголовками. Первая строка раздела представлена на рис. 29. Это заголовок столбцов табличной программы.


Рис. 29. Заголовок раздела с данными столбцов табличной программы


Далее идут строки файла, в которых содержится информация о выходных переменных и операциях над ними. Пример такой строки – на рис. 30.


Рис. 30. Пример записи данных столбца табличной программы в текстовом виде


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

 

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


Рис. 31. Заголовок раздела с данными активных ячеек табличной программы


Первое поле, «Строка», содержит номер строки таблицы, поле «Столбец» – номер столбца таблицы, а поле «Код операции» указывает, какое действие будет произведено при пересчете таблицы. Пример записи данных активной ячейки – на рис. 32.


Рис. 32. Пример записи данных активной ячейки табличной программы в текстовом виде


Другими словами, в полях «Строка» и «Столбец» указано положение активной ячейки в таблице, а поле «Код операции» определяет, каким образом активная ячейка будет влиять на результат по столбцу.

3Скачать программу, в которой реализована среда разработки, можно в телеграм-канале «Табличный ПЛК» t.me/tableplc.
Рейтинг@Mail.ru