- •Основы языка
- •Содержание
- •Введение
- •1 Общие сведения
- •1.1 Программируемый логический контроллер
- •1.2 Плк Siemens simatic s7-300
- •1.3 Визуальный контроль индикаторов в s7-300
- •2 Типовая архитектура процессораs7
- •2.1 Области памяти cpu
- •2.2 Регистры cpu
- •3 Основы разработки программы
- •3.1 Программы в cpu
- •3.2 Принцип выполнения программы в s7-cpu
- •3.3 Типы блоков
- •3.4 Типы программ
- •3.5 Способы обработки программы
- •3.6 Иерархия вызовов в программе пользователя
- •3.7 Типы данных
- •3.8 Обращение к данным в областях памяти
- •4 Обзор пакетаstep7lite
- •4.1 Создание решения автоматизации
- •4.2 Структура пользовательского интерфейса Step 7 Lite
- •4.3 Окно проекта в Step 7 Lite
- •4.3 Справка и документация по Step 7 Lite
- •5 Работа с проектом вstep7lite
- •5.1 Понятие проекта в Step 7 Lite
- •5.2 Работа с проектом
- •5.3 Определение символьных имен
- •5.4 Структура и компоненты таблицы символьных имен
- •5.5 Работа с блоками
- •5.6 Редактирование элементов lad в области кода
- •5.7 Создание блоков данных
- •5.8 Установка online-соединения с процессором
- •5.9 Загрузка в цпу и обратная загрузка в программатор
- •Библиографический список
3.6 Иерархия вызовов в программе пользователя
Программа пользователя выполняется через вызовы составляющих ее блоков. Порядок и вложенность вызовов блоков называется иерархией вызовов. Глубина вложенности, т.е. количество блоков, которые могут быть вложены друг в друга при выполнении задачи любого приоритетного класса (например, на основе ОВ1), зависит от конкретного ЦПУ. На рисунке 3.5 показаны порядок и глубина вложенности вызовов блоков внутри цикла программы.
Рисунок 3.5 – Иерархия вызовов в программе пользователя
Существует стандартный порядок создания блоков:
блоки создаются сверху вниз, т.е. начиная с верхнего ряда блоков;
вызываемый блок должен существовать, т.е. внутри ряда блоки создаются справа налево;
последним создается блок ОВ1.
Применяя эти правила на практике, для рисунка 3.5, получим следующую последовательность создания блоков:
FC1→FB1+экземпляр DB1→DB1→SFC1→FB2+экземпляр DB2→OB1.
На рисунке 3.6 показана последовательность вызовов блоков в программе пользователя. Программа вызывает второй блок, который полностью выполняется. Как только второй (вызываемый) блок выполнен, выполнение блока, из которого произведен вызов, продолжается с команды, следующей за вызовом блока.
Рисунок 3.6 – Вызов блока в программе пользователя
Перед программированием блока необходимо определить, какие данные будут использоваться программой, другими словами, необходимо объявить переменные блока.
3.7 Типы данных
Контроллеры SIMATIC S7 могут работать со следующими типами данных:
Элементарные типы данных (до 32 бит)
Битовые типы данных:
BOOL (Бит)
Бит – это единица, соответствующая одному двоичному разряду. Два возможных значения бита обозначаются «0» (FALSE) и «1» (TRUE);
BYTE (Байт)
Байт состоит из 8 бит, которым соответствуют адреса от 0 до 7. Байт могут образовывать биты, адрес младшего из которых кратен 8 (например: 0, 8, 16 и т.д.). В контроллерах SIMATIC S7 байт может интерпретироваться как просто байт (набор бит) или как ASCII-символ;
WORD (Слово)
Следующая после байта по величине единица, длина 16 бит. Любые два соседних байта можно объединить в слово, старшим будет являться байт с меньшим адресом. Адрес слова – это адрес байта с меньшим адресом. В контроллерах SIMATIC S7 слово может интерпретироваться как просто слово (набор бит), целое число со знаком, дата, время и т.д.;
DWORD (Двойное слово)
Любые два соседних слова можно объединить в двойное слово, его длина 32 бита или 4 байта. Старшим словом (байтом) является слово (байт) с меньшим адресом. Адрес двойного слова – это адрес байта с меньшим адресом. В контроллерах SIMATIC S7 двойное слово можно интерпретировать как просто слово, длинное целое число со знаком, вещественное число в формате IEEE и т.д.;
CHAR (Литера)
Переменная типа CHAR (character) занимает один байт. Тип данных CHAR представляет одну литеру в ASCII-формате, например, ′А′;
Математические типы данных:
INT (Целое число)
Переменная типа INT (integer) хранится как целое число (16-битное число с фиксированной запятой). Тип данных INT не имеет специального идентификатора. Сигнальные состояния битов с 0 по 14 представляют цифровые разряды (позиции) числа. Сигнальное состояние 15-го бита представляет знак («0» – положительное число, «1» – отрицательное число);
DINT (Двойное целое число)
Переменная типа DINT хранится как целое число (32-битное число с фиксированной запятой). Целое сохраняется в DINT-переменной, когда оно превышает 32767 или меньше -32768, или когда число предваряется идентификатором типа L#.
Под переменную DINT отводится двойное слово. Сигнальные состояния битов с 0 по 30 представляют цифровые позиции числа. Знак хранится в 31 бите;
REAL (Вещественный)
Переменная типа REAL представляет дробь и хранится как 32-битное число с плавающей запятой (десятичной точкой). Целое число сохраняется в формате REAL, если в нем за десятичной точкой записан ноль.
В экспоненциальном представлении вы можете предварить «е» или «Е» целым числом или дробью из семи соответствующих чисел и знака. Цифры, которые расположены за «е» или «Е» представляют экспоненту по базе 10. Step 7 производит преобразование REAL-переменной во внутреннее представление числа с плавающей точкой.
Временные типы данных:
S5TIME
Переменная типа S5TIME используется в базовых языках STL, LAD и FBD для установки таймеров системы SIMATIC, занимает 16-разрядное слово (см. рисунок 3.7).
Время задается в часах, минутах, секундах и миллисекундах. Временная база (time base) может принимать следующие значения: 10 мс (0000), 100 мс (0001), 1с (0010), 10 с (0011). Время определяется как результат произведения временной базы на значение таймера.
Рисунок 3.7 – Тип данных S5TIME
DATE (Дата)
Переменная типа DATE хранится в машинном слове как число с фиксированной точкой без знака. Содержимое переменной соответствует количеству дней, начиная с 01.01.1990. Ее представление показывает год, месяц и день, разделенные дефисом.
TIME (Время)
Переменная типа TIME занимает одно двойное слово. Ее представление содержит информацию о днях (d), часах (h), минутах (m), секундах (s), миллисекундах (ms). Отдельные элементы этих данных могут быть пропущены. Содержимое переменной интерпретируется в миллисекундах и хранится как 32-битное число с фиксированной точкой со знаком.
TIME_OF_DAY (Время суток)
Переменная типа TIME_OF_DAY занимает одно двойное слово. Содержание переменной интерпретируется как число миллисекунд, начиная с начала дня (0.00 часов) и сохраняется в виде 32-битного числа с фиксированной точкой без знака. Ее представление содержит информацию о часах, минутах и секундах, разделенных двоеточием. Миллисекунды, которые следуют за секундами, отделены от них десятичной точкой. Миллисекунды могут отсутствовать.
Сложные типы данных (более 32 бит)
Step 7 определяет следующие четыре сложных типа данных:
DATA_AND_TIME (дата и время суток в двоично-десятичном или BCD-коде);
STRING (символьная строка, в которой может быть до 254 символов);
ARRAY (массив, совокупность переменных одного типа);
STRUCT (совокупность переменных разного типа);
Данные типов STRING, ARRAY и STRUCT должны быть заранее определены пользователем – для типа STRING задается длина символьной строки, а для типов ARRAY и STRUCT определяются состав и размеры данных-компонентов;
Типы данных, определенные пользователем (более 32 бит)
User Data Type (UDT) – Пользовательский тип данных. Соответствует структуре (комбинация компонентов любых типов) с действием на глобальном уровне. Вы можете воспользоваться пользовательским типом данных, если в вашей программе часто фигурирует структурный тип и переменные, или вы хотите структуре данных присвоить свое имя.
Типы UDT обладают глобальным действием, т.е. они описываются один раз и доступны для использования во всех блоках.
При объявлении переменных определяются следующие их свойства:
символическое имя;
тип данных;
видимость переменной.
Переменные могут быть объявлены:
в глобальной символьной таблице (элементарные типы данных);
в таблице описаний глобального блока данных (все типы данных);
в таблице описаний логического блока (ОВ, FB и FC).