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

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

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

4.7. Дискретный джойстик

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

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

Программа управления преобразователем частоты при помощи дискретного джойстика показана на рис. 64. Она состоит из трех блоков: обработки сигнала, формирования задания и учета ограничений. В блоке обработки сигналов от джойстика формируются дискретные команды пуска привода влево и вправо. Чтобы в случае поломки переключателей джойстика одновременно не появились сигналы пуска в разные стороны, введена операция «исключающее ИЛИ». При возникновении ситуации, когда входные переменные в строках 3 и 4 одновременно будут иметь значение «единица», активные ячейки в строке 5 заблокируют пуск в любую сторону.

Рис. 64. Программа управления частотным приводом с помощью дискретного джойстика


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

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

4.8. Таблица на нескольких страницах

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

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

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

4.9. Модули-прототипы и их клоны

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

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

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



Рис. 65. Модульный вариант программы управления частотным приводом с помощью аналогового джойстика


Для того чтобы использовать этот прототип для обработки сигнала с другого джойстика или с датчика другой степени свободы этого же джойстика, нужно загрузить данную таблицу на новую страницу, затем изменить адрес переменной в строке 2 в соответствии со схемой подключения аналогового сигнала, а в строках 3, 4, 6, 7 установить адреса переменных, в которых сохраняются данные, необходимые для обработки этого аналогового сигнала. Сохранив данную страницу, мы получаем программный модуль как клон прототипа.

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

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

5. Простая табличная среда разработки

5.1. Общие требования к среде разработки

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

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

 

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

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

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

5.2. Почему используется браузер?

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

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

Программа, в которой реализована среда разработки, написана как веб-страница и представляет собой один HTML-файл, в котором содержатся стили CSS, HTML и JavaScript. Это позволило одновременно разработать редактор табличных программ и часть программы контроллера, отвечающую за вывод таблицы на клиентское устройство, так как отображение табличной программы в обоих случаях предполагалось в виде HTML-страницы. Таким образом, открытый текст среды разработки табличных программ может стать неплохим подспорьем в написании среды исполнения табличных программ. Часть такой программы будет содержать ответ в виде HTML-страницы, загружаемой на устройство клиента, с помощью которой браузер в одном из окон сформирует таблицу с заданными параметрами. Готовые настройки стилей и скрипты, применяющиеся в среде разработки, можно использовать при написании среды исполнения табличной программы для выбранного контроллера.

5.3. Среда разработки программ, организованных в виде таблиц[3]

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


Рис. 66. Кнопки панели инструментов:

1) кнопка загрузки табличного файла на страницу; 2) кнопка выгрузки (сохранения) таблицы в файл на диске; 3) кнопка проверки таблицы на ошибки; 4) кнопка однократного пересчета таблицы; 5) кнопка сокрытия столбцов таймера; 6) кнопка настроек таблицы


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

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

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

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

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

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

При наведении указателя на любую из кнопок всплывает текстовая подсказка с описанием назначения кнопки.

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


Рис. 67. Меню добавления и удаления строк


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

В зависимости от значения в поле «Адрес» будет определен список предлагаемых операций. Если адрес соответствует битовой переменной, то в меню будут две операции: «=» и «NOT». Для аналоговой переменной будет доступна одна операция – «=». При пустом поле «Адрес» в списке меню будут все доступные операции (рис. 68).


Рис. 68. Меню выбора операции


Если имеется результат операции в строке и введен адрес выходной переменной в столбце, то можно редактировать активную ячейку на пересечении строки и столбца (рис. 69). В зависимости от типа входной переменной будут предложены варианты активных ячеек. Для битового результата по строке – «&», «R», «S». Для аналогового результата – только «А».


Рис. 69. Меню выбора активной ячейки


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

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


Рис. 70. Установка таймера


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