Вызовы программных компонентов в ST
К программным компонентам в среде разработки Unimod PRO 2 относятся программы, дочерние программы, функциональные блоки и функции. Программы последовательно вызываются в процессе исполнения технологического приложения и не могут вызывать друг друга.
Вызов дочерней программы.
Дочерняя программа может быть вызвана только из своей родительской программы. Входные параметры могут быть переданы в дочернюю программу только при ее вызове, для этого они перечисляются через запятую в круглых скобках. После выполнения дочерняя программа обязательно должна вернуть результат в виде одного выходного значения. Для этого используется выходная переменная, которая по умолчанию включается в локальный словарь дочерней программы после ее добавления в проект.
//формат вызова дочерней программы
<результат> := <имя_дочерней_программы>(<параметр1>, ... , <параметрN>);
//вызов дочерней программы без параметров
out := child_program();
//вызов дочерней программы с двумя входными параметрами
out := child_program(in1, in2);
//вызов дочерней программы внутри выражения
out := 15 + child_program(in1, in2, in3);
//ошибка вызова дочерней программы! Возвращаемый результат должен присваиваться переменной или использоваться в качестве операнда в выражении
child_profram(in1);
|
Вызов функционального блока.
Функциональные блоки являются программными компонентами в составе структур и могут быть вызваны из программ, дочерних программ и из функциональных блоков других структур. Функциональные блоки одной структуры не могут вызывать друг друга. Вызов функционального блока в функциях недоступен.
Для вызова функционального блока предварительно требуется добавить в соответствующий словарь переменную с типом структуры, функциональные блоки которой нам необходимо вызвать. Только после этого в редакторе ST можно обратиться к функциональному блоку. При этом блоки могут возвращать несколько выходных значений по нескольким входным значениям, а чтение выходных параметров доступно в отдельном выражении.
//первый вариант с передачей входных параметров до вызова блока
struct.input1 := in1;
struct.input2 := in2;
struct.function_block_1();
//второй вариант с передачей параметров при вызове блока
struct.function_block_2(in1, in2);
//доступ к выходным параметрам
out_1:= struct.out_1;
out_2:= struct.out_2;
//ошибка! Блок не возвращает значение при вызове!
out := struct.function_block(in1);
|
Вызов функции.
Функции являются программными компонентами и в вычислениях могут использовать только простые типы данных. Функции могут быть напрямую вызваны в любом программном компоненте, в том числе в других функциях. При необходимости входные параметры передаются в функцию в процессе ее вызова, для этого они перечисляются через запятую в круглых скобках. После выполнения функция всегда возвращает одно выходное значение. Для этого используется выходная переменная, которая по умолчанию включается в локальный словарь функции после ее добавления в проект.
//формат вызова функции
<результат> := <имя_функции>(<параметр1>, ... , <параметрN>);
//вызов функции без параметров
out := function();
//вызов функции с двумя параметрами
out := function(in1, in2);
//вызов функции внутри выражения
out := 15 + function(in1, in2, in3);
//ошибка вызова функции! Возвращаемый результат должен присваиваться переменной или использоваться в качестве операнда в выражении
function(in1);
|
