Шрифт:
Интервал:
Закладка:
Полученное при помощи операций над входными переменными аналоговое значение может быть присвоено выходной аналоговой переменной. Какие из аналоговых переменных будут входными, какие выходными, а какие внутренними — зависит от используемого контроллера. Чтобы вычисленное значение было присвоено выходной переменной, необходимо на пересечении строки с аналоговым значением и столбца с интересующей нас выходной переменной вставить аналоговую активную ячейку. Такую ячейку мы будем обозначать символом «А». Пример использования аналоговых переменных в табличной программе — на рис. 33.
Рис. 33. Пример операции с аналоговыми переменными
Использование аналоговых переменных в таблице подчиняется определенному правилу. Для аналоговых входных и выходных переменных используется только операция присвоения «=». Операция «NOT», инвертирующая битовые входные и выходные значения, для аналоговых операций не применяется. При необходимости для того, чтобы получить отрицательное значение переменной, можно воспользоваться умножением на отрицательное число. Если в столбце под аналоговой переменной находятся несколько ячеек с символом «А» или активные ячейки битовых операций, то при проверке таблицы или ее пересчете должна быть выдана соответствующая ошибка. Таким образом, в столбце аналоговой выходной переменной может быть только одна аналоговая активная ячейка, при помощи которой результат по строке присваивается выходной переменной. Также в строке с аналоговым результатом не используется таймер. Для улучшения читаемости таблицы ячейки с символом «А» и значения выходных переменных выделяются бежевым цветом, а в ячейках битовых операций «Логич. И» и «RS» ничего не пишется. Различные уставки и граничные значения для аналоговых сигналов присваиваются внутренним аналоговым переменным, для которых не назначены аналоговые входы контроллера. При загрузке таблицы таким внутренним переменным присваивается число, которое записано в поле «Начальное значение» текстового файла таблицы. При необходимости внутреннюю переменную можно изменить, присвоив ей новое значение. Для этого при помощи входных операций определяется новое значение и присваивается внутренней переменной с помощью активной аналоговой ячейки.
3.3. Аналоговые входы для датчиков температуры
Некоторые задачи управления, решаемые с помощью контроллеров, требуют измерения температуры. Для этого в контроллерах предусматриваются входы подключения датчиков температуры. В табличной программе таким входам соответствуют аналоговые переменные с назначенными для этого адресами. Программа пересчета таблицы считывает значение с аналого-цифрового преобразователя, подключенного к датчику, и преобразует его в температуру. В ячейке состояния входной переменной будет стоять привычное значение температуры, а не целочисленное значение, полученное от аналого-цифрового преобразователя.
При проектировании систем управления с использованием табличных контроллеров не стоит нагружать табличную программу объемными математическими вычислениями. И это не из-за того, что контроллер не справится или табличные программы непригодны для вычислений. Большое количество вычислений может сделать таблицу громоздкой и затруднит обслуживание устройства во время эксплуатации. Низкая цена и высокая производительность современных контроллеров позволяют обрабатывать входные сигналы от датчиков в реальном времени и передавать готовые данные на головной контроллер с помощью скоростных последовательных интерфейсов. Разделение задач управления и первичной обработки данных повышает надежность системы, упрощает алгоритм управляющей программы, улучшает восприятие графической информации о состоянии системы. На вспомогательные контроллеры обработки сигналов возлагается только преобразование физических величин в привычные числовые значения. Задача по принятию решений в зависимости от получаемых данных остается за программой головного контроллера. Если по каким-то причинам необходимо принимать решение во вспомогательном контроллере, то вместе с обработанным значением сигнала в основную программу должна быть передана информация о принятом вспомогательным контроллером решении.
3.4. Сохранение переменных в энергонезависимой памяти
Нередко при работе программы возникает необходимость сохранять в энергонезависимой памяти переменные, отвечающие за текущее состояние системы. Для этого в контроллерах предусматриваются блоки энергонезависимой памяти, сохраняющей записанные в нее данные после отключения питания. Для табличной программы это обычные внутренние переменные, значение которых изменяется только с помощью активных ячеек. Обращение к сохраняемым переменным не отличается от обращения к обычным переменным. Достаточно определить адреса для битовых и аналоговых переменных, значения которых нужно сохранять, чтобы системная программа записывала их в специальный раздел памяти.
Программа пересчета таблицы после подачи на контроллер питания не присваивает сохраняемой переменной начальное значение из файла таблицы. В момент загрузки такие переменные получают значения, сохраненные в энергонезависимой памяти. Чтобы присвоить начальные значения переменным, сохраняемым в энергонезависимой памяти, в программе следует предусмотреть для них режим инициализации. Для этого каждой такой переменной добавляется обычная внутренняя переменная, которая при загрузке получит начальное значение и будет оставаться неизменной во время выполнения программы. При необходимости инициализировать переменную, сохраняемую в энергонезависимой памяти, можно в любой момент присвоить ей значение добавленной переменной. Пример реализации такого алгоритма показан на рис. 34. В режиме инициализации сохраняемая переменная получит начальное значение от соответствующей внутренней переменной.
Рис. 34. Пример организации сохранения в энергонезависимой памяти значений аналоговой и битовой переменных
Можно заметить, что при отпускании кнопки, устанавливающей начальные значения, сохраняемая переменная с адресом 31 получит значение переменной с адресом 21. То есть начальное значение переменная с адресом 31 будет иметь, только пока нажата кнопка. На рис. 34. представлено состояние табличной программы, когда кнопка, устанавливающая начальные значения, не нажата.
Если переменная с адресом 21 отображает состояние одного из аналоговых входов, то присвоение ей начального значения не имеет особого смысла. Но если это вычисляемая переменная и в ее расчетах участвует переменная с адресом 31, то за время, пока кнопка нажата, программа пересчета таблицы сделает большое количество циклов и обновит значение переменной с адресом 21. После отпускания кнопки обновленное значение запишется в сохраняемую переменную. Для битовой переменной с адресом 15, сохраняемой в энергонезависимой памяти, начальное значение равно нолю и в программе соответствует вращению против часовой стрелки.
В примере на рис. 35 начальное значение битовой переменной с адресом 15 устанавливается триггерной активной ячейкой в строке 9. Предполагаемое начальное значение этой переменной равно нолю, поэтому выбрана триггерная ячейка «R», которая сбросит в ноль сохраняемую битовую переменную при нажатии на кнопку, устанавливающую начальные значения.