Язык программирования контроллера ориентирован на структурное программирование, которое предполагает разделение программы пользователя на отдельные функционально завершенные структурные единицы - блоки. Это дает пользователю следующие преимущества:
- простое и наглядное программирование, в том числе и больших по объему программ;
- простую организацию программы;
- возможность модернизации программы с минимальными затратами;
- возможность стандартизации разделов программы;
- быструю отладку программы.
Для реализации возможности структурирования программ пользователя имеются различные типы блоков:
OВ - организационные блоки. Предназначены для управления последовательностью выполнения частей программы пользователя. Они программируются пользователем, но вызываются системной программой и обеспечивают взаимодействие между системной программой и программой пользователя;
РВ - программные блоки. Предназначены для программирования основной обработки;
FB - функциональные блоки. Предназначены для программирования часто повторяющихся сложных функций (вычисления, сообщения, функции регулирования и т.д.);
|
|
DB - блоки данных. Служат для запоминания констант, данных с байтной или словной организацией, текстов, используются в командах с индексной адресацией; позволяют вести обработку массивов данных. Блоки данных по своим функциям отличаются от перечисленных выше блоков. Они содержат не команды, а данные, являющиеся операндами. Обращение к блокам данных происходит через команды загрузки и передачи.
NB0 - блок назначений. Предназначен для описания символических имен переменных, связывая их с абсолютными именами переменных. Например, входной бит Е 2.4 можно обозвать как “КонВык24”, что, допустим, означает “сигнал с концевого выключателя номер 24”, при этом Е 2.4 - это абсолютное имя, а “КонВык24” - это символическое имя.
Пользователь может программировать все предоставленные ему организационные, программные и функциональные блоки. Последовательность программирования и размещение блоков в памяти контроллера - произвольная. Последовательность обработки программных, функциональных блоков задается в организационных блоках командами условного и безусловного вызова. Программные блоки, в свою очередь, позволяют вызывать другие программные и функциональные блоки в любой комбинации. Это дает возможность строить иерархическую древовидную структуру пользовательской программы с выделением уровней управления. При этом не рекомендуется использовать более 8 вложений блоков.
Для дополнительного структурирования блоков программы предназначена возможность сегментирования блоков. Каждый организационный и программный блок может иметь от 1 до 10 сегментов. Функциональные блоки обязательно содержат два сегмента: в первом сегменте всегда располагается заголовок блока, а во втором - тело блока. Блоки данных и блок назначений не имеют деления на сегменты.
|
|
Разделение программы на отдельные блоки напоминает организацию программ на языках высокого уровня. Например, в сравнении с PASCAL организационный блок аналогичен телу основной программы, программный блок - это процедура, а функциональный блок - это функция.
Пользователь с помощью организационных блоков может управлять режимами обработки программы или отдельных блоков программы. Предусмотрены следующие режимы обработки пользовательской программы (частей программы):
1) обработка при переходе в режим СТОП; вызывается блоком OB0;
2) циклическая обработка программы; обеспечивается организационным блоком OB1. Программа, внесенная в этот блок, обрабатывается циклически;
3) обработка по сообщению; производится при изменении состояния любого из восьми каналов младшего байта входов. При этом виде обработки циклическая обработка программы прерывается на границе блоков, вызывается и обрабатывается один из организационных блоков: OB2...OB9;
4) обработка с управлением по времени; производится по прерываниям от системного таймера. При этом циклическая обработка программы прерывается на границе блоков, вызывается и обрабатывается один из организационных блоков: OB10...OB18;
5) обработка по возникновению ситуаций включения, перезапуска ПКЛ, ошибок модулей и др., при вызове блоков OB19...OB50.
Возможна организация комбинированной обработки, когда в программе присутствуют организационные блоки, соответствующие разным видам обработки.
Выполнение вызванного блока заканчивается командой BE – “Конец блока”. “ИНТЕРВЬЮ” автоматически вставляет в конец блока эту команду. После выполнения команды BE обработка программы продолжается в блоке, где находился вызов обработанного блока, с команды, стоящей после команды вызова.
Для начала изучения языка S300 на лабораторных работах достаточно писать программы в одном блоке – в ОВ1, в конце блока ставится BE – обозначение конца блока.
Блок OB1 - блок циклической обработки программы пользователя. Циклическая обработка - основной (общепринятый) вариант обработки пользовательских программ в программируемом контроллере. Циклическое выполнение программы начинается с первой команды, запрограммированной в OB1, и заканчивается выполнением команды BE. После выполнения системной программы сканирования модулей ввода/вывода управление вновь передается на начало OB1, на первую команду и т.д.
При изучении системы команд С300 и решении лабораторных заданий по данному методическому пособию обратите внимание на формат индексных команд, они пригодятся в п.4.9 и на лабораторной работе.