- •2. Операционные системы реального времени. Цикл контроллера. Языки программирования систем реального времени (мэк 61131-3). Scada-системы.
- •3. Язык fbd на примере α-контроллера ф. Mitsubishi. Примеры: микроволновая печь или стиральная машина-автомат.
- •8. Блок Time sw (switch)
- •9. Блок Counter
- •10. Блок Compare (сравнения)
- •11. Блок Display
- •12. Блок HourMeter (Таймер)
- •4. Язык lad на примере контроллера s7-200. Пример: Реверсивное включение ад.
- •5. Язык stl на примере контроллера s7-200. Пример: Разветвленная программа на языке stl.
- •6. Язык scl на примере контроллера I-7188 ф. Icp das. Пример. Дублирование состояния входов на выходах.
- •7. Система команд для чтения/записи данных на модули, включенные в сеть rs-485. Библиотечные функции контроллера I-7188 для доступа к удаленным модулям.
- •8. Составные части и архитектура scada-системы Genesis32. Орс-технология для доступа к устройствам ввода-вывода.
- •9. Пользовательский интерфейс GraphWorX32. Создание “картинки” технологического процесса на Genesis32. Взаимодействие GraphWorX32 с тегами модулей ввода-вывода.
- •10. Назначение vba-скриптов Genesis32. Классы доступа к элементам экранной формы. Основные этапы создания vba-скрипта.
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).