Главная страница

лабораторные_scada. Методические указания к лабораторным работам Составители И. П. Ефимов Д. А. Солуянов Ульяновск 2010


Скачать 2.86 Mb.
НазваниеМетодические указания к лабораторным работам Составители И. П. Ефимов Д. А. Солуянов Ульяновск 2010
Дата25.10.2022
Размер2.86 Mb.
Формат файлаpdf
Имя файлалабораторные_scada.pdf
ТипМетодические указания
#753648
страница3 из 7
1   2   3   4   5   6   7
Динамическое
изображение
Динамическое изображение отличается от статического тем, что данное изображение изменяется, его состояние определяется контролируемым процессом. Изображение может перемещаться, изменять размеры, поворачиваться, может происходить перемещение пунктиров по его контору, объект может быть заполнен до определенного уровня.
Для получения динамического изображения всегда необходима привязка к аргументу, значение которого отображается тем или иным способом.
При динамическом контуре (закладка динамический контур ) задаются
(рис. 2.10) два цвета: цвет штрихов и промежутка между ними, длина штриха, которая также определяет шаг перемещения штрихов. Происходит перемещение штрихов по контору. Скорость их перемещения определяется привязанным аргументом. Если аргумент равен 0, то перемещение отсутствует. Когда аргумент равен 1 происходит перемещение штрихов при каждом такте на один шаг. Если аргумент равен двум, к примеру, то штрихи перемещаются на один шаг один раз за 2 такта.
Рис. 2.10 Настройка динамического контура
Рассмотрим динамическую трансформацию (закладка динамческая трансформация
.). Можно выделить динамическое перемещение, масштабирование, вращение, поставив соответствующий флаг. При

39 динамическом перемещении задается ломаная линия, вдоль которой происходит перемещение. Для ряда точек (узлов) задаются соответствующие им значения (рис. 2.11). Текущее положение объекта зависит от значения привязанного аргумента и значений, соответствующих узлам, флага перемещать плавно.
Рис. 2.11 Динамическое перемещение
При динамизации масштабирования задаются начальный и конечный размер объекта и значения привязанного аргумента, соответствующие заданным значениям (рис. 2.12) и центр относительно которого будет происходить масштабирование. Текущий размер зависит от значения аргумента.
Рис. 2.12 Динамическое перемещение
При динамическом вращении задается начальный и конечный угол, значения аргумента, соответствующие начальному и конечному углу, центр относительно которого происходит вращение. Угловое положение в данном случае зависит от значения аргумента. Настройка вращения происходит аналогично настройке перемещения.
Рассмотрим подробнее динамическую заливку. Динамическая заливка заключается в том, что задается максимальное и минимальное значение привязываемого аргумента (рис. 2.13). Происходит заливка объекта до уровня, который определяется привязанным аргументом. Заливка может однослойной (отображается значение одного аргумента) и многослойной
(отображение значений нескольких аргументов).

40
Можно настроить изменение цвета динамической заливки в зависимости от состояния технологического процесса (предупреждение, авария, вне границ). Для этого необходимо выбрать цвета заполнения и выбрать значение true в поле цвета для диапазонов.
Для настройки зависимости цвета заливки объекта (объект без динамической заливки) от состояния процесса на закладке основные
свойства
в разделе заливка следует раскрыть раздел цвет заливки, где можно выбрать вид индикации, выбрать цвета заливки (рис. 2.14), задать диапазон.
Рис.2.13 Динамическая заливка

41
Рис. 2.14 Динамическое изменение цвета
Программирование
в Trace Mode
SCADA–системы содержат специальные языки программирования, что позволяет разработчику описывать алгоритмы обработки измерительной информации, генерирования сигналов, управления процессом. Система Trace
Mode поддерживает модифицированные языки стандарта IEC6113-3:
1.
Texno ST (Structured Text);
2.
Texno SFC (Sequential Function Chart);
3.
Texno FBD (Function Block Diagram);
4.
Texno LD (Ladder Diagram);
5.
Texno IL (Instruction List).
Для обеспечения обмена данными между программой и каналами узла служат аргументы программы. Тип каждого аргумента определяет направление передачи данных. Так если аргумент служит для передачи

42 значения в программу, следует выбрать тип IN, если для передачи из программы— OUT. В ряде случаев нужен аргумент, который будет передавать данный как в программу, так и из нее, тогда следует выбрать тип
IN/OUT. Для обмена данными программой необходимо произвести привязку каждого аргумента программы к тому или иному каналу (аргументу канала).
Помимо аргументов можно создать локальные и глобальные переменные.
Окно редактирования программы (рис. 2.15) можно открыть двойным щелчком левой клавишей мыши по объекту программа в навигаторе проекта или вызвав контекстное меню для него и выбрав редактировать шаблон.
Рис. 2.15. Окно редактирования программы
Для создания аргументов необходимо выделить строку аргументы в структуре программы. Откроется окно, изображенное на рис. 2.5. Создание аргументов описано выше (см. привязка аргументов). Для создания локальной или глобальной переменной необходимо выделить соответствующую строку в структуре программы. Откроется окно аналогичное созданию аргументов (аналогично рис. 2.5). Переменные создаются аналогично созданию аргументов. Отличие создания переменных заключается в невозможности привязки переменной к значению (атрибуту) канала.
Для написания программы необходимо выбрать строку программа в структуре программы. Будет предложен выбор языка(рис. 2.16). Следует выбрать необходимы язык и приступит к написанию программы.

43
Рис. 2.16 Выбор языка
Рассмотрим подробнее языки программирования Texno St и Texno FBD,
TexnoIL, TexnoSFC..
Язык
Texno ST
В алфавит языка входят:
1.
прописные и строчные буквы латинского алфавита;
2.
цифры;
3.
специальные знаки: + - * / < = > ! : & | ^ ∼ % ( ) [ ] , ; #.
Идентификаторы могут состоять из прописных и строчных букв латинского алфавита, знака подчеркивания «_», цифр. Идентификаторы не чувствительны к регистру.
Для данного языка характерны ключевые слова: and, array, bool, break, by, byte, case, constant, continue, date, date_and_time, dint, do, dt, dword, else, elsif, end_case, end_for, end_function, end_function_block, end_if, end_program, end_repeat, end_struct, end_type, end_var, end_while, exit, false, for, function, function_block, goto, handle, if, int, lreal, mod, not, of, or, program, real, repeat, return, rol, ror, shl, shr, sint, string, struct, time, time_of_day, to, tod, true, type, udint, uint, until, usint, var, var_arg, var_global, var_inout, var_input, var_output, while, word, xor.
В качестве разделителей используются лексемы: + - * ** / < <= <>
<< > >= >> ! != = == : := & | ^ ∼ % ( ) [ ] . .. , ;.

44
Строчный комментарий начинается с «//» и продолжается до конца строки. Блочный комментарий начинается с «/*» и продолжается до «*/».
В данном языке вводятся понятие выражения и предложения.
Выражение— последовательность операндов, разделителей и символьных операторов, задающая вычисление без присвоения результата.
Предложение— последовательность лексем, определяющая выполнение логически законченного промежуточного действия. Предложениями являются присвоение переменной результата каких-либо вычислений, вызов функции, операторы.
В конце предложения обязательно должен стоять символ «;».
Исключением является определение переменной.
Программа на языке Texno ST можно представить в виде структуры:
PROGRAM
{описание аргументов}
{список предложений}
END_PROGRAM
Переменные можно задать, заполняя таблицу аргументов, локальных и глобальных переменных. Переменные определяются в разделе описания аргументов автоматически в соответствии с заполненными таблицами аргументов и переменных.
Язык Texno ST позволяет создавать константы. Рассмотрим их представление. Можно создать числовые и строковые константы.
Целочисленная десятичная константа начинается с цифры, отличной от нуля, после которой располагаются любые цифры. Можно привести следующие примеры целочисленных десятичных констант: 123, 350, 498.
Двоичная целочисленная константа начинается с префикса «2#», после которого приводится двоичное представление целого числа. Примеры:
2#1011, 2#0111, 2#1001.

45
Восьмеричные целочисленные константы начинаются с префикса «8#», после которого записывается восьмеричное представление числа. Примеры:
8#145, 8#0277, 8#756.
Шестнадцатеричные целочисленные константы начинаются с префикса
«16#», после которого приводятся шестнадцатеричные представления чисел.
При записи шестнадцатеричного представления числа можно использовать как строчные символы a…f, так и прописные A… F. Примеры: 16#149,
16#A145E, 16#a145e.
Вещественная константа состоит из целой и дробной части. Допустимо наличие только целочисленной или дробной части. Примеры: .123, 0.456,
489. . Возможно представление в формате с плавающей точкой (используется префикс е или E с указанием порядка). Примеры: 1.23E-6, 6.7504E4, 6.798e-5.
Частным случаем числовой константы является временной интервал, дата, время дня. Временной интервал записывается в виде: t#<дни>d<часы>h<минуты>m<секунды>s<миллисекунды>ms
Возможна также запись в виде: time#<дни>d<часы>h<минуты>m<секунды>s<миллисекунды>ms
Любая составляющая в приведенных представлениях временного интервала может быть опущена. Временной интервал равной 2 часам, 31 минута, 25 секундам и 10 миллисекунд может быть записан как t#2h31m25s10ms или в виде time#2h31m25s10ms.
Дата записывается в виде d#<год>-<месяц>-<день>, возможна также запись в виде date#<год>-<месяц>-<день>. 25 сентября 2001 года может быть записано в виде d#2001-9-2001 или date#2001-9-2001.
Время дня можно записать в формате tod#<час>:<минута>:<секунда> или time_of_day#<час>:<минута>:<секунда>. Время 19 часов 15 минут 42 секунды может быть записано как tod#19:15:42, так и time_of_day#19:15:42.
Константа «дата и время» может быть записана как dt#<год>-<месяц>-
<день>-<час>:<минута>:<секунда>, так и date_and_time#<год>-<месяц>-
<день>-<час>:<минута>:<секунда>. К примеру, 12 февраля 1995 года 13 часов 47 минут и 13 секунд можно записать в виде dt#1995-2-12-13:47:13 или date_and_time#1995-2-12-13:47:13.

46
Помимо числовых констант часто используются строковые константы, которые представляют собой набор символов заключенных в одинарные или двойные кавычки. Пример: “Первая строка символов”, `Вторая строка символов`. В строках не могут присутствовать управляющие символы, кавычки и символ $. Для размещения в строке произвольного символа, включая управляющие, используется механизм эскейп-последовательностей.
Данный механизм позволяет разместить в строке следующие последовательности:
$r— возврат каретки;
$n— перевод строки;
$t— табуляция;
$uХХХХ— UNICODE символ, где ХХХХ— шестнадцатеричный символ;
$х— символ х («х»— любой символ).
Рассмотрим символьные операторы. Под символьными операторами понимают знаки операций, выполняемых над операндами. В качестве операндов могут выступать:
1.
имена констант;
2.
имена переменных;
3.
имена массивов с указанием индекса отдельного элемента;
4.
вызов пользовательских функций;
5.
вызов библиотечных функций;
6.
выражения, заключенные в скобки;
7.
имена элементов структур.
Арифметические операторы приведены в таблице 2.6, побитовые— в таблице 2.7, операторы сравнения— в таблице 2.8, логические— в таблице 2.9.

47
Таблица 2.6
Арифметические операторы
Оператор
Действие
Унарный «-»
Смена знака
Унарный «+»
Пустая операция
«+»
Сложение чисел или конкатенация строк
«-»
Вычитание
«*»
Умножение
«/»
Деление
«%»
Получение остатка от деления
«**»
Возведение в степень
Таблица 2.7
Побитовые операторы
Оператор
Действие
«&»
Побитовое «И»
«|»
Побитовое «ИЛИ»
«^» или xor
Побитовое «исключающее ИЛИ»
Унарная «-»
Поразрядная инверсия
«<<» или shl
Сдвиг влево на указанное число разрядов
«>>» или shr
Сдвиг вправо на указанное число разрядов rol
Циклический сдвиг влево на

48 указанное число разрядов ror
Циклический сдвиг вправо на указанное число разрядов
Таблица 2.8
Операторы сравнения
Оператор
Проверяемое условие
«==»
Равенство
«!=» или «<>»
Неравенство
«<»
Меньше
«>»
Больше
«<=»
Меньше или равно
«>=»
Больше или равно
Таблица 2.9
Логические операторы
Оператор
Действие
«&&» или and
Логическое «И»
«||» или or
Логическое «ИЛИ»
«!» или not
Логическое отрицание
Оператор присваивания позволяет произвести присваивание значения переменной. Есть два синтаксиса оператора присваивания:
{операнд} = {выражение} и

49
{операнд} := {выражение}
В качестве операнда может использоваться имя переменной, массива, уточненное имя переменной объекта.
В таблице 5 приводится приоритет символьных операторов. Первыми будут выполняться выражения, заключенные в скобках, а затем в порядке возрастания номера строки в таблице 2.10.
Таблица 2.10
Приоритет символьных операторов
1
**
2
!, not, -, унарный –, унарный +
3
<<, >>, shl, shr, rol, ror
4
&, |, ^, xor
5
*, /, %, mod
6
+, -
7
==, !=, <>, <, <=, >, >=
8
&&, and
9
||, or
10
=, :=
В ST- программе можно использовать стандартные функции языка С: sin, cos, tan, asin, exp, log. Для работы с портом и каналом есть специальные функции в среде Trace Mode, о которых можно найти информацию в справке системы.
Помимо символьных операторов есть следующие операторы:
1.
return
2.
if

50 3.
case
4.
while
5.
repeat
6.
for
7.
break
8.
exit
9.
continue
10.
операторы определения переменных
11.
операторы индексирования элементов массива
12.
got
Для разветвления алгоритма используется оператор if. Данный оператор всегда начинается с ключевого слова if и заканчивается ключевым словом end_if Существует три варианта задания данного оператора. Первый вариант: if {выражение} then {последовательность предложений}; end_if;
В данном варианте последовательность предложений выполняется только в том случае, если выражение истинно.
Второй вариант задания оператора if имеет вид: if {выражение} then {последовательность предложений 1}; else {последовательность предложений 2} ; end_if;
Во втором варианте задания оператора if проверяется выражение. Если оно истинно, то выполняется последовательность предложений 1, в противном случае— последовательность предложений 2.
Третий вариант оператора if имеет вид: if {выражение 1} then {последовательность предложений 1};

51 elseif {выражение 2} then {последовательность предложений 2};
… elseif {выражение N} then {последовательность предложений N}; else {последовательность предложений N+1}; end_if;
В последнем варианте оператора if выполняется i-ая последовательность предложений в том случае, если i-ое выражение истинно. Если все выражения ложны, то выполняется последовательность предложений, которая идет после ключевого слова else.
Язык Texno ST содержит оператор выбора case. Оператор начинается с ключевого слова case и заканчивается ключевым словом end_case. Первый вариант оператора сase можно представить следующим образом: case {выражение} of
{список значений}:{последовательность предложений};

{список значений}:{последовательность предложений}; end_case;
В данном случае вычисляется выражение, производится поиск результата вычисления в списках значений.
Выполняется та последовательность предложений, в списках значений которой найден результат вычислений.
Второй вариант оператора case можно представить следующим образом: case {выражение} of
{список значений}:{последовательность предложений};
{список значений}:{последовательность предложений}; else {последовательность предложений}; end_case;

52
Отличие второй формы записи оператора case от первой заключается в том, что если результат вычисления выражения не найден ни в одном из списков значений, то выполняется последовательность предложений после ключевого слова else. В первом случае при отсутствии результата вычислений в списках значений приведенные в операторе последовательности предложений не выполняются.
В обоих представлениях оператора case список значений — набор целых чисел или диапазонов целых чисел, разделенных запятой. Диапазон указывается в виде:
{нижняя граница диапазона} .. {верхняя граница диапазона}
Язык Texno ST позволяет создавать циклы используя операторы while, repeat, for. Синтаксис оператора while имеет вид: while {выражение} do {последовательность предложений}; end_while;
В данном операторе последовательность выражений выполняется пока выражение истинно. Каждый раз перед выполнением последовательности предложений производится проверка выражения.
Оператор repeat можно представить в виде: repeat {последовательность предложений}; until {выражение} end_repeat;
В операторе repeat последовательность выполняется, проверяется выражение, если оно истинно, то последовательность выражений повторяется снова, в противном случае происходит выход из цикла.
Цикл for можно представить в виде: for {имя переменной} := {выражение 1} to {выражение 2} by
{выражение 3} do {последовательность предложений}; end_for;
Данный оператор сперва присваивает переменной цикла с указанным именем результат вычисления выражения 1, выполняет последовательность предложений, если вычисленная переменная цикла не превысит значение

53 выражения 2. Затем к переменной цикла прибавляется выражение 3, выполняется последовательность предложений, если вычисленное значение не превышает выражение 2. Выполнение последовательности предложений и увеличение значения переменной на выражение 3 повторяется до тех пор, пока значение переменной цикла не превышает выражения 2. Для цикла for характерно то, что он не позволяет создавать цикл с отрицательным шагом.
Операторы break и exit позволяют выйти из текущего цикла.
Оператор continue служит для перехода в конец цикла. При его вызове все следующие за ним до конца цикла предложения не выполняются.
Рассмотрим создание программы на языке Texno ST. Допустим, созданы аргументы, глобальная переменная (рис. 2.17, 2.18) После выбора языка откроется окно, изображенное на рис. 2.19. Все созданные аргументы, и локальные переменные будут описаны в начале программы. Глобальные переменные в отличие от локальных в самой программе не описываются, но без проблем могут использоваться как операнды.
Рис. 2.17 Аргументы программы
Рис. 2.18 Глобальные переменные программы

54
Рис. 2.19 Окно для создания программы
Произведем деление аргумента X на аргумент Y, произведя проверку на равенство Y нулю. Результат присвоим аргументу Z. Аргументу Sum присваивается сумма всех результатов деления. Программа будет следующая:
PROGRAM
VAR_INPUT X : REAL; END_VAR
VAR_INPUT Y : REAL; END_VAR
VAR_OUTPUT Z : REAL; END_VAR
VAR_INOUT Sum : REAL; END_VAR if Y == 0 then Z = X / 1e-9; else Z = X / Y; end_if;
Sum = S+ Z;
S = Sum;
END_PROGRAM

55
После того, как написали текст программы необходимо проверить ее.
Для этого нажмем на иконку «компиляция»
. В окне «сообщения» будет выведен результат компиляции. Если окно «сообщения» закрыто, то следует щелкнуть по иконке или выбрать в меню «вид» окно сообщения. Если, к примеру, не хватает запятой в программе, компилятор сообщит об ошибке
(рис. 2.20). При отсутствии ошибок
Рис. 2.20 Пример ошибки
При отсутствии ошибок будет написано: «Программа#1.tms compiled
successfully», к примеру.
Язык
Texno FBD
Рассмотрим FBD программу. Данная программа представляет собой совокупность функциональных блоков, которые соединены между собой.
Функциональный блок— изображение вызова функции Texno ST. В качестве примера рассмотрим функциональный блок, производящий сложение. Изображение его приведено на рис. 2.21.
Рис. 2.21 Функциональный блок Texno ST
В верхней части блока указывается обозначение блока. Внизу выводится его номер. Номера блоком приписываются автоматически при их размещении в рабочем поле редактора программы. После двоеточия

56 указывается номер функционального блока, который будет выполняться следующим.
Горизонтальные линии, расположенные слева, выступают в качестве входов, на которые подается та или иная описанная локальная или глобальная переменная, аргумент программы, выходы с других функциональных блоков. На вход можно подать аргументы, тип которых In или In/Out. У каждого входа указываются его название. В указанном примере названия: X, Y. Безымянный вход, расположенный сверху, управляет выполнением блока: блок выполняет действие (в данном случае сложение) в том случае, если подается 0 или вход не подключен, в противном случае функциональный блок не выполняется.
Горизонтальная линия справа обозначает выход, содержащий результат выполнения функционального блока. Выход можно соединить с входом другого функционального блока. Выход функционального блока можно привязать к описанной глобальной или локальной переменной, аргументу, тип которого Out или In/Out.
Для размещения функционального блока следует открыть окно FBD
блоки
, для чего следует щелкнуть левой клавишей мыши по иконке или выбрать палитра FBD блоков в меню вид. Появится окно FBD блоки
(рис. 2.22). В данном окне выбирается нужная закладка (логические, побитовые, арифметические) в соответствии с тематикой нужного блока. В окне отображается ряд блоков, относящихся к данной тематике. Среди этих блоков отыскивается нужный блок и перетаскивается на поле редактора программы с использованием механизма drag-and-drop. То есть, курсор наводится на необходимый функциональный блок. Нажимается левая клавиша мыши. Блок «перетаскивается» на рабочее поле в нужное место при нажатой левой клавише мыши. Когда курсор переведен в положение, где должен располагаться функциональный блок левая клавиша отпускается.

57
Рис. 2.22 Окно FBD блоки
Для соединения выхода одного функционального блока с входом другого следует навести курсор на выход функционального блока и нажать левую клавишу мыши. Блок станет синим, а имя выделенного выхода будет зеленым. Не отпуская клавиши мыши, наведем курсор на нужный вход функционального блока и отпустим клавишу мыши. Соответствующий вход и выход будут соединены линией, если все было правильно сделано.
Аналогично можно нажать левую клавишу мыши, наведя на нужный вход функционального блока, и отпустить, наведя курсор на требуемый выход функционального блока.
Для привязки входа или выхода функционального блока следует выделить вход (выход) щелчком левой клавиши мыши. Появится контекстное меню, в котором следует выбрать привязать. Появится окно со списком аргументов и переменных, к которым можно привязать вход (выход) функционального блока. В этом списке следует выбрать переменную или аргумент(рис. 2.23).

58
Рис. 2.23 Привязка входа (выхода) функционального блока
Создание константы рассмотрим на примере создания константы равной
1e-9. Для этого следует выделить вход, на который необходимо подать константу, вызываем контекстное меню и выбираем привязать. Будет выведено окно, как указано на рис. 2.23. В появившемся окне вместо выбора аргумента или переменной вводится значение константы. В данном случае вводится «1е-9».
В качестве примера приведена реализация примера программы, написанной на языке Texno ST, используя язык Texno FBD (рис. 24).
Рис. 2.24 Пример FBD программы

59
Язык
Texno SFC
SFC язык позволяет создавать программу, оперируя шагами и переходами. Под шагом следует понимать подпрограмму, написанную на одном из языков, доступных в среде Trace Mode, и выполняющую то или иное действие. Переход— условие, при выполнении которого выполняется определенный шаг. На рис. 2.25 изображены условные графические изображения шага и перехода а) шаг б) переход
Рис. 2.25 Условные графические изображения шага и перехода
Пример SFC программы приведен на рис. 2.26. Направление перехода от одного шага к другому указывается линией и стрелкой. Последующий шаг выполняется в случае, если выполняется условие перехода. Линия со стрелкой, соединяющая переход с линией, отображающей направление перехода, указывает на шаг, который выполняется, если условие перехода выполняется.
Рис. 2.26 SFC программа
Каждый шаг и переход можно выделить. Выделенный шаг (переход) отображается синим цветом. При выделении перехода выделяется дополнительно линия перехода, на которую распространяется условие

60 перехода. Можно выделить линию перехода. Выделенная линия изображается красным цветом. Линия перехода выделяется вместе с переходом, действующим на данной линии перехода и расположенной выше других переходов на выделенной линии перехода. Шаг (переход) можно переименовать, выделив его и дважды щелкнув левой клавишей мыши по нему, после чего можно ввести новое имя шага (перехода).
Рассмотрим подробнее создание SFC диаграммы. Объект программа, аргументы и переменные программы создаются аналогично другим программам. Окно для создания SFC диаграммы представлено на рис. 2.27.
Рис. 2.27 Окно создания SFC диаграммы
Видно из рис. 2.27, что в новой SFC диаграмме присутствует один единственный шаг. Для создания нового шага надо выделить шаг, предшествующий ему. Можно либо щелкнуть левой клавишей мыши на иконке или вызвать контекстное меню и выбрать создать шаг/переход.
Будет создан новый шаг, выполняемый после выделенного ранее шага, и переход, определяющий условие перехода к вновь созданному шагу.
Результат создания нового шага приведен на рис. 2.28, а. Если существовал шаг, выполняемый после выделенного блока, то произойдет ветвление после создания нового шага (рис. .2.28, б).
В ряде случаев необходимо зацикливание. Произведем зацикливание начального шага (рис. 2.28, а). Шаг 1 будет выполняться после выхода из цикла. Для зацикливания наведем курсор на нижний край блока, которым завершается тело цикла (в данном случае нижний край начального шага), нажмем на левую клавишу мыши. Наведем курсор мыши на верхний край блока, с которого начинается тело цикла (в данном случае верхний край начального шага) и отпустим клавишу мыши. Если все было правильно сделано, получится цикл (рис. 2.29). Условием выполнения цикла выступает переход, созданный вместе с циклом.

61 а) новый шаг б) новый шаг с ветвлением
Рис. 2.28 Результат создания нового шага
Рис. 2.29 Цикл на SFC диаграмме
Рассмотрим создание параллельного шага. Для создания шага, выполняемого параллельно какому-либо определенному шагу (параллельно шагу1, к примеру) следует выделить переход или линию выходящую из него, который определяет условие выполнения параллельных шагов (в данном случае переход 0— условие выполнение шага 1), щелкнуть левой клавишей мыши на иконке или вызвать контекстное меню и выбрать создать
шаг
/переход. Будет создан новый шаг (рис. 2.30), выполняемый параллельно другому шагу, переход к которому был выделен при создании нового шага.
Все параллельные шаги должны быть связанны с одним и тем же последующим переходом. Допустим, создан шаг 3, выполняемый после шага

62 1. Тогда необходимо нажать левую клавишу мыши на нижнем крае шага, параллельного шагу 1 (шаг 2), переместить курсор, не отпуская клавиши мыши, на переход, определяющий условие вызова шага 3 или на линию перехода, отпустить клавишу мыши. Если все было правильно сделано, шаги
1 и 2 будут подключены параллельно.
После создания диаграммы необходимо описать каждый шаг или переход (произвести редактирование шага или перехода). Каждый шаг и переход— программа, написанная на одном из языков среды Trace Mode. Для редактирования шага (перехода) необходимо выделить соответствующий шаг
(переход), щелкнуть левой клавишей мыши на иконке или вызвать контекстное меню и выбрать редактировать. Будет предложен выбор программ, среди которых следует выбрать язык программирования, на котором будет описан данный шаг (условие перехода). Можно раскрыть раздел SFC диаграмма в навигаторе проекта. Появится раздел шаги и
переходы
, которые содержат все шаги и переходы программы. Раскрыв данные разделы и выбрав необходимый шаг (переход) можно произвести редактирование шага (перехода). После выбора шага или перехода в разделе
шаги
или переходы будет предложен выбор языка. После выбора языка можно приступить к написанию подпрограммы.
Рис. 2.30 Созданный параллельный шаг
В качестве примера рассмотрим деление суммы аргументов X0 и X1 на аргумент Y с проверкой на равенство аргумента Y нулю. В случае равенства

63 аргумента Y нулю произведем деление на константу 10
-9
,результат деления присвоим аргументу Z. Программы будет также вычислять сумму всех результатов деления Sum. Первый шаг будет заключаться в нахождении суммы аргументов X0 и X1. Второй шаг— деление на Z, при условии перехода: Z не равен нулю. Третий шаг— деление на константу, 10
-9
при условии: Z равен нулю. Аргументы программы приведены на рис. 2.31.
Поскольку необходимо передать результат сложения из первого шага, выполняющего сложение X0 и X1, то создадим локальную переменную шаг1
(рис. 2.32). Так как необходимо найти суммы всех вычисленных отношений, создадим глобальную переменную S, хранящую предыдущую сумму всех найденных отношений (рис. 2.33).
Рис. 2.31 Аргументы программы примера
Рис. 2.32 Локальная переменная примера
Рис. 2.33 Глобальная переменная примера
SFC диаграмма изображена на рис. 2.34. Каждый шаг и переход выполним, используя язык Texno ST.

64
Рис. 2.33 SFC диаграмма примера
Первый шаг, производящий сложение аргументов Х0 и Х1 примет вид:
SFC_STEP "Сложение Х0 и Х1"
VAR_INPUT Y : REAL; END_VAR
VAR_OUTPUT Z : REAL; END_VAR
VAR_OUTPUT Sum : REAL; END_VAR
VAR_INPUT X0 : REAL; END_VAR
VAR_INPUT X1 : REAL; END_VAR
VAR Шаг1 : REAL := 0; END_VAR
Шаг1 = X0 + X1;
END_SFC_STEP
Переход к шагу, вычисляющему деление на Z примет вид:
SFC_TRANSITION "Z != 0" FROM( INITIAL_STEP ) TO( STEP_1 )
VAR_INPUT Y : REAL; END_VAR
VAR_OUTPUT Z : REAL; END_VAR

65
VAR_OUTPUT Sum : REAL; END_VAR
VAR_INPUT X0 : REAL; END_VAR
VAR_INPUT X1 : REAL; END_VAR
VAR Шаг1 : REAL := 0; END_VAR
Z != 0
END_SFC_TRANSITION
Внимание
: следует обратить внимание на то, что после записанного
условия
точка с запятой не ставится!
Сам шаг, производящий деление на Z примет вид:
SFC_STEP "(Х0+Х1)/Z"
VAR_INPUT Y : REAL; END_VAR
VAR_OUTPUT Z : REAL; END_VAR
VAR_OUTPUT Sum : REAL; END_VAR
VAR_INPUT X0 : REAL; END_VAR
VAR_INPUT X1 : REAL; END_VAR
VAR Шаг1 : REAL := 0; END_VAR
Sum = S + Шаг1 / Z;
S = Sum;
END_SFC_STEP
Переход к шагу, производящему деление на константу 10
-9
примет вид:

66
SFC_TRANSITION "Z == 0" FROM( INITIAL_STEP ) TO( STEP_2 )
VAR_INPUT Y : REAL; END_VAR
VAR_OUTPUT Z : REAL; END_VAR
VAR_OUTPUT Sum : REAL; END_VAR
VAR_INPUT X0 : REAL; END_VAR
VAR_INPUT X1 : REAL; END_VAR
VAR Шаг1 : REAL := 0; END_VAR
Z == 0
END_SFC_TRANSITION
Шаг, производящий деление на константу 10
-9
примет вид:
SFC_STEP "(X0+X1)/1e-9"
VAR_INPUT Y : REAL; END_VAR
VAR_OUTPUT Z : REAL; END_VAR
VAR_OUTPUT Sum : REAL; END_VAR
VAR_INPUT X0 : REAL; END_VAR
VAR_INPUT X1 : REAL; END_VAR
VAR Шаг1 : REAL := 0; END_VAR
Sum = S + Шаг1 / 1e-9;
S = Sum;
END_SFC_STEP

67
Язык
Texno IL
Программа на языке Texno IL— последовательность инструкций.
Каждая инструкция начинается с новой строки, содержит оператор с модификатором, в случае некоторых операторов приводится один или более операндов. Компилятор не чувствителен к регистру. Инструкции ADD 10 15 и Add 10 15 равнозначны.
В данном языке вводится понятие аккумулятора, под которым следует понимать хранилище текущего результата.
В качестве операндов могут выступать:
1.
переменные;
2.
константы (см. язык Texno ST);
3.
имя метки;
4.
имя функции.
Под модификатором следует понимать литеры N, C, X, которые приписываются справа к имени некоторых операторов. Модификатор N обозначает логическое отрицание операнда, С обозначает, что инструкция выполняется, если результат предыдущей операции сравнения истинен, модификатор X указывает на то, что инструкция выполняется, если аккумулятор содержит значение true.
Пример использования модификатора:
OR b//аккумулятор ИЛИ b
ORN b// аккумулятор ИЛИ НЕ b
Операторы, которые предполагают наличие одного или двух операндов
(арифметические, логические операции) допускают опустить первый операнд, тогда в качестве первого операнда выступает значение, хранящееся в аккумуляторе. Случай, когда используются оба операнда называется двухадресным режимом, случай, когда первый операнд заменяется аккумулятором— одноадресным режимом.
Пример двухадресного режима:

68
ADD 10 15//сложение 10 и 15
Пример того же сложения при одноадресном режиме:
LD 10//присвоение аккумулятору числа 10
ADD 15//сложение 10 и 15
Рассмотрим операторы языка Texno IL. Операторы для обмена с аккумулятором приведены в таблице 2.11.
Таблица 2.11
Операторы для обмена с аккумулятором
Обозначение оператора
Синтаксис оператора
Допустимые модификаторы
Действие
LD
LD
{операнд}
N присваивает аккумулятору значение операнда
ST
ST {операнд}
N присваивает операнду значение аккумулятора
Пример обмена данными с аккумулятором:
LD X//присвоение аккумулятору операнда Х
MULT K//Умножение X на K
ST X//присвоение операнду Х значения, хранящегося в аккумуляторе.
Логические операторы приведены в таблице 2.12
Таблица 2.12
Логические операторы
Обозначение оператора
Синтаксис оператора
Допустимые модификаторы
Действие
S
S {операнд}
— присваивает операнду значение

69 true
R
R {операнд}
— присваивает операнду значение false
AND
AND {операнд
1} {операнд 2}
N логическое «И»
OR
OR {операнд 1}
{операнд 2}
N логическое «ИЛИ»
XOR
XOR
{операнд 1}
{операнд 2}
N
Логическое
«исключающее
ИЛИ»
Пример логических операций:
S X//присвоение операнду X значения true
R Y//присвоение операнду Y значения false
AND X Y//X «И» Y
Арифметические операторы приведены в таблице 2.13.
Таблица 2.13
Арифметические операторы
Обозначение оператора
Синтаксис оператора
Допустимые модификаторы
Действие
ADD
ADD
{операнд 1}
{операнд 2}
— сложение операндов
SUB
SUB {операнд 1}
{операнд 2}
— вычитание операнда 2 из операнда 1

70
MUL
MUL
{операнд 1}
{операнд 2}
— произведение операндов
DIV
DIV {операнд 1}
{операнд 2}

Деление операнда 1 на операнд 2
Пример выполнения арифметических операций:
MUL X K
ADD C
Операторы сравнения приведены в таблице 2.14.
Таблица 2.14
Операторы сравнения
Обозначение оператора
Синтаксис
Допустимые модификаторы
Действие
GT
GT {операнд 1}
{операнд 2}
— возвращает true, если операнд 1 больше операнда 2
GE
GE {операнд 1}
{операнд 2}
— возвращает true, если операнд 1 не меньше операнда 2
EQ
EQ {операнд 1}
{операнд 2}
— возвращает true, если операнд 1 равен операнду 2
NE
NE {операнд 1}
{операнд 2}
— возвращает true, если операнд 1 неравен операнду 2
LE
LE {операнд 1}
{операнд 2}
— возвращает true, если операнд 1 не больше операнда 2

71
LT
LT {операнд 1}
{операнд 2}
— возвращает true, если операнд 1 меньше операнда 2
Операторы перехода и вызова функций приведены в таблице 2.15.
Таблица 2.15
Операторы перехода и вызова
Обозначение оператора
Синтаксис
Допустимые модификаторы
Действие
JMP
JMP {метка}
С, Х переход к строке с указанной меткой
CAL
CAL {имя функции
(параметры)}
С, Х
Вызов функции
RET
RET
С, Х
Выход из программы
Возможны следующие модификации операторов перехода и вызова:
JMPC— условный переход, выполняемый если результат предыдущей операции сравнения истинен;
JMPX— условный переход, выполняемый если аккумулятор содержит значение true;
CALC— условный вызов функции, выполняемый если результат предыдущего сравнения истинен;
CALX— условный вызов функции, выполняемый если аккумулятор содержит значение true
RETC— условный выход из программы, выполняемый если результат предыдущей операции сравнения истинен;

72
RETX— условный выход из программы, выполняемый, когда аккумулятор содержит значение true.
Пример выполнения сравнения и перехода:
EQ Z 0//проверка на равенство Z нулю
JMPC label//при равенстве нулю переход к строке с меткой label
… label: LD 1e-9//присвоение аргументу Z значения 10
-9
ST Z
Рассмотрим реализацию примера деления, приведенного на языке
Texno SFC, с использованием языка Texno IL. Поскольку существует оператор S в языке Texno IL, глобальную переменную переименуем с S на
Sum0. Тогда программа на языке Texno IL примет вид:
PROGRAM
VAR_INPUT Y : REAL; END_VAR
VAR_OUTPUT Z : REAL; END_VAR
VAR_OUTPUT Sum : REAL; END_VAR
VAR_INPUT X0 : REAL; END_VAR
VAR_INPUT X1 : REAL; END_VAR
VAR Шаг1 : REAL := 0; END_VAR
ADD X0 X1//Сложение аргументов
ST Шаг1//присвоение результата сложения переменной Шаг1
NE Y 0//Проверка на равенство нулю
JMPC Деление_на_Y//Переход к делению на Z, если Z не равен нулю
//Деление на 1е-9

73
DIV Шаг1 1e-9
ST Z//присвоение аргументу Z вычисленного отношения
JMP Сложение//Переход к сложению
Деление_на_Y: DIV Шаг1 Y//деление на Z
ST Z//присвоение аргументу Z вычисленного отношения
Сложение: ADD Z Sum0//Получение суммы всех результатов отношения
ST Sum0//присвоение суммы всех результатов сложения аргументу
Sumи глобальное переменной S и глобальное переменной S
ST Sum
END_PROGRAM
Отчет
тревог Trace Mode
Для SDADA–системы Trace Mode характерна возможность создания отчета тревог. Отчет тревог— текстовый документ, который содержит сообщения, генерируемые при различных ситуациях в процессе работе Trace
Mode.
В отчете могут быть записаны тревоги следующих видов:
1.
системные сообщения;
2.
сообщения по каналам;
3.
сообщения, генерируемые с помощью системной переменной
@Message;
4.
интерактивные сообщения оператора.
Строка сообщения в отчете тревог содержит поля, разделенные пробелом:

74
Date Time Category Name Coding Text UserID T_ack N
Можно выделить следующие поля:
Date— дата события;
Time— время события;
Category— категория сообщения. Можно выделить следующие категории сообщений:
1.
<>— без категории;
2.
— сообщение;
3.
— предупреждение;
4.
— ошибка;
5.
— информация;
6.
— тревога;
7.
— изменение атрибутов;
8.
— пользовательское
9.
<_>— невидимое (не передается в графику)
10.
<->— неквитируемое;
11.
— командное;
12.
— резерв
Name— в случае сообщений канала— имя канала; при системном сообщении— <имя файла prj без разрешения>_<порядковый номер узла>
Coding— кодировка канала;
Text— текст сообщения или пользовательский комментарий;
UserID— идентификатор пользователя;
T_ack— время квитирования сообщения в формате DD_HH_MM:SS;
N— порядковый номер строки.

75
Системными сообщениями являются:
1.
события, связанные с каналами:
1.1
Error— установка каналу признака аппаратной недостоверности;
1.2
Login— корректная авторизация при старте;
1.3
Logout— корректное окончание сеанса пользователем;
1.4
Failed Login—
некорректная авторизация при старте;
1.5
Failed Logout— некорректная авторизация при окончании сеанса пользователем;
2.
события, не связанные с каналами:
2.1
Start— запуск монитора реального времени;
2.2
Continue— невозможность выполнения файловой операции;
2.3
Stop— останов монитора реального времени;
3.
прочие события— неопределенное событие.
Для создания отчета надо настроить анализ границ канала при его редактировании. У любого канала, содержащего числовые данные можно задать следующие границы:
ВП (HL)— значение верхнего предела;
ВА (HA)— значение верхней аварийной границы;
ВГ (HW)— значение верхней предупредительной границы;
НГ (LW)— значение нижней предупредительной границы;
НА (LA)— значение нижней аварийной границы;
НП (LL)— значение нижнего предела;
Гистерезис.

76
Если в окне редактирования канала установлен флаг использовать на панели границы, то система Trace Mode будет производить анализ границ каналов (рис.2.34).
Рис. 2.34
Флаг контроль границ на той же панели окна редактирования разрешает установку признака программной достоверности. Так если данный флаг установлен и значение канала лежит в диапазоне [НП;ВП], то атрибут данного канала примет значение 1, что указывает на достоверность данных, если значение канала выйдет за пределы указанного диапазона, атрибут
программная
достоверность примет значение 0, что будет указывать на недостоверность данных. Таким образом, диапазон (ВП; ∞) и (-∞; НП) задают недостоверные значения канала, которые могут быть получены при неисправности датчиковой аппаратуры или устройств согласования. При недостоверности данных и установленном флаге программная
достоверность
в результате клиппирование, канал будет возвращать предельное значение НП или ВП.
При разрешенном анализе, когда значение канала лежит в диапазоне
(ВА; ВП] или [НП; НА) генерируется сообщение об аварии. Если значение канала лежит в диапазоне [ВА; ВГ) или (НГ; НА] генерируется сообщение, предупреждающее о близости к аварийной границе. Когда значение лежит в диапазоне [НГ; ВГ] генерируется сообщение о нормальном протекании процесса.
При небольших колебаниях параметра вблизи одной из границ будет создаваться большое количество сообщений при многократных переходах через границу. Колебаний могут быть на столько малы, что переходом через

77 границы можно пренебречь и генерируемые сообщения будут только мешать, тогда следует использовать гистерезис, который позволяет исключить подобное ненужное генерирование сообщений. Переход в сторону развития аварийной ситуации фиксируется при заданных границах.
При обратном изменении значения канала граница корректируется на величину установленного гистерезиса в соответствующем направлении.
Генерация сообщений будет происходить с использованием скорректированных границ.
Словарь сообщений (рис. 2.35) позволяет установить соответствие между диапазонами, задаваемыми при настройке контроля границ, и сообщениями, которые генерируются при принадлежности тому или иному диапазону, направлением передачи данных о тревоге. В словаре сообщений используются направления. Под направлением следует понимать параметр, задающие направление передачи сообщения.
Рис. 2.35 Словарь сообщений

78
Можно выделить следующие направления передачи сообщений:
1.
AR + G + Prn;
2.
AR + Prn;
3.
AR;
4.
AR + G + GSM;
5.
AR + GSM;
6.
AR + GSM + PRN;
7.
AR + G + GSM + PRN;
8.
G;
9.
AR + Net;
10.
AR + G + Net;
11.
AR + GSM + Net;
12.
Net;
13.
Net + GSM;
14.
AR + Play;
15.
AR + G + Play;
16.
AR + Net + Play;
17.
Play;
18.
AR + G + PlayStop;
19.
AR + G + PlayLoopStop.
При задании направления используются следующие обозначения направлений передачи сообщений:
1.
AR— в файл тревог;
2.
G— в исполнительные модули, которые способны отображать отчет тревог;

79 3.
PRN— на принтер;
4.
GSM— на сотовые телефоны в виде SMS;
5.
Net— в сеть;
6.
Play, PlayStop, PlayLoopStop— воспроизведение файла с именем:
{текст сообщения}.wav.
Степень важности сообщения задается категориями, которые указаны выше.
Среда предполагает заполнение таблицы словаря сообщений с помощью окна, изображенного на рис. 2.36. Для заполнения данного окна необходимо дважды щелкнуть левой клавишей мыши на строчке, которую необходимо заполнить или скорректировать.
Рис. 2.36 Заполнение словаря сообщений
Для создания отчета тревог необходимо произвести редактирование узла на закладке отчет тревог/дамп/параметры (2.37). В поле максимум
записей
указывается предельное количество записей в файле отчета тревог.
При переполнении файла отчета тревог происходит запись новых тревог с начала файла отчета начиная со второй строки. Поле формат даты задает формат записи даты и времени генерирования тревоги в файле отчета тревог.
В поле состояние следует выбрать true.

80
Рис. 2.37 Редактирование узла
При задании формата времени и даты можно использовать форматы приведенные в таблице 2.16.
Таблица 2.16
Форматы вывода даты и времени
Обознач.
Формат
%а сокращенное наименование дня недели
%А полное наименование дня недели
%b сокращенное наименование месяца
%B
Полное наименование месяца
%с дата и время в соответствии с региональными настройками ОС
%d день месяца как целое число
%Н часы в формате (00—23)
%I часы в формате (01— 12)
%j день года как целое число (001 до 366)
%m месяц как целое число (01— 12)
%M минуты как целое число (00— 59)
%р индикатор AM/PM для часов в формате 01— 12

81
%S секунды как целое число
%U неделя как целое число (00— 53); первый день недели— воскресенье
%w день недели как целое число (0—6, 0— воскрсенье)
%W неделя как целое число (00—53); первый день недели— понедельник
%х дата в соответствии с региональными настройками ОС
%y год без века как целое число (00— 99)
%Y год с веком как целое число (0000— 9999)
Для установления связи между созданным словарем сообщений и каналом следует произвести редактирование канала. На закладке архивация следует поставить флажок отчет тревог, в поле индекс аварийного словаря выбрать нужный словарь сообщений.
Рис. 2.38 Редактирование канала

82
СПАД
архив
Монитор реального времени программы Trace Mode поддерживает запись значений атрибутов канала в СПАД архивы (база данных реального времени).
Основные характеристики СПАД архива:

точность значения времени— 1 мс;

скорость записи в архив для рабочей станции с процессором Pentium-4 с тактовой частотой 2 ГГц— свыше 600 000 параметров в секунду.
Архивные данные могут использоваться монитором реального времени, экспортироваться в файл, отображаться графически.
Каждое сообщение в архиве содержит идентификаторы канала и атрибута, новое значение атрибута и время его изменения, а также некоторые другие параметры.
Настройка архива производится при редактировании узла и канала. При редактировании узла (рис. 2.39) на закладке архивы можно задать имя файла, в котором будет создан архив, размер файла, период сохранения, ограничить размер очереди на запись в архив. Для успешной работы с архивом следует установить значение состояние архива равным true.
Рис. 2.39 Редактирование узла
При редактировании канала (рис. 2.40) на закладке архивация следует выбрать в поле СПАД номер архива, который настраивался при редактировании узла. Для разрешения записи атрибутов канала в архив

83 следует поставить флажок атрибуты. Флажок регистратор разрешает архивацию атрибутов в регистатор.
Глобальный регистратор служит для обеспечения надежного хранения архивов.
Он архивирует данные, обеспечивает автоматическое восстановление данных после сбоя. Флаг атрибуты разрешает/запрещает запись в архив сообщения об изменении границ и атрибутов обработки канала помимо сообщения об изменении атрибута R (реальное значение) канала. Так если флаг атрибуты не установлен, то в архив заносятся сообщения об изменении атрибута R канала, границ, атрибутов обработки канала. Если же флаг атрибуты не установлен, то в архив заносятся только сообщения об изменении атрибута R канала.
Рис. 2.40 Редактирование канала

84
1   2   3   4   5   6   7


написать администратору сайта