Пример передвижения по списку.

Задача. Если значение счетчика 1, то в выходное слово прибавить 5; если - 2 , отнять 5; если - 3, умножить на 5; если - 4, то разделить на 5.

Решение:

 

 

L C1//значение счетчика

JL max

JU _0

JU _1

JU _2

JU _3

JU _4

max: nop 0

JU end

_1: L QW0

L 5

+I

T QW0

JU end

_2: L QW0

L 5

-I

T QW0

JU end

_3: L QW0

L 5

*I

T QW0

JU end

_4: L QW0

L5

/I

T QW0

JU end

_ 0: nop 0

end : nop 0

 

 

Лекция 12. Функции и функциональные блока. Специальные приемы программирования

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

Отличие функции в том, что параметры функции сохраняются только во время ее выполнения и теряются после завершения её в цикле.

Обмен данными между основной программой и функцией осуществляется через интерфейс обмен функции. Для любого блока программыStep7 может быть назначен разный статус переменной интерфейса: вход (INPUT), выход (OUTPUT), временные переменные (TEMP), статические переменные (STAT).

Присвоив переменной статус временной в таблице переменных блока, мы можем использовать её внутри функции и можем вне ее. Статические переменные сохраняются внутри блока и доступны извне, только, если она записана в маркерном пространстве или в блоке данных. Специальное пространство внутри блока - это локальные данные с обозначением адреса с буквы L. Помимо хранения переменных используется так же стек. L stek в ОВ 1 для 300- тых контролеров имеет размер 256 байтов. Это значит, что доступными остаются 256 вложений функции .

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

Функциональные блоки отличаются от функции тем, что имеют возможность хранить свои данные в экземпляре блока данных. Этот блок данных является памятью функционального блока. Блок данных можно создать автоматически при вызове функционального блока или создать его независимо. Вызов параметрируемых подпрограмм осуществляется по команде, CALL имя функции.

Вызов функции осуществляется следующими командами:

1. Вызов функции без параметров

CALL FC1

2. Безусловный вызов функции без параметров

UC FC1

3. Вызов функции по условию , чтоRLO= 1

СС FC1

4. Вызов функции с параметрами