Шрифт:
Интервал:
Закладка:
Первый блок выполняет обработку сигнала от джойстика. Так как в центральном положении ручки джойстика напряжение на входе АЦП не будет точно равно половине опорного напряжения, то сначала необходимо определить, какое значение с АЦП будет соответствовать центральному положению ручки. Дополнительно нужно добавить границы возможного люфта ручки джойстика в центральном положении. Для этого двум переменным, с адресами 116 и 117, присвоим значения, от которых будем считывать отклонения ручки джойстика влево и вправо. Если рассматривать 12-битный АЦП, то максимальное получаемое от него значение будет равно 4095. Значение, получаемое от джойстика, при центральном положении ручки будет около 2047. Учитывая люфт джойстика, находим значения, от которых будем вести отсчет отклонения влево и вправо.
При отклонении ручки влево значение, соответствующее отклонению влево, будет положительным, а значение, соответствующее отклонению вправо, — отрицательным. Положительный знак значения отклонения указывает, в какую сторону необходимо произвести пуск двигателя. Чтобы исключить ситуацию, когда при некорректно введенных параметрах возможно появление одновременно сигналов пуска в разные стороны, введена операция «исключающее ИЛИ». В такой ситуации активные ячейки в строке 13 блокируют пуск в любую сторону.
Второй блок служит для перевода значения, получаемого с АЦП, в скорость вращения мотора в оборотах в минуту. Для этого необходимо найти коэффициент преобразования. Предположим, что максимальная скорость вращения двигателя равна 1400 об/мин, а максимальное значение отклонения джойстика в одну сторону составляет 2047. Разделив 2047 на 1400, получим 1,46. Для удобства коэффициенту преобразования присвоим значение 1,5.
В третьем блоке формируется задание для преобразователя частоты. Значение задаваемой скорости появляется в строке 25 только в том случае, если была сформирована команда «пуск» в одну из сторон, иначе скорость будет равна нолю. Это сделано для того, чтобы значение скорости появлялось вместе с командой «пуск». В переменной с адресом 114 хранится значение первой скорости в оборотах в минуту. Это максимально допустимая скорость при появлении ограничений. В строке 27 проверяется, превысило ли значение скорости с джойстика величину первой скорости. Результат этой проверки будет использоваться в следующем блоке.
Четвертый блок программы учитывает ограничения скорости, вызванные нажатием на кнопку «Шунт» или подходом механизма близко к конечному положению. При появлении ограничения значение скорости, подаваемой на ПЧ, не должно превышать первую скорость. Если же при включенном ограничении сигнал от джойстика превышает первую скорость, то значение скорости будет установлено равным первой скорости. В программе на рис. 63 показан случай ограничения задания скорости ПЧ. Так как значение переменной с адресом 50 равно единице, то вместо значения скорости, полученного от джойстика, — 790 об/мин — на ПЧ поступит значение первой скорости, равное 150 об/мин.
4.7. Дискретный джойстик
Чтобы сигналы от джойстика могли без специальных преобразований производить необходимые включения в электрической схеме, используются дискретные джойстики. Их можно разделить на два основных типа: одноступенчатые и многоступенчатые. В одноступенчатых джойстиках отклонение ручки приводит к замыканию одного контакта, соответствующего направлению отклонения. В многоступенчатых джойстиках по мере отклонения ручки от центрального положения последовательно замыкаются несколько контактов.
Обычно дискретные промышленные джойстики имеют контакт, замыкающийся при возврате ручки в центральное положение, еще два контакта, соответствующих направлениям отклонения ручки, и несколько контактов, отвечающих за угол наклона ручки джойстика независимо от направления. Рассмотрим пример табличной программы, обрабатывающей сигналы от четырехступенчатого джойстика.
Программа управления преобразователем частоты при помощи дискретного джойстика показана на рис. 64. Она состоит из трех блоков: обработки сигнала, формирования задания и учета ограничений. В блоке обработки сигналов от джойстика формируются дискретные команды пуска привода влево и вправо. Чтобы в случае поломки переключателей джойстика одновременно не появились сигналы пуска в разные стороны, введена операция «исключающее ИЛИ». При возникновении ситуации, когда входные переменные в строках 3 и 4 одновременно будут иметь значение «единица», активные ячейки в строке 5 заблокируют пуск в любую сторону.
Рис. 64. Программа управления частотным приводом с помощью дискретного джойстика
При формировании задания на ПЧ устанавливаются фиксированные значения скоростей для каждой ступени. Значение, соответствующее первой скорости, будет установлено при отклонении ручки джойстика в любую сторону сигналом «есть пуск». Значения, соответствующие остальным скоростям, будут выбираться по мере отклонения ручки джойстика от центрального положения.
В третьем блоке учета ограничений в зависимости от значения переменной с адресом 50 выбирается скорость, подаваемая на ПЧ. При возникновении ограничений вместо сформированного задания будет выбрана первая скорость. В программе на рис. 64 показан случай ограничения скорости ПЧ переменной с адресом 50.
4.8. Таблица на нескольких страницах
Если табличная программа становится слишком большой и состоит из программных блоков, слабо связанных между собой, то такую таблицу логично было бы разделить на несколько таблиц, каждая из которых может размещаться на отдельной странице. При многостраничной организации программы возможен параллельный пересчет таблиц на отдельных страницах. Так как пересчет таблицы выполняется циклически, то выходные данные от одной страницы по мере готовности могут участвовать в расчетах на другой странице. Для каждой страницы можно выделить некоторое количество внутренних переменных, которые не являются ни входными, ни выходными. По сути, это глобальные переменные, и они будут доступны из любого места программы. Поэтому для каждой страницы самостоятельно придется определять необходимое количество переменных и следить за их использованием только в пределах той страницы, для которой они выделены. Для таблиц на отдельных страницах можно организовать набор локальных переменных. Такие переменные будут предназначены для хранения данных на конкретной странице и не будут доступны с других страниц.
Чтобы не потерять прозрачность алгоритма программы, нужно ввести некоторые правила. Для предотвращения перезаписывания выходных переменных в разных местах введено ограничение: значение выходной переменной может быть записано только в одном месте. Программа проверки таблицы выдаст соответствующую ошибку при нахождении двух столбцов с одинаковыми адресами выходных переменных, независимо от того, находятся они на одной странице или на разных. Указатели на результаты операций в строках должны использоваться только в пределах одной страницы. Для передачи вычисленных значений с одной страницы на другую необходимо использовать глобальные переменные.
Так как мы рассматриваем табличные программы в плане управления оборудованием, то для того, чтобы уменьшить количество передаваемых между страницами данных, нужно на отдельной странице производить максимально полную обработку входных переменных от какого-либо механизма или процесса и передавать только окончательные результаты. Несмотря на то, что таблицы на страницах равнозначны и могут пересчитываться параллельно, стоит использовать главную страницу для сбора результатов и выдачи разрешений. Введение подобной иерархии упростит работу с программой в дальнейшем. При таком подходе любая неисправность или нештатное состояние