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

## Общие сведения Пользовательская программа в общем случае состоит из одной или нескольких строк. В проекте конфигурации не допускается наличие «пустых» пользовательских подпрограмм. ## Формат строки подпрограммы Общий вид строки подпрограммы выглядит следующим образом: [[public] ЛогИмя = ] НазвАлгоблока([~]Вх1[; [~]Вх2; …; [~]ВхN]) Вся строка или ее окончание может содержать комментарии (см. одноименный подраздел). ### Логическое наименование ЛогИмя — задаваемое пользователем логическое наименование (идентификатор) конкретного экземпляра стандартного алгоблока, которое после выполнения будет содержать рассчитанное значение/состояние. Его можно использовать во входах других алгоблоков. Если результат работы алгоблока в дальнейшем не используется, то наименование можно не указывать. В наименовании допустимо использовать латинские буквы, цифры и знак подчеркивания. Недопустимо повторение наименования в одной подпрограмме, а также полное совпадение с названием стандартного алгоблока. Логическое наименование алгоблока также должно начинаться с буквы.
Внимание: Заданные пользователем логические наименования алгоблоков хранятся только в файле проекта конфигурации и не загружаются в Контроллер. При извлечении подпрограмм из Контроллера логические наименования алгоблоков будут в виде: block1, block2, block3, ...
Логические наименования являются регистронезависимыми, то есть b10 и B10 — это одинаковые наименования. Допустимо дублировать логические наименования в разных подпрограммах (только если перед ними не стоит префикс public — см. ниже). ### Префикс public public — префикс, показывающий, что алгоблок будет доступен не только в текущей подпрограмме, но и во всех других подпрограммах (недопустимо повторение наименования ЛогИмя после префикса public в любой из подпрограмм). ### Наименование стандартного алгоблока НазвАлгоблока — наименование стандартного алгоблока (полный перечень доступных стандартных алгоблоков с их описанием приведен в Приложении А). ### Аргументы Вх1, Вх2, …, ВхN — входы конкретного экземпляра стандартного алгоблока. В общем случае на входы алгоблоков можно подавать следующее: •значения аналоговых каналов (например, AI1.1, AI3.8, AO1.1, AO2.5 или их пользовательские идентификаторы, указанные при конфигурировании соответствующих каналов); •состояния дискретных каналов (например, DI1.1, DI5.2, DO2.2, DO3.10 или их идентификаторы, указанные при конфигурировании соответствующих каналов); •числовые константы (например, 0; 1; 45,2; 1e-5; 1e4); обеспечивается точность при значениях от ±1х10-5 до ±1х105; •проценты открытия клапанов контуров регулирования (например, REG1, REG12, REG100 или их идентификаторы, указанные при конфигурировании); •аналоговые и логические значения выходов других алгоблоков (например, B1, BLOCK5); •выражения, заключенные в квадратные скобки (описание выражений см. в одноименном подразделе). ### Признак инверсии ~ — признак инверсии входа алгоблока. ## Дополнительные возможности В пользовательской подпрограмме можно дополнительно использовать: •до 200 ячеек памяти для хранения логических значений, например, состояний физических выходных каналов при сбоях питания (см. описание алгоблока MEMORY) и пр.; •до 215 пользовательских таблиц (в каждой таблице до 256 ячеек) для хранения аналоговых значений, например, для изменения значения уставок и пр. (таблицы кодируются специальными словами TBL1, TBL2, ..., TBL215 или их идентификаторами, указанными при конфигурировании соответствующих таблиц) — подробное описание см. в специальном подразделе; •до 100 контуров регулирования (контура кодируются специальными словами REG1, REG2, ..., REG100 или их идентификаторами, указанными при конфигурировании соответствующих контуров регулирования) — подробное описание см. в специальном разделе; •до 31 аргумента в вызываемой подпрограмме (аргументы кодируются специальными словами ARG1, ARG2, ..., ARG31). ## Группы алгоблоков Стандартные алгоблоки Контроллера можно разбить на следующие группы: •математические алгоблоки; •функциональные алгоблоки; •логические алгоблоки; •сложные логические алгоблоки; •алгоблоки для работы с таблицами; •алгоблоки для работы с таймерами, счетчиками и временем; •алгоблоки условных/безусловных переходов и вызовов подпрограмм; •алгоблоки для определения состояния системы; •алгоблоки для работы при резервировании; •алгоблоки для работы с контурами регулирования; •алгоблоки для вывода результатов. Детальное описание всех стандартных алгоблоков приведено в Приложении А. ## См. Также •Индекс стандартных алгоблоков (английский); •Индекс стандартных алгоблоков (русский).