06_InstructionSet_r (1087186), страница 25
Текст из файла (страница 25)
Допустимые операнды для команды перестановки байтов в словеВходы/выходыТипы данныхОперандыINWORDIW, QW, VW, MW, SMW, SW, T, C, LW,AC, *VD, *LD, *ACПример: Команда перестановки байтовNetwork 1LDI2.1SWAPVW50Перестановка байтов в словеVW50D6 C3VW50C3 D6185Программируемый контроллер S7-200. Системное руководствоСтроковые команды Marker 38Длина строкиКоманда определения длины строки (SLEN) возвращаетдлину строки, указанной в IN.Копирование строкиКоманда копирования строки (SCPY) копирует строку,указанную в IN, в строку, указанную в OUT.Соединение строкКоманда соединения строк (SCAT) присоединяет строку,указанную в IN, к концу строки, указанной в OUT.Биты специальной памяти и ENOДля команд определения длины строки, копированиястроки и соединения строк следующие условия влияютна ENO.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)■ 0091 (ошибка диапазона)Таблица 6–64. Допустимые операнды для команды определения длины строкиВходы/выходыТипы данныхОперандыINSTRINGVB, LB, *VD, *LD, *AC, строковая константаOUTBYTEIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *ACТаблица 6–65.
Допустимые операнды для команд копирования строки и соединения строк186Входы/выходыТипы данныхОперандыINSTRINGVB, LB, *VD, *LD, *AC , строковая константаOUTSTRINGVB, LB, *VD, *AC, *LDНабор команд S7–200Глава 6Пример: Команды соединения строк, копирования строки и определения длины строкиNetwork 1LDSCATSTRCPYSTRLEN//1.////2.//////3.//Присоединить строку «WORLD»к строке в VB0Скопировать строку, находящуюсяв VB0, в новую строку,находящуюся в VB100Получить длину строки,начинающейся по адресу VB100I0.0«WORLD», VB0VB0, VB100VB100, AC0Перед выполнением программыVB0'L''L''E''H'6'O'VB6''После выполнения программыVB0'L''E''H'11'L''O''''W''O''R''L''D''L''O''''W''O''R''L'VB111'D'VB100'H'11'E''L'VB11AC011187Программируемый контроллер S7-200.
Системное руководствоКопирование подстроки из строкиКоманда копирования подстроки из строки (SSCPY)копирует указанное количество символов N из строки,указанной в IN, начиная с индекса INDX, в новую строку,указанную OUT.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)■ 0091 (ошибка диапазона)■ 009B (индекс=0)Таблица 6–66. Допустимые операнды для команды копирования подстроки из строкиВходы/выходыТипы данныхОперандыINSTRINGVB, LB, *VD, *LD, *AC, строковая константаOUTSTRINGVB, LB, *VD, *LD, *ACINDX, NBYTEIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, константаПример: Команда копирования подстрокиNetwork 1VB20LDSSCPYПеред выполнением программыVB011'H''E''L''L'После выполнения программыVB205'W''O''R'188'L''O'VB25'D''''W'//Начиная с седьмого символа в строке,//находящейся по адресу VB0, скопировать//5 символов в новую строку по адресуI0.0VB0, 7, 5, VB20'O''R''L'VB11'D'Набор команд S7–200Глава 6Поиск строки в строкеКоманда поиска строки в строке (SFND) ищет первоепоявление строки IN2 в строке IN1.
Поиск начинается спозиции, указанной в OUT. Если найденапоследовательность символов, точно совпадающая сострокой IN2, то позиция первого символа в этойпоследовательности записывается в OUT. Если строкаIN2 не найдена в строке IN1, то OUT устанавливается в0.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)■ 0091 (ошибка диапазона)■ 009B (индекс=0)Поиск первого появления символа встрокеКоманда поиска первого появления символа в строке(CFND) ищет в строке IN1 первое появление любогосимвола из набора символов, описываемого в строкеIN2. Поиск начинается с позиции, указанной в OUT.
Еслисовпадающий символ найден, то его положениезаписывается в OUT. Если совпадающего символа ненайдено, то OUT устанавливается в 0.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)■ 0091 (ошибка диапазона)■ 009B (индекс=0)Таблица 6–67. Допустимые операнды для команд поиска строки в строке и первого символа в строкеВходы/выходыТипы данныхОперандыIN1, IN2STRINGVB, LB, *VD, *LD, *AC, строковая константаOUTBYTEIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC189Программируемый контроллер S7-200. Системное руководствоПример: Команда поиска строки в строкеВ следующем примере строка, хранящаяся по адресу VB0, используется как команда для включенияили выключения насоса.
Строка ’On [Включить]’ хранится по адресу VB20, а строка ’Off [Выключить]’хранится по адресу VB30. Результат команды поиска строки в строке сохраняется в AC0 (параметрOUT). Если результат не равен 0, то строка ’On’ была найдена в командной строке (VB12).Network 1LDMOVBSFNDVB012'T''u'VB202'O'VB22'n'Если строка из VB20найдена:'r''n'''VB303//1. Установить AC0 в 1.// (AC0 используется как параметр OUT.)//2. Искать в строке, находящейся по адресу// VB0, строку, находящуюся по адресу// VB20 (’On [Включить]’), начиная с первой// позиции (AC0=1).I0.01, AC0VB0, VB20, AC0'P''O''f''u''m''p''''O'VB12'n'VB33'f'AC0AC0Если строка из VB20не найдена:110Пример: Команда поиска первого появления символа в строкеВ следующем примере строка, хранящаяся по адресу VB0, содержит значение температуры.
Строка,хранящаяся по адресу VB20, хранит все цифровые символы (в том числе + и -), которые могутуказывать на температуру в строке. Данная программа-пример находит начальное положение числав этой строке, а затем преобразует цифровые символы в вещественное число. VD200 хранитзначение температуры в виде вещественного числа.Network 1 //1. Установить AC0 в 1.// (AC0 используется в качестве параметра// OUT и указывает на 1-ю позицию строки.)//2. Найти цифровой символ в строке,// находящейся по адресу VB0.//3. Преобразовать строку в вещественное// число.LDI0.0MOVB1, AC0CFNDVB0, VB20, AC0STRVB0, AC0, VD200VB011'T''e''m''p''''''9''8''.''6'VB11'F'VB2012'1''2''3''4''5''6''7''8''9''0''+'Начальная позиция температуры,хранящейся в VB0:AC01907VB32'-'Значение температуры в видевещественного числа:VD20098.6Набор команд S7–200Глава 6Табличные командыВвод значения в таблицуКоманда ввода значений в таблицу вносит в таблицу(TBL) значения, имеющие размер слова (DATA).
Первымзначением таблицы является ее максимальная длина(TL). Второе значение – это количество записей втаблице (EC). Новые данные добавляются к таблицепосле последней записи. Каждый раз, когда к таблицедобавляются новые данные, количество записейувеличивается на единицу.Таблица может иметь до 100 записей.Сбойные состояния, устанавливающие ENO = 0■ SM1.4 (переполнение таблицы)■ 0006 (косвенный адрес)■ 0091 (операнд вышел за пределы допустимого диапазона)Биты специальной памяти, на которые действует команда:■ SM1.4 устанавливается в 1, если вы пытаетесь переполнитьтаблицуТаблица 6–68. Допустимые операнды для табличных командВходы/выходыТипы данныхОперандыDATAINTIW, QW, VW, MW, SMW, SW, T, C, LW, AC, AIW, *VD, *LD, *AC,константаTBLWORDIW, QW, VW, MW, SMW, SW, T, C, LW, *VD, *LD, *ACПример: Команда ввода значения в таблицуNetwork 1 //Загрузить максимальную длину таблицыLDSM0.1MOVW +6, VW200Network 2LDI0.0ATTVW100, VW200Перед выполнением ATTVW100После выполнения ATT1234VW2000006TL (макс.
число запис.)VW2000006TL (макс. число запис.)VW2020002EC (число записей)VW2020003EC (число записей)VW2045431d0 (данные 0)VW206VW2088942xxxxd1 (данные 1)VW204VW20654318942d0 (данные 0)d1 (данные 1)xxxxxxxxVW208VW210VW2121234xxxxxxxxd2 (данные 2)VW210VW212VW214xxxxVW214xxxx191Программируемый контроллер S7-200. Системное руководствоУдаление первой записи из таблицы и удаление последней записииз таблицыТаблица может иметь до 100 записей.Удаление первой записиКоманда удаления первой записи (FIFO) удаляетпервую (самую старую) запись из таблицы (TBL) ипересылает значение по адресу, указанному в DATA.Все остальные записи таблицы смещаются на однупозицию вверх.
Количество записей в таблице послевыполнения каждой команды уменьшается на 1.Удаление последней записиКоманда удаления последней записи (LIFO) удаляетпоследнюю (самую новую) запись из таблицы (TBL) ипересылает значение по адресу, указанному в DATA.Количество записей в таблице после выполнениякаждой команды уменьшается на 1.Сбойные состояния,устанавливающие ENO = 0■ SM1.5 (пустая таблица)Биты специальной памяти, на которые действует команда:■ SM1.5 устанавливается в 1, если вы пытаетесь удалитьзапись из пустой таблицы■ 0006 (косвенный адрес)■ 0091 (операнд вышел запределы допустимогодиапазона)Таблица 6–69.
Допустимые операнды для команд удаления первой и последней записиВходы/выходыТипы данныхОперандыTBLWORDIW, QW, VW, MW, SMW, SW, T, C, LW, *VD, *LD, *ACDATAINTIW, QW, VW, MW, SMW, SW, T, C, LW, AC, AQW, *VD, *LD, *ACПример: Команда удаления первой записиNetwork 1LDI4.1FIFOVW200, VW400Перед выполнением FIFO192VW4005431После выполнения FIFOVW2000006TL (макс. число записей)VW2000006TL (макс. число записей)VW2020003VW2020002VW204VW20654318942EC (число записей)d0 (данные 0)VW204VW20689421234EC (число записей)d0 (данные 0)VW208VW2101234xxxxVW208VW210xxxxxxxxd1 (данные 1)d2 (данные 2)VW212xxxxVW212xxxxVW214xxxxVW214xxxxd1 (данные 1)Набор команд S7–200Глава 6Пример: Команда удаления последней записиNetwork 1LDI0.1LIFOVW200, VW300Перед выполнением LIFOVW200VW20200060003VW2045431VW2068942VW208VW2101234xxxxVW3001234После выполнения LIFOTL (макс.