3.5. Язык структурированного текста
Язык структурированного текста (StructuredText–ST) относится к классу текстовых языков высокого уровня. Этот язык подобен таким языкам программирования, какPascalиС. На его основе можно создавать гибкие процедуры обработки данных. Язык структурированного текста является основным для описания шагов и транзакций языкаSFC. Кроме этого, он имеет «выходы» во все остальные языки, что делает его универсальным в применении.
Язык STиспользуется для создания программ путем записи строк, состоящих из алфавитно-цифровых символов. Фраза составляется из основных элементов языкаST. Пример:
! %L2: (* Вот предложение с меткой, комментариями *)
SET %M0; %MW4 := %MW2 + %MW9;
(* и различными инструкциями *)
%MF12 :=SQRT(%MF14);
Основные инструкции языка ST:
битовые инструкции;
арифметические и логические инструкции для слов и двойных слов;
арифметические инструкции для чисел с плавающей точкой;
инструкции числового сравнения слов, двойных слов и чисел с плавающей точкой;
числовые преобразования;
инструкции для таблиц, заполненных битами, словами, двойными словами и числами с плавающей точкой;
инструкции для строк из символов;
инструкции для алфавитно-цифрового сравнения;
инструкции для управления временем;
программные инструкции – инструкции для управления программой;
управляющие инструкции – инструкции для управления ходом выполнения программы;
инструкции для стандартных функциональных типов;
инструкции предметной области (связь, ПИД–регулирование и т.д.).
Язык содержит четыре управляющие структуры:
условное действие IF;
условные итеративные действия WHILEиREPEAT;
повторяющееся действие FOR.
Каждая управляющая структура обрамляется ключевыми словами, она начинается и заканчивается в данном выражении. Допускается вложение управляющих структур независимо от их типа. Управляющие структуры могут предшествовать или следовать за любой инструкцией.
Программы на языке STсоставляются из выражений. Каждое выражение языка состоит из метки, комментариев и инструкций. Каждый из этих элементов может отсутствовать, таким образом, возможно пустое выражение, т.е. состоящее только из комментариев, либо состоящее из единственной метки. Каждое выражение начинается с восклицательного знака, который обычно вводится автоматически. Выражение на языкеSTможет содержать несколько инструкций, при этом каждая инструкция должна заканчиваться символом «точка с запятой». Фрагмент программы на языкеSTпоказан ниже.
! %L95:
IF%I3.3AND%I3.14
THEN SET %Q4.0;
END_IF;
! %L105:
IF %M3 THEN
FOR %MW99 := 0 TO 31 DO
IF %MW100[%MW99]<>0 THEN
%MW10 := %MW100[%MW99];
%MW11:= %MW99;
%Ml:= TRUE;
EXIT;
ELSE
%M1:= FALSE;
END_IF;
END_FOR;
ELSE
%M1:= FALSE;
END_IF;
Основные команды языка ST приведены в таблице 3.3.
Таблица 3.3 Основные команды языка ST
Изображение | Функция |
Битовые инструкции | |
: = | Битовое присвоение |
OR | Булевское ИЛИ |
AND | Булевское И |
XOR | Булевское ИСКЛЮЧАЮЩЕЕ ИЛИ |
NOT | Инверсия |
RE | Возрастающий фронт |
FE | Убывающий фронт |
SET | Установка в 1 |
RESET | Сброс в 0 |
Числовое сравнение для слов, двойных слов и чисел с плавающей точкой | |
< | Меньше |
> | Больше |
<= | Меньше или равно |
>= | Больше или равно |
= | Равно |
<> | Не равно |
Битовые таблицы | |
Таблица := Таблица | Присвоение между двумя таблицами |
Таблица : = Слово | Присвоение таблице значение слова |
Таблица : = Двойное слово | Присвоение таблице значение двойного слова |
Двойное слово := Таблица | Присвоение двойному слову значения таблицы |
COPY_BIT | Копирование содержимого одной битовой таблицы в другую |
AND_ARX | Операция И между содержимым двух таблиц |
OR_ARX | Операция ИЛИ между содержимым двух таблиц |
XOR_ARX | Операция ИСКЛЮЧАЮЩЕЕ ИЛИ между содержимым двух таблиц |
NOT_ARX | Инверсия содержимого таблицы |
BIT_W | Копирование содержимого битовой таблицы в таблицу слов |
BIT_D | Копирование содержимого битовой таблицы в таблицу двойных слов |
W_BIT | Копирование содержимого таблицы слов в битовую таблицу |
D_BIT | Копирование содержимого таблицы двойных слов в битовую таблицу |
Целочисленная арифметика над словами и двойными словами | |
+, –, *, / | Сложение, вычитание, умножение, целочисленное деление |
REM | Остаток от целочисленного деления |
SQRT | Целочисленный квадратный корень |
ABS | Абсолютное значение |
INC | Приращение на единицу |
DEC | Уменьшение на единицу |
Арифметика над числами с плавающей точкой | |
+, –, *, / | Сложение, вычитание, умножение, деление |
SQRT | Квадратный корень |
ABS | Абсолютное значение |
TRUNG | Целая часть |
LOG | Логарифм с 10-м основанием |
LN | Натуральный логарифм |
ЕХР | Натуральная экспонента |
ЕХРТ | Возведение действительного числа в целую степень |
COS | Значение косинуса в радианах |
SIN | Значение синуса в радианах |
TAN | Значение тангенса в радианах |
ACOS | Арккосинус (результат между 0 и 2) |
ASIN | Арксинус (результат между –/2 и +/2) |
ATAN | Арктангенс (результат между –/2 и +/2) |
DEG_TO_RAD | Преобразование градусов в радианы |
RAD_TO_DEG | Преобразование радиан в градусы |
Логические инструкции над словами и двойными словами | |
AND | Логическое И |
OR | Логическое ИЛИ |
XOR | Логическое ИСКЛЮЧАЮЩЕЕ ИЛИ |
NOT | Логическое дополнение |
SHL | Логический сдвиг влево |
SHR | Логический сдвиг вправо |
ROL | Циклический логический сдвиг влево |
ROR | Циклический логический сдвиг вправо |
Инструкции для управления программой | |
HALT | Останов выполнения программы |
JAMP | Безусловный переход к метке |
SRi | Вызов подпрограммы |
RETURN | Возврат из подпрограммы |
MASKEVT | Маскирование событий в ПЛК |
UNMASKEVT | Снятие маскирования событий в ПЛК |
Инструкции числового преобразования | |
BCD_TO_INT | BCDкодДвоичный код |
INT_TO_BCD | Двоичный код BCDкод |
GRAY_TO_INT | Код Грея Двоичный код |
INT_TO_REAL | Целое число Число с плавающей точкой |
DINT_TO_REAL | Целое число Число с плавающей точкой |
REAL_TO_INT | Число с плавающей точкой Целое число |
REAL_TO_DINT | Число с плавающей точкой Целое число |
DBCD_TO_DINT | 32-х разрядный BCDкод32-разрядное целое число |
DINT_TO_DBCD | 32-х разрядное целое число 32-разрядныйBCDкод |
DBCD_TO_INT | 32-х разрядный BCDкод16-разрядное целое число |
INT_TO_DBCD | 16-разрядное целое число 32-х разрядныйBCDкод |
LW | Извлечение наименее значимого слова из двойного слова |
HW | Извлечение наиболее значимого слова из двойного слова |
CONCATW | Совмещение (конкатенация) двух одиночных слов |
MAX_ARW, MAX_ARD | Нахождение максимального значения в таблице |
MIN_ARW, MIN_ARD | Нахождение минимального значения в таблице |
OCCUR_ARW, OCCUR_ARD | Подсчет числа элементов таблицы с заданным значением |
SORT_ARW, SORT_ARD | Сортировка таблицы в порядке возрастания или убывания |
ROL_ARW, ROL_ARD | Циклический сдвиг в таблице влево |
ROR_ARW, ROR_ARD | Циклический сдвиг в таблице вправо |
FIND_EQWP, FIND_EQDP | Нахождение первого элемента равного заданному значению |
LENGTH_ARW, LENGTH_ARD | Вычисление длины таблицы |
Инструкции для таблиц из чисел с плавающей точкой | |
Таблица:=Таблица | Присвоение между таблицами |
Таблица:=Плавающяя точка | Начальное заполнение таблицы (инициализация) |
SUM_ARR | Сумма элементов в таблице |
EQUAL_ARR | Сравнение двух таблиц |
FIND_EQR | Нахождение первого элемента равного заданному значению |
FIND_GTR | Нахождение первого элемента со значением больше заданного |
FIND_LTR | Нахождение первого элемента со значением меньше заданного |
MAX_ARR | Нахождение максимального значения в таблице |
MIN_ARR | Нахождение минимального значения в таблице |
OCCUR_ARR | Подсчет числа элементов таблицы с заданным значением |
SORT_ARR | Сортировка таблицы в порядке возрастания или убывания |
ROL_ARR | Циклический сдвиг в таблице влево |
ROR_ARR | Циклический сдвиг в таблице вправо |
LENGTH_ARR | Вычисление длины таблицы |
Инструкции для последовательности символов | |
STRING_TO_INT | Преобразование из ASCIIкода в двоичный код |
STRING_TO_DINT | Преобразование из ASCIIкода в двоичный код |
INT_TO_STRING | Преобразование из двоичного кода в ASCIIкод |
DINT_TO_STRING | Преобразование из двоичного кода в ASCIIкод |
STRING_TO_REAL | Преобразование из ASCIIкода в код с плавающей точкой |
REAL_TO_STRING | Преобразование из кода с плавающей точкой в ASCIIкод |
<, >, <=, >=, ==, < > | Алфавитно-цифровые сравнения |
FIND | Определение местоположения подпоследовательности |
EQUAL_STR | Позиция первого символа отличающегося от заданного |
LEN | Длина последовательности символов |
MID | Извлечение подпоследовательности |
INSERT | Внесение подпоследовательности |
DELETE | Удаление подпоследовательности |
CONCAT | Объединение двух последовательностей |
REPLACE | Перемещение последовательности |
LEFT | Определение начала последовательности |
RIGHT | Определение конца последовательности |
Инструкции для управления временем | |
SCHEDULE | Функция часов в реальном времени |
RRTC | Чтение системной даты |
WRTC | Обновление системной даты |
PTC | Чтение даты и кода останова |
ADD_TOD | Добавление временного периода ко времени дня |
ADD_DT | Добавление временного периода к дате и времени |
DELTA_TOD | Разность между двумя моментами времени дня |
DELTA_D | Разность между датами (без учета времени) |
DELTA_DT | Разность между датами (с учетом времени) |
SUB_TOD | Вычитание временного периода из времени дня |
SUB_DT | Вычитание временного периода из даты и времени дня |
DAY_OF_WEEK | Чтение текущего дня недели |
TRANS_TIME | Преобразование длительности в дату |
DATE_TO_STRING | Преобразование даты в последовательность символов |
TOD_TO_STRING | Преобразование времени в последовательность |
DT_TO_STRING | Преобразование полной даты в последовательность |
TIME_TO_STRING | Преобразование длительности в последовательность |
Особые инструкции | |
WSHL_RBIT, DSHL_RBIT | Сдвиг слова влево с сохранением сдвинутых битов |
WSHR_RBIT, DSHR_RBIT | Сдвиг слова вправо со знаковым расширением и сохранением сдвинутых битов |
WSHRZ_С, DSHRZ_С | Сдвиг слова вправо с заполнением нулем и с сохранением сдвинутых битов |
SCOUNT | Увеличение или уменьшение счетчика с индикацией обнуления или переполнения |
ROLW, ROLD | Подсчет сдвигов влево |
RORW, RORD | Подсчет сдвигов вправо |
Инструкции для задержки времени | |
FTON | Включить задержку |
FTOF | Выключить задержку |
FTP | Импульсное время задержки |
FPULSOR | Квадратно-волновой сигнальный генератор |
- Микропроцессорные средства автоматизации
- Содержание
- Глава 14. Применение микро-эвм в системах регулирования и управления 184
- Введение
- 1. Основные определения и классификация микропроцессорных средств автоматизации
- 2. Дискретная автоматика
- 2.1. Формы представления информации
- 2.2. Способы представления дискретной информации
- 2.3. Системы счисления, используемые в вычислительной технике
- 2.3.1. Способы представлений информации для микропроцессора
- 2.4. Булевы функции
- 2.4.1. Система равносильных преобразований
- 2.5. Синтез систем дискретной автоматики
- 2.5.1. Синтез дискретных схем по таблицам состояний.
- 2.5.2. Синтез многотактных систем дискретной автоматики
- 3. Промышленные сети
- 3.1. Структура промышленных сетей
- 3.1.1. Топология промышленных сетей
- 3.2. Аппаратные интерфейсы пк
- 3.2.1. СтандартRs-232c
- 3.2.2. Последовательная шинаUsb
- 3.3. Универсальный асинхронный приемопередатчик
- 3.4. Физические интерфейсы
- 3.4.1. ИнтерфейсRs-485
- 3.4.1.1. Автоматический преобразователь интерфейсовUsb/rs-485 овен ас4
- 3.4.2. Интерфейс «Токовая петля»
- 3.4.2.1. Адаптер интерфейса овен ас 2
- 3.5. Протоколы промышленных сетей
- 3.5.1. ПротоколModbus
- 3.5.2.Hart-протокол
- 3.5.4. Сеть profibus
- 3.5.5. Описание шиныCan
- 2.8.1.1. Организация сети can
- 2.8.1.2. Физический уровень канала can.
- 2.8.1.3. Арбитраж шины can.
- 2.8.1.4. Структура формата передачи данных
- 2.8.1.1. Форматы кадра
- Механизм обработки ошибок.
- Адресация и протоколы высокого уровня
- 5.8. Универсальная сеть Foundation Fieldbus
- 5.9. Физическая среда передачи данных
- 3. Языки программирования логических контроллеров
- 3.1 Объекты адресации языков программирования плк
- 3.2 ЯзыкLadderDiagram(ld)
- 3.3 Язык Functional Block Diagrams (fbd)
- 3.4 ЯзыкInstructionList(il)
- 3.5. Язык структурированного текста
- 3.5.1. Применение управляющих структур Условное действиеIf...End_if
- Условное итеративное действие while...End_while
- Условное итеративное действиеRepeat...End_repeat
- Повторяющееся действиеFor...End_for
- Выход из цикла посредством инструкции exit
- 3.6. Язык последовательных функциональных схем
- 5.4. Пример
- 4. Элементы микропроцессорных устройств
- 4.1 Цифро-аналоговые преобразователи
- 4.1.1 Принципы построения основных узлов цап.
- 4.2 Аналого-цифровые преобразователи
- 4.2.1 Метод последовательного счета
- 4.2.2 Метод поразрядного кодирования
- 4.2.3 Метод считывания
- 5. Мини-контроллеры
- 5.1. Мини-контроллеры серииAlpha
- 5.2. Миниатюрные программируемые устройстваEasy
- 5.2.1. Управляющее релеEasy500
- 5.2.2. Управляющее реле Easy 700
- 5.2.3. Управляющее реле Easy 800
- 5.2.4. Модули расширенияEasy
- 5.2.5. Средства коммуникации устройств Easy
- 5.3. Интеллектуальные релеZelioLogic
- 5.3.1. Компактные и модульные интеллектуальные реле
- 5.3.2. Общие технические характеристики релеZelio Logic
- 5.3.3. ПреобразователиZelioAnalog
- 5.3.4. Средства коммуникации интеллектуальных релеZelio Logic
- 5.3.4.1. Коммуникационный модемный интерфейс
- 5.3.4.2. Протокол связиModbusslave
- 5.3.4.3. Протокол связиEthernetserver
- 5.3.5. Программное обеспечение интеллектуального реле
- 5.4. Универсальный логический модульLogo!
- 5.4.1. Типы базовых модулей logo!Basic
- 5.4.2. Модули расширения ввода/вывода сигналовLogo!
- 5.4.3. Коммуникационные модули logo!
- 5.4.4. ФункцииLogo!
- 5.4.4.1.6. Биты регистра сдвига
- 5.4.4.1.7. Клавиши управления курсором
- 5.4.4.1.8. Постоянные уровни
- 5.4.4.2. Группа базовых функций
- 5.4.4.3. Специальные функции
- 5.4.4.3.1. Список специальных функций
- 5.4.4.3.2. Примеры специальных функций
- 5.4.5. Объем памяти и размер коммутационной программы
- 6. Программируемы логические контроллеры
- 6.1. Программируемые контроллеры simatic s7-22x
- 6.1.1. Модули расширения вводов-выводов
- 6.1.2. Коммуникационные модули
- 6.1.3. Человеко-машинный интерфейс
- 6.2. Программируемый логический контроллер simatics7-224xp
- 6.2.1. Основы функционирования плк
- 6.2.1.1. Порядок чтения входов
- 6.2.1.2. Исполнение программы
- 6.2.1.3. Запись значений в выходы
- 6.2.2. Доступ к данным s7-200
- 6.2.3. Адресация встроенных входов/выходов и входов/выходов модулей расширения
- 6.2.4. Обмен данными в сети
- 6.3. Программируемые контроллеры simatic s7-300
- 6.3.1. Области применения
- 6.3.2. Состав
- 6.3.3. Сертификаты
- 6.4. Программируемые контроллеры simatic s7-400
- Модификации контроллеров
- 6.4.1. Области применения
- 6.4.2. Состав
- 6.4.3. Сертификаты
- 6.6 Контроллер логический программируемый овен плк150
- Глава 14. Применение микро-эвм в системах регулирования и управления
- 14.1. Управляющие эвм
- 14.2. Использование микро-эвм для оптимизации резки катаной заготовки ножницами
- 14.4. Система управления положением вторичного зеркала телескопа
- 14.5. Прямое цифровое регулирование
- 14.8. Микропроцессор как универсальный регулятор
- 14.9. Микропроцессор как основа нового поколения систем автоматизации
- 7 Системы диспетчерского управления и сбора данных
- 7.1 Scada-система InTouch ("Wonderware", сша)
- 7.2 Scada-система Trace Mode ("AdAstra Research Group", Россия)
- 7.3Scada-системаSimaticWinCc("Siemens", Германия)
- 7.4Scada-системы, встраиваемые в плк
- 9. Методика выбора по различных производителей
- Список литературы