Функцилнирование подпрограмм

Типовые задачи  Предыдущий  Следующий

Общие сведения

Алгоблоки в подпрограмме выполняются последовательно, в порядке их расположения (исключение — условные и безусловные переходы).

Результат работы алгоблока размещается в логическом наименовании алгоблока.

При холодном рестарте Контроллера все значения логических наименований алгоблоков становятся неинициализированными (исключение — алгоблоки RESULT, их значения рассчитываются до старта программы).

Рассчитанное значение логического наименования алгоблока доступно только в текущей подпрограмме (если не указан префикс public).

Логическое состояние или значение выходного канала в логической программе Конт­роллера определяется результатом алгоблока RESULT с номером соот­ветст­вующего выходного канала*. Если у активного выходного канала не задан алгоблок RESULT (или упрощенная логика/формула срабатывания), то он будет находиться в неинициализированном состоянии. (Состояние/значение выходного канала можно также установить из циклической программы.)

Примечание: * —логические состояния дискретных выходных каналов также формируются при использовании алгоблоков ENGINE, VALVE1 и VALVE2.

Подача сигнала или значе­ния на номер соот­ветствующего физичес­кого выхода производится только после работы алго­бло­ков PHY_DSC и PHY_ANALOG с номерами соот­ветствующих выходных каналов. (В упрощенной логике можно также установить специальный признак «Выводить на физический выход».)

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

Сгенерированная подпрограмма

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

Преобразование типов

В подпрограмме при необходимости производится автомати­ческое преобразование типов:

из вещественного в логический;

из логического в вещественный;

из вещественного в целый.

Из вещественного в логический

В логический ноль преобразуется вещественное число R, значение кото­рого принадлежит интервалу (−0,1; 0,1). В логическую единицу преоб­­ра­зуется вещественное число R, значение которого принадлежит одному из двух лучей (−∞; −0,1] или [0,1; +∞).

Из логического в вещественный

В вещественное число 0 преобразуется логический ноль, а в ве­щест­венное число 1 — логическая единица.

Из вещественного в целый

В целое число N преобразуется вещественное число R методом округ­ле­ния. То есть, R преобразуется в N, если:

R[N − 0,5; N + 0,5), при R ≥ 0;

R(N + 0,5; N − 0,5], при R < 0.

Инверсия

Во входах алгоблоков
К логическим входам алгоблоков можно применять операцию инвер­сии (обозначается знаком «~»). Если на инверсный логический вход подается аналоговое значение, то оно сначала преобразовывается в логическое, а затем приме­няется опера­ция инверсии.

В выражениях

В выражениях также можно использовать операцию инвер­сии (обозначается знаком «!»). Если перед знаком инверсии стоит вещественное значение, то оно сначала преобразовывается в логическое, а затем приме­няется опера­ция инверсии.