06_InstructionSet_r (1087186), страница 29
Текст из файла (страница 29)
Тип постоянного параметра должен быть указан для параметрав вызывающей программе с помощью описателя константы перед значением константы.Например, чтобы передать в качестве параметра константу, имеющую размер двойногослова без знака, со значением 12 345, постоянный параметр должен быть задан какDW#12345. Если описатель константы для параметра опущен, то константа может бытьвоспринята как имеющая другой тип.Автоматическое преобразование типов для входных и выходных параметров непроизводится. Например, если таблица локальных переменных указывает, что параметримеет тип данных REAL, а вызывающая программа задает для этого параметра двойноеслово (DWORD), то это значение в подпрограмме будет рассматриваться как двойноеслово.Когда значения передаются в подпрограмму, они помещаются в локальную памятьподпрограммы.
Самый левый столбец таблицы локальных переменных показывает адрес влокальной памяти для каждого передаваемого параметра. Значения входных параметровкопируются в локальную память подпрограммы, когда подпрограмма вызывается. Значениявыходных параметров копируются из локальной памяти подпрограммы в указанные адресавыходных параметров, когда исполнение подпрограммы завершается.Размер и тип элемента данных представляются в коде параметра. Значения параметровставятся в соответствие локальной памяти в подпрограмме следующим образом:-Значения параметров ставятся в соответствие локальной памяти в порядке,задаваемом командой вызова подпрограммы с параметрами, начиная с L.0.-От одного до восьми последовательных битовых значений параметров ставятся всоответствие отдельному байту, начиная с Lx.0 и вплоть до Lx.7.-Значения, имеющие тип байт, слово или двойное слово ставятся в соответствиелокальной памяти на границах байтов (LBx, LWx или LDx).В команде вызова подпрограммы с параметрами параметры должны быть расположены вследующем порядке: сначала входные параметры, за ними параметры типа IN_OUT, азатем выходные параметры.выходные параметры.Если вы программируете на STL, то формат команды CALL имеет вид:CALL208номер подпрограммы, параметр 1, параметр 2, ...
, параметр nНабор команд S7–200Глава 6Пример: Команды вызова подпрограммы и возврата из подпрограммыMAINSBR0Network 1LDCALLNetwork 1LDCRETNetwork 2LDMOVB//В первом цикле вызвать подпрограмму 0 для//инициализации.SM0.1SBR_0//Вы можете использовать условный возврат// для выхода из подпрограммы перед//последним сегментом.M14.3//Этот сегмент будет пропущен, если M14.3//установлен.SM0.010, VB0Пример: Вызов подпрограммы со строкамиВ этом примере различный строковый литерал копируется по определенному адресу в зависимостиот входа. Уникальный адрес этой строки сохраняется. Затем адрес строки передается вподпрограмму с помощью косвенного адреса.
Типом данных входного параметра подпрограммыявляется строка. Затем подпрограмма смещает строку на другой адрес.Строковый литерал также может быть передан в подпрограмму. Ссылка на строку в подпрограммевсегда одна и та же.MAINNetwork 1//LDI0.0SSCPY «string1», VB100AENOMOVD&VB100, VD0Network2 //LDI0.1SSCPY «string2», VB200AENOMOVD&VB200, VD0Network3 //LDI0.2CALLSBR_0, *VD0SBR0Network 1//LDSM0.0SSCPY *LD0, VB300209210.