- •Содержание
- •5. Элементы языка программирования 66
- •6. Библиотека стандартных функциональных блоков 77
- •Введение
- •Общие сведения
- •Программистская модель плк с300
- •Внешний вид контроллера
- •Модули ввода/вывода
- •Распределение памяти контроллера
- •Программистская модель контроллера.
- •Регистры и флаги
- •Области операндов контроллера
- •Отображение входов и выходов
- •Область данных
- •Область меток
- •Область таймеров
- •Область счётчиков
- •Область периферии
- •Область расширенной периферии
- •Структура и обработка технологических программ
- •Система команд лмк
- •Логические команды
- •Команды присвоения битных операндов
- •Команды опроса битных переменных
- •Команды переходов
- •Команды пересылки
- •Арифметические команды
- •Команды сравнения
- •Логические байтовые и словные команды
- •Байтовые и словные команды сдвига
- •Индексная адресация.
- •Счетчики
- •Команды обработки счётчиков
- •Последовательность программирования счётчика
- •Примеры программирования счётчика
- •U е 5.0 ;Если сработал фотоэлемент на входе e5.0
- •Формат слова уставки счётчика
- •Таймеры
- •Команды обработки таймеров
- •Последовательность программирования таймера
- •Примеры программирования таймера
- •Формат слова уставки таймера
- •Организационные команды
- •Команды вызова, активизации и завершения блоков
- •Команды блокировки, деблокировки, задания допустимой длительности скана
- •Команды структурирования текста
- •Команды обработки канала связи
- •Элементы языка программирования
- •Организационные блоки
- •Особенности прерывания циклической обработки блоками ob2...Ob18
- •Программные блоки
- •Функциональные блоки
- •Формат функциональных блоков
- •Особенности использования формальных параметров
- •Блоки данных
- •Формат и использование блока назначений nb0
- •Комментарии к программе
- •Комментарий к строке
- •Комментарий к операнду
- •Комментарий к элементу цепи ркс и к цепи ркс
- •Библиотека стандартных функциональных блоков
- •Блоки организации связи по каналу “эвм”
- •Блоки обработки системы реального времени
- •Арифметические блоки
- •Блоки обработки модулей расширенной периферии
- •Системные блоки
- •Блоки регулирования
Область счётчиков
Счётчики используются для подсчета внешних и внутренних событий по некоторым условиям. Можно одновременно считать в прямом и в обратном направлениях. Можно прочитать как логическое, так и цифровое состояние счётчика. Под каждый счётчик в области памяти данных отводится 4 байта. Область счётчиков расположена по адресам 28A00H...291FFH.
старшие адреса памятимладшие адреса памяти
Рис. 6. Структура адресного пространства счётчиков.
Область периферии
Через область периферии возможен непосредственный (минуя отображение) доступ к модулям входов/выходов. Доступ возможен только к модулям, установленным в центральном блоке. Команды, обращающиеся к области периферии, не затрагивают областей отображения соответствующих переменных (входов или выходов). Область периферии не имеет физических адресов, т.к. доступ к ней осуществляется через модуль контроля и управления. Доступ осуществляется через зону адресов 70000H...701FFH. Структура адресного пространства периферии представлена на рис. 3.
Область расширенной периферии
Через область расширенной периферии осуществляется доступ к модулям специальной обработки (модулям аналогового ввода/вывода, быстродействующих счётчиков, управления электроприводами, коммутаторы сети связи и др.), устанавливаемым только в центральном блоке. Обращение к этой области осуществляется с помощью специальных операндов, называемых байтами и словами расширенной периферии. Область расширенной периферии расположена по адресам 2F300H...2F4FFH. Необходимо помнить, что обращение к этим адресам ведется непосредственно из программы пользователя. Команды обращения к расширенной периферии позволяют встраивать аппаратные модули, расширяющие возможности контроллера без изменения системной программы контроллера. Протокол работы в этом случае формируется из набора команд работы с расширенной периферией в программе пользователя. Структура адресного пространства расширенной периферии представлена на рис. 3.
Структура и обработка технологических программ
Язык программирования контроллера ориентирован на структурное программирование, которое предполагает разделение программы пользователя на отдельные функционально завершенные структурные единицы - блоки. Это дает пользователю следующие преимущества:
простое и наглядное программирование, в том числе и больших по объему программ;
простую организацию программы;
возможность модернизации программы с минимальными затратами;
возможность стандартизации разделов программы;
быструю отладку программы.
Для реализации возможности структурирования программ пользователя имеются различные типы блоков:
OВ - организационные блоки. Предназначены для управления последовательностью выполнения частей программы пользователя. Они программируются пользователем, но вызываются системной программой и обеспечивают взаимодействие между системной программой и программой пользователя;
РВ - программные блоки. Предназначены для программирования основной обработки;
FB - функциональные блоки. Предназначены для программирования часто повторяющихся сложных функций (вычисления, сообщения, функции регулирования и т.д.);
DB - блоки данных. Служат для запоминания констант, данных с байтной или словной организацией, текстов, используются в командах с индексной адресацией; позволяют вести обработку массивов данных. Блоки данных по своим функциям отличаются от перечисленных выше блоков. Они содержат не команды, а данные, являющиеся операндами. Обращение к блокам данных происходит через команды загрузки и передачи.
NB0 - блок назначений. Предназначен для описания символических имен переменных, связывая их с абсолютными именами переменных. Например, входной бит Е 2.4 можно обозвать как “КонВык24”, что, допустим, означает “сигнал с концевого выключателя номер 24”, при этом Е 2.4 - это абсолютное имя, а “КонВык24” - это символическое имя.
Пользователь может программировать все предоставленные ему организационные, программные и функциональные блоки. Последовательность программирования и размещение блоков в памяти контроллера - произвольная. Последовательность обработки программных, функциональных блоков задается в организационных блоках командами условного и безусловного вызова. Программные блоки, в свою очередь, позволяют вызывать другие программные и функциональные блоки в любой комбинации. Это дает возможность строить иерархическую древовидную структуру пользовательской программы с выделением уровней управления. При этом не рекомендуется использовать более 8 вложений блоков.
Для дополнительного структурирования блоков программы предназначена возможность сегментирования блоков. Каждый организационный и программный блок может иметь от 1 до 10 сегментов. Функциональные блоки обязательно содержат два сегмента: в первом сегменте всегда располагается заголовок блока, а во втором - тело блока. Блоки данных и блок назначений не имеют деления на сегменты.
Разделение программы на отдельные блоки напоминает организацию программ на языках высокого уровня. Например, в сравнении с PASCAL организационный блок аналогичен телу основной программы, программный блок - это процедура, а функциональный блок - это функция.
Пользователь с помощью организационных блоков может управлять режимами обработки программы или отдельных блоков программы. Предусмотрены следующие режимы обработки пользовательской программы (частей программы):
обработка при переходе в режим СТОП; вызывается блоком OB0;
циклическая обработка программы; обеспечивается организационным блоком OB1. Программа, внесенная в этот блок, обрабатывается циклически;
обработка по сообщению; производится при изменении состояния любого из восьми каналов младшего байта входов. При этом виде обработки циклическая обработка программы прерывается на границе блоков, вызывается и обрабатывается один из организационных блоков: OB2...OB9;
обработка с управлением по времени; производится по прерываниям от системного таймера. При этом циклическая обработка программы прерывается на границе блоков, вызывается и обрабатывается один из организационных блоков: OB10...OB18;
обработка по возникновению ситуаций включения, перезапуска ПКЛ, ошибок модулей и др., при вызове блоков OB19...OB50.
Возможна организация комбинированной обработки, когда в программе присутствуют организационные блоки, соответствующие разным видам обработки.
Выполнение вызванного блока заканчивается командой BE – “Конец блока”. “ИНТЕРВЬЮ” автоматически вставляет в конец блока эту команду. После выполнения команды BE обработка программы продолжается в блоке, где находился вызов обработанного блока, с команды, стоящей после команды вызова.
Для начала изучения языка S300 на лабораторных работах достаточно писать программы в одном блоке – в ОВ1, в конце блока ставится BE – обозначение конца блока.
Блок OB1 - блок циклической обработки программы пользователя. Циклическая обработка - основной (общепринятый) вариант обработки пользовательских программ в программируемом контроллере. Циклическое выполнение программы начинается с первой команды, запрограммированной в OB1, и заканчивается выполнением команды BE. После выполнения системной программы сканирования модулей ввода/вывода управление вновь передается на начало OB1, на первую команду и т.д.
При изучении системы команд С300 и решении лабораторных заданий по данному методическому пособию обратите внимание на формат индексных команд, они пригодятся в п.4.9 и на лабораторной работе.