Микропроцессорная техника систем автоматизации



бет27/77
Дата27.11.2023
өлшемі4,68 Mb.
#128711
1   ...   23   24   25   26   27   28   29   30   ...   77

Структура программы


В полную программу процесса входят операционная система и программа пользователя. Операционная система содержит общую часть всех инструкций и соглашений для реализации внутренних функций (например, сохранение данных при сбросе напряжения питания, управление реакцией пользователя при прерывании и т. д.). Она расположена в ПЗУ на так называемом EPROMe (Erasable Programmable Read Only Memory) и является фиксирован- ной составной частью процессора. Пользователь не имеет возмож- ности обращаться к операционной системе.
Программа пользователя содержит набор всех написанных пользователем инструкций и соглашений для обработки сигналов, с помощью которых производится управление установкой (процес- сом). В зависимости от размера и сложности программы пользова- теля можно выбрать для ее написания линейную или модульную структуру (рис. 39).
Линейная программа содержит все команды и выражения в од- ном программном блоке (организационный блок ОВ1 на рис. 39, а) и выполняет все команды последовательно друг за другом. Линей- ная структура организации программы пользователя подходит при простом алгоритме управления и короткой по размеру программе.


а б
Рис. 39. Схематическое представление линейной (а) и модульной (б)
структуры программы управления
При модульной структуре организации программы пользователя сложная задача автоматизации делится на небольшие подзадачи, соответствующие технологическим функциям процесса. Каждый кодовый блок содержит сегмент программы для соответствующей подзадачи. Если кодовый блок вызывается другим кодовым бло- ком, ЦПУ исполняет программный код в вызванном блоке. После того как вызванный блок обработан, ЦПУ возобновляет исполне- ние вызывающего блока (рис. 40).


Рис. 40. Последовательность исполнения программы при вызове функционального (вызываемого) блока из главного (вызывающего) кодового блока

Компоненты организации программ (англ. Program Organization Unit – POU) являются базовыми элементами, из которых строится код проекта. Каждый компонент программы имеет собственное наименование, определенный интерфейс и создается на одном из языков стандарта. Один компонент может вызвать другие компо- ненты. Вызов самого себя (рекурсия) в стандарте МЭК не разре- шен. Комбинировать различные языки в одном проекте можно при написании различных компонентов, но отдельный компонент це- ликом реализуется на одном языке МЭК. При вызове компонента язык его реализации значения не имеет.


К компонентам организации программ в стандарте относятся:
− функции;
− функциональные блоки;
− программы (или организационные блоки).
Все они во многом похожи, но имеют определенные особенно- сти и различное назначение.
Компонент обладает свойством инкапсуляции – работает как
«черный ящик», скрывая детали внутренней реализации. Для рабо- ты с компонентом достаточно знать его интерфейс, включающий описание входов и выходов. Внутреннее его устройство знать мож- но, но необязательно. Локальные (внутренние) переменные компо- нента извне недоступны.
Благодаря инкапсуляции компоненты успешно решают задачу структурной декомпозиции проекта. На верхнем уровне представ- ления мы работаем с крупными компонентами. Каждый из них вы- полняет значительную для данного проекта задачу. Лишние подробности на этом уровне только мешают пониманию проблемы. Раскрывая вложенные компоненты один за другим, мы можем доб- раться до самого детального представления.
Еще одной задачей, решаемой компонентами, является локали- зация имен переменных. Переменные делятся на глобальные и ло- кальные.
Глобальные переменные определяются на уровне проекта и дос- тупны для всех его программных компонентов. Так, переменные, связанные со входами или выходами (переменные, размещенные в областях I и Q), всегда являются глобальными. Область видимости локальных переменных определяется рамками одного компонента.
FC (от англ. function – функция) – это программный компонент, отображающий множество значений входных параметров на вы- ход. Функция всегда возвращает только одно значение. При объяв- лении функции указывается тип возвращаемого значения, имя функции и список входных параметров. Вызов функции произво- дится по имени с указанием значений входных параметров. Функ- ция может использоваться в математических выражениях, наряду с операторами и переменными. Функция не имеет внутренней па- мяти. Это означает, что функция с одними и теми же значениями входных параметров всегда возвращает одно и то же значение. Функция – это чистый код. Многократное использование функции не приводит к повторному включению кода функции при компо- новке. Реализация функции присутствует в коде проекта только один раз. Всякий раз при вызове функции процессор исполняет один и тот же поименованный код. Функция может иметь локаль- ные (временные) переменные, но при окончании своей работы она освобождает локальную память, которая может использоваться
в других функциях. Тип функций (тип возвращаемого значения) может быть любым из числа стандартных типов данных или типов, созданных пользователем. Тело функции может быть описано на языках IL, ST, LD или FBD. Использовать SFC нельзя. Из функции можно вызывать библиотечные функции и другие функции теку- щего проекта. Вызывать функциональные блоки и программы из функций нельзя.
FB (от англ. function block – функциональный блок) – программ- ный компонент, отображающий множество значений входных па- раметров на множество выходных. После выполнения экземпляра функционального блока все его переменные сохраняются до сле- дующего выполнения. Следовательно, функциональный блок, вы- зываемый с одними и теми же входными параметрами, может производить различные выходные значения. Сохраняются все пе- ременные, включая входные и выходные. Так, если мы вызовем экземпляр функционального блока, не определяя значения некото- рых входных параметров, он будет использовать ранее установлен- ные значения. Возможность задания переменного числа входных значений заложена по определению и не требует каких-либо до- полнительных усилий. Извне доступны только входы и выходы функционального блока, получить доступ к внутренним перемен- ным блока нельзя. С позиций объектно-ориентированного програм- мирования функциональные блоки – это объекты, реализующие инкапсуляцию, то есть сокрытие деталей реализации. Объединение кода и данных в единых рамках роднит функциональные блоки с классами объектно-ориентированных языков.
Прежде чем использовать функциональный блок, необходимо создать его экземпляр. Эта операция аналогична по смыслу объяв- лению переменной. Описав новый блок, мы фактически создали новый тип данных, подобный структуре. Каждый функциональный блок может иметь любое количество экземпляров. Так, различные экземпляры блока «таймер» совершенно независимы друг от друга. Каждый из них имеет собственные настройки и в программе «жи- вет» собственной жизнью. Каждый экземпляр функционального блока имеет свой собственный уникальный идентификатор и свою область в статической памяти данных. Объявление еще одного эк- земпляра блока приводит к выделению еще одной области в памяти данных. Но код, очевидно, как и для функции, остается для всех экземпляров общим. Экземпляр функционального блока создается
в разделе объявлений переменных функционального блока, про- граммы или в разделе глобальных переменных проекта.
OB (от англ. organization block – организационные блоки) – об- разуют интерфейс между операционной системой ЦПУ и програм- мой пользователя. OB используются для исполнения определенных разделов программы:
− при запуске ЦПУ;
− при циклическом или зависящем от времени исполнении про- граммы;
− при возникновении ошибок;
− при возникновении аппаратных прерываний.
Организационный блок циклического выполнения программы (OB1) исполняется операционной системой ЦПУ циклически, в каждом рабочем цикле в соответствии с рис. 2. Когда OB1 испол- нен, операционная система отправляет глобальные данные. Перед повторным запуском OB1 операционная система записывает таб- лицу выходов образа процесса в модули вывода, обновляет таблицу входов образа процесса и получает глобальные данные для ЦПУ.
Операционная система ПЛК осуществляет контроль максималь- ной длительности цикла сканирования, чем гарантируется макси- мальное время реакции. Для ПЛК серии Simatic S7-1200, значение максимальной длительности цикла сканирования установлено по умолчанию на 150 мс. Если время выполнения программы превы- шает максимальное время цикла OB1, то операционная система вызывает OB 80 (OB обработки ошибок времени); если OB 80 не запрограммирован, то ЦПУ переходит в состояние STOP. Кроме контроля максимального времени цикла может быть гарантировано также минимальное время цикла сканирования. Операционная сис- тема задержит следующий запуск нового цикла (запись таблицы выходов образа процесса в модули вывода), пока не будет обеспе- чено минимальное время сканирования.
ПЛК серии SIMATIC S7 предоставляют также в распоряжение пользователя до девяти OB циклических прерываний (OB30– OB38), которые прерывают основную программу в блоке ОВ1 че- рез строго фиксированные интервалы времени. Табл. 8 показывает установленные по умолчанию интервалы времени для OB цикличе- ских прерываний.


Достарыңызбен бөлісу:
1   ...   23   24   25   26   27   28   29   30   ...   77




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет