06_InstructionSet_r (1087186), страница 21
Текст из файла (страница 21)
В этом режиме ваша программа определяет скоростьпередачи, количество битов на символ, способ контроля четности и протокол. Дляоблегчения обмена данными, управляемого вашей программой, в вашем распоряженииимеются прерывания приема и передачи. За дополнительной информацией обратитесь ккомандам приема и передачи.Прерывания по вводу/выводуК прерываниям по вводу/выводу относятся прерывания при нарастающем/падающемфронте, прерывания от скоростных счетчиков и прерывания от последовательностиимпульсов. S7–200 может генерировать прерывание при нарастающем и/или падающемфронте на входе (I0.0, I0.1, I0.2 или I0.3). Появления нарастающего и падающего фронтамогут быть распознаны для любой из этих точек ввода.
Эти события могут использоватьсядля отображения условия, которое немедленно должно быть принято во внимание, когдаэто событие происходит.158Набор команд S7–200Глава 6Прерывания от скоростных счетчиков дают возможность реагировать на такие условия, какдостижение текущим значением предустановленного значения, изменение направлениясчета, которое может соответствовать реверсированию направления, в котором вращаетсявал, или внешний сброс счетчика. Каждое из этих прерываний дает возможностьпредпринимать в реальном времени действия в ответ на быстрые события, которыминельзя управлять при скоростях, определяемых временем цикла программируемогологического контроллера.Прерывания от последовательности импульсов немедленно извещают о завершениивывода предписанного количества импульсов.
Импульсные последовательности частоиспользуются для управления шаговыми двигателями.Каждое из вышеописанных прерываний может быть разблокировано назначениемпрограммы обработки прерывания соответствующему событию ввода/вывода.Прерывания, управляемые временемК прерываниям, управляемым временем, относятся циклические прерывания ипрерывания, вызываемые таймерами T32 и T96. С помощью циклических прерываний выможете задать действия, которые должны выполняться циклически. Время циклаустанавливается в пределах от 1 до 255 мс шагами по 1 мс. Вы должны записать времяцикла в SMB34 для циклического прерывания 0 и в SMB35 для циклического прерывания 1.Событие, вызывающее циклические прерывания, передает управление соответствующейпрограмме обработки прерываний каждый раз, как истекает время работы таймера.Обычно циклические прерывания используются для управления опросом аналоговыхвходов или для вызова PID-регулятора через регулярные интервалы времени.Циклическое прерывание разблокируется, и начинается отсчет времени, когда выназначаете программу обработки прерывания событию, вызывающему циклическоепрерывание.
При этом система воспринимает значение времени цикла, и последующиеизменения в SMB34 и SMB35 на это время цикла влияния не оказывают. Чтобы изменитьвремя цикла, вы должны задать для него новое значение, а затем снова назначитьпрограмму обработки прерывания событию, вызывающему циклическое прерывание. Когдапроисходит повторное назначение, функция циклического прерывания сбрасывает всенакопленное время от предыдущего назначения и начинает отсчет времени с новымзначением.Будучи разблокированным, циклическое прерывание работает постоянно, выполняяназначенную программу обработки прерывания при каждом истечении заданноговременного интервала. Если вы выйдете из режима RUN или отсоедините циклическоепрерывание, то циклическое прерывание блокируется.
Если выполняется глобальнаякоманда блокирования прерываний, то циклические прерывания продолжают происходить.Каждое появление циклического прерывания ставится в очередь (пока прерывания небудут разблокированы или не заполнится очередь).Прерывания от таймера T32 или T96 позволяют своевременно реагировать на завершениезаданного интервала времени. Эти прерывания поддерживаются только для таймеров T32и T96 с задержкой включения (TON) и с задержкой выключения (TOF) с разрешением 1 мс.В противном случае таймеры T32 и T96 обладают обычными свойствами.
Когдапрерывание разблокировано, назначенная программа обработки прерывания исполняется,когда текущее значение активного таймера становится равным предустановленномузначению во время нормального обновления 1-миллисекундного таймера, выполняемого вS7–200. Эти прерывания разблокируются назначением программы обработки прерываниясобытиям, вызывающим прерывание от таймера T32/T96.Приоритет прерываний и постановки их в очередьПрерывания обслуживаются S7–200 в порядке их возникновения с учетомсоответствующей группы приоритета.
В любой момент времени исполняется только однапрограмма обработки прерывания. Когда исполнение программы обработки прерыванияначинается, программа исполняется до своего завершения. Она не может быть прерванадругой программой обработки прерывания, даже если последняя имеет более высокийприоритет. Прерывания, возникающие во время обработки другого прерывания, ставятся вочередь для последующей обработки.Три очереди прерываний и максимальное количество прерываний, которое они могутхранить, показаны в таблице 6–48.Таблица 6–48.
Максимальное количество записей на очередь прерыванийОчередьОчередь коммуникационных прерыванийОчередь прерываний по вводу/выводуОчередь прерываний, управляемых временемCPU 221, CPU 222, CPU 224 CPU 224XP и CPU 22648161688В принципе может возникнуть больше прерываний, чем может содержать очередь.Поэтому системой поддерживаются биты переполнения очереди (обозначающие типпрерывающих событий, которые были потеряны). Биты переполнения очереди прерыванийпоказаны в таблице 6–49.
Вам следует использовать эти биты только в программеобработки прерывания, так как они сбрасываются, когда очередь опустошается иуправление возвращается главной программе.159Программируемый контроллер S7-200. Системное руководствоВ табл. 6–50 представлены все прерывающие события, их приоритеты и соответствующиеномера событий.Таблица 6–49. Биты переполнения очереди прерыванийОписание (0 = нет переполнения, 1 = переполнение)Бит специальной памятиОчередь коммуникационных прерыванийSM4.0Очередь прерываний по вводу/выводуSM4.1Очередь прерываний, управляемых временемSM4.2Таблица 6–50.
Порядок приоритетов для прерывающих событийСобытие Описание160ГруппаприоритетаПриоритет вгруппе8Порт 0Символ принят9Порт 0Передача завершена23Порт 0Прием сообщения завершен24Порт 1Прием сообщения завершен125Порт 1Символ принят126Порт 1Передача завершена19PLS0Прерывание по завершению отсчетаколичества импульсов PTO20PLS1Прерывание по завершению отсчетаколичества импульсов PTO0I0.0Нарастающий фронт22I0.1Нарастающий фронт34I0.2Нарастающий фронт46I0.3Нарастающий фронт51I0.0Падающий фронт63I0.1Падающий фронт75I0.2Падающий фронт8КоммуникацииНаивысшийприоритет0001ДискретныепрерыванияСреднийприоритет017I0.3Падающий фронт912HSC0CV=PV (текущее значение =предустановленному)1027HSC0Изменение направления1128HSC0Внешний сброс1213HSC1CV=PV (текущее значение =предустановленному)1314HSC1Изменение направления1415HSC1Внешний сброс1516HSC2CV=PV (текущее значение =предустановленному)1617HSC2Изменение направления1718HSC2Внешний сброс1832HSC3CV=PV (текущее значение =предустановленному)1929HSC4CV=PV (текущее значение =предустановленному)2030HSC4Изменение направления2131HSC4Внешний сброс2233HSC5CV=PV (текущее значение =предустановленному)2310Управляемое временем прерывание 011Управляемое временем прерывание 121Таймер T32Прерывание CT=PT22Таймер T96Прерывание CT=PTSMB34 Прерывания,SMB35 управляемыевременемНизший0123Набор команд S7–200Глава 6Пример: Команды прерыванияMAINNetwork 1 //В первом цикле://1.
Определить программу обработки прерываний INT_0// как программу обработки прерыванию по падающему// фронту на I0.0//2. Разблокировать все прерывающие события.LDSM0.1ATCHINT_0, 1ENINetwork 2//Если обнаружена ошибка ввода/ввода,//заблокировать прерывание по падающему фронту на// I0.0.
Этот сегмент не обязателен.LDSM5.0DTCH1Network 3//Если M5.0 установлен,//заблокировать все прерывания.LDM5.0DISIINT0Network 1фронтуLDCRETI//Программа обработки прерываний по падающему//на I0.0://Условный возврат при ошибке ввода/вывода.SM5.0Пример: Прерывание, управляемое временем, для чтения значения аналогового входаMAINNetwork 1// В первом цикле вызвать подпрограмму 0.LDSM0.1CALLSBR_0SBR0Network 1LDMOVBATCHENIINT0//1. Установить интервал для прерывания,// управляемого временем, от 0 до 100 мс.//2.
Управляемое временем прерывание 0 поставить в// соответствие INT_0 (событие 10).//3. Разблокировать все прерывающие события.SM0.0100, SMB34INT_0, 10Network 1//Считывать значение AIW4 каждые 100 мсLDSM0.0MOVW AIW4, VW100161Программируемый контроллер S7-200. Системное руководствоПример: Команда очистки событий прерыванияNetwork 1// Мастер команд HSCLDSM0.0MOVB 16#A0, SMB47//Установка управляющих битов://запись предустановленного значения;MOVD +6, SMD52//PV = 6;ATCH HSC1_STEP1, 13//Прерывание HSC1_STEP1: CV = PV для HC1Network 2 //Очистка нежелательных прерываний,//вызванных вибрацией машиныLDCEVNT162SM0.013Набор команд S7–200Глава 6Логические операцииОперации инвертированияИнвертирование байта, слова и двойногословаКоманды инвертирования байта (INVB), слова (INVW) идвойного слова (INVD) образуют дополнение входа INдо единицы и загружают результат по адресу OUT.Сбойные состояния, устанавливающие ENO = 0■ 0006 (косвенный адрес)Биты специальной памяти, на которые действует команда:■ SM1.0 (ноль)Таблица 6–51 Допустимые операнды для команд инвертированияВходы/выходыТипы данныхОперандыINBYTEWORDDWORDIB, 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, *LD, *ACIW, QW, VW, MW, SMW, SW, T, C, LW, AC, *VD, *LD, *ACID, QD, VD, MD, SMD, SD, LD, AC, *VD, *LD, *ACOUTПример: Операция инвертированияNetwork 1LDI4.0INVWAC0ИнвертированиесловаAC01101 0111 1001 0101Формирование дополнения до единицыAC00010 1000 0110 1010163Программируемый контроллер S7-200.