Руководство по программированию 6 profinet 7 Двухточечная связь (PointtoPoint, PtP) 8
Скачать 3.76 Mb.
|
Вставка новых OB аппаратных прерываний в вашу программу По умолчанию при первом разблокировании события этому событию не ставится в соответствие никакой OB. На это указывает метка " OB аппаратных прерываний. Все существующие OB аппаратных прерываний выводятся в ниспадающем списке "HW interrupt:". Если в этом списке OB отсутствуют, то вы должны создать OB типа "Hardware interrupt [Аппаратное прерывание]" следующим образом. В ветви "Program blocks [Программные блоки]" дерева проекта: 1. Дважды щелкните на "Add new block [Добавить новый блок]", выберите "Organization block [Организационный блок] (OB)", а затем "Hardware interrupt". 2. Вы имеете возможность переименовать OB, выбрать язык программирования (LAD или FBD) и задать номер блока (переключитесь в ручной режим и выберите другой номер блока вместо предложенного). 3. Отредактируйте OB и добавьте реакцию программы на возникновение события. Вы можете вызывать из этого OB вложенные FC и FB с глубиной вложенности до четырех. Параметр OB_NR Имена всех существующих OB аппаратных прерываний появляются в ниспадающем списке "HW interrupt: [Аппаратное прерывание]" в конфигурации устройств и в ниспадающем списке для параметра OB_NR команд ATTACH / DETACH. Параметр EVENT Когда разблокируется событие, вызывающее аппаратное прерывание, этому конкретному событию присваивается по умолчанию уникальное имя. Вы можете изменить имя этого события, редактируя поле ввода "Event name [Имя события]:", но это имя должно быть уникальным. Имена этих событий становятся именами переменных в таблице переменных "Constants [Константы]" и появляются в ниспадающем списке параметра EVENT для блоков команд ATTACH и DETACH. Значением этой переменной является внутренний номер, используемый для идентификации события. Общий принцип действия Каждое аппаратное прерывание может быть поставлено в соответствие OB аппаратных прерываний, который будет поставлен в очередь на исполнение, когда происходит событие, вызывающее это аппаратное прерывание. Установление соответствия между OB и событием может происходить во время конфигурирования или во время исполнения. Вы можете назначать или отменять назначение OB разблокированному событию во время конфигурирования. Для назначения OB событию во время конфигурирования вы должны использовать ниспадающий список "HW interrupt [Аппаратное прерывание]:" (щелкните на направленной вниз стрелке справа) и выбрать OB из списка имеющихся OB аппаратных прерываний. Выберите подходящее имя OB из этого списка или выберите " Вы можете также назначать или отменять назначение разблокированного события, вызывающего аппаратные прерывания, во время исполнения. Для этого используйте в программе во время исполнения команды ATTACH или DETACH (при желании - несколько раз) для назначения или отмены назначения разблокированного события, вызывающего аппаратные прерывания, подходящему OB. Если никакой OB в настоящее время не назначен (из-за выбора " Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 200 Системное руководство, 11/2009, A5E02669003-02 Команда DETACH Используйте команду DETACH для отмены назначения конкретного события или всех событий конкретному OB. Если параметр EVENT задан, то отменяется назначение только одного этого события из указанного OB_NR; все остальные события, назначенные в настоящее время этому OB_NR, не теряют своего назначения. Если параметр EVENT не задан, то назначение всех событий этому OB_NR будет отменено. Коды условий RET_VAL (W#16#....) Состояние ENO Описание 0000 1 Нет ошибки 0001 0 Назначения отсутствуют (только DETACH) 8090 0 OB не существует 8091 0 OB неверного типа 8093 0 Событие не существует 6.2.6.2 Команды запуска и отмены прерываний с задержкой Вы можете запускать и отменять обработку прерываний с задержкой с помощью команд SRT_DINT и CAN_DINT. Каждое прерывание с задержкой является однократным событием, происходящим по истечении заданного интервала времени. Если событие, вызывающее задержку, отменяется до того, как время задержки истечет, то прерывание в программе не возникает. Команда SRT_DINT запускает прерывание с задержкой, которое исполняет подпрограмму OB (организационный блок) по истечении времени задержки, указанного в параметре DTIME. Команда CAN_DINT отменяет прерывание с задержкой, которое уже было запущено. В этом случае OB прерываний с задержкой не выполняется. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 201 Параметры команды SRT_DINT Параметр Тип параметра Тип данных Описание OB_NR IN Int Организационный блок (OB), подлежащий запуску по истечении времени задержки: Выберите один из имеющихся OB прерываний с задержкой, которые были созданы с помощью опции дерева проектов "Add new block [Добавить новый блок]". Дважды щелкните на поле этого параметра, затем щелкните на вспомогательной пиктограмме, чтобы увидеть имеющиеся OB. DTIME IN Time Величина задержки (от 1 до 60000 мс) Вы можете сформировать более длительные времена задержки, например, используя счетчик внутри OB прерываний с задержкой. SIGN IN Word Не используется в S7-1200; принимается любое значение RET_VAL OUT Int Код условия выполнения Параметры команды CAN_DINT Параметр Тип параметра Тип данных Описание OB_NR IN Int Идентификатор OB прерываний с задержкой. Вы можете использовать номер OB или символическое имя. RET_VAL OUT Int Код условия выполнения Принцип действия Команда SRT_DINT задает задержку времени, запускает внутренний таймер, отсчитывающий время задержки, и назначает событию, запускающему прерывание, подпрограмму OB прерываний с задержкой. По истечении заданного времени задержки генерируется программное прерывание, которое запускает на исполнение соответствующий OB прерываний с задержкой. Вы можете отменить запущенное прерывание с задержкой времени, прежде чем будет достигнуто заданное время задержки, с помощью команды CAN_DINT. Общее количество активных событий, вызывающих задержку времени и циклические прерывания, не должно превышать четырех. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 202 Системное руководство, 11/2009, A5E02669003-02 Вставка подпрограмм OB прерываний с задержкой в ваш проект Командам SRT_DINT и CAN_DINT могут быть поставлены в соответствие только OB прерываний с задержкой. В новом проекте нет OB прерываний с задержкой. Вы должны вставить OB прерываний с задержкой в свой проект. Для создания OB прерываний с задержкой, действуйте следующим образом: 1. Дважды щелкните на опции "Add new block [Добавить новый блок]" в ветви "Program blocks [Программные блоки]" дерева проектов, выберите "Organization block [Организационный блок] (OB)", а затем "Time delay interrupt [Прерывание с задержкой времени]". 2. Вы можете переименовать OB, выбрать язык программирования и номер блока. Если вы хотите назначить другой номер блока, чем тот, который был назначен автоматически, перейдите в режим ручной нумерации. 3. Отредактируйте подпрограмму OB прерываний с задержкой и сформируйте запрограммированную реакцию на событие, вызывающее прерывание с задержкой времени. Из OB прерываний с задержкой вы можете вызывать другие кодовые блоки FC и FB с глубиной вложения не боле четырех. 4. Имена вновь назначенных OB прерываний с задержкой будут находиться в вашем распоряжении при редактировании параметра OB_NR команд SRT_DINT и CAN_DINT. Коды условий RET_VAL (W#16#...) Описание 0000 Нет ошибок 8090 Неправильный параметр OB_NR 8091 Неправильный параметр DTIME 80A0 Прерывание с задержкой еще не запущено 6.2.6.3 Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 203 6.2.6.4 Команды активизации и деактивизации прерываний Для разблокирования и блокирования обработки прерываний используются команды DIS_AIRT и EN_AIRT. Команда DIS_AIRT задерживает обработку нового прерывающего события. Команду DIS_AIRT можно исполнять несколько раз в одном OB. Исполнения команды DIS_AIRT подсчитываются операционной системой. Каждая из этих команд действует, пока она не будет специально отменена командой EN_AIRT или пока текущий OB не будет полностью обработан. Прерывания, которые произошли во время действия команды DIS_AIRT, обрабатываются, как только они будут снова разблокированы, или сразу после исполнения текущего OB. Команда EN_AIRT разблокирует обработку прерывающего события, которое вы ранее заблокировали с помощью команды DIS_AIRT. Каждое исполнение DIS_AIRT должно быть отменено исполнением EN_AIRT. Если, например, вы заблокировали прерывания пять раз пятикратным исполнением команды DIS_AIRT, то вы должны их отменить пятикратным исполнением команды EN_AIRT. Исполнения команды EN_AIRT должны происходить в том же самом OB или в любом FC или FB, вызываемом из этого OB, прежде чем для этого OB будут снова разблокированы прерывания. Параметр RET_VAL указывает на то, сколько раз была заблокирована обработка прерываний, что определяется количеством поставленных в очередь исполнений команды DIS_AIRT. Обработка прерываний снова разблокируется только тогда, когда параметр RET_VAL = 0. Параметр Тип параметра Тип данных Описание RET_VAL OUT Int Количество задержек = количеству исполнений DIS_AIRT в очереди. 6.2.7 PID-регулирование Оператор "PID_Compact" предоставляет в распоряжение PID-регулятор с оптимизацией самонастройки для автоматического и ручного режима. Дальнейшую информацию о команде PID_Compact в системе онлайновой помощи портала TIA. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 204 Системное руководство, 11/2009, A5E02669003-02 6.2.8 Команды управления перемещением Команды управления перемещением используют для управления перемещением по оси соответствующий технологический блок данных и предназначенные для этого PTO (последовательности импульсов) CPU. Дальнейшую информацию о командах управления перемещением вы найдете в системе онлайновой помощи STEP 7 Basic. ВНИМАНИЕ Максимальная частота импульсных генераторов составляет 100 КГц для цифровых выходов CPU и 20 КГц для цифровых выходов сигнальной платы. Однако STEP 7 Basic не предупреждает вас, если вы сконфигурируете ось, максимальная скорость или частота по которой превышает аппаратные ограничения. Это может вызвать проблемы в вашем приложении, поэтому всегда обращайте внимание на то, чтобы не превысить максимальную частоту импульсов аппаратуры. MC_Power разблокирует и блокирует ось для управления перемещением. MC_Reset сбрасывает все ошибки управления перемещением. Все ошибки управления перемещением, которые могут быть квитированы, квитируются. MC_Home устанавливает связь между программой управления осью и механической системой позиционирования оси. MC_Halt отменяет все процессы перемещения и вызывает перемещение оси в стоп. Положение остановки не определено. MC_MoveJog осуществляет толчковый режим работы для целей тестирования и ввода в действие. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 205 MC_MoveAbsolute вызывает перемещение в абсолютное положение. Задание заканчивается, когда достигнута целевая позиция. MC_MoveRelative вызывает перемещение для позиционирования относительно начального положения. MC_MoveVelocity вызывает перемещение оси с заданной скоростью. Указание Последовательности импульсов не могут использоваться другими командами в программе пользователя При конфигурировании выходов CPU или сигнальной платы в качестве генераторов импульсов (для PWM или основных команд управления перемещением) адреса соответствующих выходов (Q0.0, Q0.1, Q4.0 и Q4.1) удаляются из Q-памяти и не могут быть использованы для других целей в вашей пользовательской программе. Если ваша программа записывает значение в выход, используемый в качестве генератора импульсов, то CPU не записывает это значение в физический выход. Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 206 Системное руководство, 11/2009, A5E02669003-02 6.2.9 Команда формирования импульсов 6.2.9.1 Команда CTRL_PWM Время цикла Команда CTRL_PWM (Pulse Width Modulation [Широтно-импульсная модуляция] (PWM [ШИМ])) выдает последовательность импульсов с фиксированным временем цикла, но с переменным коэффициентом заполнения. Выход PWM работает непрерывно после запуска с заданной частотой (временем цикла). Ширина импульсов меняется по потребности, чтобы достичь желаемого управления Ширина импульса Ширина импульса может быть задана в сотых долях времени цикла (0 – 100), в тысячных долях (0 – 1000), в десятитысячных долях (0 – 10000) или в аналоговом формате S7. Ширина импульса может меняться от 0 (отсутствие импульсов, всегда выключено) до полного заполнения (отсутствие импульсов, всегда включено). Так как выход PWM может меняться от 0 до полного заполнения, то он представляет собой цифровой выход, во многом похожий на аналоговый выход. Например, выход PWM может использоваться для управления скоростью вращения двигателя от остановки до максимальной скорости или для управления положением клапана от закрытого до полностью открытого состояния. Для управления быстрыми импульсными выходами имеются в распоряжении два импульсных генератора: ШИМ и последовательность импульсов (PTO). PTO используется командами управления перемещением. Вы можете назначить каждый импульсный генератор PWM или PTO, но не обоим в одно и то же время. Эти два импульсных генератора поставлены в соответствие конкретным цифровым выходам, как это показано в следующей таблице. Вы можете использовать встроенные выходы CPU или, как вариант, выходы сигнальной платы. Адреса выходов показаны в следующей таблице (при этом предполагается конфигурация выходов по умолчанию). Если вы изменили адреса выходов, то эти адреса будут соответствовать адресам, назначенным вами. Независимо от этого PTO1/PWM1 использует первые два цифровых выхода, а PTO2/PWM2 – следующие два цифровых выхода, или на CPU, или на вставленной сигнальной плате. Обратите внимание, что для PWM нужен только один выход, тогда как PTO может, как вариант, использовать два выхода на канал. Если выход не нужен для импульсной функции, то он может быть использован для других целей. Описание Назначение выходов по умолчанию Импульс Направление Встроенный в CPU Q0.0 Q0.1 PTO 1 Сигнальная плата Q4.0 Q4.1 Встроенный в CPU Q0.0 -- PWM 1 Сигнальная плата Q4.0 -- Встроенный в CPU Q0.2 Q0.3 PTO 2 Сигнальная плата Q4.2 Q4.3 Встроенный в CPU Q0.2 -- PWM 2 Сигнальная плата Q4.2 -- Руководство по программированию 6.2 Расширенные команды Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 207 Конфигурирования импульсного канала для PWM Чтобы подготовить функционирование PWM, сначала нужно сконфигурировать импульсный канал в конфигурации устройств, выбрав CPU, затем генератор импульсов (PTO/PWM), а затем PWM1 или PWM2. Разблокируйте генератор импульсов (триггерная кнопка). Если генератор импульсов разблокирован, то этому конкретному импульсному генератору назначается уникальное имя по умолчанию. Вы можете изменить это имя, редактируя поле "Name [Имя]:", но оно должно быть уникальным именем. Имена разблокированных генераторов импульсов становятся переменными в таблице переменных "constant", и будут предоставлены для использования в качестве параметра PWM команды CTRL_PWM. ВНИМАНИЕ Максимальная частота импульсных генераторов составляет 100 КГц для цифровых выходов CPU и 20 КГц для цифровых выходов сигнальной платы. Однако STEP 7 Basic не предупреждает вас, если вы сконфигурируете ось, максимальная скорость или частота по которой превышает аппаратные ограничения. Это может вызвать проблемы в вашем приложении, поэтому всегда обращайте внимание на то, чтобы не превысить максимальную частоту импульсов аппаратуры. У вас есть возможность переименовать генератор импульсов, добавить комментарий и назначить параметры следующим образом: ● Используемый генератор импульсов: PWM или PTO (выберите PWM) ● Источник вывода: встроенный в CPU или сигнальная плата ● База времени: миллисекунды или микросекунды ● Формат ширины импульсов: – Сотые (от 0 до 100) – Тысячные (от 0 до 1000) – Десятитысячные (от 0 до 10000) – Аналоговый формат S7 (от 0 до 27648) ● Время цикла: Введите значение своего времени цикла. Это значение может быть изменено только в конфигурации устройств. ● Начальная ширина импульсов: Введите значение своей начальной ширины импульсов. Это значение может быть изменено во время исполнения. |