06_InstructionSet_r (1087186), страница 22
Текст из файла (страница 22)
Системное руководствоПоразрядные логические операции И, ИЛИ и исключающее ИЛИПоразрядное логическое И с байтами, словамии двойными словамиПоразрядные логические операции И с байтами (ANDB),словами (ANDW) и двойными словами (ANDD) логическисопрягают соответствующие биты двух входных величинIN1 и IN2 в соответствии с таблицей истинностилогической операции И и загружают результат по адресуOUT.Поразрядное логическое ИЛИ с байтами,словами и двойными словамиПоразрядные логические операции ИЛИ с байтами(ORB), словами (ORW) и двойными словами (ORD)логически сопрягают соответствующие биты двухвходных величин IN1 и IN2 в соответствии с таблицейистинности логической операции ИЛИ и загружаютрезультат по адресу OUT.Поразрядное логическое исключающее ИЛИ сбайтами, словами и двойными словамиПоразрядные логические операции Исключающее ИЛИ сбайтами (XORB), словами (XORW) и двойными словами(XORD) логически сопрягают соответствующие битыдвух входных величин IN1 и IN2 в соответствии стаблицей истинности логической операцииИсключающее ИЛИ и загружают результат по адресуOUT.Биты специальной памяти и ENOДля всех команд, описанных на этой странице,следующие условия влияют на биты специальнойпамяти и ENO.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)Биты специальной памяти, на которые действует команда:■ SM1.0 (ноль)Таблица 6–52.
Допустимые операнды для операций И, ИЛИ и Исключающее ИЛИВходы/выходыТипыданныхОперандыIN1, IN2BYTEWORDDWORDIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, константаIW, QW, VW, MW, SMW, SW, T, C, LW, AC, AIW, *VD, *LD, *AC,константаID, QD, VD, MD, SMD, SD, LD, AC, HC, *VD, *LD, *AC, константаBYTEWORDDWORDIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *AC, *LDIW, QW, VW, MW, SMW, SW, T, C, LW, AC, *VD, *AC, *LDID, QD, VD, MD, SMD, SD, LD, AC, *VD, *AC, *LDOUT164Набор команд S7–200Глава 6Пример: Поразрядные логические операции И, ИЛИ и исключающее ИЛИNetwork 1LDI4.0ANDW AC1, AC0ORWAC1, VW100XORW AC1, AC0Поразрядное И0001 1111 0110 1101AC1ANDAC0 1101 0011 1110 0110Поразрядное ИЛИ0001 1111 0110 1101AC1ORVW100 1101 0011 1010 0000равноAC0 0001 0011 0110 0100VW100равно1101 1111 1110 1101Поразрядное Исключающее ИЛИ0001 1111 0110 1101AC1AC0XOR0001 0011 0110 0100равноAC0 0000 1100 0000 1001165Программируемый контроллер S7-200.
Системное руководствоКоманды пересылкиПересылка байта, слова, двойного словаили вещественного числаКоманды пересылки байта (MOVB), слова (MOVW),двойного слова (MOVD) и вещественного числа (MOVR)пересылают значение из адреса IN в адрес OUT, неизменяя исходной величины.Используйте команду пересылки двойного слова длясоздания указателя. Подробную информацию вынайдете в разделе об указателях и косвеннойадресации в главе 4.У команды пересылки IEC на входе и выходе могутприменяться различные типы данных, но они должныбыть одного размера.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)Таблица 6–53.
Допустимые операнды для команд пересылкиВходы/выходыТипы данныхОперандыINBYTEWORD, INTIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, константаIW, QW, VW, MW, SMW, SW, T, C, LW, AC, AIW, *VD, *AC,*LD, константаID, QD, VD, MD, SMD, SD, LD, HC, &VB, &IB, &QB, &MB, &SB,&T, &C, &SMB, &AIW, &AQW, AC, *VD, *LD, *AC, константа,ID, QD, VD, MD, SMD, SD, LD, AC, *VD, *LD, *AC, константаDWORD, DINTREALOUTBYTEWORD, INTDWORD, DINT, REAL166IB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *ACIW, QW, VW, MW, SMW, SW, T, C, LW, AC, AQW, *VD, *LD,*ACID, QD, VD, MD, SMD, SD, LD, AC, *VD, *LD, *ACНабор команд S7–200Глава 6Непосредственное чтение или запись ипересылка байтаКоманды непосредственной пересылки байта позволяютпересылать байт непосредственно между физическимвходом или выходом и адресом в памяти.Команда пересылки непосредственно считанного байта(BIR) считывает физический вход (IN) и записываетрезультат по адресу в памяти (OUT), не обновляярегистр образа процесса.Команда пересылки байта для непосредственной записи(BIW) считывает данные из адреса в памяти (IN) изаписывает их в физический выход (OUT) и всоответствующую ячейку образа процесса.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)■ Нет доступа к модулю расширенияТаблица 6–54.
Допустимые операнды для команды пересылки непосредственно считанного байтаВходы/выходыТипы данныхОперандыINBYTEIB, *VD, *LD, *ACOUTBYTEIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *ACТаблица 6–55. Допустимые операнды для команды пересылки байта для непосредственной записиВходы/выходыТипы данныхОперандыINBYTEIB, QB, VB, MB, SMB, SB, LB, AC, *VD, *LD, *AC, константаOUTBYTEQB, *VD, *LD, *AC167Программируемый контроллер S7-200. Системное руководствоКоманды групповой пересылкиГрупповая пересылка байтов, слов, двойныхсловКоманды групповой пересылки байтов (BMB), слов(BMW) и двойных слов (BMD) пересылают указанноеколичество (N) байтов, слов или двойных слов, начинаяс входного адреса IN, в новую область, начинающуюся свыходного адреса OUT.N находится в диапазоне от 1 до 255.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)■ 0091 (операнд вышел за пределы допустимого диапазона)Таблица 6–56.
Допустимые операнды для команд групповой пересылкиВходы/выходыТипы данныхОперандыINBYTEWORD, INTDWORD, DINTIB, QB, VB, MB, SMB, SB, LB, *VD, *LD, *ACIW, QW, VW, MW, SMW, SW, T, C, LW, AIW, *VD, *LD, *ACID, QD, VD, MD, SMD, SD, LD, *VD, *LD, *ACOUTBYTEWORD, INTDWORD, DINTIB, QB, VB, MB, SMB, SB, LB, *VD, *LD, *ACIW, QW, VW, MW, SMW, SW, T, C, LW, AQW, *VD, *LD, *ACID, QD, VD, MD, SMD, SD, LD, *VD, *LD, *ACNBYTEIB, QB, VB, MB, SMB, SB, LB, AC, константа, *VD, *LD, *ACПример: Команда групповой пересылкиNetwork 1LDBMB//Переслать массив 1 (от VB20 до VB23)//в массив 2 (от VB100 до VB103)I2.1VB20, VB100, 4Массив 1Массив 2168VB20VB21VB22VB2330313233VB100VB101VB102VB10330313233Набор команд S7–200Глава 6Команды управления программойУсловное завершениеКоманда условного завершения (END) завершаеттекущий цикл в зависимости от результатапредшествующей логической операции. Вы можетеиспользовать команду условного завершения в главнойпрограмме, но ее нельзя использовать в подпрограммахи программах обработки прерываний.ОстановКоманда останова (STOP) завершает выполнениепрограммы, вызывая переход CPU S7–200 из RUN вSTOP.Если команда STOP выполняется в программеобработки прерывания, то эта программа завершаетсянемедленно, а все прерывания, стоящие в очереди,игнорируются.
Оставшиеся действия в текущем циклеобработки программы завершаются, включаявыполнение главной программы пользователя, апереход из RUN в STOP производится в конце текущегоцикла.Сброс контроля времениКоманда сброса контроля времени (WDR) перезапускает системный таймер контролявремени CPU S7–200, увеличивая время, которое может занимать цикл обработкипрограммы, не вызывая ошибки контроля времени.Команду сброса контроля времени следует использовать с осторожностью.
Если вы спомощью программных циклов препятствуете завершению цикла обработки программыили существенно задерживаете его завершение, то следует иметь в виду, что дозавершения цикла обработки программы запрещены следующие процессы:-связь (за исключением режима свободно программируемого обмена даннымиFreeport)-обновление входов и выходов (кроме входов и выходов с непосредственнымдоступом)-обновление принудительно задаваемых значений-обновление битов специальной памяти (не обновляются биты SM0, SM5 − SM29)-диагностика в режиме реального времени-10–миллисекундные и 100–миллисекундные таймеры не накапливают времядолжным образом для циклов обработки программы, превышающих 25 секунд-команда STOP при использовании в программе обработки прерывания-модули расширения с цифровыми выходами также имеют таймер контроля времени,который выключает выходы, если S7–200 не производит запись в этот модуль.
Чтобыэти выходы оставались включенными во время продленного цикла, пользуйтеськомандой непосредственной записи для каждого модуля расширения. См. такжепример, следующий за этим описанием.169Программируемый контроллер S7-200. Системное руководствоСоветКоманду сброса контроля времени следует использовать для перезапуска таймераконтроля времени, если вы ожидаете, что время цикла обработки программы превысит500 мс, или вы ожидаете увеличения активности прерываний, что можетвоспрепятствовать возвращению в главный цикл более чем на 500 мс.Каждый раз, когда вы применяете команду сброса контроля времени, вы должны такжеиспользовать команду непосредственной записи для одного выходного байта (QB) накаждый цифровой модуль вывода, чтобы сбросить контроль времени модулярасширения.Если вы используете команду сброса контроля времени, чтобы можно было выполнитьпрограмму с большим временем цикла, то перевод переключателя режимов работы вположение STOP вызывает переход S7–200 в состояние STOP в течение 1,4 секунды.Пример: Команды останова, завершения и сброса контроля времениNetwork 1LDSTOP//При обнаружении ошибки ввода/вывода//перейти принудительно в режим STOP.SM5.0Network 2LDWDRBIW//Если M5.6 включен, сделать возможным//продление цикла://1.
Сбросить время контроля для S7–200.//2. Сбросить контроль времени для первого// модуля вывода.M5.6QB2, QB2Network 3//Если I0.0 включен, завершить текущий цикл.LDI0.0END170Набор команд S7–200Глава 6Команды формирования программного цикла For-NextС помощью команд FOR и NEXT вы можете управлятьпрограммными циклами, которые повторяютсяопределенное количество раз. Каждая команда FORтребует наличия команды NEXT. Вы можете вкладыватьциклы FOR/NEXT друг в друга (помещать цикл FORNEXT внутри другого цикла FOR-NEXT). Глубинавложения не может превышать восьми.Команда FOR выполняет команды, расположенныемежду операторами FOR и NEXT. Вы должны задатьзначение индекса или счетчик цикла INDX, начальноезначение INIT и конечное значение FINAL.Команда NEXT отмечает конец цикла FOR.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)Если вы активизируете цикл FOR-NEXT, то процессциклического выполнения продолжается, пока незакончатся итерации, если только вы не изменитеконечное значение изнутри самого цикла.
Вы можетеизменять эти значения, пока цикл FOR-NEXT выполнятциклическую обработку. Когда цикл активизируетсяснова, он копирует начальное значение в индекс(счетчик цикла).Команда FOR-NEXT сбрасывает себя каждый раз, когдаона активизируется.Например, если значение INIT равно 1 , значение FINAL равно 10, то команды между FOR иNEXT исполняются 10 раз, причем значение INDX каждый раз увеличивается на единицу:1, 2, 3, ...10.Если начальное значение больше конечного, то цикл не выполняется. После каждогоисполнения команд между FOR и NEXT значение INDX увеличивается, а результатсравнивается с конечным значением. Если INDX больше конечного значения, то циклзавершается.Если вершина стека равна 1, когда ваша программа входит в цикл FOR-NEXT, то вершинастека останется равной 1, когда ваша программа покинет цикл FOR-NEXT.Таблица 6–57.