теках, входящих в состав пакета STEP 7 (например, IECфункции или функции для преобразования S5/S7).
Вызовы блоков организует пользователь путем размещения команд передачи управления другому блоку (команд вызова). При выполнении команды вызова ОС сохраняет в стеке блоков данные для точки возврата в вызывающий блок (адрес следующей команды, состояние регистров) и передает управление на первую команду вызываемого блока. Как только вызываемый блок выполнен, исполнение прерванного блока возобновляется с команды, следующей за вызовом блока.
Команду “Конец блока” устанавливает редактор блока сразу при создании блока. Она не видна пользователю. Для завершения блока, например, в середине программы, пользователь может применить специальные команды (BE, BEC).
Глубина вложения, т.е. количество блоков, которые могут быть вложены друг в друга при выполнении задачи любого приоритетного класса (например, на основе OB1), зависит от конкретного CPU (8 в S7-300; 21 в S7-400).
Прерывания программы всегда выполняет только ОС. Если прерывающая программа имеет более высокий приоритет, то ОС прерывает текущую программу и передает управление на первую команду соответствующего блока OB.
Приоритеты для блоков OB в S7-300 CPU заданы операционной системой и не могут изменяться пользователем. В S7400 пользователь может изменить приоритеты блоков прерываний (при задании свойств CPU в утилите HW Config).
Для редактирования блоков в окне SIMATIC Manager перейдите к папке Blocks. Если кликнуть любой блок, откроется редактор LAD,STL,FBD, либо редактор SCL, если в проекте существует исходный файл выбранного блока.
Чтобы создать новый блок в контекстном меню выбирайте пункт Blocks -> Insert New Object, либо в главном меню пункт Insert -> S7 Block.
50
Редактор блоков LAD/STL/FBD предлагает пользователю 3 стандартных для PLC языка программирования.
Языки LAD (Ladder Logic) и FBD (Function Block Diagram) основаны на графическом способе представления программы в виде соответствующих элементов. Язык STL (Statement List) – это язык команд S7 CPU (ассемблер) и позволяет реализовать программу максимально эффективно, с использованием всех ресурсов CPU.
Программирование в LAD подобно рисованию релейноконтактной схемы (рис. 5.3). Для логических операций, например, используются такие элементы, как контакты и катушки. Этот язык программирования рассчитан на тех, кто привык работать с электрическими схемами.
Язык FBD представляет взаимосвязь элементов прямоугольников (рис. 5.4). Символ в прямоугольнике указывает на функцию (например, & – логическая функция И). Этот язык рассчитан на программистов, инженеров-схемотехников.
Каждая строка в программе на языке STL – это отдельная команда (рис. 5.5). Она содержит саму инструкцию и данные (операнд). В STL программе не требуется разбиение ее на сегменты. Основной недостаток STL – необходимость помнить мнемоники команд и трудность восприятия программы.
Можно написать цепи программы или сегменты на языке LAD или FBD и затем преобразовывать в STL. Выбор языка программирования осуществляется через меню “View”. В этом меню можно выбрать одно из трех представлений программы: LAD, STL или FBD. Однако результат этого преобразования не всегда является наиболее эффективным решением для STL (программа, созданная непосредственно на STL, может быть короче).
Обратное преобразование из STL в LAD или FBD не всегда возможно (причины: более одной логической операции в сегменте; отсутствие команд NOP 0 и т.д.). Сегменты программы, которые не могут быть преобразованы, остаются в
STL.
51
Рис. 5.3. Программирование в LAD
Рис. 5.4. Программирование в FBD
Рис. 5.5. Программирование в STL
52
Основными элементами редактора блоков LAD/STL/FBD являются: таблица деклараций; раздел кода; элементы.
Таблица деклараций (описания переменных) содержит интерфейс блока (block interface) с остальной программой. Он состоит из параметров блока (вход, выход и входные и выходные параметры), а также – в случае функциональных блоков – статических локальных данных. Временные локальные данные не входят в интерфейс блока. Интерфейс блока определяется в таблице описания переменных и инициализируется вместе с ними при вызове.
Программный редактор проверяет соответствие инициализации параметров вызываемого блока и интерфейса вызываемого блока. Для этого редактор использует метки времени: интерфейс вызываемого блока должен быть старше (иметь более раннюю временную метку), чем код вызывающего блока, то есть последнее изменение интерфейса должно быть сделано до вызова блока. Программный редактор обновляет временную метку интерфейса при изменении числа параметров, или когда меняется тип данных или значение по умолчанию.
Раздел кода содержит саму программу, разделенную, если это необходимо, на отдельные цепи, называемые Network.
Содержимое окна элементов зависит от выбранного языка программирования. Элементы представляют собой функции, функциональные блоки или библиотеки, как часто используемые, так и специальные. Чтобы добавить элемент в программу, можно дважды щелкнуть на него или перетащить его указателем.
При редактировании блоков в FBD или LAD часто используемые элементы представлены кнопками в панели инструментов. Можно щелкать на них мышью, чтобы установить эти элементы на выбранную в программе позицию. Другие элементы можно вставить в программу из списка в любую п о- зицию перетаскиванием или в выделенную позицию – дважды щелкнув на элементе из списка. Соединять элементы можно
53
посредством мыши, захватывая выход и перетаскивая его к нужному выходу.
Для добавления нового сегмента достаточно нажать на кнопку “New Network” в панели инструментов, после текущего сегмента добавляется новый сегмент.
При программировании на STL нужно знать инструкции для записи программы. Можно получить информацию о синтаксисе и функциональном назначении через подсказку: Help on STL. В справке доступна следующая информация:
“Statement List Instructions” – описывает все инструкции,
которые имеются в этом языке программирования; Working with Statement List (работа со списком команд) – описывает список команд и основы синтаксиса, ввод и наблюдение констант, типы блоков, контакты и состояния сигнала.
При программировании на STL окно элементов содержит только список существующих блоков, которые могут быть вызваны из текущего блока. Сегменты вставляются в программу так же, как в редакторе LAD/FBD.
После редактирования блока его необходимо сохранить, что возможно только в случае отсутствия синтаксических ошибок. Вы можете сохранить блок в проекте, выбирая пункт
меню File -> Save или через кнопку.
Вы можете загрузить блок из активного окна редактора
непосредственно в контроллер. Для этого Вы можете использовать меню File -> Download или кнопку.
Другой способ загрузить блок в контроллер - в окне SIMATIC Manager , выделить один или несколько блоков и воспользоваться пунктом меню PLC-> Download. При этом необходимо, чтобы к устройству программирования был предварительно подключен контроллер или активирован его программный эмулятор.
Для активации/деактивации тестовой функции Monitor: кликнуть на кнопку Monitor или выбрать пункт меню Debug -> Monitor. Режим Monitor позволяет оценить выполнение фрагмента программы для выделенного сегмента, а также
54