Руководство по программированию 6 profinet 7 Двухточечная связь (PointtoPoint, PtP) 8
Скачать 3.76 Mb.
|
Создание повторно используемых кодовых блоков Для создания OB, FB, FC и глобальных DB используйте диалоговое окно "Add new block [Добавить новый блок]", которое открывается через "Program blocks [Программные блоки]" в дереве проекта. Когда вы создаете кодовый блок, вы должны выбрать язык программирования для этого блока. Не выбирайте язык программирования для DB, так как он только хранит данные. Основы программирования 5.3 Использование блоков для структурирования вашей программы Программируемый контроллер S7-1200 92 Системное руководство, 11/2009, A5E02669003-02 5.3.1 Организационный блок (OB) Организационные блоки служат для структурирования вашей программы. Они образуют интерфейс между операционной системой и программой пользователя. OB управляются событиями. Событие, например, диагностическое прерывание или интервал времени, побуждает CPU к исполнению OB. Некоторые OB имеют предопределенные стартовые события и поведение. OB программного цикла содержит вашу главную программу. Вы можете включить в свою пользовательскую программу боле одного OB программного цикла. В режиме RUN OB программного цикла выполняются с наименьшим уровнем приоритета и могут быть прерваны всеми другими видами обработки программы. OB запуска не прерывает OB программного цикла, так как CPU выполняет OB запуска до перехода в режим RUN. После обработки OB программного цикла CPU немедленно исполняет этот OB снова. Циклическая обработка является "нормальным" видом обработки для программируемых логических контроллеров. Во многих приложениях вся пользовательская программа содержится в одном OB программного цикла. Вы можете создавать другие OB для выполнения определенных функций, например, при запуске, для обработки прерываний и ошибок или для исполнения определенного программного кода через определенные интервалы времени. Эти OB прерывают исполнение OB программного цикла. Для создания новых OB в своей пользовательской программе используйте диалоговое окно "Add new block [Добавить новый блок]". В зависимости от уровня своего приоритета один OB может прерывать работу другого OB. Обработка прерываний всегда управляется событиями. Когда такое событие происходит, CPU прерывает исполнение программы пользователя и вызывает OB, который был спроектирован для обработки этого события. После завершения прерывающего OB CPU возобновляет исполнение программы пользователя с точки прерывания. CPU определяет порядок обработки прерывающих событий на основе приоритетов, назначенных отдельным OB. Каждое событие имеет определенный приоритет обслуживания. Несколько прерывающих событий могут быть объединены в классы приоритета. За дальнейшей информацией обратитесь к разделу главы Основы ПЛК об исполнении программы пользователя (стр. 39). Основы программирования 5.3 Использование блоков для структурирования вашей программы Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 93 Создание дополнительного OB внутри класса OB Вы можете создать несколько OB для своей пользовательской программы, в том числе для классов OB программного цикла и OB запуска. Для создания OB используйте диалоговое окно "Add new block [Добавить новый блок]". Введите имя для вашего OB и номер OB, который должен быть больше 200. Если вы создаете несколько OB программного цикла для своей пользовательской программы, то CPU исполняет отдельные OB программного цикла в порядке возрастания номеров, начиная с OB главного программного цикла (по умолчанию это OB 1). Например: после первого OB программного цикла (OB1) CPU исполняет второй OB программного цикла (например, OB 200). Конфигурирование режима функционирования OB Вы можете изменять параметры функционирования OB. Например, вы можете установить параметр времени для OB с запаздыванием или для циклического OB. 5.3.2 Функция (FC) Функция (FC) – это кодовый блок, который обычно выполняет определенную операцию с набором входных значений. FC сохраняет результаты этой операции в определенных местах памяти. Вы можете использовать FC для выполнения следующих задач: ● Стандартные и многократно выполняемые операции, например, математические расчеты. ● Выполнения технологических функций, например, для отдельных процессов управления, использующих двоичную логику. FC может также вызываться несколько раз в различных местах программы. Это повторное использование упрощает программирование часто повторяющихся задач. У FC нет связанного с ним экземплярного блока данных (DB). FC использует стек локальных данных для временных данных, используемых для расчета. Временные данные не сохраняются. Для длительного хранения данных выходная величина должна быть присвоена адресу в глобальной памяти, например, в M-памяти или в глобальном DB. Основы программирования 5.3 Использование блоков для структурирования вашей программы Программируемый контроллер S7-1200 94 Системное руководство, 11/2009, A5E02669003-02 5.3.3 Функциональный блок (FB) Функциональный блок (FB) – это кодовый блок, который использует экземплярный блок данных для своих параметров и статических данных. FB имеют переменную память, которая находится в блоке данных (DB) или в "экземплярном" DB. Экземплярный DB предоставляет блок памяти, связанный с экземпляром (или вызовом) FB, и хранит данные после исполнения FB. Вы можете назначить различным вызовам FB различные экземплярные DB. Экземплярный DB позволяет вам использовать один типовой FB для управления несколькими устройствами. Вы можете структурировать свою программу, тем что один кодовый блок вызывает FB и экземплярный DB. Затем CPU исполняет программный код в этом FB и сохраняет параметры блока и статические локальные данные в экземплярном DB. Когда исполнение FB заканчивается, CPU продолжает исполнение кодового блока, который вызвал FB. Экземплярный DB сохраняет значения для этого экземпляра FB. Эти значения находятся в распоряжении последующих вызовов этого функционального блока в том же самом или в других циклах сканирования. Повторно используемые кодовые блоки со связанной с ними памятью Обычно FB используется для управления последовательностью действий или устройствами, которые не заканчивают свою работу в течение одного цикла. Для сохранения рабочих параметров так, чтобы к ним можно было быстро обращаться от одного цикла к другому, каждый FB в вашей пользовательской программе имеет один или несколько экземплярных DB. Вызывая FB, вы также указываете экземплярный DB, содержащий параметры блока и статические локальные данные для этого вызова или "экземпляра" FB. Экземплярный DB сохраняет эти значения по окончании исполнения FB. Спроектировав FB для типовых задач управления, вы можете повторно использовать этот FB для нескольких устройств, выбирая различные экземплярные DB для различных вызовов FB. FB сохраняет в экземплярном DB входные (IN), выходные (OUT) и изменяемые (IN_OUT) параметры. Присваивание начальных значений Если входным, выходным или изменяемым параметрам функционального блока (FB) не присвоены значения, то используются значения, хранящиеся в экземплярном блоке данных (DB). В некоторых случаях вы должны назначить параметры. Вы можете назначить параметрам начальные значения в интерфейсе FB. Эти значения передаются в соответствующий экземплярный DB. Если вы не назначаете параметры, то используются значения, хранящиеся в настоящее время в экземплярном DB. Основы программирования 5.3 Использование блоков для структурирования вашей программы Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 95 Использование одного FB с несколькими DB На следующем рисунке показан OB, который трижды вызывает FB, используя разные блоки данных для каждого вызова. Эта структура позволяет одному и тому же FB управлять несколькими одинаковыми устройствами, например, двигателями, назначая каждому вызову того или иного устройства свой экземплярный блок данных. Каждый экземплярный DB хранит данные (например, скорость, длительность запуска и общее время работы) для отдельного устройства. В этом примере FB 22 управляет тремя отдельными устройствами, причем DB 201 хранит эксплуатационные данные для первого устройства, DB 202 хранит эксплуатационные данные для второго устройства, и DB 203 хранит эксплуатационные данные для третьего устройства. 5.3.4 Блок данных (DB) Вы можете создавать в своей пользовательской программе блоки данных (DB) для сохранения данных для кодовых блоков. Все программные блоки в программе пользователя могут обращаться к данным в глобальном DB, но экземплярный DB хранит данные для конкретного функционального блока (FB). Вы можете определить DB как предназначенный только для чтения. Данные, хранящиеся в DB, не удаляются, когда заканчивается исполнение соответствующего кодового блока. Имеется два вида DB: ● Глобальный DB хранит данные для кодовых блоков в вашей программе. Каждый OB, FB или FC может обратиться к данным в глобальном DB. ● Экземплярный DB хранит данные для конкретного FB. Структура данных в экземплярном DB отражает параметры (Input, Output и InOut) и статические данные для FB. (Временная память для FB в экземплярном DB не храниться.) Указание Хотя экземплярный DB хранит данные для конкретного FB, любой кодовый блок может получить доступ к данным в экземплярном DB. Основы программирования 5.4 Согласованность данных Программируемый контроллер S7-1200 96 Системное руководство, 11/2009, A5E02669003-02 5.4 Согласованность данных CPU поддерживает согласованность данных для всех элементарных типов данных (например, Word или DWord) и всех определяемых системой структур (например, IEC_TIMERS или DTL). Процесс чтения или записи такого значения не может быть прерван. (Например, CPU защищает доступ к значению типа DWord, пока все четыре байта DWord не будут прочитаны или записаны.) Чтобы гарантировать невозможность одновременной записи в одно и то же место памяти со стороны OB программного цикла и OB прерываний, CPU не выполняет OB прерываний, пока операция чтения или записи в OB программного цикла не будет завершена. Если в вашей пользовательской программе несколько значений в памяти используются OB программного цикла и OB прерываний, то ваша пользовательская программа должна также обеспечить, чтобы эти значения изменялись или считывались согласованно. Чтобы защитить доступ к совместно используемым значениям, вы можете использовать в своем OB программного цикла команды DIS_AIRT и EN_AIRT. ● Вставьте в кодовый блок DIS_AIRT, чтобы не допустить исполнения OB прерываний во время операции чтения или записи. ● Вставьте команды чтения или записи значений, к4оторые может изменить OB прерываний. ● Вставьте команду EN_AIRT в конце этой последовательности, чтобы отменить DIS_AIRT и разрешить исполнение OB прерываний. Коммуникационный запрос от устройства человеко-машинного интерфейса или другого CPU также может прервать исполнение OB программного цикла. Коммуникационные запросы также могут привести к проблемам с согласованностью данных. CPU гарантирует, что элементарные типы данных всегда будут считываться и записываться согласованно командами программы пользователя. Так как программа пользователя периодически прерывается коммуникационными запросами, то нет возможности гарантировать, чтобы несколько значений в CPU не обновлялись одновременно устройствами человеко-машинного интерфейса. Например, значения, отображаемые на экране устройства человеко-машинного интерфейса, могут происходить из различных циклов сканирования CPU. Команды двухточечной связи (Point-to-Point, PtP) и команды PROFINET (например, TSEND_C и TRCV_C) передают буфера данных, которые могут быть прерваны. Обеспечивайте согласованность данных для этих буферов, избегая операций чтения или записи в эти буфера как в OB программного цикла, так и в OB прерываний. Если же необходимо изменить значения в буфере для этих команд в OB прерываний, воспользуйтесь командой DIS_AIRT, чтобы отложить прерывание (OB прерываний или коммуникационное прерывание от устройства человеко-машинного интерфейса или другого CPU), пока не будет выполнена команда EN_AIRT. Указание Использование команды DIS_AIRT задерживает обработку OB прерываний до тех пор, пока не будет выполнена команда EN_AIRT, оказывает воздействие на латентность прерывания (интервал времени от возникновения события до исполнения OB прерываний) в вашей пользовательской программе. Основы программирования 5.5 Выбор языка программирования Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 97 5.5 Выбор языка программирования В качестве языка программирования вы можете выбрать цепную логическую схему (ladder logic, LAD), называемую также контактным планом, или функциональную блок- схему (Function Block Diagram, FBD), называемую также функциональным планом. Язык программирования LAD LAD – это графический язык программирования. Это представление основано на схемах электрических соединений. Элементы схемы, например, замыкающий и размыкающий контакты, и катушки реле соединены в сети. Для создания логики для сложных операций вы можете вставлять разветвления для формирования параллельных цепей. Параллельные цепи открываются вниз или подключаются непосредственно к шине электропитания. Разветвления оканчиваются вверх. LAD предоставляет команды в виде блоков для ряда функций, например, арифметических операций, таймеров, счетчиков и пересылок. При создании сетей LAD примите во внимание следующие правила: ● Каждая сеть LAD должна завершаться катушкой или блоковой командой. Не завершайте сеть ни командой сравнения, ни командой распознавания фронта (падающего или нарастающего). ● Вы не можете создавать разветвления, которые могут привести к изменению направления потока сигнала. ● Вы не можете создать разветвление, вызывающее короткое замыкание. Основы программирования 5.5 Выбор языка программирования Программируемый контроллер S7-1200 98 Системное руководство, 11/2009, A5E02669003-02 Язык программирования FBD Как и LAD, FBD также является графическим языком программирования. Представление логики здесь основано на графических логических символах, используемых в булевой алгебре. Математические и другие сложные функции могут быть представлены непосредственно в соединении с логическими блоками. Чтобы создать логику для сложных операций, вставляйте параллельные ветви между блоками. Значение EN и ENO для блоковых команд Как LAD, так и FBD, используют для некоторых блоковых команд понятие "поток сигнала" (EN и ENO). Некоторые команды (например, арифметические операции и команды пересылки) отображают параметры для EN и ENO. Эти параметры относятся к потоку сигнала и определяют, выполняется ли команда в этом цикле. ● EN (Enable In = разблокировать вход) является булевым входом для блоков в LAD и FBD. Поток сигнала (EN = 1) должен присутствовать на этом входе, чтобы блоковая команда выполнялась. Если вход EN блока LAD присоединен непосредственно к левой шине электропитания, то блок всегда будет исполняться. ● ENO (Enable Out = разблокировать выход) является булевым выходом для блоков в LAD и FBD. Если у блока имеется поток сигнала на входе EN и блок выполняет свою функцию без ошибок, то выход ENO передает поток сигнала (ENO = 1) следующему элементу. Если в исполнении блоковой команды обнаружена ошибка, то поток сигнала прерывается (ENO = 0) у блоковой команды, которая вызвала ошибку. Программный редактор Входы/выходы Операнды Тип данных LAD EN, ENO Поток сигнала BOOL EN I, I:P, Q, M, DB, Temp, Поток сигнала BOOL FBD ENO Поток сигнала BOOL Основы программирования 5.6 Защита от копирования Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 99 5.6 Защита от копирования С помощью защиты от копирования или защиты "ноу-хау" вы можете защитить один или несколько кодовых блоков (OB, FB или FC) в своей программе от несанкционированного доступа. Для ограничения доступа к кодовому блоку вы можете ввести пароль. Если вы сконфигурируете блок для защиты "ноу-хау", то код в этом блоке будет доступен только после ввода пароля. Для создания защиты от копирования для блока выберите команду "Know how protection [Защита ноу-хау]" в меню "Edit [Редактирование]". Затем вы вводите пароль, который разрешает доступ к блоку. Защита паролем предотвращает несанкционированное чтение или изменение кодового блока. Без пароля вы можете считывать только следующую информацию о кодовом блоке: ● Название, комментарий и свойства блока ● Параметры передачи (IN, OUT, IN_OUT, Return) ● Структура вызова программы ● Глобальные переменные в перекрестных ссылках (без информации о месте использования), однако локальные переменные скрыты Основы программирования 5.7 Загрузка элементов вашей программы в CPU Программируемый контроллер S7-1200 100 Системное руководство, 11/2009, A5E02669003-02 5.7 Загрузка элементов вашей программы в CPU Вы можете загрузить элементы своего проекта из устройства программирования в CPU. При загрузке проекта CPU сохраняет программу пользователя (OB, FC, FB и DB) в постоянной памяти. Вы можете загрузить свой проект из устройства программирования в CPU из любого из следующих мест: • "Дерево проекта": Щелкните правой клавишей мыши на элементе программы, а затем выберите в контекстном меню пункт "Download [Загрузить]". • Меню "Online": Щелкните на опции "Download to device [Загрузить в устройство]". • Панель инструментов: Щелкните на символе "Загрузить в устройство ". |