06_InstructionSet_r (1087186), страница 28
Текст из файла (страница 28)
Максимальный интервал времени длямиллисекундного значения типа DWORD составляет 2 в32-ой степени или 49,7 дня.Расчет времени интервалаКоманда расчета времени интервала (CITIM)рассчитывает разность между текущим временем ивременем, поступающие в IN. Эта разность сохраняетсяв OUT. Максимальный интервал времени длямиллисекундного значения типа DWORD составляет 2 в32-ой степени или 49,7 дня. CITIM автоматическиобрабатывает переполнение 1-миллисекундноготаймера, которое возникает внутри максимальногоинтервала, в зависимости от того, когда была исполненакоманда BITIM.Таблица 6–77. Допустимые операнды для интервальных таймеровВходы/выходыТипы данныхОперандыINDWORDVD, ID, QD, MD, SMD, SD, LD, HC, AC, *VD, *LD, *ACOUTDWORDVD, ID, QD, MD, SMD, SD, LD, AC, *VD, *LD, *ACПример: Команды SIMATIC для начала отсчета времени интервала и расчета времениинтервалаNetwork 1//Зафиксировать время включения A0.0.LDA0.0EUBITIM VD0Network 2// Рассчитать время, в течение которого был//включен A0.0.LDA0.0CITIM VD0, VD4205Программируемый контроллер S7-200.
Системное руководствоОперации с подпрограммамиКоманда вызова подпрограммы (CALL) передаетуправление подпрограмме SBR_N. Команду вызоваподпрограммы можно использовать с параметрами илибез них. Как только исполнение подпрограммызавершается, управление возвращается команде,следующей за вызовом подпрограммы.Команда условного возврата из подпрограммы (CRET)завершает подпрограмму в зависимости от результатапредшествующей логической операции.Для добавления подпрограммы выберите команду менюEdit → Insert → Subroutine [Редактировать →Вставить → Подпрограмма].Сбойные состояния, устанавливающие ENO = 0■ 0008 (превышена максимальная вложенность дляподпрограмм)■ 0006 (косвенный адрес)В главной программе вы можете вкладыватьподпрограммы друг в друга (помещать вызовподпрограммы внутри другой подпрограммы) на глубинудо восьми уровней.
В программе обработки прерываниявложение подпрограмм друг в друга невозможно.Вызов подпрограммы не может быть помещен ни в какую другую подпрограмму,вызываемую из программы обработки прерывания. Рекурсия (вызов подпрограммы,вызывающей саму себя) не запрещена, но с подпрограммами ее следует использовать состорожностью.Таблица 6–78. Допустимые операнды для команды вызова подпрограммыВходы/выходыSBR_NТипы данныхWORDINBOOLBYTEWORD, INTDWORD, DINTIN/OUTOUT12STRINGBOOLBYTEWORD, INTDWORD, DINTBOOLBYTEWORD, INTDWORD, DINTОперандыконстанта для CPU 221, CPU 222, CPU 224:от 0 до 63для CPU 224XP и CPU 226от 0 до 127V, I, Q, M, SM, S, T, C, L, поток сигнала1VB, IB, QB, MB, SMB, SB, LB, AC, *VD, *LD, *AC , константа1VW, T, C, IW, QW, MW, SMW, SW, LW, AC, AIW, *VD, *LD, *AC ,константа1VD, ID, QD, MD, SMD, SD, LD, AC, HC, *VD, *LD, *AC ,&VB, &IB, &QB, &MB, &T, &C, &SB, &AI, &AQ, &SMB, константа*VD, *LD, *AC, константа2V, I, Q, M, SM , S, T, C, L21VB, IB, QB, MB, SMB , SB, LB, AC, *VD, *LD, *AC21VW, T, C, IW, QW, MW, SMW , SW, LW, AC, *VD, *LD, *AC21VD, ID, QD, MD, SMD , SD, LD, AC, *VD, *LD, *AC2V, I, Q, M, SM , S, T, C, L21VB, IB, QB, MB, SMB , SB, LB, AC, *VD, *LD, *AC21VW, T, C, IW, QW, MW, SMW , SW, LW, AC, AQW, *VD, *LD, *AC21VD, ID, QD, MD, SMD , SD, LD, AC, *VD, *LD, *ACСмещение должно быть не меньше 1Смещение должно быть не меньше 30СоветSTEP 7-Micro/WIN автоматически добавляет команду безусловного возврата из каждойподпрограммы.Когда вызывается подпрограмма, весь логический стек сохраняется, вершина стекаустанавливается в единицу, все остальные ячейки стека устанавливаются в ноль иуправление передается вызываемой подпрограмме.
Когда эта подпрограмма завершается,стек восстанавливается со значениями, сохраненными в точке вызова, а управлениевозвращается в вызывающую программу.206Набор команд S7–200Глава 6Аккумуляторы являются общими для подпрограмм и вызывающей программы. Прииспользовании подпрограммы операции сохранения и восстановления к аккумуляторам неприменяются.Если подпрограмма вызывается в одном и том же цикле несколько раз, то нельзяприменять команды «Нарастающий фронт», « Падающий фронт», а также таймеры исчетчики.Вызов подпрограммы с параметрамиПодпрограмма может содержать передаваемые параметры. Параметры определяются втаблице локальных переменных подпрограммы. Параметру должно быть назначеносимволическое имя (не более 23 символов), тип переменной и тип данных.
В подпрограммуи из нее может быть передано шестнадцать параметров.Поле типа переменной в таблице локальных переменных определяет, передается липеременная в подпрограмму (IN), в подпрограмму и из нее (IN_OUT), или она передаетсяиз подпрограммы (OUT). Типы параметров для подпрограммы описаны в таблице 6–79.Для добавления параметра поместите курсор на поле того типа параметров (IN, IN_OUTили OUT), который вы хотите добавить. Щелкните правой кнопкой мыши, чтобы вызватьменю для выбора. Выберите пункт Insert [Вставить], а затем пункт Row Below [Строкаснизу].
Под текущей записью появится место для записи еще одного параметравыбранного типа.Таблица 6–79. Типы параметров для подпрограммыПараметрОписаниеINПараметры передаются в подпрограмму. Если параметр является прямым адресом(например, VB10), то в подпрограмму передается значение, находящееся поуказанному адресу.
Если параметр является косвенным адресом (например, *AC1), тов подпрограмму передается значение, находящееся по адресу, на который сделанассылка. Если параметр является константой (16#1234) или адресом (&VB100), то вподпрограмму передается значение константы или адреса.IN_OUTЗначение, находящееся по указанному адресу параметра, передается вподпрограмму, а результирующее значение возвращается по тому же самому адресу.Константы (например, 16#1234) и адреса (например, &VB100) не могут бытьпараметрами типа IN_OUT.OUTРезультирующее значение из подпрограммы возвращается по указанному адресупараметра.
Константы (например, 16#1234) и адреса (например, &VB100) не могутбыть параметрами типа OUT. Так как выходные параметры не сохраняют значения,присвоенного последним исполнением подпрограммы, то вы должны присваиватьзначения выходам при каждом вызове подпрограммы. Обратите внимание, чтокоманды SET и RESET влияют на значения булевых операндов только в том случае,если поток сигнала включен ON.TEMPЛокальная память, не используемая для передаваемых параметров, можетиспользоваться для временного хранения данных внутри подпрограммы.Как показано на рис. 6–38, поле типа данных в таблице локальных переменных определяетразмер и формат параметра.
Ниже перечислены типы параметров:--BOOL: Этот тип данныхиспользуется для отдельныхбитовых входов и выходов. IN3 вследующем примере являетсябулевым входом.BYTE, WORD, DWORD: Эти типыданных определяют входной иливыходной параметр без знакаразмером 1, 2 или 4 байтасоответственно.Рис. 6–38. Таблица локальных переменных-INT, DINT: Эти типы данных определяют входной или выходной параметр без знакаразмером 1, 2 или 4 байта соответственно.REAL: Этот тип данных определяет число с плавающей точкой IEEE однократнойточности (4 байта).STRING: Этот тип данных используется в качестве четырехбайтового указателя настроку.Power Flow [Поток сигнала]: Булев поток сигнала разрешен только для битовых(булевых) входов. Это описание сообщает STEP 7–Micro/WIN 32, что этот входнойпараметр является результатом достижения подпрограммы потоком сигнала,основанным на комбинации битовых логических операций.
Входы с булевым потокомсигнала должны находиться в таблице локальных переменных перед любым другимтипом входов. Таким способом можно использовать только входные параметры.Разрешающий вход (EN) и вход IN1 в следующем примере используют булеву логику.207Программируемый контроллер S7-200. Системное руководствоПример: Вызов подпрограммыНиже приведены два примера на STL. Первый набор команд STL может быть отображен только вредакторе STL, так как булевы параметры, используемые в качестве входов типа "Поток сигнала", несохраняются в локальной памяти.Второй набор команд STL может быть отображен также и в редакторах LAD и FBD, так как длясохранения состояний булевых входных параметров, которые в LAD и FBD показаны как входы,принимающие поток сигнала, используется локальная память.Только STL:Network 1LDI0.0CALLSBR_0, I0.1, VB10, I1.0, &VB100, *AC1, VD200Для правильного отображения в LAD и FBD:Network 1LDI0.0=L60.0LDI0.1=L63.7LDL60.0CALLSBR_0, L63.7, VB10, I1.0, &VB100, *AC1,VD200Адресные параметры, например, IN4 (&VB100) передаются в подпрограмму как DWORD(двойное слово без знака).