+7(863)285-04-66

info@promtechautomat.ru

г. Ростов-на-Дону. Социалистическая 74

Изучение программ на языке структурированного текста

Основой ST-программы служат выражения. Результат вычисления выражения присваивается переменной при помощи оператора «:=», как и в Паскале. Каждое выражение обязательно заканчивается точкой с запятой «;». Выражение состоит из переменных констант и функций, разделенных операторами

iVarl := 1 + iVar2 / ABS(iVar2);

Стандартные операторы в выражениях ST имеют символьное представление, например математические действия: +, -, *, /, операции сравнения и т, д.

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

iVarl := 1 + (*получить знак*) iVar2 / ABS(iVar2); (*проверка на 0 была выше*)

В примере комментарий выделен курсивом.

Несколько выражений можно записать подряд в одну строку. Но хорошим стилем считается запись одного выражения в строке. Длинные выражения можно перенести на следующую строку. Перенос строки равноценен пассивному разделителю.

Выражение может включать другое выражение, заключенное в скобки.

Выражение, заключенное в скобки, вычисляется в первую очередь. Тип выражения определяется типом результата вычислений:

bAlarm := bylnpl > bylnp2 AND bylnpl + bylnp2 <> 0 OR b Alarm 2;

Порядок вычисления выражений

Вычисление выражения происходит в соответствии с правилами приоритета операций- Первыми выполняются операции с наивысшим приоритетом.

В порядке уменьшения приоритета операции располагаются так: выражение в скобках; вызов функции; степень ЕХРТ; замена знака (-); отрицание NOT ; умножение, деление и деление по модулю MOD; сложение и вычитание (+, —); операции сравнения (<, >, <=% >=); равенство (=); неравенство (<>); логические операции AND, XOR и OR.

Приоритет операций в выражениях очень важен. В первую очередь с математической точки зрения:

Х:=2 + 2*2; (* = 6*)
X := (2 + 2) * 2; (* = 8*)


Здесь результаты очевидны. Умножение имеет более высокий приоритет, чем сложение, и выполняется раньше. Скобки меняют порядок вычислений, и результат оказывается другим.

При составлении выражений обязательно необходимо учитывать возможный диапазон изменения значений и типы переменных. Ошибки, связанные с переполнением, возникают в процессе выполнения и не могут быть обнаружены транслятором.

iVar1: SINT;
siVar2: SINT := 120;

siVar1 := 120 - siVar2 + 20; (*120- 120 = 0, 0 + 20 = 20*)
siVar1 := 120 - (siVar2 + 20); (*120 + 20 = -116, 120 + 116 = -20*)

Пустое выражение

Пустое выражение состоит из точки с запятой «;». . Для точки с запятой транслятор не генерирует никакого кода» Если случайно поставить лишнюю «;», это не вызовет ошибки. Единственное осмысленное применение пустого выражения — это обеспечение правильности языковых конструкций. Например, может потребоваться оттранслировать проект, содержащий еще не реализованный POU, Для корректной трансляции достаточно написать в теле POU один пустой оператор.

Оператор выбора IF

Оператор выбора позволяет выполнить различные группы выражений в зависимости от условий, выраженных логическими выражениями. Полный синтаксис оператора IF (если) выглядит так:

IF <логическое выражение IF> THEN <выражения IF> ; [ ELSIF <логическое выражение ELSEIF 1> THEN < выражения ELSEIF 1> ; … ELSIF <логическое выражение ELSEIF n> THEN < выражения ELSEIF n> ; ELSE < выражения ELSE> ; ] END_IF

Если <логическое выражение IF> ИСТИНА, то выполняются выражения первой группы — <выражения IF>. Прочие выражения пропускаются, альтернативные условия не проверяются.

Часть конструкции в квадратных скобках является необязательной и может отсутствовать.

Если <логическое выражение IF> ЛОЖЬ, то одно за другим проверяются условия ELSIF. Первое истинное условие приведет к выполнению соответствующей группы выражений. Прочие условия ELSIF анализироваться не будут. Групп ELSIF может быть несколько или не быть совсем.

Если все логические выражения дали ложный результат, то выполняются выражения группы ELSE, если она есть» Если группы ELSE нет, то не выполняется ничего.

В простейшем случае оператор IF содержит только одно условие:

IF b:= 1 THEN iVarl := 1; iVar2 := 0; END_IF

На первый взгляд конструкция IF с несколькими группами ELSIF выглядит сложной, но на самом деле оказывается достаточно выразительной:

IF bReset THEN iVarl := 1; ELSIF byLeft < 16 THEN iVarl := 2; ELSIF byLeft < 32 THEN iVarl := 3; ELSIF byLeft < 64 THEN iVarl := 4; ELSE b ;= TRUE; END_IF

Оператор выбора используется для реализации алгоритмов с ветвлениями. Наиболее просто реализовать программу на языке ST, если алгоритм управления имеет следующую структуру, показанную на рисунке

Ветвящийся алгоритм.

Пример: Имеется пять дискретных датчика уровня, установленных равномерно по высоте в емкости для хранения жидкости. Требуется создать визуализацию, в которой с помощью стрелочного индикатора будет показываться количество жидкости в емкости.

Для решения поставленной задачи создадим новый проект на языке ST

создание программного компонента на языке ST. Окно проекта состоит из 2 частей области объявления переменных (вверху) и области программ (внизу)

Окно проекта на языке ST.

Формализация задания может быть представлена как в виде автоматной таблицы так и в виде алгоритма

автоматная таблица для визуализации заполнения емкости.

Алгоритм для визуализации заполнения емкости.

В CodeSys каждой строке автоматной таблицы, или каждому блоку условия в алгоритме будет соответствовать один оператор IF < > THEN < >

Перед написанием программы объявляем и присваиваем переменные

Объявление переменных.

Затем согласно таблице/алгоритму пишем программу

Готовая программа на языке ST.

Далее создаем форму визуализации и добавляем в нее стрелочный индикатор. В появившемся окне конфигурирования индикатора (рисунок 5.7) необходимо настроить формат шкалы и перемену, значение которой будет показывать индикатор, для этого необходимо нажать кнопку «Переменная/Шкала».

Окно конфигурирования стрелочного индикатора.

В открывшемся окне (рисунок 5.8) необходимо ввести числовые значения начала и конца шкалы, а также цену основных и промежуточных делений. В поле «Переменная» необходимо связать индикатор с нужной переменной (для этого установите курсор в поле «Переменная» и нажмите F2)

Окно конфигурирования шкалы переменной.