Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
срв.doc
Скачиваний:
32
Добавлен:
26.04.2019
Размер:
1.71 Mб
Скачать

5. Язык stl на примере контроллера s7-200. Пример: Разветвленная программа на языке stl.

Серьезные программы пишутся на языке STL. Работа ведется с битовым 8-уровневым бездонным стеком.

Нормально разомкнутые контакты

Первая команда программы загружается на вершину стека. Для этого используется команда LD. Например, в программе реверсивного включения АД команда LD I0.0 загружает бит I0.0 на вершину стека.

Далее, если в схеме идут нормально разомкнутые контакты, то вызываются команды A (And – И) или O (Or – ИЛИ).

А вызывается при последовательном включении следующего контакта, а команда

О – при параллельном включении контакта.

В нашей программе Q0.0 соединен параллельно, а I0.0 соединен последовательно к двум предыдущим контактам. Ниже приведем полную программу на языке STL.

LD I0.0 //загрузка бита I0.1

O Q0.0 // операция ИЛИ

A I0.1 // операция И

= Q0.0 // операция копирования

Команды A и O выполняют операцию И или ИЛИ между битом-операндом и битом с вершины стека. Результат операции записывается в вершину стека, вместо предыдущего бита.

Команда = Q0.0 копирует бит с вершины стека на бит Q0.0.

Нормально замкнутые контакты

Если первый контакт программы нормально замкнутый контакт, то используется команда загрузки LDN. Эта команда вначале инвертирует бит, а затем загружает на вершину стека.

Например, в ниже приведенной программе первый бит I0.1 – нормально замкнутый контакт. Для загрузки этого бита в стек следует выполнить команду LDN I0.1.

При последовательном соединении нормально замкнутого контакта с другим битовым значением в языке STL используют команду AN (операция НЕ-И), а при параллельном соединении – команду ON (операция НЕ-ИЛИ). Эти команды выполняют операции И или ИЛИ с инвертированным значением бита-операнда и бита, который находится на вершине стека.

Тем самым, наша программа на языке STL выглядит так:

LDN I0.0 //загрузка бита I0.1

ON Q0.0 // операция ИЛИ

AN I0.1 // операция И

= Q0.0 // операция копирования

Стековые операции

При создании разветвленных программ, промежуточные результаты приходится сохранять в стеке. В этом случае в стеке может находиться несколько битов. Для работы с таким стеком в STL имеется специальные команды, которых и рассмотрим ниже.

1. Логическое И двух битов стека - ALD

Э та команда выполняет операцию И между двумя битами с вершины стека. Результат загружается в вершину стека. После выполнения ALD глубина стека уменьшается на единицу. Здесь S0 = iv0 AND iv1.

2. Логическое ИЛИ двух битов стека – OLD

Э та команда выполняет операцию ИЛИ между двумя битами с вершины стека. Результат загружается в вершину стека. После выполнения ALD глубина стека уменьшается на единицу. Здесь S0 = iv0 OR iv1.

Пример 2. Реверсивное включение асинхронного двигателя (Включение Вперед)

В STL этот фрагмент программы имеет следующий вид:

LD I0.2 // Загрузка I0.2

LD I0.0 // Загрузка I0.0

O Q0.0 //Операция ИЛИ I0.0 и Q0.0

ALD //Операция И вершины стека и бита I0.2

AN Q0.1 //Операция НЕ-И вершины стека и бита Q0.1

= Q0.0 //Копирования вершины стека на выход Q0.0

3 . Дублирование вершины стека - LPS

Команда дублирования вершины логического стека (LPS -Logic Push) дублирует значение вершины стека и помещает это значение на вершину стека. Дно стека выталкивается и теряется.

4. Извлечение вершины стека - LPP

К оманда извлечения вершины стека (LPP - Logic Pop) извлекает один бит из стека. Второй уровень становится новой вершиной стека.

5. Копирование второго уровня стека - LRD

К оманда копирования второго уровня стека (LRD – Logic Read) копирует второй бит стека в вершину стека. В стек ничего не помещается и из него ничего не извлекается, но его вершина замещается копией.

6 . Загрузка стека LDS N

Команда загрузки стека (LDS – Load Stack) дублирует бит стека (N) и помещает это значение в вершину стека. Дно стека выталкивается и теряется.

Пример. Рассмотрим разветвленную программу на языке LAD. В STL эта программа имеет вид:

LD I0.0

LPS // Сохраняем I0.0 во втором уровне стека

LD I0.5

O I0.6

ALD //Логическое И со значением в стеке I0.0

= Q7.0

LRD //Считывем второй уровень стека (I0.0)

LD I2.1

O I1.3

ALD //Логическое И со значением в стеке

= Q6.0

LPP //Выталкиваем вершину стека

A I1.0

=Q 3.0

Установка, сброс N битов

Команды установки и сброса бита в STL имеет следующий формат:

S bit, n

R bit, n

Положительный и отрицательный фронт

В STL контакту Положительный фронт соответствует команда EU (Edge Up).

В STL контакту Отрицательный фронт соответствует команда ED (Edge Down).