Руководство по программированию 6 profinet 7 Двухточечная связь (PointtoPoint, PtP) 8
Скачать 3.76 Mb.
|
3.1.2 Приоритеты и очереди для исполнения событий CPU осуществляет обработку под управлением событий. События запускают исполнение OB прерываний. OB прерываний для события определяется при создании блока, при конфигурировании устройства или командой ATTACH или DETACH. Некоторые события происходят на регулярной основе, например, программный цикл или циклические события. Другие события, например, запуск или событие "Задержка времени" происходят однократно. Некоторые события происходят, когда имеет место изменение, инициированное аппаратурой, например, появление фронта на входе или событие "Скоростной счетчик". Имеются также такие события, как "Диагностируемая ошибка" или "Ошибка времени", которые появляются только в случае ошибки. Приоритеты событий, группы приоритетов и очереди используются для определения порядка обработки OB прерываний. Событие типа "Программный цикл" возникает один раз в каждом программном цикле (или цикле сканирования). Во время программного цикла CPU осуществляет запись в выходы, считывает входы и выполняет организационные блоки программного цикла. Событие типа "Программный цикл" необходимо и всегда активизируется. Для этого события вы можете не иметь ни одного OB программного цикла или иметь несколько таких OB. После запуска события типа "Программный цикл" исполняется OB программного цикла с наименьшим номером (обычно OB1). Другие OB программного цикла исполняются последовательно в порядке возрастания номеров внутри программного цикла. События типа "Циклическое прерывание" дают вам возможность организовать исполнение OB прерываний через сконфигурированный интервал времени. Этот интервал времени устанавливается при создании OB и организуется как OB циклических прерываний. Циклические события прерывают программный цикл и исполняют OB циклических прерываний (циклическое событие находится в группе с более высоким приоритетом, чем событие типа "Программный цикл"). Циклическому событию может быть поставлен в соответствие только один OB циклических прерываний. CPU поддерживает четыре события типа "Циклическое прерывание". OB циклических прерываний обладают свойством сдвига по фазе, так что исполнение циклических прерываний с одним и тем же периодом может быть смещено относительно друг друга на величину фазового сдвига. Событие типа "Запуск" происходит один раз при переходе из STOP в RUN и вызывает на исполнение OB запуска. Для этого события может быть выбрано несколько OB. OB запуска выполняются в порядке возрастания номеров. События типа "Задержка времени" дают вам возможность организовать исполнение OB прерываний по истечении заданного интервала времени. Время задержки задается командой SRT_DINT. События типа "Задержка времени" прерывают программный цикл для исполнения OB прерываний с задержкой. Событию типа "Задержка времени" может быть поставлен в соответствие только один OB прерываний с задержкой. CPU поддерживает четыре события типа "Задержка времени". События типа "Аппаратное прерывание" запускаются изменением в аппаратуре, например, нарастающим или падающим фронтом на входе, или событие "Скоростной счетчик" (High Speed Counter, HSC). Для каждого события типа "Аппаратное прерывание" может быть выбран только один OB прерываний. Такие события активизируются в конфигурации устройства. OB для этого события определяются в конфигурации устройства или с помощью команды ATTACH в программе пользователя. CPU поддерживает несколько событий типа "Аппаратное прерывание". Точное количество событий зависит от модели CPU и количества входов. События типа "Ошибка времени" и "Диагностируемая ошибка" активизируются, когда CPU обнаруживает ошибку. Эти события образуют группу с более высоким приоритетом, чем другие события, вызывающие прерывания, и могут прерывать исполнение событий типа "Задержка времени", циклическое или аппаратное прерывание. Для каждого из событий этого типа может быть задан только один OB прерываний. Основы ПЛК 3.1 Исполнение программы пользователя Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 47 Что нужно знать о приоритетах и очередях для исполнения событий Количество ждущих очереди событий из одного источника ограничено путем назначения каждому типу событий своей очереди. Как только предельное число стоящих в очереди событий достигнуто, следующее событие теряется. Дальнейшую информацию о переполнении очереди вы найдете в разделе "Что нужно знать о событиях типа «Ошибка времени»". Каждое событие CPU имеет приоритет, и приоритеты событий объединены в классы приоритетов. В следующей таблице представлены длины очередей, классы приоритетов и приоритеты для событий, поддерживаемых CPU. Указание Приоритет или класс приоритетов и длина очереди не могут быть изменены. В общем случае события обрабатываются в соответствии с их приоритетом (в первую очередь наивысший приоритет). События, имеющие одинаковый приоритет, обрабатываются в порядке поступления. Тип события (OB) Количество Допустимые номера OB Длина очереди Класс приоритета Приоритет Программный цикл 1 событие типа " Программный цикл " Допускается несколько OB 1 (по умолчанию) 200 или больше 1 1 Запуск 1 событие типа "Запуск" 1 Допускается несколько OB 100 (по умолчанию) 200 или больше 1 1 1 Задержка времени 4 события типа "Задержка времени" 1 OB на событие 200 или больше 8 3 Циклическое 4 циклических события 1 OB на событие 200 или больше 8 4 Фронты 16 нарастающих фронтов 16 падающих фронтов 1 OB на событие 200 или больше 32 5 HSC 6 событий CV = PV 6 изменений направления счета 6 событий внешнего сброса 1 OB на событие 200 или больше 16 6 Диагностируемая ошибка 1 событие только 82 8 2 9 Ошибка времени/ Максимальное время цикла 1 событие типа "Ошибка времени " 1 событие типа "Максимальное время цикла" только 80 8 3 26 Двойное максимальное время цикла 1 событие типа " Двойное максимальное время цикла " OB не вызывается - 3 27 1 Специальные случаи для события типа "Запуск" • События "Запуск" и "Программный цикл" никогда не происходят одновременно, так как запуск завершается раньше, чем начинается программный цикл (управляется операционной системой). • Ни одному из событий не разрешается прерывать запуск. События, которые происходят во время запуска, ставятся в очередь для дальнейшей обработки после завершения запуска. Основы ПЛК 3.1 Исполнение программы пользователя Программируемый контроллер S7-1200 48 Системное руководство, 11/2009, A5E02669003-02 После запуска OB его обработка не может быть прервана другим событием того же самого или меньшего приоритета. Такие события ставятся в очередь для дальнейшей обработки, давая возможность завершиться текущему OB. Однако событие из группы с боле высоким приоритетом прерывает текущий OB, и CPU после этого исполняет OB для события с более высоким приоритетом. После обработки этого OB с более высоким классом приоритета CPU исполняет OB для других событий, которые находятся в очереди этого более высокого класса приоритета, а именно в соответствии с приоритетом внутри этого класса. Если в этом классе приоритета больше нет событий, стоящих в очереди, CPU возвращается к боле низкому классу приоритета и возобновляет обработку прерванного OB с того места, где его обработка была остановлена. Латентный период Латентный период события (т.е. время между сообщением CPU о возникновении события и началом исполнения первой команды в OB, который обслуживает это событие) составляет примерно 210 мкс, если в момент появления этого события активен в качестве программы обработки только один OB программного цикла. Что нужно знать о событиях типа "Ошибка времени" Появление любой ошибки, связанной с временем, приводит к событию типа "Ошибка времени". Поддерживаются следующие ошибки времени: ● Превышение максимального времени цикла ● Запрошенный OB не может быть запущен ● Переполнение очереди Ошибка "Превышение максимального времени цикла" возникает, если программный цикл не завершается в течение заданного максимального времени цикла. Дальнейшую информацию об ошибке "Превышение максимального времени цикла", об установке максимального времени цикла и о сбросе времени цикла вы найдете в разделе "Контроль времени цикла (стр. 50)". Ошибка "Запрошенный OB не может быть запущен" возникает, если OB запрашивается циклическим прерыванием или прерыванием с задержкой, но этот OB уже исполняется. Ошибка "Переполнение очереди" появляется, если прерывания возникают быстрее, чем они могут быть обработаны. Количество событий, находящихся в очереди, ограничено назначением каждому событию собственной очереди ожидания. Если событие происходит, когда соответствующая очередь заполнена, то генерируется событие типа "Ошибка времени". Все события типа "Ошибка времени" запускают выполнение OB 80, если он существует. Если OB 80 не существует, то CPU игнорирует эту ошибку. Если ошибка "Превышение максимального времени цикла" возникает дважды в одном и том же программном цикле без сброса времени цикла, то CPU переходит в STOP, независимо от того, существует ли OB 80. См. по этому вопросу раздел "Контроль времени цикла" (стр. 50). Основы ПЛК 3.1 Исполнение программы пользователя Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 49 OB 80 содержит информацию о запуске, с помощью которой вы можете определить, какое событие и какой OB сгенерировал ошибку времени. Вы можете запрограммировать команды внутри OB 80, чтобы исследовать эти значения и принять необходимые меры. OB 80 поддерживает следующие адреса запуска: Вход Тип данных Описание fault_id BYTE 16#01 - превышение максимального времени цикла 16#02 - затребованный OB не может быть запущен 16#07 и 16#09 – произошло переполнение очереди csg_OBnr OB_ANY Количество OB, которые исполнялись, когда произошла ошибка csg_prio UINT Приоритет OB, вызвавшего ошибку Когда вы создаете новый проект, OB 80 в нем отсутствует. Если необходимо, вставьте OB 80 в свой проект, дважды щелкнув в дереве проекта под "Program blocks [Программные блоки]" на "Add new block [Добавить новый блок]", затем выберите "Organization block [Организационный блок]", а затем "Time error interrupt [Прерывание по ошибке времени]". Что нужно знать о событиях типа "Диагностируемая ошибка" Некоторые устройства обладают способностью диагностировать ошибки и сообщать о них. Возникновение или исчезновение различных диагностируемых ошибок приводит к событию типа "Диагностируемая ошибка". Поддерживаются следующие диагностируемые ошибки: ● Отсутствие напряжения у пользователя ● Нарушение верхнего граничного значения ● Нарушение нижнего граничного значения ● Обрыв провода ● Короткое замыкание Все события типа "Диагностируемая ошибка" вызывают исполнение OB 82, если он существует. Если OB 82 не существует, то CPU игнорирует эту ошибку. При создании нового проекта OB 82 не существует. При желании вы можете добавить OB 82 в свой проект, дважды щелкнув в дереве проекта под "Program blocks [Программные блоки]" на "Add new block [Добавить новый блок]", затем выберите "Organization block [Организационный блок]", а затем "Diagnostic error interrupt [Прерывание по диагностируемой ошибке]". OB 82 содержит информацию о запуске, с помощью которой вы можете определить, обязано ли это событие появлению или исчезновению ошибки, а также, какое устройство и какой канал сообщили об ошибке. Вы можете запрограммировать команды внутри OB 82, чтобы исследовать эти значения и принять необходимые меры. OB 82 поддерживает следующие адреса запуска: Вход Тип данных Описание IOstate WORD Состояние входов/выходов устройства laddr HW_ANY Идентификатор аппаратуры устройства или функциональной единицы, которая сообщила об ошибке channel UINT Номер канала multierror BOOL TRUE, если имеется несколько ошибок (в ранних версиях не поддерживается) Основы ПЛК 3.1 Исполнение программы пользователя Программируемый контроллер S7-1200 50 Системное руководство, 11/2009, A5E02669003-02 Бит 4 в IO_state было ли событие запущено появление или исчезновением ошибки. Бит 4 равен 1, если ошибка присутствует (пример: обрыв провода) и равен 0, если ошибки больше нет. Вход в контактном плане содержит аппаратный идентификатор (HW ID) устройства или функциональной единицы, которая выдала ошибку. HW ID назначается автоматически, когда компоненты вставляются в отображение набора устройств или сети и появляется во вкладке Constants [Константы] переменных ПЛК. Идентификатору HW ID также автоматически присваивается имя. Эти записи во вкладке Constants переменных ПЛК не могут быть изменены. Номер канала начинается с 0 для первого входа (аналогового или цифрового) и с 64 для первого выхода (аналогового или цифрового). Это смещение необходимо для того, чтобы отличить входы от выходов у устройств, имеющих и то, и другое. Если ошибка затрагивает все устройство или функциональную единицу, например, отсутствие напряжения у пользователя, то устанавливается самый старший бит в слове с номером канала (номер канала 32768). Контроль времени цикла Время цикла – это время, которое необходимо операционной системе CPU для исполнения циклической фазы режима RUN. CPU предоставляет два способа для контроля времени цикла: ● Максимальное время цикла ● фиксированное минимальное время цикла Контроль времени цикла начинается после завершения запуска. Запроектировать эту функцию в CPU можно через "Device Configuration > Cycle time [Конфигурация устройств > Время цикла]". CPU постоянно контролирует время цикла и реагирует, если максимальное время цикла превышено. Если установленное максимальное время цикла превышено, то генерируется ошибка, которая обрабатывается одним из следующих двух способов: ● Если OB 80 отсутствует, то CPU генерирует ошибку и продолжает исполнять программу пользователя ● Если OB 80 присутствует, то CPU исполняет OB 80 Команда RE_TRIGR (перезапустить контроль времени цикла) позволяет сбросить таймер, измеряющий время цикла. Однако эта команда действует только в том случае, если она исполняется в OB программного цикла; команда RE_TRIGR игнорируется, если она исполняется в OB 80. Если максимальное время цикла превышено дважды в одном программном цикле, и при этом команда RE_TRIGR не исполняется между этими двумя превышениями времени, то CPU немедленно переходит в STOP. Повторное исполнение команды RE_TRIGR может создать бесконечный или очень длинный цикл. Обычно цикл исполняется как можно более быстро, и следующий цикл начинается, как только заканчивается предыдущий. Однако в зависимости от программы пользователя и коммуникационной нагрузки время цикла может варьироваться. Для устранения таких колебаний CPU поддерживает необязательное фиксированное минимальное время цикла (называемого также фиксированным циклом). Если эта функция активизирована, и фиксированное минимальное время цикла задано в мс, то CPU соблюдает это минимальное время цикла с точностью ±1 мс для каждого цикла. Если CPU выполняет цикл быстрее, чем определено минимальным временем цикла, то CPU использует оставшееся время для диагностики ошибок во время исполнения и/или обработки коммуникационных запросов. Таким образом, CPU всегда занимает для каждого цикла фиксированное время. Основы ПЛК 3.1 Исполнение программы пользователя Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 51 Если цикл не завершается в течение заданного минимального времени цикла, то он выполняется нормально до конца (включая обработку коммуникационных запросов), и превышение минимального времени цикла не приводит ни к каким реакциям со стороны системы. В следующей таблице представлены диапазоны и настройки по умолчанию для функций контроля времени цикла. Время цикла Диапазон (мс) Значение по умолчанию Максимальное время цикла 1 от 1 до 6000 150 мс Фиксированное минимальное время цикла 2 от 1 до максимального времени цикла деактивировано 1 Максимальное время цикла всегда активизировано. Установите время цикла от 1 до 6000 мс. Значение по умолчанию составляет 150 мс. 2 Фиксированное минимальное время цикла необязательно и по умолчанию деактивировано. Если необходимо, установите это время от 1 мс до максимального времени цикла. Конфигурирование времени цикла и коммуникационной нагрузки В свойствах CPU в конфигурации устройств вы можете установить следующие параметры: ● Время цикла: Здесь вы можете ввести максимальное время цикла. Вы можете также определить фиксированное минимальное время цикла. Пояснения к рисунку: Cycle time – Время цикла; Maximum cycle time – Максимальное время цикла; Enabke a fixed minimum cycle time for cyclic OBs – Разблокировать фиксированное минимальное время цикла для циклических OB ● Коммуникационная нагрузка: Вы можете установить долю времени в процентах, предназначенную для выполнения коммуникационных задач. Пояснения к рисунку: Communication load – Коммуникационная нагрузка; Cycle load due to communication – Загрузка цикла коммуникационными задачами Подробную информацию о цикле вы найдете в разделе "Контроль времени цикла" (стр. 50). Основы ПЛК 3.1 Исполнение программы пользователя Программируемый контроллер S7-1200 52 Системное руководство, 11/2009, A5E02669003-02 3.1.3 Память CPU Управление памятью CPU предоставляет следующие области памяти для хранения программы пользователя, данных и конфигурации: ● Загрузочная память – это энергонезависимая память для программы пользователя, данных и конфигурации. При загрузке проекта в CPU он сначала сохраняется в загрузочной памяти. Эта память находится или на карте памяти (если она имеется), или в CPU. Эта энергонезависимая память сохраняется также и при отключении питания. Карта памяти поддерживает больший объем памяти, чем память, встроенная в CPU. ● Рабочая память – это энергозависимая память для некоторых элементов проекта пользователя во время исполнения пользовательской программы. CPU копирует некоторые элементы проекта из загрузочной памяти в рабочую. Эта энергозависимая область памяти теряется при отключении питания, а при возвращении питания CPU ее восстанавливает. ● Сохраняемая память – это энергонезависимая память для ограниченного количества значений рабочей памяти. Область сохраняемой памяти служит для сохранения выбранных адресов памяти пользователя при потере питания. При исчезновении питания у CPU имеется достаточно времени для сохранения значений ограниченного числа адресов памяти. При включении питания эти сохраняемые значения восстанавливаются. Чтобы отобразить использование памяти для текущего проекта, щелкните правой клавишей мыши на CPU (или одном из его блоков) и выберите "Resources [Ресурсы]" из контекстного меню. Для отображения использования памяти для текущего CPU дважды щелкните на "Online and diagnostics [Онлайновый режим и диагностика]", разверните "Diagnostics" и выберите "Memory [Память]". |