# Функцилнирование подпрограмм | Типовые задачи Предыдущий Следующий

## Общие сведения Алгоблоки в подпрограмме выполняются последовательно, в порядке их расположения (исключение — условные и безусловные переходы). Результат работы алгоблока размещается в логическом наименовании алгоблока. При холодном рестарте Контроллера все значения логических наименований алгоблоков становятся неинициализированными (исключение — алгоблоки 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. ## Инверсия Во входах алгоблоков К логическим входам алгоблоков можно применять операцию инверсии (обозначается знаком «~»). Если на инверсный логический вход подается аналоговое значение, то оно сначала преобразовывается в логическое, а затем применяется операция инверсии. ### В выражениях В выражениях также можно использовать операцию инверсии (обозначается знаком «!»). Если перед знаком инверсии стоит вещественное значение, то оно сначала преобразовывается в логическое, а затем применяется операция инверсии.