ISaGRAF. Version 3.4


Функции и подпрограммы


Исполнение подпрограмм или функций управляется их родительской программой. Исполнение родительской программы подвешивается до тех пор пока не закончит свою работу подпрограмма:

Любая программа любой секции может иметь одну или несколько подпрограмм. У каждой подпрограммы может быть только одна родительская программа. Подпрограмма может иметь локальные переменные и макроопределения. Для описания подпрограмм может быть использован любой язык, за исключением SFC. Программы секции Функции - это подпрограммы, которые могут быть вызваны любой другой программой в проекте. В отличии от других подпрограмм они не принадлежат никакой родительской программе. Программы секции Функции могут вызывать другие программы этой же секции. Функции могут быть размещены в библиотеке.

Предупреждение: Система ISaGRAF не поддерживает рекурсивных вызовов функций. Если программа секции Функции будет вызывать сама себя или будет вызываться одной из вызванных ею подпрограмм, то возникнет ошибка.

Предупреждение: Функция или подпрограмма не “запоминают” локальных значений своих локальных переменных. Функции и подпрограммы не могут вызывать функциональные блоки.

Интерфейс подпрограммы должен быть определен явно, с типами и уникальными именами каждого вызываемого и возвращаемого параметра. Для того чтобы поддержать стандарт языка ST, возвращаемый параметр должен иметь то же имя, что и подпрограмма.

Следующая таблица показывает, как установить значение возвращаемого параметра в теле подпрограммы, в различных языках:

ST:                          присвоить значение возвращаемому параметру, используя его имя

                               (то же имя что и у подпрограммы):

                               subprog_name := <expression>;

IL:                           значение текущего результата (IL регистр)

                               в конце последовательности запоминается в возвращаемом параметре:

                            LD      10

                            ADD   20   (*значение возвращаемого параметра = 30*)

FBD:                        установить возвращаемый параметр, используя имя:

                        

subprog_name

LD:                          использовать символ витка с именем возвращаемого параметра:

                                                               subprog_name

                        

      




Начало  Назад  Вперед