Вы находитесь на странице: 1из 238

1

Федеральное государственное автономное образовательное


учреждение высшего образования «Санкт-Петербургский
политехнический университет Петра Великого»
————————
АО "Шнейдер Электрик"

В.Г. Давыдов, В.Н. Хохловский

Система супервизорного
управления Citect SCADA.
Базовый курс и язык Cicode
Учебное пособие

Санкт-Петербург
2017
2

Эта страница намеренно оставлена пустой


3

Содержание
Предисловие .................................................................................................................... 8
Используемые обозначения ................................................................................................................... 8
Введение .......................................................................................................................... 9
Часть1. Система супервизорного управления Citect SCADA. Базовый курс ......... 12
Глава 1. Среда конфигурирования Citect SCADA ..................................................... 12
1.1. Среда разработки Citect Studio ..................................................................................................... 12
Упражнение 1.1................................................................................................................................. 13
1.2. Построитель графики Citect.......................................................................................................... 13
Упражнение 1.2................................................................................................................................. 13
1.3. Редактор Cicode ............................................................................................................................. 13
Упражнение 1.3................................................................................................................................. 13
Глава 2. Управление проектами .................................................................................. 14
2.1. Создание нового проекта. Включение проектов ........................................................................ 14
Упражнение 2.1. Создание проекта Training .................................................................................. 14
2.2. Архивирование, удаление и восстановление проекта ................................................................ 16
Упражнение 2.2. Сохранение, удаление и восстановление проекта Training ............................. 17
2.3. Кластеры и серверы. Мастер конфигурирования компьютера ................................................. 18
Упражнение 2.3. Изменение свойств кластера и сервера ввода-вывода в проекте Training ..... 18
Упражнение 2.4. Настройка компьютера для проекта Training ................................................... 20
Упражнение 2.5. Запуск проекта Training ...................................................................................... 23
Глава 3. Настройка связи и работа с тегами .............................................................. 25
3.1. Мастер установки связи между устройствами ............................................................................ 25
Упражнение 3.1. Настройка связи для проекта Training ............................................................... 26
3.2. Тестирование связи (на примере проекта Training) .................................................................... 27
Упражнение 3.2. Создание дискетного тега ................................................................................... 29
Упражнение 3.3. Создание графической страницы ....................................................................... 29
Упражнение 3.4. Добавление на страницу графических объектов и их настройка .................... 30
Упражнение 3.5. Запуск проекта и тестирование связей .............................................................. 35
3.3. Структурированные имена тегов ................................................................................................. 37
3.4. Добавление тегов и их редактирование ....................................................................................... 42
Упражнение 3.6. Добавление тегов в проект Training. Проект Training1 .................................... 43
Упражнение 3.7. Создание привилегированного пользователя. Просмотр и модификация
тегов. Проект Training2 .................................................................................................................... 46
3.5. OPC Factory Server (OFS) .............................................................................................................. 49
3.5.1. Файл переменных приложения контроллера ....................................................................... 50
Упражнение 3.8. Создание таблицы переменных в формате CSV............................................... 50
3.5.2. Состав и режимы работы OFS ............................................................................................... 51
3.5.3. Конфигурирование OFS ......................................................................................................... 52
3.5.4. Запуск клиента OFS и тестирование связи ........................................................................... 54
3.5.5. Связь Citect SCADA с контроллером c помощью OFS ....................................................... 56
Глава 4. Графика ........................................................................................................... 61
4.1. Рисование графической страницы проекта Training2 ................................................................ 62
Упражнение 4.1. Создание новой графической страницы Oven .................................................. 62
Упражнение 4.2. Размещение в графической странице Oven символа Tank .............................. 62
Упражнение 4.3. Размещение на графической странице Oven набора символов Burner ........... 62
Упражнение 4.4. Размещение на графической странице многоугольника Oven ........................ 64
Упражнение 4.5. Размещение трубопровода на графической странице Oven ............................ 65
Упражнение 4.6. Размещение на графической странице Oven еще одного набора символов
Burner ................................................................................................................................................. 66
Упражнение 4.7. Просмотр созданной графической страницы Oven. Проект Training3 ........... 67
4.2. Цветовая анимация графических объектов во время выполнения проекта ............................. 67
Упражнение 4.8. Цветовая анимация графического объекта ....................................................... 67
4.3. Отображение столбиковой диаграммы во время выполнения проекта .................................... 68
Упражнение 4.9. Использование столбиковой диаграммы и предопределенного объекта
Джинн (Genie) ................................................................................................................................... 68
4

4.4. Отображение числовых значений во время выполнения проекта ............................................ 69


Упражнение 4.10. Отображение числовых значений .................................................................... 69
4.5. Отображение текста во время выполнения проекта ................................................................... 72
Упражнение 4.11. Отображение текста и его анимация. Проект Training4 ................................ 72
Упражнение 4.12. Анимация клапана трубопровода. Проект Training5 ..................................... 76
Глава 5. Оповещения - сигналы тревоги (Alarms)..................................................... 80
5.1. Конфигурирование сигналов тревог ............................................................................................ 81
Упражнение 5.1. Добавление сигналов тревог .............................................................................. 81
5.2. Отображение оповещений (сигналов тревог) ............................................................................. 81
Упражнение 5.2. Просмотр оповещений. Проект Training6 ......................................................... 81
Глава 6. Графики тегов — тренды (Trends) ............................................................... 88
6.1. Конфигурирование тренд-тегов ................................................................................................... 88
Упражнение 6.1. Создание и конфигурирование тренд-тега........................................................ 89
6.2. Отображение трендов.................................................................................................................... 90
Упражнение 6.2. Создание, конфигурирование и отображение тренд-тега на обычной
графической странице ...................................................................................................................... 90
Глава 7. Команды и средства управления (Commands and Controls)....................... 95
7.1. Ползунковый переключатель (Slider) .......................................................................................... 95
Упражнение 7.1. Создание и тестирование ползункового переключателя ................................. 95
7.2. Команды ввода с помощью мыши (Touch commands) ............................................................... 98
7.3. Команды ввода с помощью клавиатуры (Keyboard commands) ................................................ 98
Упражнение 7.2. Ввод с клавиатуры для графического объекта. Проект Training8 ................ 100
Глава 8. Расширенная графика. Анализатор технологических процессов
(Process Analyst) .......................................................................................................... 102
8.1. Общие сведения об анализаторе процессов .............................................................................. 102
Упражнение 8.1. Добавление анализатора процессов на графическую страницу .................... 104
8.2. Свойства анализатора процессов. Отображение трендов и сигналов тревог ......................... 104
Упражнение 8.2. Настройка анализатора процессов при конструировании и выполнении.
Отображение трендов, аналоговых и дискретных оповещений. Проект Training9 .................. 105
8.3. Типы перьев Анализатора процессов и настройка свойств Анализатора процессов в период
исполнения. Мгновенные тренды ..................................................................................................... 108
Глава 9. Дополнительные черты графики. Изображения, джинны (genie) и
всплывающие страницы............................................................................................. 112
9.1. Графическая страница. Импорт графики, настройка цветов и использование графических
изображений в качестве фона ............................................................................................................ 112
Упражнение 9.1. Импорт графики и замена цвета ...................................................................... 112
Упражнение 9.2. Осветление синих оттенков и замена зеленых оттенков ............................... 113
Упражнение 9.3. Изображение как фон графической страницы. Проект Training10 ............... 113
9.2. Джинны (Genies) .......................................................................................................................... 114
Упражнение 9.4. Создание пользовательского джинна для управления задвижкой подачи газа
.......................................................................................................................................................... 115
Упражнение 9.5. Просмотр свойств джинна на графической странице. Проект Training11 ... 117
9.3. Всплывающие окна ..................................................................................................................... 117
Упражнение 9.6. Создание всплывающего окна (Popup Window). Проект Training12 ............ 118
Глава 10. Устройства. Конфигурирование устройства для регистрации действий
оператора ..................................................................................................................... 122
Упражнение 10.1. Конфигурирование и использование устройства для регистрации команд
оператора. Проект Training13 ........................................................................................................ 122
Глава 11. События. Определение и обработка событий ......................................... 124
Упражнение 11.1. Определение и разрешение событий. Проект Training14 ............................ 124
Глава 12. Оповещения: категории, группы и звуковое оформление ..................... 126
Упражнение 12.1. Категории сигналов тревог. Проект Training15 ............................................ 126
Упражнение 12.2. Звуковое оформление сигналов тревог. Проект Training16 ........................ 129
Глава 13. Система навигации .................................................................................... 131
Упражнение 13.1. Конфигурирование меню. Проект Training17............................................... 131
Упражнение 13.2. Использование набора иконок в стиле Tab_Style_1. Проект Training18 .... 133
Упражнение 13.3. Клавишные команды системного уровня. Проект Training19 ..................... 138
Глава 14. Отчеты: определение, создание и просмотр ........................................... 139
5

Упражнение 14.1. Определение (конфигурирование) отчета ..................................................... 139


Упражнение 14.2. Создание и просмотр отчетов. Отображение текстового файла. Проект
Training20 ........................................................................................................................................ 140
Глава 15. Дополнительные возможности работы с событиями. Ограничение прав
доступа ......................................................................................................................... 144
15.1. Выполнение процессов в реальном масштабе времени ......................................................... 144
Упражнение 15.1. Выполнение Cicode-функции пользователя. Проект Training21 ................ 144
Упражнение 15.2. Выполнение Cicode-функции пользователя с использованием нескольких
событий. Проект Training22........................................................................................................... 145
15.2. Ограничение прав доступа пользователей .............................................................................. 145
15.3. Зоны и привилегии .................................................................................................................... 146
Упражнение 15.3. Назначение зон и привилегий графическим страницам и графическим
объектам .......................................................................................................................................... 147
15.4. Добавление пользователей с различными правами доступа ................................................. 149
Упражнение 15.4. Модификация параметров ролей и пользователей ....................................... 149
Упражнение 15.5. Тестирование созданной политики безопасности ........................................ 151
Глава 16. Пользовательские шаблоны, точки анимации и пользовательские меню
...................................................................................................................................... 153
16.1. Шаблоны Citect SCADA ........................................................................................................... 153
Упражнение 16.1............................................................................................................................. 153
16.2. Создание собственных шаблонов ............................................................................................ 153
Упражнение 16.2. Создание собственного шаблона. Проект Training22Tmplt......................... 154
16.3. Настройка собственных шаблонов .......................................................................................... 156
Упражнение 16.3. Настройка созданного шаблона MyNormal. Создание строки заголовка .. 156
Упражнение 16.4. Настройка созданного шаблона MyNormal. Создание панелей инструментов
.......................................................................................................................................................... 157
16.4. Точки вывода анимации (AN) .................................................................................................. 158
Упражнение 16.5. Настройка созданного шаблона MyNormal. Использование
зарезервированных точек вывода анимации ................................................................................ 158
16.5. Отображение в шаблоне сигналов тревог ............................................................................... 161
Упражнение 16.6. Настройка созданного шаблона MyNormal. Отображение сигналов тревог
.......................................................................................................................................................... 161
16.6. Навигация (перемещение) в шаблоне ...................................................................................... 164
Упражнение 16.7. Настройка созданного шаблона MyNormal. Боковые панели инструментов
навигации ........................................................................................................................................ 164
16.7. Использование пользовательского шаблона ........................................................................... 165
Упражнение 16.8. Использование созданного шаблона MyNormal ........................................... 165
16.8. Пользовательские меню ............................................................................................................ 167
Упражнение 16.9. Создание и применение пользовательского меню ....................................... 169
Глава 17. Всплывающие окна, сопоставление имен и суперджинны. Элементы
ActiveX......................................................................................................................... 171
17.1. Сопоставление имен тегов ........................................................................................................ 171
Упражнение 17.1. Создание всплывающей графической страницы с сопоставлением имен.
Проект Training21SuperGenie ........................................................................................................ 172
Упражнение 17.2. Вызов всплывающей графической страницы с сопоставлением имен ...... 174
17.2. Расширенные свойства тегов (extensions) ............................................................................... 176
Упражнение 17.2. Изменение расширенных свойств тегов на стандартных страницах .......... 178
17.3. Создание и использование суперджиннов .............................................................................. 180
Упражнение 17.3. Создание суперджинна для отображения информации о расширенных
свойствах тега ................................................................................................................................. 180
Упражнение 17.4. Джинн: присоединение суперджинна и размещение экземпляров джинна на
графической странице .................................................................................................................... 183
17.4. Объекты ActiveX ....................................................................................................................... 185
Упражнение 17.5. Использование объекта ActiveX .................................................................... 186
Часть 2. Основы языка Cicode в системе Citect SCADA ........................................ 189
Глава 18. Язык Cicode: назначение языка, структура программы, данные .......... 189
18.1. Структура Cicode-программы .................................................................................................. 190
18.2. Данные языка Cicode ................................................................................................................. 191
18.2.1. Типы данных ....................................................................................................................... 191
6

18.2.2. Определение переменных .................................................................................................. 192


18.2.2.1. Правила именования переменных .............................................................................. 193
18.2.2.2. Примеры определения переменных ........................................................................... 193
18.2.3. Определение массивов ....................................................................................................... 193
18.3. Константы языка Cicode ........................................................................................................... 194
Глава 19. Операторы языка Cicode ........................................................................... 196
19.1. Выражения языка Cicode .......................................................................................................... 196
19.1.1. Арифметические операции ................................................................................................ 196
19.1.2. Битовые операции............................................................................................................... 196
19.1.3. Операции отношений ......................................................................................................... 197
19.1.4. Логические операции ......................................................................................................... 197
19.1.5. Приоритеты (порядок выполнения) операций ................................................................. 197
19.2. Оператор присваивания ............................................................................................................ 199
19.2.1. Форматирование текстовых строк. Использование Escape-последовательностей ....... 201
19.3. Операторы ветвлений ................................................................................................................ 202
19.3.1. Условный оператор ............................................................................................................ 202
19.3.2. Переключатель .................................................................................................................... 203
19.4. Циклические операторы ............................................................................................................ 203
19.4.1. Цикл FOR … DO ................................................................................................................. 204
19.4.2. Цикл WHILE … DO............................................................................................................ 204
Глава 20. Функции языка Cicode............................................................................... 206
20.1. Определение функции ............................................................................................................... 206
20.2. Вызов функции .......................................................................................................................... 207
Глава 21. Структура Cicode-файлов (*.ci). Использование комментариев ........... 208
21.1. Синтаксис комментариев .......................................................................................................... 208
21.2. Структура и использование комментариев в заголовке файла с расширением .ci .............. 208
21.3. Использование комментариев в заголовке определения функции ....................................... 209
Глава 22. Интегрированная среда разработки и отладки Cicode-программ ......... 211
22.1. Основные приемы работы в ИСР ............................................................................................. 212
22.1.1. Определение предпочтений при редактировании ........................................................... 213
22.1.2. Создание и сохранение Cicode-файла ............................................................................... 213
22.1.3. Открытие существующего Cicode-файла ......................................................................... 214
22.1.4. Удаление существующего Cicode-файла ......................................................................... 214
22.1.5. Поиск текста в Cicode-файле ............................................................................................. 214
22.1.6. Компиляция Cicode-файла и просмотр информации об ошибках ................................. 215
22.1.7. Режимы ИСР ....................................................................................................................... 216
22.1.8. Размещение окон и панелей инструментов ИСР ............................................................. 216
22.1.9. Назначение и использование панелей инструментов ИСР ............................................. 217
22.1.10. Назначение и использование окон просмотра ИСР ...................................................... 218
22.2. Отладка фрагментов и функций Cicode-программы .............................................................. 221
Глава 23. Использование Cicode-файлов, Cicode-команд и Cicode-функций в
системе Citect SCADA................................................................................................ 223
23.1. Использование Cicode-файлов ................................................................................................. 223
23.2. Использование Cicode-команд ................................................................................................. 223
23.3. Часто используемые функции .................................................................................................. 225
23.3.1. Функции для работы с сигналами тревог (Alarm Functions)........................................... 226
23.3.2. Функции для работы с графическими страницами (Page Functions) ............................. 227
Упражнение 23.1. Использование функции PageAlarm( ) ............................................... 227
Упражнение 23.2. Использование функции PageDisplay( )........................................... 228
Упражнение 23.3. Использование функции PageGoto( ) .................................................. 228
Упражнение 23.4. Использование функции PageHardware()........................................... 228
Упражнение 23.5. Использование функции PageLast() .................................................... 228
Упражнение 23.6. Использование функции PageNext() .................................................... 228
Упражнение 23.7. Использование функции PagePrev() .................................................... 229
Упражнение 23.8. Использование функции PageSummary() ............................................. 229
23.3.3. Функции для работы с отчетами (Report Functions) ........................................................ 229
23.3.4. Функции для работы со временем и датой (Time/Date Functions) ................................. 229
Упражнение 23.9. Использование функции Date() .............................................................. 229
7

Упражнение 23.10. Использование функции Time() ............................................................ 229


Упражнение 23.11. Использование функции SysTime() .................................................... 230
23.3.5. Разные функции (Miscellaneous Functions) ....................................................................... 230
Упражнение 23.12. Использование функции FullName() .................................................. 230
Упражнение 23.13. Использование функции Login() ......................................................... 230
Упражнение 23.14. Использование функции Name() ............................................................ 231
Упражнение 23.15. Использование функции UserInfo() .................................................. 231
23.4. Категории стандартных функций Cicode и их назначение .................................................... 233
Литература .................................................................................................................. 235
Предметный указатель ............................................................................................... 236
Приложение 1. Учебные курсы Центра обучения АО «Шнейдер Электрик» по
тематике пособия ........................................................................................................ 237
8

Предисловие
Учебное пособие предназначено для использования студентами при изучении дисциплин
"Проектирование компьютерных систем управления" и «Компьютерные системы управления». Эти
дисциплины включены в учебный план подготовки магистров и инженеров по направлениям 220200
"Автоматизация и управление", 220700 «Управление в технических системах» и специальности
220201 "Управление и информатика в технических системах" (национально-региональный
компонент государственного образовательного стандарта).
В качестве инструментального программного средства при создании компьютерных систем
управления в учебном пособии используется система супервизорного управления и сбора данных
Citect SCADA 2016 (или, иначе, Citect SCADA версии 8.0) компании Schneider Electric (Франция), а
также входящий в систему язык программирования Cicode. Название Citect SCADA с 2017 года
используется как замена для наименований Vijeo Citect и CitectSCADA (в последнем слове
отсутствует пробел); системы с такими названиями, которые различались маркетинговой
ориентацией, компания Schneider Electric предлагала для использования ранее.
Настоящее учебное пособие является существенно переработанным пособием [1] применительно к
версии системы Citect SCADA 2016 года.
Изложение материала в учебном пособии соответствует программе базового курса по системе
супервизорного управления Citect SCADA и курса по языку программирования Cicode, изучаемых
в центрах обучения компании Schneider Electric за рубежом и в РФ (см. Приложение 1). Поэтому
предлагаемый материал может быть использовано не только студентами, но и персоналом
производственных компаний — конечными пользователями и системными интеграторами — на
курсах повышения квалификации по SCADA-системам.
Для удобства пользователей учебное пособие содержит около 90 упражнений, выполнение которых
способствует более успешному освоению изучаемого материала, и 28 сквозных демонстрационных
проектов по основным разделам курса, которые нацелены на практическое изучение системы
супервизорного управления и служат удобным средством получения справочного материала. Это
позволяет использовать учебное пособие и для самостоятельного изучения.
Учебное пособие составлено при поддержке АО «Шнейдер Электрик», за что авторы выражают
компании искреннюю признательность.

Используемые обозначения
Названия окон, полей окон, меню, команд, акселераторов, клавиш, кнопок и т. п. в тексте книги
выделяются полужирным шрифтом. Исходные тексты программ и результаты их работы,
приводимые в учебном пособии, для удобства читателей печатаются с использованием
непропорционального (моноширинного) шрифта Courier New, а служебные слова языка Сicode в
тексте учебного пособия и в исходных текстах демонстрационных программ выделяются
полужирным шрифтом.
Курсивом в тексте выделяются определяющие вхождения новых понятий, а также отдельные слова
или выражения, на которые следует обратить внимание.
Имена папок, файлов и их расширения пишутся без кавычках.
Кроме шрифтовых выделений, используется два типа специальных абзацев: советы и замечания.
Со в ет
Наряду с данным учебным пособием пользуйтесь и другими документами, указанными в списке
использованной литературы [1-6].

За ме ч а н ие
При использовании Process Analyst, Citect SCADA Web Client или Citect SCADA Web Server следует
пользоваться обозревателем Internet Explorer версии 9.0 или выше.

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


cst@icc.spbstu.ru для авторов учебного пособия.
9

Введение
Цель данного учебного пособия — предметно продемонстрировать основные возможности
системы Citect SCADA 2016 для ее изучения, что иллюстрируется цепочкой сквозных постепенно
наращиваемых демонстрационных примеров. Эти примеры в виде упакованных файлов содержатся
в прилагаемом архиве CitectSCADA2016_OvenTraining.zip, файлы называются
OvenTraining*.ctz. Для более быстрого и простого освоения изучаемого материала рекомендуем в
процессе упражнений параллельно с преподавателем повторять учебные примеры. При этом
примеры OvenTraining* можно использовать в качестве справочного материала. В качестве
названия повторяемого проекта используйте Training*, а его резервную копию называйте и
размещайте в пользовательской папке системы Citect SCADA.
Со в ет
Наряду с данным учебным пособием пользуйтесь и другими общедоступными документами,
указанными в списке использованной литературы [1-6].

Система Citect SCADA является системой супервизорного управления и сбора данных (или системой
диспетчерского управления) общепромышленного назначения. При разработке системы
Citect SCADA большое внимание уделялось гибкости; она позволяет построить, как показывает
опыт внедрения, систему супервизорного управления, удовлетворяющую практически любым
конкретным требованиям. Система супервизорного управления Citect SCADA пригодна для
решения как малых, так и больших задач. Систему Citect SCADA с успехом применяют для
наблюдения за производством и оборудованием и для управления технологическими процессами в
различных отраслях промышленности, в энергетике, при обработке и транспортировке нефти и газа,
в жилищно-коммунальной сфере и других областях. Доля рынка Citect SCADA составляет около
50 — 60% в Австралии и около 15 % в мире и постепенно увеличивается. Первая версия этой
SCADA-системы была разработана в середине 1980-х годов, в 2007 году — версия 7.00, а в 2016
году — версия 8.0, которая также имеет в своем названии год выпуска - 2016. Сильными сторонами
системы супервизорного управления Citect SCADA являются поддержка контроллеров практически
всех фирм-производителей, присутствующих на мировом рынке, мощная среда разработки,
относительная простота разработки приложений разной сложности, интеграция в коммерческое
предложение компании Schneider Electric. Благодаря гибкости систему Citect SCADA можно
расширять в соответствии с технологическими и информационными требованиями производства.
Система Citect SCADA легка в обучении и использовании. Такие особенности системы, как
шаблоны, genies (джинны), мастера, включаемые проекты, возможность удаленного развертывания
(deployment) и другие функциональные возможности сокращают время и усилия, необходимые для
настройки и повышения эффективности работы.
Перед установкой системы Citect SCADA 2016 убедитесь, что компьютер удовлетворяет
минимальным требованиям с точки зрения аппаратуры и программного обеспечения,
предъявляемым со стороны системы Citect SCADA. При этом может понадобиться обновление
компьютерного оборудования и программного обеспечения.
Версия 2016 года (или версия 8.0) системы Citect SCADA может работать в следующих
операционных системах:
 Windows 10;
 Windows 8;
 Windows Server 2012 или Windows Server 2012 R2;
 Windows 7 с Service Pack 1 (32 Bit или 64 Bit);
 Windows Server 2008 R2 с Service Pack 1 (32 Bit или 64 Bit).
Систему Citect SCADA можно установить на виртуальных машинах:
 Microsoft Hyper-V: соответствующая версия Windows;
 VMware Workstation: базовые возможности без реализации функций горячего резервирования
«High Availability» и восстановления «Disaster Recovery»;
 VMware vSphere.
10

За ме ч а н ие
При использовании подсистем Process Analyst, Web Client или Web Server следует пользоваться
обозревателем Internet Explorer версии 9.0 или выше. При установке Web Server необходимо обеспечить
совместную работу этой подсистемы с Microsoft Internet Information Server (MS IIS).

Требования к аппаратному обеспечению зависят от многих факторов: количества входов-выходов,


количества оповещений (сигналов тревоги или «алармов») и трендов, частоты обновления, в случае
многомашинной архитектуры для серверов – от особенностей кластеризации и количества
клиентских машин, для клиентских машин – от сложности пользовательского интерфейса.
Приводимые ниже ориентировочные данные основаны на оценке односерверной архитектуры с
десятью клиентскими компьютерами, при этом нагрузка на процессор сервера не превышает 25%.
За м еч а н ие
Частота процессора используемого компьютера не является в настоящее время характеристикой
быстродействия компьютера. Требования к компьютеру по быстродействию могут быть даны на основе
оценки PassMark® Software. Для определения быстродействия процессора (пусть, например, это будет
Core i3 CPU), следует ввести запрос на поиск в Интернете «PassMark Core i3». Результат покажет
быстродействие процессора по отношению к аналогичным известным процессорам.

С учетом сделанных замечаний можно привести в качестве примера следующие параметры


аппаратуры:
 Клиентский компьютер: PassMark® процессора – 2000, число ядер – 2, ОЗУ – 4ГБ, диск – 10ГБ,
память графической карты – 128МБ.
 Компактная архитектура, серверный компьютер для 1500 входов-выходов: PassMark®
процессора – 1800, число ядер – 1, ОЗУ – 4ГБ, диск – 10ГБ, память графической карты – 64МБ.
 Архитектура средней сложности, серверный компьютер для 50 000 входов-выходов: PassMark®
процессора – 8000, число ядер – 4, ОЗУ – 8ГБ, диск – 100ГБ, память графической карты – 128МБ.
За м е ч а н ия
1. Если серверы планируется использовать для решения задачи удаленного развертывания (Remote
Deployment), то дисковое пространство должно быть достаточно для размещения
сконфигурированных версий и двух дополнительных версий.

2. Оценка требуемого размера диска серверов дана для размещения системы реального времени и
откомпилированного проекта. Кроме того, предполагается, что для 20% входов-выходов система
строит тренды в среднем каждые 10 сек круглосуточно, причем эти значения сохраняются в
течение последних трех месяцев; каждый вход-выход в течение суток формирует один сигнал
тревоги.

 Рабочее место инженера-разработчика проекта с компактной архитектурой (1500 входов-


выходов): PassMark® процессора – 2000, число ядер – 2, ОЗУ – 8ГБ, диск – 10ГБ, память
графической карты – 128МБ.
 Рабочее место инженера-разработчика проекта с архитектурой средней сложности(50 000
входов-выходов): PassMark® процессора –8000, число ядер – 4, ОЗУ – 8ГБ, диск – 100ГБ, память
графической карты – 128МБ.
За м еч а н ие
Для более производительной работы инженера-разработчика на компьютере рекомендуется
использовать твердотельные диски (SSD). Если устанавливаются не твердотельные диски, то
рекомендуемая скорость их вращения – не менее 7200 об./мин.

Для всех указанных компьютеров имеются также рекомендации по поддержке графики: карта с
DirectX 9 (или более поздняя версия) с драйвером WDDM 1.0, разрешение экрана - 1920 x 1080
(система реального времени поддерживает и другие разрешения, как меньшие, так и большие, а
интегрированная среда разработки Citect Studio для рабочего места инженера-разработчика
поддерживает разрешение 1920 х 1080 и более). В случае, если используется не автономная (т.е. не
одномашинная “stand-alone”, а многомашинная) архитектура, то рекомендуется скорость сетевого
обмена – 100МБ/с.

Использование антивирусного программного обеспечения на компьютерах с работающей системой


реального времени Citect SCADA может приводить к снижению ее производительности и потере
11

данных. Это может происходить при некорректной работе антивирусных программ, а также в случае
сканирования файлов антивирусными программами «на лету», при этом в зависимости от
конфигурации файлы могут быть заблокированы, перемещены или удалены как подозрительные на
наличие вирусов. В критических случаях такая ситуация может привести к приостановке работы
системы Citect SCADA с серьезными последствиями для обслуживающего персонала и
оборудования.
Для предупреждения подобной работы антивирусных программ рекомендуется исключить из
проверки на вирусы каталоги, в которых размещены система Citect SCADA, файлы данных и
регистрационные данные проекта, архивы, в которых записываются сигналы тревоги.
После установки системы Citect SCADA необходимо выполнить ее лицензирование с помощью
аппаратного или программного ключа. Лицензия системы Citect SCADA может размещаться в
устройстве ключ аппаратной защиты Sentinel, которое включается в порт USB компьютера.
Ключ защиты может быть также программным (FLEXERA). В этом случае лицензия размещается
на лицензирующем сервере FlexNet Enterprise License Server, а управление ключами производится
с помощью программного менеджера плавающих лицензий Floating License Manager –
приложения, входящего в систему Citect SCADA. В обоих случаях система использует
динамический подсчет количества входов-выходов и других параметров для определения того,
превышен или нет лимит приобретенной лицензии: подсчет проводится для работающей системы
реального времени. Определяется количество используемых входов-выходов для сервера,
количество клиентских компьютеров с полным доступом (control clients - «управляющие» клиенты)
и количество клиентских компьютеров «только чтение» (manager clients или view-only clients –
«просматривающие» клиенты). Динамический подсчет означает, например, следующее: если на
графической странице в проекте используется тег, сопоставленный некоторому адресу в
контроллере, то он увеличивает счетчик входов-выходов только в том случае, когда графическая
страница открывается и производится запрос на чтение тега первый раз. В системе подсчитываются
не используемые адреса контроллера, а теги; это означает, что если к одному адресу привязаны два
тега, то именно при первом использовании каждого тега счетчик входов-выходов будет
увеличиваться. В проекте можно проверять текущее значение счетчика входов-выходов – оно
доступно на стандартной странице отладки и с помощью функции встроенного в систему языка
программирования Cicode.
При подсчете клиентских компьютеров не делается различия между web-клиентами и «обычными»
клиентами.
Если проект системы Citect SCADA запускается без ключа защиты, то система работает в
демонстрационном режиме. Демонстрационный режим позволяет использовать все возможности
системы Citect SCADA, но с ограниченным временем работоспособного состояния и ограниченным
количеством входов/выходов, причем в Мастере конфигурирования компьютера (см.ниже) может
быть указан вариант множественных процессов Windows и в этом случае выбрана сетевая модель
«автономная» (stand-alone), либо может быть указан вариант одиночного процесса.
Доступны следующие демонстрационные режимы:
 Непрерывная работа в течение 15 минут с максимальным количеством 50 000 реальных входов-
выходов.
 Непрерывная работа в течение 10 часов максимально с одним динамическим вводом/выводом
реального времени. Это подходит для демонстрационного режима с использованием дискового
ввода/вывода. Система Citect SCADA начнет работу в этом режиме, если отсутствует ключ
защиты, и в случае попытки использования второго входа-выхода через 15 минут после запуска
перейдет в режим 15-минутной работы (т.е. остановится).
Демонстрационный режим полезен для конфигурирования, выполняемого вне реальной системы, и
тестирования проекта. Тем не менее, если Citect SCADA будет использоваться в реальной системе,
то понадобится лицензия.
Ключи защиты системы Citect SCADA должны обновляться при обновлениях программного
обеспечения (upgrading). Можно получить или обновить лицензию системы Citect SCADA с
помощью факса, телефона, электронной почты или интерактивно через Интернет. Подробности
изложены в Руководстве по установке системы [2] и в html-справке, размещаемой на компьютере
при установке системы [3].
12

Часть1. Система супервизорного управления


Citect SCADA. Базовый курс
В Части 1 пособия приведены базовые сведения о работе в рассматриваемой SCADA-системе и ее
особенностях в среде конфигурирования Citect Studio и построителе графики Citect.
Рассматривается создание и свойства тегов, работа с разнообразными графическими объектами и
решение базовых задач, характерных для SCADA-системы: связь с устройствами ввода-вывода с
помощью OPC-сервера, система оповещений (сигналы тревог или «алармы»), построение трендов,
создание отчетов, определение событий, привилегии и права пользователей.

Глава 1. Среда конфигурирования


Citect SCADA
Система Citect SCADA состоит из ряда приложений, самыми важными из которых являются
следующие: Среда разработки Citect Studio, Построитель графики Citect и Редактор Cicode.

1.1. Среда разработки Citect Studio


Начиная с версии 8.0 в систему входит интегрированная среда разработки Citect Studio, которая
объединяет функции двух прежних – Проводника Citect (Citect Explorer) и Редактора проектов
(Project Editor), имеет модернизированный пользовательский интерфейс и значительно расширяет
возможности отсутствующих в версии 8.0 Проводника и Редактора проектов.
Приложение Citect Studio является основной подсистемой системы Citect SCADA / CitectSCADA и
позволяет создавать проекты Citect SCADA и управлять ими. Citect Studio служит также
управляющим конфигурационным приложением, из которого можно запустить подсистемы
Построитель графики Citect, Редактор Cicode и другие. Приложение Citect Studio применяется
также для создания файлов конфигурации проекта Citect SCADA и управления ими. Файлы
конфигурации проекта содержат информацию о конфигурации проекта Citect SCADA, которая не
относится к графическим страницам. С помощью Citect Studio можно просматривать все записи
файлов конфигурации проекта Citect SCADA.
Для запуска среды разработки SCADA-приложений Citect Studio выполните команду
Start(Пуск) | Programs (Программы) | Schneider Electric | Citect SCADA 2016 | Citect Studio (из-
за версии операционной системы команда может отличаться от приведенной), но удобнее это делать
с помощью ярлыка, расположенного на рабочем столе. При запуске приложения Citect Studio
автоматически запускаются приложение Построитель графики Citect. При закрытии
Проводника Citect указанное приложение автоматически закрывается.
Со в ет
Для получения дополнительной информации о приложении Citect Studio в среде этого приложения
выполните команду Справка (иконка расположена в левом нижнем углу окна).
13

Справочная система выполнена как набор взаимосвязанных html-страниц и отображается в одном


из установленных Интернет-браузеров.

Упражнение 1.1
Запустите приложение Citect Studio, изучите имеющиеся команды меню и кнопки-иконки на
панели инструментов (снабжены всплывающими подсказками). Посмотрите справку о приложении
Citect Studio.

1.2. Построитель графики Citect


Приложение Построитель графики Citect служит для создания и редактирования графических
страниц, в т. ч. объектов, входящих в состав графических страниц. Приложение
Построитель графики Citect запускается одновременно с приложением Citect Studio.
Со в ет
Для получения дополнительной информации о приложении Построитель графики Citect в среде этого
приложения выполните команду Справка | Справка по построителю графики.

Упражнение 1.2
Перейдите в среду приложения Построитель графики Citect, изучите имеющиеся команды меню
и кнопки на панели инструментов (снабжены всплывающими подсказками). Посмотрите справку о
приложении Построитель графики Citect.

1.3. Редактор Cicode


Приложение Редактор Cicode применяется для написания и редактирования программ,
написанных на языке Cicode, и представляет собой интегрированную среду разработки (ИСР). Это
приложение можно также использовать в качестве отладчика на этапе выполнения для трассировки
Cicode-программы и исправления ошибок программирования. В среде Редактора Cicode можно
получить справку по любой Cicode-функции. Для этого следует щелкнуть правой кнопкой мыши по
имени функции и выполнить команду Справка контекстного меню. Для запуска приложения
Редактор Cicode достаточно в любой из сред Citect Studio или Редактор Citect нажать кнопку
Редактор Cicode на панели инструментов или выполнить команду
Инструменты/Средства | Редактор Cicode.

Упражнение 1.3
Запустите приложение Citect Studio и выберите в нем проект Example (этот демонстрационный
проект устанавливается при установке системы). Нажмите кнопку Запустить на панели
инструментов, чтобы запустить этот проект (в ответ на запрос нажмите кнопку OK). Перемещайтесь
по проекту, переходя на новые страницы с помощью команд меню Example. Окончив
ознакомление, закройте проект, нажав кнопку Закрыть.
14

Глава 2. Управление проектами


Как указывалось ранее, Citect Studio является приложением, с помощью которого выполняется
управление проектами и запуск конфигурационных приложений и исполняемых программ. В среде
Citect Studio выполняются основные задачи, к числу которых относятся создание, удаление,
сохранение и восстановление проектов. Далее эти задачи будут последовательно рассмотрены.

2.1. Создание нового проекта. Включение проектов


Первое, что нужно сделать для конфигурирования нового Citect-проекта, это создать новый проект.
Каждый проект имеет собственную папку в папке …\User, размещенной в системном (скрытом)
каталоге операционной системы Program Data. Папка проекта создается при создании проекта и ей
присваивается то же самое имя, что и проекту.
За ме ч а н ие
В Citect SCADA длина имени проекта не должна превышать 64 символа, а имя может содержать любые
символы, кроме точки с запятой и одиночной кавычки.

Для создания нового проекта в среде Citect Studio выберите кнопку и строку Добавить | Новый
проект… на странице Проекты (вторая сверху иконка основного меню, рис. 2.1).

Упражнение 2.1. Создание проекта Training


Создайте новый проект. С этой целью откройте приложение Citect Studio, выберите страницу
Проекты , нажмите на кнопку Добавить и выберите строку Новый проект… в ниспадающем
меню. Настройте параметры проекта в соответствии с рис. 2.2. В поле Name: укажите имя Training,
а проект OvenTraining используйте, при необходимости, в качестве справочного проекта. Система
размещает проект в папке:
ProgramData\Schneider Electric\Citect SCADA 2016\User
местоположение которой было указано при инсталляции системы Citect SCADA.
При создании проекта следует указать стиль, в который объединяются шаблоны, то есть базовые
образцы будущих страниц проекта. Можно использовать имеющиеся стили (это, очевидно, проще)
или создавать новые. По умолчанию в качестве стиля шаблонов графической страницы в
ниспадающем меню диалогового окна указан вариант SxW_Style_1_HD1080 (для работы с
монитором с разрешением 1920 х 1080 пикселей), который рекомендуется поменять на стиль,
соответствующий используемому разрешению монитора. Имеется возможность выбора стилей из
двух групп – в соответствии со спецификацией StruxerWare компании Schneider Electric (эти стили
начинаются с префикса SxW_) и в соответствии с системой меню приложений, работающих в
операционной системе MS Windows 7 (эти стили начинаются с префикса Tab_). В каждой группе
имеется выбор для разных разрешений монитора. Различия между группами состоят в наборе
шаблонов графических страниц, внешнем виде системы меню и других подобных особенностях
отображения информации в проекте.
За м еч а н ие
Напомним часто используемые обозначения разрешений экрана (в пикселях):
VGA - 640 x 480
SVGA - 800 x 600
XGA - 1024 x 768
SXGA - 1280 x 1024
HD768 - 1366 x 768
HD1080 - 1920 x 1080
WUXGA - 1920 x 1200
Так как стили StruxerWare являются более сложными (в них предусмотрены больше деталей для
отображения), а стили в духе Windows 7 более простые, далее в рамках базового курса освоения
SCADA-системы будем строить учебный проект, взяв в качестве основы стиль Tab_Style_1
подходящего разрешения. Для завершения этапа создания проекта нажмите кнопку OK. Теперь
Citect SCADA создаст файлы конфигурации нового проекта. Обратите внимание на строку
Training, появившуюся в списке проектов.
15

Рис. 2.1. Создание нового проекта

Рис. 2.2. Создание проекта Training


16

Со в ет
При заполнении диалогового окна, представленного ранее на рис. 2.2, для перехода в следующее поле
окна пользуйтесь курсором мыши или клавишей Tab. Для возврата в предыдущее поле воспользуйтесь
акселератором Shift+Tab.

При этом в качестве включаемых проектов по умолчанию используется проект, название которого
можно увидеть, сделав проект Training активным (нажмите на поле с соответствующей подсказкой)
и выбрав вкладку Включенные проекты рядом с открытой вкладкой Главная в верхней строке
окна Проекты (рис. 2.3).

Рис. 2.3. Включаемые файлы нового проекта Training

Включаемый проект Tab_Style_Include является предварительно сконфигурированным проектом и


все его возможности наследуются новым проектом Training. Включенный проект содержит ряд
шаблонов, которые можно использовать для создания новых графических страниц. Проект
включает предопределенные страницы отображения трендов и сигналов тревог (оповещений),
страницу средств проектирования и др. Все они имеют меню навигации и панель инструментов, что
обеспечивает единство функциональных возможностей и внешнего вида по всему проекту.
В больших системах удобнее разрабатывать проект не как один большой проект, а разбить его на
ряд проектов меньшей сложности. Например, можно создать отдельные проекты для каждого
участка завода, тогда перед включением в основной проект можно разработать и проверить каждый
проект в отдельности.
Проект Citect SCADA не включается в компиляцию какого-либо другого проекта, если он явно не
включен в этот проект. Для включения другого проекта в текущий проект следует в среде
Citect Studio перейти на страницу Проекты и на вкладке Включенные проекты выполнить
команду Включить проект; соответствующая кнопка размещена в правой части страницы.

2.2. Архивирование, удаление и восстановление проекта


Проекты Citect SCADA можно сохранять в архивных файлах, занимающих, при необходимости,
намного меньше места, нежели исходные папки проекта. Во время разработки проекта
резервирование следует выполнять регулярно на случай непреднамеренного удаления или
разрушения файлов. Архивную копию можно сохранять на локальном диске, съемном диске или в
сети. Очень важно вести историю архивных файлов, чтобы всегда можно было вернуться к
предыдущей версии проекта (особенно это важно при внесении изменений в уже работающую
систему).
Для архивирования проекта в среде Citect Studio на странице Проекты нажмите на кнопку
Резервное копирование. В появившемся окне Создание резервной копии проекта укажите
17

требуемые параметры (название, путь к файлу с резервной копией и другие) и нажмите кнопку OK.
Более подробные сведения о сохранении проекта с описанием параметров содержатся в справке по
системе.
Для восстановления проекта в среде Citect Studio выберите строку Восстановить ниспадающего
меню, которое появляется при нажатии на иконку «стрелка вниз» рядом с кнопкой Резервное
копирование.
Для удаления проекта в среде Citect Studio на странице Проекты выберите проект, подлежащий
удалению, выполните команду Удалить | Удалить проект. В появившемся окне подтвердите
удаление проекта.
Со в ет
Не забывайте периодически сохранять проект, с которым Вы работаете, на диске.

За м еч а н ие
По умолчанию, если не указано другое расширение, архивным файлам дается расширение .ctz. Эти
файлы записываются в стандартном формате zip. Это значит, что для открытия такого файла можно
воспользоваться любым средством работы с zip-файлами.

Рис. 2.4. Архивирование проекта

Упражнение 2.2. Сохранение, удаление и восстановление проекта


Training
Выполните архивирование проекта Training. Для этой цели на странице Проекты нажмите на
кнопку Резервное копирование. В появившемся окне Создание резервной копии проекта
укажите требуемые параметры и нажмите кнопку OK (рис. 2.4).
Удалите проект Training, который был ранее архивирован в указанной Вами папке. Для этого в
среде Citect Studio выберите проект, подлежащий удалению, выполните команду Удалить проект.
Появится диалоговое окно с предупреждением. Для подтверждения удаления проекта нажмите
кнопку Да.
Восстановите проект Training. Для этого в среде Citect Studio выполните команду Восстановить
ниспадающего меню, которое появляется при нажатии на иконку «стрелка вниз» рядом с кнопкой
Резервное копирование. Появится диалоговое окно. С помощью кнопки Обзор… в указанной
Вами папке выберите архивный файл Training.ctz, выберите радиокнопку Новый проект и
нажмите кнопку OK. Появится подсказка Восстановление. Требуется подтвердить создание новой
папки для проекта, нажмите кнопку OK. Проект Training вновь появится в списке проектов.
18

2.3. Кластеры и серверы. Мастер конфигурирования


компьютера
Кластеризация дает возможность группировать в пределах одного проекта независимые наборы
серверных компонентов Citect SCADA, что позволяет одновременно контролировать несколько
систем и управлять ими. Для каждого проекта Citect SCADA нужно иметь хотя бы по одному из
следующих компонентов — сервер ввода-вывода, сервер отчетов, сервер сигналов тревог
(оповещений) и сервер трендов. Эти компоненты можно распределить между несколькими
компьютерами, но в простейшем случае эти компоненты можно разместить на одном компьютере.
Такая конфигурация называется автономной. В данном учебном пособии будет рассматриваться
автономная конфигурация проектов.
Для проекта с автономной конфигурацией следует определить один кластер и по одному серверу
ввода-вывода, отчетов, сигналов тревог (оповещений) и трендов в этом кластере. При создании
проектов на основе начального проекта из групп SxW_Style_1 или Tab_Style_1, входящих в систему
(а именно так был создан проект Training – см.рис.2.2), в проекте определяются некоторые
основные компоненты, необходимые для разработки любого проекта: кластер с именем Cluster1,
четыре упомянутых сервера с именами IOServer1, ReportServer1, AlartmServer1 и TrendServer1; для
сервера ввода-вывода определены два устройства ввода-вывода Internal и Cicode. Рассмотрим,
каким образом можно изменять имена и параметры этих компонентов, а также добавлять новые для
развития нашего проекта.

Упражнение 2.3. Изменение свойств кластера и сервера


ввода-вывода в проекте Training
В среде Citect Studio выберите проект Training и перейдите на страницу Топология (третья сверху
иконка в вертикальной колонке у левого края окна). Выбирая представление топологии проекта По
компьютерам или По кластерам, можно увидеть набор определенных в проекте серверов и их
привязку к компьютерам или кластерам (рис. 2.5 и рис. 2.6).

Рис. 2.5. Представление топологии проекта по компьютерам

Так, автономно работающий компьютер имеет в SCADA-системе IP-адрес 127.0.0.1 – стандартный


сетевой адрес локального компьютера, который обычно имеет название localhost.
19

Рис. 2.6. Представление топологии проекта по кластерам

Для изменения свойств имеющихся компонентов и добавления других необходимых компонентов


следует перейти в режим редактирования: нажмите на кнопку Редактировать в верхней строке
окна. В области конфигурирования кластеров одним из двух показанных способов (см. на рис.2.7
возможности редактирования) добавьте Замечание для автоматически определенного кластера
Cluster1, набрав текст «Кластер автономно работающего компьютера». Сохраните изменения, нажав
на кнопку Сохранитиь.

Рис. 2.7. Редактирование полей в области конфигурирования кластеров

Нажмите на иконку «стрелка вниз» справа от слова «Кластеры». В ниспадающем меню компонентов
конфигурации проекта выберите строку Серверы ввода/вывода. В области конфигурирования
серверов ввода-вывода определен сервер IOServer1. Изменим его имя на имя OvenSever, более
подходящее для нашего проекта. Подобно тому, как был добавлен комментарий в области
конфигурирования кластеров, выполните также добавление комментария для сервера ввода-вывода
OvenServer «Сервер ввода-вывода» (рис.2.8). Сохраните изменения: на вопрос о «каскадном»
изменении имени в появившемся окне ответьте положительно. Изменения других областей
конфигурирования в окне Топология проводятся аналогично.
За м еч а н ие
Каждый компьютер Citect SCADA может выполнять функции только одного сервера ввода-вывода.
При выполнении полного проекта сетью компьютеров Citect SCADA, в которой к устройству
ввода-вывода подключены несколько компьютеров, для проекта можно определить несколько
серверов ввода-вывода. После внесения любых изменений в области конфигурирования серверов
(изменение свойств существующих серверов или определение новых серверов) необходимо
20

запустить Мастер конфигурирования компьютера (см.ниже) для того, чтобы изменения были
учтены в исполнительной системе VijeoCitect при ее запуске на данном компьютере.

Рис. 2.8. Редактирование полей в области конфигурирования серверов ввода-вывода

Мастер конфигурирования компьютера (Computer Setup Wizard) позволяет быстро настроить


компьютер в соответствии с требованиями проекта Citect SCADA и является приложением, которое
определяет коммуникации SCADA-системы и аппаратные средства компьютера. С его помощью
можно при экспресс установке определить, является ли компьютер клиентом только для просмотра,
клиентом управления или же представляет собой компьютер SCADA-системы с процессами сервера
и клиента. При полной установке (ниже этот вариант конфигурирования называется
индивидуальной настройкой) он задает общие режимы использования сигналов тревог
(оповещений), отчетов, трендов и событий. Мастер конфигурирования компьютера указывает
также опции и параметры, которые определяют поведение SCADA-приложения как приложения MS
Windows.
Со в ет
При переходе к работе с другим проектом не забывайте перенастроить компьютер с помощью Мастера
конфигурирования компьютера.

Мастер конфигурирования компьютера можно запустить несколькими способами: из среды


Citect Studio — в окне Проекты нажатием кнопки Мастер установки (во второй верхней строке
окна), из среды Графического редактора Citect – выполнением команды
Средства | Мастер конфигурирования компьютера и, наконец, с помощью ярлыка
Мастер конфигурирования компьютера в программной группе Schneider Electric на рабочем
столе Windows (если был выполнен стандартный вариант установки системы и были созданы
ярлыки, доступные на рабочем столе).

Упражнение 2.4. Настройка компьютера для проекта Training


Перед настройкой компьютера выполните компиляцию проекта Training. Для этого в среде
Citect Studio выберите проект Training и выполните команду Компилировать (иконка в колонке
у левой границы окна), или используйте «горячие клавиши» Alt+F10, или выполните команду
Файл | Компилировать в Графическом редакторе Citect. Отсутствие предупреждений и
сообщений об ошибках в окне Citect Studio (в сообщениях компилятора в нижней части окна)
означает, что компиляция прошла успешно, в случае ошибок необходимо предпринять действия по
исправлению ошибок и выполнить компиляцию еще раз.
После запуска Мастера конфигурирования компьютера появляется окно, представленное на
рис. 2.9.
21

Рис. 2.9. Окно Мастера конфигурирования компьютера

Выберите Быструю установку и нажмите кнопку Далее. В результате появится окно


Настройка проекта, которое следует настроить в соответствии с рис. 2.10 (в поле
Название проекта: выбрать Training) и нажать кнопку Далее. Это диалоговое окно позволяет
выбрать проект для выполнения. Затем последовательно появятся еще четыре окна настройки
компьютера. Окно Настройка роли компьютера настройте в соответствии с рис. 2.11. Поскольку
на компьютере определена работа сервера (клиент в этом случае должен быть обязательно), то по
умолчанию выбран вариант Сервер и клиент управления, а остальные варианты не доступны.
Нажмите кнопку Далее.

Рис. 2.10. Окно Настройка проекта мастера конфигурирования компьютера


22

Рис. 2.11. Окно Настройка роли компьютера мастера конфигурирования компьютера

Следующие окна настройки компьютера Настройка сети, Проверка подлинности сервера и


Конфигурирование компьютера Citect настройте в соответствии с рис. 2.12, 2.13 и 2.14 и нажмите
последовательно кнопки Далее, Далее и Готово. Диалоговое окно Настройка сети позволяет
выбрать тип построения сети, используемый в проекте. Поскольку данный проект будет работать в
автономном режиме, выбран вариант с отсутствием сети.

Рис. 2.12. Окно Настройка сети мастера конфигурирования компьютера

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

Рис. 2.13. Окно Проверка подлинности сервера

Последнее окно показывает, что настройка компьютера завершена, и можно нажать на кнопку
Готово.

Рис. 2.14. Окно Конфигурирование компьютера Citect

Упражнение 2.5. Запуск проекта Training


Так как проект, над которым проводится работа, создан на основе начального проекта (см.рис.2.2),
мы можем запустить «пустой» проект и познакомиться с его существующими страницами. Это
упражнение также иллюстрирует технологию работы с типичным проектом SCADA-системы по его
разработке и доработке. Для запуска исполнительной системы можно нажать на иконку Выполнить
активный проект в колонке у левой границы окна Citect Studio, или использовать команду
Файл | Запустить в Графическом редакторе Citect, или, находясь в любой среде системы
24

(Citect Studio или Графический Редактор Citect), нажать «горячую клавишу» F5. После запуска
познакомьтесь с системой меню, списком имеющихся страниц, возникающими подсказками при
перемещении указателя мыши и т.п.
Закройте затем проект Training.
25

Глава 3. Настройка связи и работа с тегами


Система Citect SCADA может быть связана со многими типами устройств ввода-вывода систем
контроля и управления — программируемыми логическими контроллерами, регуляторами,
распределенными системами управления и т. п. Это позволяет обмениваться данными с
устройствами и выполнять супервизорное управление системой со стороны оператора.
Обмен информацией с устройствами ввода/вывода в системе Citect SCADA иллюстрирует рис. 3.1.

Рис. 3.1. Организация ввода/вывода в Citect SCADA

В процессе информационного обмена в общем случае используются Сервер ввода-вывода (таких


серверов может быть несколько, каждый из которых привязан к одному компьютеру), Модули,
Порты и Устройства ввода/вывода. Модули представляют собой интерфейсные платы
компьютера, а порты — порты связи на этих платах. Настроить перечисленные компоненты
удобнее всего и проще с помощью Мастера установки связи между устройствами.

3.1. Мастер установки связи между устройствами


Мастер установки связи между устройствами (Device Communication Wizard) позволяет быстро
установить соединение с новым или существующим устройством ввода-вывода. В каждом проекте
Citect SCADA должен быть хотя бы один сервер ввода-вывода, предназначенный для связи с
устройствами ввода-вывода. Каждое устройство ввода-вывода следует настроить в Citect SCADA в
соответствии с протоколом и параметрами связи. Следует также определить все интерфейсные
платы и порты связи в компьютере.
Во время работы Мастер установки связи между устройствами определяет имена серверов ввода-
вывода, интерфейсные платы компьютера, порты связи на этих платах и устройства ввода-вывода,
подключенные к портам (см. приведенный ранее рис. 3.1).
За м еч а н ие
Каждый компьютер Citect SCADA может выполнять функции только одного сервера ввода-вывода. При
выполнении проекта сетью компьютеров Citect SCADA, в которой к устройству ввода-вывода
подключены несколько компьютеров, для проекта можно определить несколько серверов
ввода-вывода, каждый из которых работает на одном из компьютеров.

Мастер установки связи между устройствами можно запустить из среды Citect Studio, открыв
окно Топология, нажав на кнопку Устройства ввода/вывода и выбрав кнопку «Многоточие» в
правой части экрана (рис.3.2). В появившемся ниспадающем меню следует выбрать строку Новое
устройство. При этом активным должен быть требуемый проект (например, проект Training – см.
титульную строку окна Citect Studio).
26

Рис. 3.2. Запуск Мастера установки связи между устройствами

Упражнение 3.1. Настройка связи для проекта Training


С помощью Мастера установки связи между устройствами настройте систему ввода-вывода для
учебного проекта Training. Для этого запустите приложение Citect Studio и выберите проект
Training. Открыв окно Топология, нажмите на кнопку Устройства ввода/вывода. В
отображаемой таблице имеется две строки с параметрами двух устройств ввода-вывода Internal и
Citect, которые были включены в наш проект благодаря использованию начального проекта
Tab_Style_Include. Нажмите теперь на кнопку «Многоточие» в правой части экрана (рис.3.2). В
появившемся ниспадающем меню выберите строку Новое устройство. Появится окно
Мастера установки связи между устройствами (рис.3.3). Нажмите на кнопку Далее для
продолжения. В следующем диалоговом окне задайте параметры Сервера ввода/вывода в
соответствии с рис. 3.4 и нажмите кнопку Далее.

Рис. 3.3. Окно Мастера установки связи между устройствами параметров связи

Появится диалоговое окно для конфигурирования Устройства ввода/вывода. Настройте его в


соответствии с рис. 3.5 и нажмите кнопку Далее. Задайте тип Устройства ввода/вывода (выберите
радиокнопку «Дисковое устройство», рис. 3.6) и также нажмите кнопку Далее. В следующем
диалоговом окне задайте для Устройства ввода/вывода изготовителя, тип и метод коммуникации:
выберите верхнюю строку «Общий протокол Citect» (рис. 3.7) и нажмите кнопку Далее. В
появившемся диалоговом окне ничего не меняйте (рис. 3.8) и для продолжения нажмите кнопку
Далее. В последнем диалоговом окне содержатся результирующие сведения (рис. 3.9). Нажмите
кнопку Готово.
Результаты настройки представлены на рис. 3.10. В таблице устройств ввода-вывода появилась
новая строка для устройства OvenDev, в которой указаны необходимые параметры.
27

Рис. 3.4. Окно Мастера установки связи между устройствами для выбора Сервера ввода/вывода

Таблица 3.1. Атрибуты тегов, отображаемые по умолчанию

Название Пояснения
Строка Порядковый номер строки таблицы
Первая часть обозначения оборудования (до 254
Оборудование символов для имени оборудования и имени
элемента в сумме)
Вторая часть обозначения оборудования, с
Имя элемента
которым может быть связан тег
Имя тега, должно быть уникально в кластере (до
Имя дескриптора
79 символов)
Указывается кластер, в котором определен тег,
Имя кластера обязательно указывать в случае нескольких
кластеров в проекте
Устройство IO Устройство ввода-вывода (до 31 символа)
Тип данных Тип данных – см. табл.3.2
Формат адреса зависит от протокола устройства
Адрес
ввода-вывода
Замечание Замечание к тегу, может быть на русском языке
Мин.значение в единицах изм. В двух полях указываются минимальное и
максимальное значения в инженерных единицах
Макс.значение в единицах изм.
измерения
Проект Имя проекта

3.2. Тестирование связи (на примере проекта Training)


Тестирование связи очень важно выполнить на ранних этапах разработки проекта. Далее
последовательно рассматриваются выполненная ранее настройка связи и ее тестирование путем
28

создания тега, используемого на графической странице.

Рис. 3.5. Окно Мастера установки связи между устройствами для конфигурирования
Устройства ввода/вывода

Теги (описатели или метки) переменных определяют текущие значения данных, связанных с
некоторым регистром устройства ввода-вывода. Каждый тег переменной определяется уникальным
в пределах кластера именем (дескриптором), типом данных, адресом, связанным с устройством
ввода-вывода (внешним или «внутренним», т.е. определенным в компьютере) и другими
характеристиками.
Определить тег переменной можно следующим образом: в среде приложения Citect Studio на
странице Модель системы на вкладке Теги можно заполнять строки таблицы или поля формы в
правой части вкладки (рис. 3.11).

Рис. 3.6. Окно Мастера установки связи между устройствами для задания типа Устройства ввода-вывода
29

Упражнение 3.2. Создание дискетного тега


Для тестирования созданных связей создайте тег переменной с именем Test, который может
принимать нулевое или единичное значения. Для этого откройте среду Citect Studio; проследите,
чтобы проект Training был активным. Выполните команду Модель системы | Теги, заполните
первую строку таблицы или поля формы правой части окна значениями свойств тега в соответствии
с рис. 3.12. Сохраните изменения; признаком сохранения является появившийся номер строки в
первой колонке таблицы тегов.
Протокол Generic, являющийся внутренним протоколом Citect SCADA, использует удобные и
естественные соглашения об адресации, представленные в табл. 3.2.
За ме ч а н ие
При удалении строк в таблицах Citect Studio строки получают отметку об удалении и не отображаются,
но не удаляются из таблиц. Их физическое удаление происходит при упаковке.

В среде Citect Studio выполните команду Проекты | Упаковать (база данных тегов будет
проиндексирована, а все помеченные к удалению записи будут физически удалены). Такое
действие рекомендуется выполнять периодически.

Создание новой графической станицы выполняется в среде приложения


Построитель графики Citect с помощью кнопки Новый или команды Файл | Новый…
(рис. 3.13).

Рис. 3.7. Окно Мастера установки связи между устройствами для задания производителя, модели и метода
коммуникации Устройства ввода/вывода

Упражнение 3.3. Создание графической страницы


Для создания новой графической страницы с использованием предопределенного шаблона в
появившемся окне Новый следует нажать кнопку Страница, в результате чего появится
следующее окно Использовать шаблон, представленное на рис. 3.14. Используйте параметры
шаблона графической страницы, предлагаемые по умолчанию, и нажмите кнопку OK. Появится
новая графическая страница. Для ее конфигурирования выполните команду Свойства страницы…
ее контекстного меню (вызывается с помощью правой кнопки мыши), выберите вкладку
Представление, в поле Цвет фона: задайте более светлый цвет фона страницы, чем он установлен
при ее открытии, и нажмите кнопку OK. С помощью команды Файл | Сохранить как… (рис. 3.15)
сохраните страницу под именем NewPage (выберите вкладку Страница, в поле Страница укажите
30

имя NewPage и нажмите кнопку OK). Графическая страница приобретет вид, показанный на
рис. 3.16.

Рис. 3.8. Окно Мастера установки связи между устройствами (используйте предложенные значения) для
Устройства ввода/вывода

Упражнение 3.4. Добавление на страницу графических объектов и


их настройка
Для тестирования созданных связей поместите на созданную графическую страницу NewPage три
графических объекта — две Кнопки и объект Текст. Настройте свойства объектов Кнопка таким
образом, чтобы при их нажатии созданный тег Test принимал соответственно нулевое и единичное
значения, а объект Текст настройте так, чтобы при изменении значения тега происходила
изменение выводимого текста и его цвета.
Далее рассмотрим добавление объекта Кнопка на созданную графическую страницу NewPage. Это
следует выполнять в среде Построитель графики Citect (см. приведенный ранее рис. 3.16).
За м еч а н ие
Для загрузки требуемой графической страницы достаточно нажать кнопку Открыть на панели
инструментов, или выполнить команду Файл | Открыть…, или же активизировать акселератор
Ctrl+O. Далее в появившемся окне Открыть следует выбрать во вкладке Страница имя нужного
проекта и страницы (см. приведенный ранее рис. 3.15) и нажать кнопку OK.
31

Рис. 3.9. Результирующее окно Мастера установки связи между устройствами

Рис. 3.10. Результирующие настройки коммуникаций проекта Training

Для размещения объекта Кнопка в графической странице достаточно в окне объектов (рис. 3.17)
выбрать нажатием и отпусканием левой кнопки мыши объект Кнопка, переместить мышь в нужное
место графической страницы, нажатием левой кнопки и перемещением мыши определить размеры
и местоположение кнопки и отпустить левую кнопку мыши. В результате появится окно
Свойства: Кнопка, которое пока закройте. Аналогичным образом добавьте в графическую
страницу еще один объект Кнопка, чтобы графическая страница приобрела вид, представленный
на рис. 3.18.
32

Рис. 3.11. Таблица для определения тегов переменных проекта Training

Рис. 3.12. Определение тега переменной Test проекта Training

Таблица 3.2. Адресация тегов для протокола Generic

Тип данных Адрес


INT, UINT Iномер
DIGITAL Dномер
STRING Sномер
REAL Rномер
LONG, LONGBCD Lномер или Iномер
BCD, BYTE Bномер

Для определения требуемых свойств объекта Кнопка следует ее выбрать (см. рис. 3.18) и
выполнить для кнопки команду Свойства… контекстного меню, вызываемого правой кнопкой
мыши. Появится окно конфигурирования кнопки, показанное на рис. 3.19. В этом окне имеются
пять основных (постоянных) горизонтальных закладок (Представление, Движение, Ввод, Доступ,
Метаданные) и по одной-две-три вертикальных, вспомогательных закладок, варьируемых в
зависимости от выбранной горизонтальной закладки (Общее, 3D Эффекты и Видимость при
выборе Представление; По горизонтали и По вертикали при выборе Движение; Касание и
Клавиатурные команды — при выборе Ввод; Общее и Запрещен — при выборе Доступ; Общее
– при выборе Метаданные). С помощью указанных закладок можно выбирать любую из десяти
вкладок, с помощью которых задаются требуемые свойства кнопки.
33

Свойства кнопки, обеспечивающей задание нулевого значения тега Test (или, что то же - FALSE)
при нажатии кнопки, иллюстрируют приведенный ранее рис. 3.19 и рис. 3.20. Аналогично, свойства
другой кнопки, обеспечивающей задание единичного значения тега Test (или значения TRUE) при
нажатии кнопки, представлены на рис. 3.21 и рис. 3.22.

Рис. 3.13. Создание новой графической страницы

Рис. 3.14. Задание параметров шаблона графической станицы

Для размещения объекта Текст на графической странице достаточно в окне объектов (см. рис. 3.17)
выбрать нажатием и отпусканием левой кнопки мыши объект Текст, переместить мышь в нужное
место графической страницы, начать вводить нужный текст и нажать левую кнопку мыши. В
результате появится окно Свойства: Текст, в котором задайте свойства объекта в соответствии с
рис. 3.23 и 3.24.
34

Рис. 3.15. Задание имени новой графической страницы

Рис. 3.16. Вид новой графической страницы после ее создания и конфигурирования

Для сохранения измененной страницы NewPage нажмите кнопку Сохранить на панели


инструментов, или выполните команду Файл | Сохранить, или же активизируйте акселератор
Ctrl+S. Для проверки работы созданных кнопок и текста командой Файл | Компилировать или с
помощью акселератора Alt+F10 выполните компиляцию проекта.
За м еч а н ие
При компиляции проекта система Citect SCADA проверяет наличие ошибок. Если ошибки выявлены,
выберите Перейти, чтобы отобразить место ошибки. Исправив все ошибки, сохраните исправленные
графические страницы и снова выполните компиляцию проекта.
35

Рис. 3.17. Окно (палитра) объектов

Рис. 3.18. Графическая страница NewPage с добавленными кнопками

Упражнение 3.5. Запуск проекта и тестирование связей


Запустите проект нажатием кнопки Выполнить активный проект в среде Citect Studio, или с
помощью команды Файл | Запустить в среде Графический Редактор Citect, или же нажатием
клавиши F5.
36

Рис. 3.19. Окно конфигурирования кнопки: вкладка Представление (Общие)

Если Вы работаете с демонстрационной версией SCADA-системы, то появляется окно


предупреждения, представленное на рис. 3.25, в котором для перехода в демонстрационный режим
следует нажать кнопку OK. Когда проект Training начнет выполняться, отобразится начальная
графическая страница. Перейдите на страницу NewPage.
В появившемся окне для тестирования созданной страницы NewPage используйте меню для ее
отображения на экране (рис. 3.26).
За ме ч а н ие
Если сервер ввода-вывода не имеет связи с устройством ввода-вывода, то на месте текстового объекта
появится сообщение #COM. Это является признаком ошибки, следует проверить определение
коммуникаций и повторить компиляцию и запуск.

Вид выбранной графической страницы при нажатии на первую и вторую кнопки иллюстрируют
рис. 3.26 и рис. 3.27. Использованный при создании проекта Training включенный проект
Tab_Style_Include содержит ряд полезных типичных функциональных возможностей, связанных с
реализацией системы меню, отображения сигналов тревоги (оповещений), построения трендов и
т.п. Пример таких возможностей показан на рис.3.28, в котором после нажатия на иконку с двумя
окнами (обведена на рисунке красной линией) появляется окно «Выбор страницы» с возможностью
использования ниспадающего меню.
Со в ет
Поэкспериментируйте, задавая различные параметры объектов Кнопка и Текст в Графическом
редакторе. Для отображения результатов при работе Исполнительной системы Citect достаточно
сохранять изменения в файле графической страницы NewPage и проводить компиляцию проекта (Alt-
F10), если на странице Проекты в строке с именем проекта отсутствует отметка о компиляции.
Результаты изменений будут подхвачены «на лету»: останавливать и запускать вновь Исполнительную
систему (т.е. выполнять команду F5), как правило, нет необходимости. Проанализируйте результаты
внесенных изменений в процессе работы приложения.

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

Рис. 3.20. Конфигурирование кнопки: вкладка Ввод (Касание)

3.3. Структурированные имена тегов


Система Citect SCADA налагает некоторые ограничения на имена тегов переменных. Благодаря
этому облегчается и ускоряется разработка, настройка и запуск проекта, а также сокращается время
на последующее его сопровождение. Соблюдение правил именования тегов переменных особенно
полезно при использовании таких средств, как джинны и суперджинны (о них пойдет речь далее).
Каждое имя тега может содержать до 79 символов. Для соблюдения правил именования символы
имени следует разделять на части или секции, описывающие характеристики тега. Например, зона
размещения тега, тип тега и любые конкретные признаки. В правилах об именовании, принятых в
Citect SCADA, предполагается наличие четырех основных секций:
Зона_Тип_Местонахождение_Атрибут

Секция Зона определяет зону, номер или название установки. Например, при наличии трех
пастеризаторов с одинаковым управлением можно сконфигурировать теги для пастеризатора №1 и
скопировать их на пастеризаторы №№2 и 3. Тогда нужно просто изменить секцию зоны в именах
тегов на зоны второго и третьего пастеризаторов (табл. 3.3). Остальные теги остаются
неизменными. Если эта возможность не нужна, секцию зоны в имени тега можно опустить,
уменьшив тем самым количество символов в имени.
Таблица 3.3. Использование секции зоны в именах тегов

Участок Имя тега


Пастеризатор 1 P1_TIC_101_PV
Пастеризатор 2 P2_TIC_101_PV
Пастеризатор 3 P3_TIC_101_PV

В секции Тип указывается тип параметра, технологического оборудования или средства управления
(табл. 3.4). Рекомендуется система именования по стандарту ISA.
38

Рис. 3.21. Конфигурирование кнопки: вкладка Представление (Общие)

Таблица 3.4. Использование секции типа в именах тегов

Имя тега Значение


P1_TIC_101_PV Регулятор, показывающий температуру
P1_FIC_101_PV Регулятор, показывающий расход
P1_PUMP_101_PV Насос
P1_VALVE_101_PV Вентиль
39

Рис. 3.22. Конфигурирование кнопки: вкладка Ввод (Касание)

В секции Местонахождение указывается номер оборудования (табл. 3.5).


Таблица 3.5. Использование секции местонахождения в именах тегов

Имя тега Значение


P1_TIC_101_PV Регулятор, показывающий температуру №101
P1_TIC_102_PV Регулятор, показывающий температуру №102
P1_PUMP_101_PV Насос №101
P1_PUMP_102_PV Насос №102

В секции Атрибут указывается атрибут конкретного параметра, связанный с оборудованием


(табл. 3.6).
40

Рис. 3.23. Конфигурирование текста: вкладки Представление (Общие) и Представление


(Отображаемое значение)
41

Рис. 3.24. Конфигурирование текста: вкладки Заполнение(Цвет) и Доступ(Общие)

Рис. 3.25. Окно приглашения при работе с демонстрационной версией SCADA-системы


42

Таблица 3.6. Использование секции атрибутов в именах тегов

Имя тега Значение


P1_TIC_101_PV Переменная, отражающая технологический процесс
P1_TIC_101_SP Заданное значение (уставка)
P1_TIC_101_OP Выходное данное
P1_TIC_101_P Коэффициент пропорциональности
P1_TIC_101_I Коэффициент интегрирования
P1_TIC_101_CMD Управляющий сигнал
P1_TIC_101_V Значение

Рис. 3.26. Отображение созданной страницы и ее вид при нажатии кнопки Задание тега Test=FALSE

3.4. Добавление тегов и их редактирование


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

Рис. 3.27. Вид созданной страницы при нажатии кнопки Задание тега Test=TRUE и наведении мышки на
текстовое поле «Вкл / Выкл»
43

Рис. 3.28. Возможности приложения по выбору страниц (свойство унаследовано из включенного проекта
Tab_Style_Include)

Теги переменных в таблице среды Citect Studio (окно Модель системы | Теги) можно
сконфигурировать быстро, т. к. в каждом теге есть много повторяющейся информации. Если два
тега переменных похожи друг на друга, выберите строку уже созданного тега, скопируйте ее в конец
таблицы и измените нужные поля. Напомним, что изменение можно выполнять в самой таблице
(нужно иметь в виду, что не все атрибуты тега отображаются в колонках таблицы, это отображение
можно настроить, см.рис.3.11) и в полях формы в правой части окна (здесь доступны все атрибуты).
Для сохранения сделанных изменений сконфигурированных тегов нужно нажать на кнопку
Сохранить в левой верхней части окна.

Упражнение 3.6. Добавление тегов в проект Training. Проект


Training1
Добавьте в проект Training аналогично тегу Test еще три тега переменных с атрибутами,
показанными в табл. 3.7, и для проверки выполните компиляцию проекта.
Таблица 3.7. Свойства добавленных тегов проекта Training

Имя дескриптора тега Oven_Temp Gas_Valve Burner_Stat


Имя кластера Cluster1 Cluster1 Cluster1
Название устройства в/в OvenDev OvenDev OvenDev
Адрес I0 D1 D2
Тип данных INT DIGITAL DIGITAL
Мин. исходное данное 0
Макс. исходное данное 400
Мин. значение в единицах изм. 0
Макс. значение в единицах изм. 130
Единица измерения Град.С
Формат ###
Нечувствительность
Температура в Состояние Состояние
Комментарий градусах Цельсия задвижки подачи горелки
газа

За ме ч а н ие
Информация об адресации тегов переменных приведена ранее в подразделе 3.2.

Со в ет
Не забывайте периодически сохранять проект на диске. Для этого в среде приложения Citect Studio
достаточно выбрать на странице Проекты проект Training и выполнить команду Резервное
копирование. В появившемся окне Создание резервной копии проекта следует указать требуемые
44

параметры и нажать кнопку OK (рис. 3.29). Проект сохраните под именем Training1. В дальнейшем
работайте с проектом Training1. Для этого достаточно выбрать в окне Проекты команду
Восстановить; она становится доступна, если нажать на кнопку со стрелкой вниз рядом с кнопкой
Резервное копирование. В появившемся окне Восстановить проект следует указать требуемые
параметры и нажать кнопку OK (рис. 3.29). Сделайте этот проект активным, щелкнув мышкой по
строке с его описанием на странице Проекты приложения Citect Studio.

Созданные в проекте Citect SCADA теги можно просматривать, а их значения изменять в процессе
исполнения проекта. Указанная возможность доступна только привилегированному пользователю.

Рис. 3.29. Архивирование проекта Training под именем Training1 и восстановления проекта Training1
45

Привилегии или права (рис. 3.30) могут быть установлены в проекте таким образом, чтобы только
определенные пользователи имели доступ к соответствующим командам и средствам управления
на графических страницах. Для этого необходимо, во-первых, создать роль, обладающую нужным
набором привилегий, и пользователю приписать ту или иную роль (рис. 3.31 и 3.32), и, во-вторых,
определить доступность команд и средств управления для привилегий (рис. 3.33). Первые из
указанных действий следует выполнять в Citect Studio, а вторые – в графическом построителе.

8 - высокий

0 - низкий

Рис. 3.30. Уровни прав (привилегий) в системе Citect SCADA

Рис. 3.31. Роль Administrators и ее права (привилегии)

Рис. 3.32. Создание пользователя с ролью Administrators


46

По умолчанию, во включаемом проекте Tab_Style_Include приняты ограничения доступа,


представленные в табл. 3.8.
За ме ч а н ие
Более подробно планирование безопасности работы системы на основе ограничения прав доступа будет
рассмотрено в Главе 15.

Рис. 3.33. Задание привилегий управляющего элемента

Таблица 3.8. Ограничения доступа включаемого проекта Tab_Style_Include

Элементы Глобальные привилегии


Редактирование атрибутов пользователя 8
Закрытие проекта 8
Подтверждение оповещений (тревог) 1
Отключение оповещений (тревог) 8
Отключение звука оповещений (тревог) 0

Упражнение 3.7. Создание привилегированного пользователя.


Просмотр и модификация тегов. Проект Training2
Перейдите на вкладку Безопасность системы конфигурирования для проекта Training1.
Используйте имеющуюся по умолчанию роль Administrators или создайте ее на странице
Безопасность | Роли (рис.3.31). На странице Безопасность | Пользователи создайте
привилегированного пользователя MAIN_USER (рис. 3.32), имеющего роль Administrators и
имеющего права с 1 по 8 (это можно обозначить «1..8» либо перечислением), и нажмите кнопку
Сохранить. В качестве пароля привилегированного пользователя используйте пароль USER. В
графическом редакторе на странице NewPage откройте окно со свойствами кнопки и проверьте
возможность изменения прав доступа (рис.3.33).
47

Для использования удобных возможностей включенного проекта Tab_Style_Include по отладке


приложений выполните следующие шаги.
1. Откройте страницу VariableTags активного проекта Training1 (рис.3.34)
2. Дважды щелкните мышкой по области конфигурирования правил изменения тегов при
отладке (рис.3.35, шаг 1)
3. В появившемся окне заполните поле привилегий перечислением номеров привилегий,
например, 1..8 (рис.3.35, шаг 2)
4. Сохраните открытую страницу.

Рис. 3.34. Открытие страницы отображения тегов

Рис. 3.35. Конфигурирование страницы отображения и изменения тегов


48

Для тестирования выполненной модификации выполните компиляцию, запустите проект Training1.


Путем выполнения команды Страницы | VariableTags перейдите на встроенную в проект
графическую страницу отображения тегов приложения. Щелкнув правой кнопкой мыши по любому
элементу в таблице тегов убедитесь, что из-за ограничений доступа строка «Задать значение…»
появившегося ниспадающего меню имеет серый цвет, т.е. неактивна (рис.3.36).

Рис. 3.36. Страница отображения и изменения тегов без возможности менять значения тегов

С помощью кнопки регистрации пользователей в левой части на панели инструментов


зарегистрируйте созданного ранее пользователя с именем MAIN_USER, имеющего роль
Administrators с паролем USER (рис. 3.37), и нажмите кнопку OK.

Рис. 3.37. Регистрация привилегированного пользователя


49

Теперь все управляющие элементы для таблицы доступны. Убедитесь в этом, вновь нажав правую
кнопку мыши, указывающей на любую строку таблицы тегов. Действие «Задать значение…» теперь
активно. С помощью появившегося диалогового окна можно изменить значение выбранного тега
(рис. 3.38). Экспериментируйте с изменением значений тегов и отображением новых значений на
страницах VariableTags и NewPage.
Закройте проект.

Рис. 3.38. Окно отладки тегов – изменение его значения

Со в ет
Не забывайте периодически сохранять проект на жестком диске. Для этого в среде
приложения Citect Studio достаточно на странице Проекты нажать на кнопку Резервное копирование
и сохранить проект Training1. В появившемся окне Создание резервной копии проекта следует
указать требуемые параметры и нажать кнопку OK (см. упр. 3.6). Проект сохраните под именем
Training2. В дальнейшем работайте с проектом Training2. Для этого достаточно нажать на кнопку
«Стрелка вниз» справа от кнопки Резервное копирование и выбрать строку Восстановить. В
появившемся окне Восстановить проект следует указать требуемые параметры и нажать кнопку OK
(см. указанное ранее упр. 3.6). Сделайте этот проект активным, щелкнув мышкой по строке с его
описанием на странице Проекты приложения Citect Studio.

3.5. OPC Factory Server (OFS)


OPC является средством связи между внешними по отношению к компьютеру цифровыми
устройствами (контроллерами, регуляторами, интеллектуальными датчиками и т.п.) и
приложением, работающем на компьютере. OPC представляет собой протокол, основанный на
стандарте OLE, для управления технологическими процессами. OPC — это сокращение от
OLE for Process Control (связывание и встраивание объектов для управления технологическими
процессами), предназначенное для предоставления бизнес-приложениям доступа к данным объекта
контроля единым с точки зрения интерфейса образом. OLE в свою очередь является сокращением
для обозначения стандарта обмена информацией между приложениями MS Windows (Object Linking
and Embedding – технология связывания и встраивания объектов). Стандарт OPC разработан
фондом OPC Foundation и изложен в документе OPC Specification, версии 1.0a и 2.0. Для
совместимости с OPC приложение MS Windows должно быть реализовано с интерфейсом COM,
описанным в документе OPC Specification.
Продукт OFS (OPC Factory Server) — это OPC-сервер, предназначенный для обмена данными с
программируемыми контроллерами компании Schneider Electric для поддержки OPC-клиентов,
таких как Excel, Citect SCADA или другие приложения MS Windows. OFS позволяет
50

оптимизировать коммуникации между приложениями MS Windows (в частности, SCADA-


системой) и оборудованием Schneider Electric.
ОРС действует подобно общему языку, поэтому разработчики аппаратного и программного
обеспечения могут разрабатывать свои продукты и знать, что другие продукты смогут
взаимодействовать с ними. ОРС основан на технологиях Microsoft: OLE (теперь ActiveX), COM
(объектная модель компонентов) и DCOM (объектная модель распределенных компонентов). ОРС
состоит из стандартного набора интерфейсов, свойств и методов, используемых в приложениях для
управления процессами и автоматизации производства. Технологии ActiveX/ COM определяют, как
отдельные компоненты приложения взаимодействуют и совместно используют данные. Говоря
иначе, OPC используется для предоставления данных объекта управления из одной программы в
другую, написанную кем-то другим.
Сервер OFS действует как шлюз между устройствами ввода-вывода (например, контроллерами
компании Schneider Electric) и приложением (например, Citect SCADA), которое хочет
использовать их данные. В архитектуре COM каждый вид сервера получает уникальный
идентификатор, который обозначается как ClassID (128-битное число). Для удобства каждое такое
число заменяется строковой ссылкой вида «Производитель.Приложение» с номером версии в
качестве дополнения. Для сервера OFS строковая ссылка — Schneider-Aut.OFS.

3.5.1. Файл переменных приложения контроллера


Взглянем на задачу работы с данными контроллера со стороны приложения MS Windows. Для того,
чтобы получить и использовать в приложении некоторый объект из контроллера, необходимо знать
протокол сети связи, адрес узла в сети и другие характеристики канала связи и устройства
назначения (тем самым мы сможем «добраться» до контроллера, который нас интересует) и, кроме
того, характеристики объекта в контроллере, значение которого мы хотим прочитать или записать:
адрес бита, регистра или таблицы, тип данных, длину в битах или словах. Для человека удобнее
использовать не численные значения адресов, а имена – символические обозначения.
Инструментальные системы программирования для разработки приложений контроллеров
предоставляют возможности по экспорту имен переменных, обычно это может быть сделано в
разных форматах. При изучении OFS и Citect SCADA мы по возможности будем использовать
наиболее распространенные варианты форматов и протоколов, которые подходят для контроллеров
разных компаний-производителей оборудования. В качестве примера рассмотрим вариант
представления таблицы адресов переменных в широко распространенном формате CSV (comma
separated variables), то есть в формате «переменных, разделенных запятыми». Следует отметить, что
слово «запятые» в данном контексте употребляется обобщенно: формат допускает использование в
качестве разделителей также пробелы, знаки табуляции и другие знаки, которые обычно OFS или
другое приложение распознают автоматически.
Итак, таблица имен переменных, которую можно использовать в OFS в формате CSV, состоит из
строк, имеющих следующий формат:
<адрес><разделитель><символическое имя><разделитель><комментарий>

Упражнение 3.8. Создание таблицы переменных в формате CSV


Используя доступную инструментальную систему программирования (например, Unity Pro,
SoMachine, TwidoSuite, TwidoSoft компании Schneider Electric или систему программирования
другой компании-производителя контроллеров) создайте приложение, в котором используются
переменные с привязанными адресами, и выполните экспорт таблицы имен в формате CSV. В
случае, если система программирования не доступна, выполните следующие шаги, которые
позволят промоделировать работу контроллера и запустить OFS в режиме «симуляции».
1. Создайте текстовый файл, задающий адреса и имена переменных: (в строках ниже
использован знак пробела в качестве разделителя):
%M0 MyBit0 Бит памяти номер 0
%M1 MyBit1 Бит памяти номер 1
%MW10 MyCounter Слово - значение счетчика
%MW11 MyTimer Слово - значение таймера
%MF12 MyReal Двойное слово, представляющее вещественное число
51

%I0.1.0 MyInputChanel0 Входной бит 0


%I0.1.1 MyInputChanel1 Входной бит 1
%Q0.1.16 MyOutputChanel0 Выходной бит 0
%Q0.1.17 MyOutputChanel1 Выходной бит 1

В таблице в начале каждой строки указан физический адрес объекта в контроллере в


соответствии с правилами стандарта Международной электротехнической комиссии IEC
61131-3: знак процента «%» является признаком физического адреса, «М» служит
обозначением внутренней памяти (от «Memory»), причем одиночная буква «M» обозначает
бит в зоне внутренних битов, а «MW» - шестнадцатибитовое слово в зоне внутренних слов
(сокращение от «Memory Word»), «MF» - двойное шестнадцатибитовое слово в зоне
внутренних слов для представления в данном случае вещественного числа (от «Memory
Float»), «I» (от «Input») обозначает зону входов, а «Q» (от «Output», но буква «O» заменена
на «Q») - зону выходов. Числа служат для указания адреса в соответствующей зоне: в зонах
памяти это порядковые номера, а зонах ввода и вывода используется так называемая
«географическая» адресация. Так, «0.1.17» означает нулевую монтажную корзину для
размещения модулей контроллера, 1-й модуль ввода или вывода и 17-й канал в этом
модуле. Далее через разделитель – пробел – указано имя переменной и еще через один
пробел – комментарий, который может в своем составе содержать пробелы.
2. Сохраните файл под именем «PLCSymbolTable.csv» в каталоге, где хранятся проекты
Citect SCADA (например, «C:\ProgramData\Schneider Electric\Citect SCADA 2016\User»).
Файл должен содержать простой текст без дополнительной служебной информации, таким
образом, файл не может иметь формат и расширение «doc», «docx» или «rtf».
Рекомендуется использовать стандартное Windows-приложение NotePad или аналогичное.
Отметим, что для создания набора строк можно использовать MS Word, и MS Excel, однако
в случае MS Word при сохранении следует использовать формат обычного текста «txt», а
после сохранения переименовать расширение файла на «csv». При работе с MS Excel
следует адреса, имена и комментарии формировать в колонках «A», «B» и «С», а при
сохранении файла выбрать формат «csv» с разделителями - запятыми.

3.5.2. Состав и режимы работы OFS


Программное обеспечение OFS компании Schneider Electric может быть запущено в
полнофункциональном

В состав дистрибутива Citect SCADA входит OFS, который зарезервирован для использования в
Citect SCADA и не требует отдельной лицензии. Кроме того, OFS можно приобрести и использовать
независимо от Citect SCADA в двух версиях: малая (до 1000 элементов ввода-вывода с лицензией
на одиночный компьютер или на площадку с 10 компьютерами) и большая (лицензии на одиночный
компьютер, на площадку с 10 компьютерами или на площадку с 200 компьютерами).
Указанные версии OFS для работы сервера с контроллерами и другими устройствами ввода-вывода
требуют лицензии, однако если для целей отладки или обучения сконфигурирован режим
«симуляции» для всего сервера, то сервер запускается и работает.
Также компания Schneider Electric предлагает для использования бесплатный демонстрационный
вариант OFS. Эта программа является полнофункциональным сервером, который, будучи
установлен, после каждого запуска работает 72 часа.
Программное обеспечение OFS включает в себя: сервер OPC (то есть OFS); конфигуратор OFS;
менеджер OFS, упрощающий работу с сервером; пример клиентского приложения OFS как
приложение MS Windows; инструмент регистрации OFS – привязка лицензии к компьютеру;
документацию по установке и использованию. Мастер установки создает группу OFS с ярлыками
для запуска указанных компонентов, а также отдельный ярлык для запуска OFS в режиме
«симуляции». Также отметим, что в полнофункциональном варианте OFS и при запуске
демонстрационного варианта имеется возможность «симуляции» не только всего сервера в целом,
но и связи с отдельными контроллерами/устройствами по выбору.
Программное обеспечение OFS взаимодействует с файлами экспорта переменных,
сгенерированными инструментальной программной системой контроллеров Unity Pro и подобным
программным обеспечением для контроллеров компании Schneider Electric других типов. Также оно
52

обеспечивает прямую и динамическую связь с приложениями Unity Pro. Последнее означает, что
если в процессе отладки или наладки системы управления изменено приложение для контроллера
и, соответственно, сохраненный файл с приложением на компьютере (например, изменены адреса
переменных), то OFS «подхватывает» эти изменения, и это не требует переконфигурирования и
перезапуска OFS.

3.5.3. Конфигурирование OFS


Прежде чем запускать сервер, его необходимо сконфигурировать: указать, по какому протоколу и с
каким устройством/контроллером должна быть установлена связь, а также указать другие
параметры, например, необходимость обращаться физически к устройству или «симулировать»
связь с этом устройством посредством OFS. Для запуска приложения OFS Configuration Tool
выполняем команду Пуск | Программы | Schneider Electric | Ofs | OFS Configuration Tool. При
установке программы OFS были сконфигурированы два демонстрационных устройства
DevExample1 и DevExample2, которые можно использовать для ознакомления с
конфигурированием и работой OFS.
Нажав Ctrl+N или выполнив команду File | New Device Alias… , начнем конфигурирование нового
устройства: появившееся окно настраиваем в соответствии с рис. 3.39. В поле Device name
указываем имя PLC_OFS. Для заполнения поля Device address нажимаем кнопку просмотра,
расположенную в правой части поля. Появившееся окно Device address wizard заполняем в
соответствии с рис. 3.40 и нажимаем кнопку OK. Для заполнения поля Symbol table file, задающего
символьный файл описания соответствия адресов и переменных проекта, также используем кнопку
просмотра. Здесь могут быть указаны файлы разных форматов. В нашем случае следует выбрать в
ниспадающем меню, расположенном в правом нижнем углу окна, тип файла «CSV» и указать файл,
созданный в упр. 3.8 (см.п.3.5.1).

Рис. 3.39. Вид приложения OFS Configuration Tool после запуска и конфигурирования вкладки
Devices | Device overview

Конфигурации для остальных вкладок, расположенных в левом поле главного окна приложения
OFS Configuration Tool, можно использовать по умолчанию и не менять. Обратим лишь внимание
на вкладку OFS Server Settings | Simulation: именно здесь можно отметить режим «симуляции» для
всего OFS (рис. 3.41). В случае, если планируется выполнить физически подключение к
контроллеру для чтения или записи данных, нужно снять отметку в строке Simulator Mode. Если
проводится «симуляция» отдельного устройства (рис.3.39) или всего сервера, то верхним пределом
53

изменения целых и вещественных тегов можно управлять: значение 100, используемое по


умолчанию, можно заменить на другое (на рис.3.41 поставлено значение 300). Для сохранения
заданных параметров выполняем команду File | Save Configuration, после чего откроется окно
(рис. 3.42), говорящее о том, что для вступления в силу внесённых изменений обходимо перегрузить
OFS-сервер, если к этому моменту сервер уже был запущен. Нажимаем кнопку OK и закрываем
окно приложения OFS Configuration Tool.

Рис. 3.40. Конфигурирование окна Device address wizard

Рис. 3.41. Вкладка OFS Server settings | Simulation


54

3.5.4. Запуск клиента OFS и тестирование связи


Перед запуском клиента OFS нужно определить, будет ли клиент использовать режим «симуляции»
(запуск OPC Factory Server Simulator) или нет (запуск OPC Factory Server). В первом случае
подключение контроллера не требуется, будет происходить моделирование работы OFS-сервера, а
во втором случае требуется физически организовать связь компьютера и контроллера. В первом
случае сервер в режиме «симуляции» необходимо запустить до начала создания клиента с помощью
команды Пуск | Программы | Schneider Electric | Ofs | OPC Factory Server Simulator. Во втором
случае приложение OPC Factory Server запустится автоматически.

Рис. 3.42. Сообщение о необходимости перезапуска OFS-сервера

Рис. 3.43. Выбор сервера для приложения OFS Client

Для запуска приложения OFS Client выполняем команду


Пуск | Программы | Schneider Electric | Ofs |{OFS Testing Client}| OFS Client. В появившемся
окне (рис. 3.43) выбираем сервер Schneider-Aut.OFS и нажимаем кнопку OK. Далее в окне клиента
необходимо создать новую группу и добавить в неё переменные из символьного файла описания
переменных. Для этого в окне клиента выполняем команду Group | New Group. Поменяем поле
Update rate, задающее частоту обновления элементов-тегов, которые мы поместим в эту группу
следующим действием, с 1000 мс на 500 мс (рис. 3.44); нажимаем кнопку OK. Для добавления
новых элементов в группу выполняем команду Item | New… (рис. 3.45), выбираем PLC_OFS:
появится список символьных переменных из созданной ранее таблицы PLCSymbolTable. В списке
переменных последовательно выбираем переменную MyBit0, нажимаем кнопку ОК, переменную
MyCounter и нажимаем ОК (рис. 3.46). Можно включить в группу GRP1 и другие элементы-теги.
Если переходить со строки на строку в левой панели окна отображаемой группы GRP1, то на правой
панели будут отображаться сведения о элементе-теге, которые собирает OFS-сервер и отправляет
OFS-клиенту, среди которых в последней строке (Value) отображается текущее значение. Можно
также отметить, что в строке ввода имени элемента-тега (ItemID на рис. 3.46) допускается
указывать не только символический, но и физический адрес элемента: например, строка
PLC_OFS!%MW11 приведет к чтению и отображению тех же значений, что и строка
PLC_OFS!MyTimer (см.таблицу в упр. 3.8). Понятно, что использование символических имен
удобнее, чем использование физических адресов..
55

Дополнительно правильность проделанных действий можно подтвердить одним из двух способов,


что зависит от предварительного выбора режима – OPC Factory Server или OPC Factory Server
Simulator. При использовании режима OPC Factory Server в контроллер должен быть загружен и
запущен проект, для которого была построена таблица PLCSymbolTable. Изменяя значения
переменных в контроллере, можно наблюдать изменение значений читаемых элементов-тегов в
окне OFS-клиента. При использовании режима OPC Factory Server Simulation можно видеть
периодические изменения значений переменных: для битовых элементов-тегов чередуются
значения False-True, а для переменных целого или вещественного типа значение увеличивается до
указанного при конфигурировании OFS максимального значения (см.рис.3.41) с последующим
сбросом в ноль, при этом значения целого типа меняются на 1, а значения вещественного типа – на
0,1 с периодом, заданном в свойствах созданной группы (см.рис. 3.44). Вид окна клиента при выводе
значений из контроллера представлен на рис. 3.47.

ч
Рис. 3.44. Создание новой группы

Рис. 3.45. Выбор нового элемента в группе GRP1


56

Рис. 3.46. Добавление элементов-тегов в созданную группу

Рис. 3.47. Окно клиента OFS с отображением свойств элементов-тегов

3.5.5. Связь Citect SCADA с контроллером c помощью OFS


Для тестирования связи Citect SCADA с контроллером создадим проект Training2OFS на основе
проекта Training1. Для этого поступим так же, как в упр. 3.6. Восстановим (команда
Проекты | Восстановить: на странице Проекты кнопка со стрелкой вниз справа от команды
Резервное копирование) из проекта Training1 новый проект с именем Training2OFS.
57

Перейдем на страницу Топология и откроем вкладку Устройства ввода-вывода. Нажав на кнопку


с многоточием в правой стороне второй строки, откроем окно Мастера установки связи между
устройствами. С помощью команды Мастера настраиваем связь контроллера с сервером ввода-
вывода (табл. 3.9) аналогично тому, как это описано в разделе 3.1.
Таблица 3.9. Настройка связи контроллера с сервером ввода-вывода

Мастер, номер шага Параметры и действия


1. Мастер установки связи между Проект: Training2OFS. Нажать кнопку Далее
устройствами
2. Мастер установки связи между Использовать существующий сервер I/O: OvenServer.
устройствами Нажать кнопку Далее
3. Мастер установки связи между Создать новое устройство I/O: MyPLCOFS. Нажать
устройствами кнопку Далее
4. Мастер установки связи между Выбрать Внешнее устройство I/O. Нажать кнопку
устройствами Далее
5. Мастер установки связи между Производитель: Schneider Electric. Модель:
устройствами OPC Factory Server. Средства связи: OFSOPC.
Нажать кнопку Далее
6. Мастер установки связи между Адрес: PLC_OFS (указываем имя устройства, данное
устройствами в Конфигураторе OFS – см.рис. 3.44). Нажать
кнопку Далее
7. Мастер установки связи между Выбираем опцию «Привязать устройство к внешней
устройствами БД тегов». Выбираем в двух полях OPC и Schneider -
Aut.OFS.2 (рис. 3.48). Третье поле со строкой
подключения будет сформировано автоматически.
Нажать кнопку Далее
8. Мастер установки связи между Нажать кнопку Готово
устройствами

Рис. 3.48. Конфигурирование связи с OFS

В результате работы Мастера установки связи между устройствами Citect SCADA получит
информацию о возможности подключения к устройству-контроллеру с именем PLC_OFS через
OFS, который был сконфигурирован в разделе 3.5.3. Кроме того, будет выполнен импорт
пользовательских и системных тегов (список находится на странице Модель системы | Теги –
рис.3.49). Имена тегов изменены: к именам, определенным нами в упр. 3.8, добавлено в качестве
префикса имя устройства PLC_OFC.
58

Рис. 3.49. Импортированные теги, привязанные к адресам контроллера

Системные теги, которые не предполагается использовать в проекте, можно удалить (например,


путем выделения строк и нажатия на кнопку Удалить строки).
Импорт тегов, определенных для устройства OFS, с целью обновления списка можно выполнить не
только на этапе подключения устройства, но и позже. Этому на странице Топология | Устройства
ввода/вывода служит команда Импортировать метки…(рис. 3.50). Система не проверяет,
повторяются ли или нет импортируемые имена, поэтому список тегов необходимо проверять и не
допускать повторения в таблице тегов одних и тех же имен. Эту же задачу можно решить, выполняя
компиляцию проекта («горячая клавиша» Alt-F10).

Рис. 3.50. Возможность импорта тегов после того, как создано устройство ввода-вывода

Создадим теперь новую графическую станицу в среде приложения Построитель графики Citect с
помощью кнопки Новый на панели инструментов или команды Файл | Новый…. В появившемся
окне Новый следует нажать на кнопку Страница. В результате появится окно
Использовать шаблон, представленное на рис. 3.51.
59

Используем параметры шаблона графической страницы, предлагаемые по умолчанию, и нажимаем


кнопку OK. Для сохранения созданной страницы под именем PLC_OFS_Page нажимаем кнопку
Сохранить на панели инструментов, или выполняем команду Файл | Сохранить, или же
используем «горячую клавишу» Ctrl+S. В появившемся окне Сохранить как в поле Страница:
вкладки Страница указываем имя графической страницы PLC_OFS_Page и нажимаем кнопку OK.
Выведем на эту страницу значения трех тегов, которые считываются в приложение Citect SCADA
из контроллера или «симулируются» с помощью OFS. Для этого поместим на странице три
числовых поля для отображения значений тегов PLC_OFS_MyBit0, PLC_OFS_MyCounter и
PLC_OFS_MyReal, а также трех поясняющих текстовых полей. Вид страницы и свойства одного из
числовых полей показаны на рис. 3.52.
Сохраняем графическую страницу, в среде Citect Studio выполняем команды
Проекты | Упаковать, Компилировать (Alt-F10), Выполнить (F5) для тестирования проекта
(рис. 3.53). Как мы видим, выводимые значения меняются «симулятором» или контроллером и
передаются в приложение Citect SCADA с помощью OFS, что свидетельствует о правильной
настройке обмена информацией.
Сохраняем созданный проект под прежним именем Training2OFS.

Рис. 3.51. Задание параметров шаблона графической станицы


60

Рис. 3.52. Свойства графического объекта для вывода числа

Рис. 3.53. Тестирование приложения: чтение тегов с помощью OFS


61

Глава 4. Графика
Графические страницы являются одними из основных компонентов системы Citect SCADA. Они
предназначены для операторов, специалистов по эксплуатации, менеджеров и могут
предусматривать как отображение данных, так и ввод данных. Графическая страница имеет шаблон,
объекты, нарисованные на странице, и присущие графической странице свойства.
При создании проекта новые страницы можно разрабатывать сообразно требуемому стилю. В
основе простейшей страницы лежит шаблон Blank, представляющий собой пустое окно.
Разработчик может добавлять в это окно объекты с разными функциональными возможностями и
разрабатывать новые шаблоны для страниц своего проекта. Для разработчиков, ограниченных
сжатыми сроками проектирования, и лиц, изучающих систему Citect SCADA, существуют
предварительно разработанные шаблоны, которые позволяют быстро создавать страницы c
большим и полезным набором функциональных возможностей.
Как указывалось ранее, включаемый проект Tab_Style_Include является предварительно
сконфигурированным проектом. Он предназначен для сокращения времени, необходимого для
настройки нового проекта, и содержит шаблоны и страницы, выполненные в стиле операционной
системы Windows 7. При создании нового проекта проект Tab_Style _Include автоматически входит
в него как включаемый проект. Это означает, что все шаблоны проекта и его другие средства
доступны для использования при создании графических страниц. Создаваемый с применением этих
шаблонов проект будет иметь стиль дизайна Windows 7. Наряду с шаблонами стандартной графики
для создания технологических графических страниц в проект входят предопределенные страницы
трендов и сигналов тревог (оповещений), страницы для отображения тегов, страницы файлов для
демонстрации текстовых файлов, а также разнообразные всплывающие окна. Все они оснащены
обычными меню и панелями инструментов для навигации, панелями инструментов для навигации
сигналов тревог (оповещений), которые обеспечивают единство функциональных возможностей и
внешнего вида графических страниц в пределах всего проекта (рис. 4.1).
Специализированная строка меню содержит ряд предопределенных меню, каждое их которых
содержит предопределенные команды. На этапе исполнения строка меню может модифицироваться
в соответствии с потребностями конкретного проекта, о чем будет сказано далее.
Панель инструментов навигации содержит навигационные кнопки и кнопки прямого доступа к
основным страницам (трендов, сигналов тревог - оповещений, отображения тегов и др.).
Панель инструментов сигналов тревог обеспечивает доступ к страницам сигналов тревог и
отображает, по крайней мере, три активных страницы сигналов тревог.
В большинстве проектов создаются шаблоны, разработанные для использования с конкретным
объектом управления технологическим процессом.
Создание новой графической страницы возможно несколькими способами. В среде
приложения Citect Studio следует выбрать проект, сделать его активным и перейти к Построителю
графики, нажав на соответствующую кнопку в левой колонке страницы. В среде
Построителя графики Citect нажать иконку Новый на панели инструментов или выполнить
команду Файл | Новый….
Объекты на странице можно рисовать, выбрав объекты из панели инструментов (см. приведенный
ранее рис. 3.17) или из позиции меню Объекты. Действия по рисованию (размещению в
графическом окне) каждого объекта несколько отличаются. Конкретную информацию о том, как
рисовать каждый объект, можно найти в [3], тема
Using Citect SCADA | Defining and Drawing Graphics Pages | Understanding Object Types.
Со в ет
Для изменения размеров графических объектов страницы пользуйтесь маркерами (прямоугольными
метками), появляющимися по контуру объекта после его выбора. Маркеры можно переместить в новую
позицию, используя левую кнопку мыши.

Объектами можно манипулировать с помощью меню Правка, Вид, Текст и Порядок. Как и в
других пакетах для рисования, графические объекты можно вращать, масштабировать и
выравнивать.
62

4.1. Рисование графической страницы проекта Training2


Первым этапом настройки графической страницы после создания страницы и определения ее
свойств является рисование графических объектов на странице. Графические объекты, которые
следует нарисовать, и их примерное расположение на новой странице показаны на рис. 4.2. Эти
объекты представляют технологическую печь (духовку, oven).

Упражнение 4.1. Создание новой графической страницы Oven


В качестве проекта используйте проект Training2. Аналогично порядку действий, указанному ранее
в упр. 3.3, создайте новую графическую страницу. При создании новой графической страницы
используйте шаблон страницы с параметрами, указанными в табл. 4.1. Сохраните страницу под
именем Oven.
Со в ет
Регулярно сохраняйте создаваемую страницу — не ждите, пока страница будет полностью создана!
Пользуйтесь меню Порядок приложения Построитель графики Citect — его команды часто
оказываются весьма полезными. Если нужно отменить последнее выполненное действие, то нажимайте
кнопку Откат на панели инструментов или выполняйте команду Правка | Откат или используйте
«горячую клавишу» Ctrl+Z. Для удобства работы с графическими объектами установите на странице
режим показа сетки — выполните команду Вид | Настройка сетки…, в окне Настройка сетки
установите свойство Отобразить сетку и нажмите кнопку OK.

Таблица 4.1. Параметры графической страницы Oven

Параметр Значение
Стиль Tab_style_1
Разрешение XGA
Шаблон normal
Связанный 
Предназначено для показа заголовка 
Цвет фона Серый (задайте в свойствах страницы)

Упражнение 4.2. Размещение в графической странице Oven


символа Tank
Поместите символ Tank в графическую страницу. Для этого в Окне объектов приложения
Построитель графики Citect (см. приведенный ранее рис. 3.17) нажмите кнопку
Вставить символ, в появившемся окне Вставить символ выберите библиотеку tanks_cyl_conb_30
и символ tank (рис. 4.3), нажмите кнопку OK и поместите символ в нужном месте страницы. Для
того, чтобы повернуть символ на 180 градусов, в среде приложения Построитель графики Citect
выполните команду Порядок | Повернуть…, в появившемся окне Вращение выберите дважды
По часовой стрелке и нажмите кнопку OK. Снабдите добавленный символ поясняющим текстом
Gas Tank - Емкость с газом (см. приведенный ранее рис. 4.2), аналогично тому, как это делалось в
упр. 3.4.
Со в ет
Не забудьте еще раз сохранить страницу — не ждите, пока страница будет полностью создана! Если
сразу же после размещения графического объекта открывается диалоговое окно настройки его свойств,
просто нажмите кнопку OK, если не требуется изменять свойства, задаваемые по умолчанию. Чтобы
легче было рисовать, включите режим Привязать к сетке. Для его включения выполните команду
Вид | Настройка сетки, в появившемся окне отметьте Привязать к сетке и нажмите кнопку ОК. Если
при выборе действия в меню Правка, Вид, Текст или Порядок открывается диалоговое окно, то
нажмите кнопку Справка, чтобы получить дополнительную информацию по этому действию.

Упражнение 4.3. Размещение на графической странице Oven


набора символов Burner
Поместите набор символов Burner (Горелка) на графическую страницу. Для этого в Окне
объектов приложения Построитель графики Citect (см. приведенный ранее рис. 3.17) нажмите
кнопку Набор образов, переместите курсор в нужное место страницы (см. приведенный ранее
рис. 4.2), нажмите левую кнопку мыши, в появившемся окне Свойства: Набор образов нажмите
кнопку Задать, в окне Выбрать образ выберите библиотеку misk2 и символ flame001 (рис. 4.4).
63

Рис. 4.1. Типовой внешний вид графической страницы

Рис. 4.2. Примерный вид графической страницы

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


последовательности изображений по некоторому условию. Это позволяет моделировать движение
(динамическое изображение). Заменим статическое изображение пламени Горелки динамическим
изображением пламени.
Подготовим изображения не горящей горелки и изображения горелки для анимации – изображения
с меняющимся видом пламени. Образ flame001 используем для того, чтобы сформировать
изображение не горящей горелки. Чтобы в образе flame001 убрать изображение пламени, дважды
нажмите на символ горелки, в появившемся окне Свойства: набор образов выберите символ
горелки, еще раз дважды щелкните по изображению, в появившемся окне Выбрать символ
нажмите на кнопку Правка. Построитель графики откроет новое окно с изображением flame001
(рис. 4.5 вверху). Щелкните мышкой по изображению горелки: оно должно быть выделено – т.е.
отмечено восьмью прозрачными квадратиками. Выполните команду
Средства | Редактор растровых изображений, в появившемся окне
Редактора растровых изображений (рис. 4.5 внизу) уберите изображение пламени, нажмите
кнопку  на панели инструментов и окно Редактор растровых изображений закроется. Для
сохранения откорректированного изображения символа нажмите кнопку Сохранить как, дайте
этому символу имя burner_off, укажите библиотеку global (рис. 4.6 вверху) и закройте текущее
окно. Далее в окне Oven приложения Построитель графики откройте Свойства (Properties)
контекстного меню объекта Symbol Set (Набор образов) и выберите радио-кнопку
Анимированный для закладки Представление, нажмите кнопку Задать для поля OFF образ,
выберите в библиотеке global символ burner_off, задайте другие свойства, как показано на рис. 4.6
внизу, нажмите на кнопку OK и поместите символ в нужном месте страницы. Таким образом, мы
64

сконфигурировали набор символов как анимированную картинку, при помощи которой создается
иллюзия движения при условии единичного значением тега Burner_Stat. Снабдите добавленный
набор символов поясняющим текстом Burner – Горелка (см. рис. 4.2), аналогично тому, как это
делалось в упр. 3.4.

Рис. 4.3. Выбор объекта (символа) tank

Со в ет
Не забудьте снова сохранить страницу — не ждите, пока страница будет полностью создана!

Упражнение 4.4. Размещение на графической странице


многоугольника Oven
Поместите многоугольник Oven на графическую страницу (см. приведенный ранее рис. 4.2). Для
этого в Окне объектов приложения Построитель графики (см. приведенный ранее рис. 3.17)
нажмите кнопку Полигон, отпустите кнопку мыши, переместите мышь в узел (место) страницы,
где должна находиться вершина многоугольника. Нажмите левую кнопку мыши и, не отпуская ее,
переместите мышь в узел следующей вершины и отпустите кнопку мыши. Аналогично постройте
остальные стороны многоугольника, а в последней вершине дважды "щелкните" левой кнопкой
мыши. Появится окно Свойства: Полигон, которое следует закрыть, нажав кнопку OK. Снабдите
добавленный прямоугольник поясняющим текстом Oven – Печь (см. приведенный ранее рис. 4.2).

Рис. 4.4. Свойства набора символов Burner

Со в ет
Не забудьте снова сохранить страницу — не ждите, пока страница будет полностью создана!
65

Рис. 4.5. Изменение растрового изображения flame001

Упражнение 4.5. Размещение трубопровода на графической


странице Oven
Поместите трубопровод на графическую страницу. Для этого в Окне объектов приложения
Построитель графики Citect (см. приведенный ранее рис. 3.17) нажмите кнопку Труба, отпустите
кнопку мыши, переместите мышь в узел (место) страницы, где должно находиться начало
трубопровода, нажмите левую кнопку мыши и, не отпуская ее, переместите мышь в узел
следующего изгиба трубопровода и отпустите кнопку мыши. Аналогично выполните остальные
участки трубопровода, а в конце трубопровода дважды "щелкните" левой кнопкой мыши. Появится
окно Свойства: Труба, которое следует настроить (например, ширина 12) и нажать кнопку OK.
Рассмотренные ранее графические объекты Полигон, Труба, а также графические объекты
Прямоугольник и Эллипс можно перемещать, изменять их размеры и форму, переносить на
передний план и т. д. Каждый из указанных графических объектов состоит из непрерывной серии
линий, соединяющих вершины. Каждая вершина изображается в виде маленького квадратика.
Формы рассмотренных ранее графических объектов можно изменять многими способами.
66

Рис. 4.6. Сохранение растрового изображения с именем burner_off и анимация набора символов

Для выделенного графического объекта вершины можно выбирать по отдельности или группой и
перемещать в другое место, изменяя таким образом форму графического объекта. Для добавления
вершины достаточно выбрать графический объект, установить курсор в требуемое место линии и
нажать клавишу Insert. Для удаления вершины достаточно выбрать графический объект, выбрать
вершину и нажать клавишу Delete.

Упражнение 4.6. Размещение на графической странице Oven еще


одного набора символов Burner
Поместите еще один набор символов Burner на графическую страницу с другой стороны
изображения печи. Для этого выделите существующий набор символов Burner, скопируйте его и
вставьте в страницу с помощью кнопок Копировать и Вставить на панели инструментов
приложения Построитель графики Citect, поверните копию на 180 градусов так, это делалось для
символа Gas Tank и разместите его так, как показано ранее на рис. 4.2.
Со в ет
Не забудьте снова сохранить страницу — не ждите, пока страница будет полностью создана!
67

Упражнение 4.7. Просмотр созданной графической страницы


Oven. Проект Training3
Сохраните, компилируйте и запустите проект. Протестируйте выполненную модификацию
страницы Oven. Обратите внимание, что если вы будете менять значение переменной Burner_Stat
(для этого, например, можно зарегистрироваться как пользователь MAIN_USER с паролем USER
и перейти на страницу изменения значений тегов VariableTags), то вид горелки будет меняться.
Завершите работу проекта.
Со в ет
Не забывайте периодически сохранять проект на диске компьютера. Сохраните проект Training2 под
именем Training3. В дальнейшем работайте с проектом Training3. Сделайте этот проект активным,
щелкнув мышкой по строке с его описанием на странице Проекты приложения Citect Studio.

4.2. Цветовая анимация графических объектов во время


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

Упражнение 4.8. Цветовая анимация графического объекта


Определите свойства объекта Oven так, чтобы при изменении температуры менялся цвет
заполнения полигона.
Используйте проект Training3. В среде Построитель графики Citect на странице Oven двойным
щелчком левой кнопки мыши на объекте (полигоне) Oven откройте диалог Свойства: Полигон, во
вкладке Представление(Общее) отметьте поле Заполненный. Во вкладке Заполнение(Цвет)
выберите тип анимации Массив, в поле Выражение массива задайте выражение Oven_Temp/25,
определяющее индекс элемента массива, в поле Цвета массивов определите цвета заполнения
многоугольника, соответствующие различным значениям индекса Oven_Temp/25. Во вкладке
Доступ(Общие) в поле Подсказка задайте текст всплывающей подсказки Цветом заполнения
управляет тег Oven_Temp и нажмите кнопку OK (рис. 4.7).
За ме ч а н ие
Поскольку значение тега переменной Oven_Temp изменяется в диапазоне от 0 до 130 градусов (см.
определение этого тега в упр. 3.6), то значение индекса Oven_Temp/25 (а это деление чисел с
округлением частного до целого значения) изменяется в диапазоне от 0 до 5. Следовательно, в поле
Цвета массивов (см. приведенный рис. 4.7) следует определить цвета заполнения для первых шести
элементов массива цветов. При значениях тега Oven_Temp между 0 и 12 градусами будет использован
мерцающий черно-желтый цвет заполнения, между 13 и 37 градусами — желтый, между 38 и 87
градусами — зеленый, между 88 и 112 градусами — красный и при значении более 113
градусов — мерцающий черно-красный цвета заполнения.
68

Рис. 4.7. Анимация объекта Oven (полигона) цветом заполнения

Со в ет
При записи выражения в поле Выражение массива пользуйтесь Мастером выражений (кнопка его
активизации расположена справа). Это позволит избежать опечаток в записи идентификаторов тегов
или функций (процедур). Сохраните модифицированную страницу Oven, выполните компиляцию и
запустите проект. Зарегистрируйтесь как привилегированный пользователь, откройте страницу Oven,
перейдите на страницу VariableTags, задавайте различные значения тега Oven_Temp и наблюдайте за
изменениями цветов заполнения многоугольника Oven. Завершите работу проекта.

4.3. Отображение столбиковой диаграммы во время


выполнения проекта
Одним из динамических свойств графических объектов является свойство, задаваемое во вкладке
Заполнение(Цвет) диалогового окна свойств графического объекта. Если заполнение применяется
для прямоугольного объекта, то можно создать столбиковую диаграмму (или так называемый «бар-
граф») для отображения изменяемой величины. Например, можно нарисовать столбиковую
диаграмму и использовать свойство Заполнение(Уровень) для отображения температуры печи.

Упражнение 4.9. Использование столбиковой диаграммы и


предопределенного объекта Джинн (Genie)
Создайте столбиковую диаграмму для отображения температуры Печи в виде уровня заполнения
прямоугольника.
Поместите объект Прямоугольник в графическую страницу. Для этого в Окне объектов
приложения Построитель графики Citect (см. приведенный ранее рис. 3.17) нажмите кнопку
Прямоугольник и разместите объект Прямоугольник в графической странице Oven в
соответствии с рис. 4.8. Сразу же появится окно Свойства: Прямоугольник, которое следует
настроить в соответствии с рис. 4.9 и нажать кнопку OK.
Снабдите добавленную столбиковую диаграмму поясняющим текстом Oven_Temp (см. рис. 4.8),
аналогично тому, как это делалось ранее.
Со в ет
Не забудьте снова сохранить страницу — не ждите, пока страница будет полностью создана!

Для изменения значения температуры Духовки добавьте в графическую страницу


предопределенный графический объект Джинн. Для этого в Окне объектов приложения
Построитель графики Citect (см. приведенный ранее рис. 3.17) нажмите кнопку Вставить джинн.
69

В появившемся диалоге Вставить джинн в поле Библиотека выберите библиотеку controls, в поле
Джинн — Ramp Up…tn2 и нажмите кнопку OK. В следующем диалоге
Genie — Ramp Up Down Button выберите тег переменной Oven_Temp и нажмите кнопку OK
(рис. 4.10). Разместите объект Джинн в графической странице Oven в соответствии с рис. 4.11.
Со в ет
Сохраните модифицированную страницу Oven, выполните компиляцию и запустите проект. С
помощью Genie — Ramp Up Down Button задавайте различные значения тега Oven_Temp и
наблюдайте за изменениями цветов заполнения многоугольника Oven. Убедитесь в наличии
всплывающих подсказок для графических объектов Печь, Столбиковая диаграмма и Джинн.
Завершите работу проекта.

Рис. 4.8. Размещение объекта - столбиковой диаграммы (бар-графа) на графической странице Oven

4.4. Отображение числовых значений во время


выполнения проекта
Вы можете отображать значение любого тега или выражения во время выполнения проекта как
число. Если значение тега или выражения изменяется, то отображающее его число на графической
странице автоматически обновляется.

Упражнение 4.10. Отображение числовых значений


Используйте графический объект Число для отображения значения тега переменной Oven_Temp
на странице Oven проекта Training3. В Окне объектов приложения Построитель графики Citect
(см. приведенный ранее рис. 3.17) нажмите кнопку Число и разместите объект Число в графической
странице Oven в соответствии с рис. 4.12. Сразу же появится диалоговое окно Свойства: Текст.
Выберите вкладку Представление (Отображаемое значение) диалогового окна свойств и вставьте
тег Oven_Temp в окно Числовое выражение (рис. 4.13). В качестве формата можно указать строку
###.# EU, в которой задается количество цифр до и после запятой, а EU (Engineering Units –
70

«Инженерные единицы») задает вывод единиц измерения, в данном случае градусов Цельсия –
строка берется из определения тега (см. упр. 3.6). Выберите вкладку Доступ (Общее) диалога
свойств и введите текст всплывающей подсказки Значение температуры печи. Выберите вкладку
Представление (Общее) диалога свойств и установите желаемый шрифт, цвет, выравнивание,
эффекты или воспользуйтесь значениями, предлагаемыми по умолчанию. Для завершения диалога
нажмите кнопку OK.

Рис. 4.9. Настройка объекта-столбиковой диаграммы в графической странице Oven


71

Со в ет
Для более удобного отображения числового значения температуры поместите в графическую страницу
прямоугольник с границей черного цвета и белым цветом заполнения, переместите в него графический
объект Число, сгруппируйте их и поместите сгруппированный объект на прежнее место внутрь
многоугольника.

Сохраните графическую страницу, выполните компиляцию проекта, запустите проект,


протестируйте сделанные изменения и завершите работу проекта.

Рис. 4.10. Настройка объекта Джинн — Ramp Up Down Button на графической странице Oven

Рис. 4.11. Размещение объекта Джинн — Ramp Up Down Button на графической странице Oven
72

4.5. Отображение текста во время выполнения проекта


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

Упражнение 4.11. Отображение текста и его анимация. Проект


Training4
На странице Oven проекта Training3 используйте графический объект Текст для отображения
состояния тега переменной Burner_Stat в виде соответствующего текста, изменения цвета текста в
зависимости от состояния тега и переключения тега.
В Окне объектов приложения Построитель графики Citect (см. приведенный ранее рис. 3.17)
щелкните левой кнопкой мыши на кнопке Текст, переместите указатель мыши в требуемое место
графической страницы (рис. 4.14), введите первый символ текста и нажмите левую кнопку мыши.
Сразу же появится диалоговое окно Свойства: Текст.

Рис. 4.12. Размещение объекта Число в графической странице Oven

Задайте в поле Текст начальный отображаемый текст, а в поле Текст: — его цвет (красный) и
нажмите кнопку Применить (рис. 4.15).
Задайте тег, состояние которого нужно отобразить, и текст, соответствующий возможным
состояниям тега. Для этого выберите вкладку Представление (Отображаемое значение)
диалогового окна свойств, настройте ее в соответствии с рис. 4.16 и нажмите кнопку Применить.
Во вкладке Заливка (Цвет) задайте цвета, которыми будет отображаться текст в зависимости от
состояния тега (рис. 4.17) и нажмите кнопку Применить. Во вкладке Ввод (Касание) задайте
переключение тега Burner_Stat при щелчке левой кнопкой мыши по объекту Текст (рис. 4.18). Для
переключения состояния дискретного тега используйте функцию Toggle, которую выбирайте с
помощью Мастера алгебраических выражений и функций. Нажмите кнопку Применить. В поле
73

Подсказка: вкладки Доступ (Общее) задайте текст всплывающей подсказки, которая будет
появляться во время выполнения, если курсор мыши поместить над объектом (рис. 4.19). Для
закрытия диалогового окна нажмите кнопку OK.

Рис. 4.13. Вид вкладки Представление (Отображаемое значение) объекта Число на графической странице
Oven
74

Рис. 4.14. Размещение объекта Текст на графической странице Oven

Рис. 4.15. Задание начальных параметров отображаемого текста объекта Текст в графической странице Oven
75

Еще одним способом отображения текста (а также значений тегов) является использование
стандартной функции Prompt (“выводимый текст”). Результат выводится в фиксированном месте
на экране. При использовании включенного проекта Tab_Style_Include все страницы, созданные на
основе шаблона tab_style_1.Normal, отображают строку – результат выполнения функции
Prompt – в левом нижнем углу страницы. Напомним, что пользовательские страницы NewPage и
Oven созданы на основе указанного шаблона.
Для демонстрации возможностей функции Prompt измените текст команды, приведенный на
рис. 4.18, добавив вызов рассматриваемой функции:
Toggle (Burner_Stat);
Prompt ("Знач. Burner_Stat: "+IntToStr(Burner_Stat));
Аргументом функции Prompt является строка, состоящая из постоянной части, заключенной в
кавычки, к которой добавляется с помощью знака «+» строковое представление текущего значения
тега Burner_Stat (использован вызов еще одной стандартной функции IntToStr, преобразующей
целое значение в строку).
Сохраните графическую страницу, выполните компиляцию проекта, запустите проект,
протестируйте сделанные изменения. Не забудьте проверить переключение цвета, текста,
изменение значения дискретного тега, вывод текста в поле слева внизу страницы и появление
всплывающей подсказки для графических объектов страницы Oven. Завершите работу проекта.
Со в ет
Сохраните проект на магнитном диске. Для этого в среде приложения Citect Studio достаточно выбрать
на странице Проекты проект Training3 и выполнить команду Резервное копирование. В
появившемся окне Создание резервной копии проекта следует указать требуемые параметры и
нажать кнопку OK. Проект сохраните под именем Training4. В дальнейшем работайте с проектом
Training4. Для этого достаточно в окне Проекты выполнить команду Восстановление (нажав на
кнопку со стрелкой вниз, расположенную рядом с кнопкой Резервное копирование). В появившемся
окне Восстановить проект следует указать требуемые параметры (новый проект, имя проекта
Training4) и нажать кнопку OK. Сделайте этот проект активным, щелкнув мышкой по строке с его
описанием.

Рис. 4.16. Задание тега и отображаемого текста объекта Текст в графической странице Oven
76

Рис. 4.17. Задание цветов отображаемого текста объекта Текст в графической странице Oven

Упражнение 4.12. Анимация клапана трубопровода. Проект


Training5
Рассмотрим еще один пример анимации изображений — дополним трубопровод на графической
странице Oven клапаном и выполним анимацию его изображения: на странице Oven проекта
Training4 добавьте графический объект для отображения клапана трубопровода и его состояния.
При щелчке левой кнопкой мыши по клапану предусмотрите изменение цвета изображения клапана
и изменение значения дискретного тега, связанного с клапаном, на противоположное. Для этого
выполните следующие действия.
В Окне объектов приложения Построитель графики Citect (см. приведенный ранее рис. 3.17)
щелкните левой кнопкой мыши по кнопке Набор образов, переместите указатель мыши в
требуемое место графической страницы (рис. 4.20) и нажмите левую кнопку мыши. Сразу же
появится диалоговое окно Свойства: Набор образов. Для изменения цвета изображения клапана в
зависимости от значения дискретного тега Gas_Valve выберите вкладку Представление (Общее)
диалога свойств, настройте ее в соответствии с рис. 4.21. Поля OFF образ: и ON образ: заполняйте
с помощью соответствующих кнопок Задать…в соответствии с рис. 4.22. Нажмите кнопку
Применить. Для изменения при щелчке левой кнопкой мыши по клапану значения дискретного
тега Gas_Valve выберите вкладку Ввод (Касание) диалогового окна свойств, настройте ее в
соответствии с рис. 4.23 и нажмите кнопку Применить. Обратите внимание, что в поле
Вверх команда использована стандартная функция языка Cicode Toggle(), действие которой
состоит в изменении значения дискретного тега, заданного аргументом, на противоположное.
77

Рис. 4.18. Задание условия переключения дискретного тега при нажатии объекта Текст в графической
странице Oven

Для задания для клапана трубопровода всплывающей подсказки выберите вкладку Доступ (Общее)
и заполните поле Подсказка: «Щелкните мышкой для изменения значения тега Gas_Valve» и
завершите диалог нажатием кнопки OK. Сохраните графическую страницу, выполните
компиляцию проекта, запустите проект, протестируйте сделанные изменения.
За ме ч а н ие
Вставив символ из библиотеки на графическую страницу, можно перемещать его, изменять его размер
и форму, переносить на передний план, редактировать его свойства точно так же, как и с другими
типами объектов. Символ из библиотеки можно вставить на графическую страницу как непривязанный
(unlinked) или как привязанный (linked) символ. Непривязанный символ, в отличие от привязанного, не
обновляется при изменении символа в библиотеке. Разорвать связь символа с библиотекой можно
командой Правка | Разорвать связь.

Рис. 4.19. Задание текста всплывающей подсказки для объекта Текст на графической странице Oven

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

дискретного тега Gas_Valve на вкладке VariableTags. Не забудьте проверить функционирование


всплывающей подсказки. Завершите работу проекта.
Со в ет
Сохраните проект на магнитном диске. Для этого в среде приложения Citect Studio достаточно выбрать
на странице Проекты проект Training4 и выполнить команду Резервное копирование. В
появившемся окне Создание резервной копии проекта следует указать требуемые параметры и
нажать кнопку OK. Проект восстановите с именем Training5. Для этого достаточно на странице
Проекты выполнить команду Восстановление. В появившемся окне Восстановить проект следует
указать требуемые параметры (новый проект, имя проекта Training5) и нажать кнопку OK. В
дальнейшем работайте с проектом Training5, сделав его активным.

За ме ч а н ие
Рассмотрения других более развитых средств графики Citect SCADA будет продолжено далее в главе 9
после изучения сигналов тревог, трендов, команд и управляющих элементов.

Рис. 4.20. Вид графической страницы Oven после добавления клапана трубопровода

Рис. 4.21. Задание изменения цвета клапана в зависимости от состояния дискретного тега Gas_Valve
графической страницы Oven
79

Рис. 4.22. Выбор изображения клапана трубопровода

Рис. 4.23. Задание изменения значения дискретного тега при щелчке по клапану трубопровода
80

Глава 5. Оповещения - сигналы тревоги


(Alarms)
Защита работающего оборудования предприятия является одной из центральных особенностей
системы Citect SCADA. Сигналы тревог обеспечивают постоянный мониторинг и другие требуемые
операции при возникновении любых ошибок оборудования. Citect SCADA поддерживает два типа
оповещений — оповещения или сигналы тревог аппаратных средств и конфигурируемые
оповещения или конфигурируемые сигналы тревог.
Оповещения (сигналы тревог или «алармы») аппаратных средств (аппаратные оповещения).
Система Citect SCADA непрерывно управляет диагностическими подпрограммами, чтобы
проверить все периферийное оборудование, в том числе устройства ввода/вывода. Обо всех
ошибках автоматически формируются сообщения оперативному персоналу. К аппаратным
оповещениям относятся также системные сообщения о работе программного обеспечения и самой
SCADA-системы. Оповещения аппаратных средств полностью интегрированы с
Citect SCADA — дополнительного конфигурирования их не требуется.
Конфигурируемые оповещения (сигналы тревог или «алармы»). В отличие от оповещений
аппаратных средств разработчику проекта требуется конфигурировать оповещения (сигналы
тревог) в виде сообщений об ошибочных ситуациях на предприятии (например, когда уровень
жидкости в резервуаре слишком высок или когда перегревается двигатель). Конфигурируемые
оповещения (сигналы тревог) вводятся в базу данных с помощью форм (диалоговых окон),
аналогичных формам для конфигурирования тегов переменных. Каждый тип оповещений (сигналов
тревог) имеет отличающиеся условия возникновения и параметры и, соответственно этому, свою
форму для конфигурирования.
Эта группа сигналов включает цифровые оповещения (сигналы тревог), оповещения с временной
меткой, аналоговые оповещения и расширенные оповещения.
Цифровые или двоичные оповещения (Digital Alarms) формируются в зависимости от значений
одного или двух двоичных тегов (возможно использование в проверяемом выражении операции
логического умножения AND).
Аналоговые оповещения (Analog Alarms) формируются, когда значение аналоговой переменной
выходит за заданные пределы. Аналоговый сигнал оповещения может формироваться как любая
комбинация следующих типов оповещений — High (Высокое значение сигнала), High High
(Критически высокое значение сигнала), Low (Низкое значение сигнала), Low Low (критически
низкое значение сигнала), Deviation (Отклонение значения сигнала от указанного при
конфигурировании заданного значения превышает величину отклонения) и Rate of Change
(Скорость изменения значения сигнала). Содержательно мы предполагаем, что аналоговая
величина при «правильных» условиях работы должна находиться около величины
Заданное_значение в пределах +- Отклонение. Выход аналоговой величины за пределы интервала
{Заданное_значение – Отклонение, Заданное_значение + Отклонение} отслеживает
исполнительная система реального времени, и этот выход приводит к оповещению. Другие
изменения значения тега (выход за пределы интервала {Low, High} или за пределы интервала {Low
Low, High High}) также приводят к оповещениям.
Расширенные оповещения (Advanced Alarms) формируются, когда значение логического
выражения, написанного на языке Cicode при конфигурировании оповещения, изменяется от
значения FALSE к значению TRUE.
Многоразрядные оповещения (Multi-digital Alarms) задаются с помощью трех цифровых тегов, тем
самым определяется 8 возможных комбинаций; далее можно определить, какие из этих комбинаций
будут формировать оповещение.
Оповещения с отметкой времени (Time Stamped Alarms) – цифровые и аналоговые: они похожи на
цифровые или аналоговые — сигнал включается при изменении состояния цифрового тега. В
отличие от обычных сигналов тревог эти сигналы снабжаются отметкой времени, полученной из
программируемого логического контроллера (ПЛК).
81

5.1. Конфигурирование сигналов тревог


Для добавления нового оповещения (сигнала тревоги) откройте приложение Citect Studio, выберите
требуемый проект (в нашем случае Training5), откройте страницу Модель системы и вкладку
Алармы, а затем с помощью ниспадающего меню, расположенного слева над таблицей, выберите
нужную строку, соответствующую типу добавляемого оповещения (рис. 5.1).

Упражнение 5.1. Добавление сигналов тревог


В проект Training5 добавьте одно аналоговое и два цифровых оповещения. Откройте приложение
Citect Studio, выберите отображение Аналоговых алармов (см. рис. 5.1). Как и любую таблицу в
Citect Studio, эту таблицу можно формировать двумя способами: непосредственно заполняя поля
таблицы или заполняя форму в правой части окна. В форме в правой части окна отображаются все
имеющиеся поля, а в таблице – только те колонки (они соответствуют полям формы), которые
отмечены для отображения. Нажав на кнопку с многоточием слева вверху таблицы, настройте
отображение колонок так, как показано на рис. 5.2. Настройте параметры аналогового оповещения
OvenTempAlarm так, как показано в длинной строке на рис.5.3. Нажмите кнопку Сохранить.
Для создания двух цифровых оповещений BurnerAlarm и ValveAlarm выберите отображение
Цифровых Алармов. Настройте параметры цифровых оповещений в соответствии с рис. 5.4,
выполните команду Сохранить. Выполните компиляцию проекта.

5.2. Отображение оповещений (сигналов тревог)


Во включаемом проекте Tab_Style_Include имеется несколько стандартных страниц, которые
можно использовать для отображения оповещений (сигналов тревог) различных типов.
Сконфигурированные активные оповещения отображаются на странице Активные алармы,
оповещения аппаратных средств — на странице Аппаратные алармы, история появления
оповещений из файла регистрации событий — на странице Исторические события и оповещения,
запрещенные вручную, — на странице Запрещенные алармы. Все перечисленные страницы
базируются на шаблонах оповещений включаемого проекта Tab_Style_Include.

Упражнение 5.2. Просмотр оповещений. Проект Training6


Выберите проект Training5 для включения и просмотра различных оповещений. Запустите проект
Training5, зарегистрируйтесь как привилегированный пользователь (MAIN_USER / USER).
Перейдите в графическую страницу Oven и смоделируйте появление аналогового оповещения
(выполните изменение значения тега Oven_Temp во всем диапазоне от минимума до максимума с
помощью клавиш со стрелками) и цифрового оповещения (переключите нескольку раз состояние
клапана трубопровода и состояние графического объекта управления горелкой) – см. рис. 5.5. Для
перехода на страницу активных оповещений Active Alarms используйте меню в верхней части
страницы. Возможный вид появившейся страницы иллюстрирует рис. 5.6. Выберите в списке
активных оповещений (Active Alarms) требуемый сигнал тревоги, например, OvenTempAlarm, и с
помощью правой кнопки мыши отобразите его контекстное меню (рис. 5.6). Команда контекстного
меню Квитировать (Acknowledge) служит для подтверждения оповещения (сигнала тревоги),
команда Заблокировать (Disable) — для отключения, то есть запрета возникновения этого
оповещения, кроме того, можно отобразить свойства оповещения по команде Свойства. Команда
Разрешить (Enable) позволяет системе вновь формировать оповещения (рис. 5.7).
82

Рис. 5.1. Добавление сигнала тревоги

Рис. 5.2. Настройка колонок таблицы аналогового оповещения


83

За ме ч а н ие
Обратите внимание, что команда Включить (Enable) не доступна на странице активных оповещений
(Active Alarms), а доступна только на странице отключенных оповещений (Disabled Alarms). И
наоборот, команда Заблокировать (Disable) доступна на странице активных оповещений
(Active Alarms) и не доступна на странице отключенных оповещений (Disabled Alarms).

Рис. 5.3. Конфигурирование аналогового оповещения (длинная строка таблицы показана в двух фрагментах)

Для упражнения отключите оповещение OvenTempAlarm и снова подключите его. Для


переключения между страницами оповещений пользуйтесь командами меню. Обратите внимание
на то, что кнопки, связанные с оповещениями и расположенные на панели инструментов в нижней
части окна (см. рис. 5.5), производят такие же действия, как и заданные в меню. Проверьте, к какому
результату на страницах оповещений приводят ваши команды, выполняемые после появления
контекстного меню (нажатие на правую кнопку мыши, указывающей на то или другое оповещение):
Квитировать, Заблокировать, Включить, Сведения.
84

Рис. 5.4. Конфигурирование цифровых оповещений (длинные строки таблицы разбиты на две
части)

Рис. 5.5. Страница Oven, меню оповещений (вверху) и поле для отображения активных оповещений (внизу)
85

Рис. 5.6. Контекстные меню выбранного оповещения на странице активных оповещений

Рис. 5.7. Контекстные меню выбранного оповещения на странице отключенных оповещений

В рамках системы Citect SCADA рассматриваются следующие состояния оповещений. Факт его
возникновения означает, что система зафиксировала такие состояния тегов переменных, которые
сделали сконфигурированное оповещение активным. Если состояния тегов переменных
изменились, оповещение может стать не активным. С другой стороны, человек-оператор может
подтвердить, что он увидел факт возникновения оповещения, даже если оно уже не является
активным. Кроме того, человек-оператор может заблокировать какое-то оповещение или через
какое-то время вновь разрешить отмечать в системе это оповещение.
Во включенном проекте Tab_Style_Include разные состояния оповещений отображаются на
«предустановленных» экранах разным шрифтом (рис. 5.8).
Если оповещение активно и не подтверждено оператором, то используется полужирный желтый
цвет шрифта.
Если оповещение не активно и не подтверждено оператором, то используется обычный желтый цвет
шрифта.
Если оповещение активно и подтверждено, то используется бледно-желтый цвет.
Если оповещение не активно и подтверждено, то используется бледно-синий цвет, причем факт
подтверждения отражается в окне последовательности событий, но строка об оповещении исчезает
со страницы активных оповещений.
Если оповещение заблокировано, то используется яркий голубой шрифт, оповещение удаляется со
страницы активных оповещений, но появляется на странице отключенных оповещений.
86

Рис. 5.8. Страница последовательности событий с историей возникновения оповещений

Обратите внимание, что аналоговые оповещения на странице последовательности событий в


колонке Сообщение сопровождаются численным значением аналогового тега, зафиксированным в
момент возникновения оповещения.
Во включенном проекте Tab_Style_Include имеется еще одна подготовленная страница,
расширяющая функциональные возможности при работе человека-оператора с оповещениями: так
называемая страница Сводка алармов (в английском варианте – Summary). Для того, чтобы сводку
оповещений можно было выводить во время работы, страницу Summary необходимо включить в
список страниц проекта. Для этого создайте новую страницу, используя шаблон Summary (стиль
Tab_Style_1, рис. 5.9), и сохраните эту страницу в своем проекте под именем Summary.
После компиляции и запуска проекта на выполнение, находясь на любой странице, щелкните
мышкой по кнопке со стрелкой, направленной вправо и находящейся в левой нижней части
страницы (рис. 5.10). В результате будет выведена сводная информация по оповещениям (алармам),
накопленная к настоящему времени.
87

Рис. 5.9. Создание страницы Summary со сводной информацией по оповещениям

Рис. 5.10. Подготовка вывода на экран сводки оповещений

Со в ет
Сохраните проект на магнитном диске. Для этого в среде приложения Citect Studio достаточно выбрать
на странице Проекты проект Training5 и выполнить команду Резервное копирование. В
появившемся окне Создание резервной копии проекта следует указать требуемые параметры и
нажать кнопку OK. Проект восстановите с именем Training6. Для этого достаточно на странице
Проекты выполнить команду Восстановление. В появившемся окне Восстановить проект следует
указать требуемые параметры (новый проект, имя проекта Training6) и нажать кнопку OK. В
дальнейшем работайте с проектом Training6, сделав его активным.

За ме ч а н ие
Рассмотрение других аспектов сигналов тревог будет продолжено далее в главе 12.
88

Глава 6. Графики тегов — тренды (Trends)


Визуальное представление прошлой и текущей деятельности, основанное на использовании
трендов, улучшает понимание технологических процессов. Тренд – это прямоугольная область на
странице проекта или в всплывающем окне, на которой система рисует график или графики
изменения значений переменных во времени. С помощью трендов можно представить значения
переменных – отразить технологический процесс – наглядным образом. Поскольку эти значения
изменяются во времени, то график может перемещаться по странице так, чтобы последние значения
всегда отображались.
Можно также прокручивать архивные данные, чтобы отображать прошлые значения переменных
или параметров процесса. Сбор архивных данных продолжается и тогда, когда графический показ
не активен. Вы можете переключаться между страницами, не мешая сбору данных. Можно
отображать в виде графика значение любой одиночной переменной или значение выражения,
записанного на языке Cicode. Можно отображать на экране любое количество трендов
одновременно (они должны размещаться на странице удобным образом) и на каждом тренде до
восьми временных графиков.
Система Citect SCADA поддерживает три типа трендов — Периодические (Periodic, графики
строятся постоянно на основе заданного интервала времени), Событийные (Event, очередные
точки графика строятся каждый раз, когда происходит заданное событие, т. е. определяемое в
событии условие оказывается истинным) и Смешанные (Periodic Event, построение графиков с
заданным периодом происходит только в случае выполнения заданного условия).
Тренды добавляются в систему Citect SCADA путем создания Тренд-тегов (Trend Tags). Каждый
тренд-тег имеет один или несколько отдельных файлов, в которых сохраняются данные.
Citect SCADA непрерывно сохраняет данные тренда, независимо от того, будет отображаться тренд
на графической странице или нет.
Для регистрации значений тега переменной с помощью тренда создайте тренд-тег и определите
один или более файлов для регистрации данных тренд-тега. Для отображения тренда создается
страница тренда и назначается перо для отображения значений тренд-тега в окне тренда.
Для сохранения регистрируемых данных система Citect SCADA использует ротацию цепочки из
нескольких архивных файлов, вместо того, чтобы сохранять их в одном большом файле. По
умолчанию Citect SCADA использует два файла, каждый из которых сохраняет данные на
протяжении одной недели, начиная с полуночи воскресенья. По умолчанию имя файла совпадает с
именем тренд-тега. Пользователь может изменить имя файла, период регистрации данных и число
архивных файлов.

6.1. Конфигурирование тренд-тегов


В среде приложения Citect Studio выберите требуемый проект (в нашем случае Training6), на
странице Модель системы откройте вкладку Тренды; обратите внимание, что перечень
отображаемых для конфигурации колонок можно менять. (рис. 6.1).
89

Рис. 6.1. Вкладка Тренды на странице Модель системы

Упражнение 6.1. Создание и конфигурирование тренд-тега


Добавьте в проект Training6 новый Тренд-тег и сконфигурируйте его. Для этого заполните первую
строку в таблице, показанной на рис. 6.1. Сконфигурируйте добавляемый Тренд-тег в соответствии
с рис. 6.2 (при этом для колонок, не показанных на этом рисунке, оставьте значения по умолчанию)
и нажмите кнопку Сохранить. Выполните компиляцию проекта и проверьте отсутствие ошибок на
этом этапе.

Рис. 6.2. Конфигурирование Тренд-тега


90

6.2. Отображение трендов


В проекте можно отображать тренды несколькими способами.
Первый способ является базовым, он основан на использовании графического элемента Тренд в
Графическом построителе. Этот объект представляет собой прямоугольник без дополнительных
осей, масштаба, курсора и других функциональных элементов, и его использование рассмотрено в
Упражнении 6.2.
Второй способ связан с созданием графических страниц в проекте, основанных на следующих
шаблонах: SingleTrend (на графической странице отображается один полностраничный тренд,
который может включать до восьми временных графиков), DoubleTrend (на графической странице
отображаются два тренда, каждый из которых может включать до восьми временных графиков),
PopTrend (тренд во всплывающем, как поплавок, окне небольшого размера; тренд может включать
до четырех временных графиков), Zoomtrend (два тренда на странице и возможность использовать
окно для изменения масштаба), Eventtrend (один событийный тренд на странице). Отличительной
особенностью этого способа является то, что указанные шаблоны оформлены в стиле Standard, Эти
шаблоны имеют внешний вид, отличающийся от вида в стиле Tab_Style_1. Отличия состоят в
составе и виде системы меню на страницах, наборе и расположении иконок для выполнения
стандартных действий пользователя, в наборе типовых функций по работе с приложением. Все
функциональные возможности работы с трендами на основе указанных шаблонов, а также
дополнительные возможности можно обеспечить, используя более развитое графическое средство
системы Citect SCADA - Анализатор технологических процессов (Process Analyst). По этой причине
ниже на рис. 6.7 в качестве примера приведен лишь выбор одного из шаблонов – шаблона
SingleTrend – при создании новой графической страницы, а вопросы использования в учебном
проекте трендов в соответствии со вторым способом отображения графиков не рассмотрены.
Итак, система Citect SCADA позволяет строить графики переменных с широким набором свойств и
возможностей отображения значений – с помощью Анализатора технологических процессов
(Process Analyst). Анализатор реализован на основе технологии ActiveX операционной системы MS
Windows, и его относят к третьему способу отображения трендов. Свойства и правила
использования Анализатора будут рассмотрены в главе 8.
Анализатор технологических процессов обладает большими функциональными возможностями по
сравнению с шаблонами, относящимися ко второму способу отображения трендов. Пожалуй,
единственной негативной чертой Анализатора является то, что у него относительно большие
вычислительные потребности в обработке графики. Но так как относительная стоимость
вычислительных ресурсов по мере развития технологий производства аппаратных средств
снижается, роль этого фактора уменьшается.

Упражнение 6.2. Создание, конфигурирование и отображение


тренд-тега на обычной графической странице
Создайте тренд с помощью команды Объекты | Тренд на существующей странице Oven проекта
Training6, нарисовав прямоугольник. В окне свойств тренда выберите для отображения созданный
ранее тренд-тег OvenTempTrend и задайте цвет графика (рис. 6.4). Поле Число выборок данных
показывает ширину прямоугольника - количество отсчетов для построения графиков. На вкладке
Доступ укажите текст всплывающей подсказки «Обычный тренд тега Oven_Temp». Вокруг
прямоугольника тренда разместите обычный прямоугольник черного цвета для того, чтобы были
видны границы области тренда (рис. 6.5). Протестируйте сконфигурированный тренд. Возможный
вид страницы Oven после запуска показан на рис. 6.6.
Таким образом, графический элемент Trend включает базовые свойства, с его помощью можно
качественно оценить характер изменения переменных.
За ме ч а н ие
Тренд-теги разных типов (периодические, событийные и смешанные) не отображаются на одном и том
же тренде.
91

Рис. 6.3. Создание объекта Тренд на графической странице

Рис. 6.4. Свойства графического элемента Тренд


92

Рис. 6.5. Вариант размещения тренда на графической странице Oven

Рис. 6.6. Вид графической страницы Oven в результате запуска проекта Training6
93

Рис. 6.7. Выбор шаблона Single Trend для новой страницы

Совет
Сохраните проект Training6 на магнитном диске. Для этого в среде приложения Citect Studio
достаточно выбрать на странице Проекты этот проект и выполнить команду
Резервное копирование. В появившемся окне Создание резервной копии проекта следует указать
требуемые параметры и нажать кнопку OK. Затем выполните команду Восстановить. В появившемся
окне Восстановить проект следует указать требуемые параметры и нажать кнопку OK (новый
проект, имя проекта Training7). В дальнейшем работайте с проектом Training7.

Когда тренд отображается в окне первый раз, значения отображаются динамически, в режиме
реального времени. Расположение линий графика представляет значения каждого тренд-тега.
График сдвигается вдоль окна тренда при отображении новых значений.
Поскольку все данные тренда записываются на диск, то можно использовать архивный режим для
обратной прокрутки и просмотра прошлых значений. В архивном режиме данные тренда
отображаются статически и отображаются только значения за определенный период. Можно также
прокручивать тренд назад к архивным данным или вперед к данным реального времени. Тренд
позволяет указать конечную дату для отображения архивных данных. Упомянутые возможности
можно реализовать с помощью обширной библиотеки стандартных Cicode-функций по работе с
оповещениями (сигналами тревоги). Наиболее просто эти задачи можно решить с помощью
графического элемента Анализатор технологических процессов Process Alalyst, работа с
которым будет рассмотрена в Главе 8.
Каждый элемент данных тренда, кроме трендов переменных с плавающей точкой, занимает при
хранении два байта. С учетом сказанного можно рассчитать для каждого тренд-тега место, занятое
на магнитном диске за определенный период:

T * N *2
Q  464 * N  176  ( )
P
94

Здесь Q — требуемый объем места на диске, байт; N — количество архивных файлов;


T — период регистрации в одном архивном файле, секунд; P — интервал между соседними
моментами регистрации, секунд.
Например, если регистрация данных тренда происходит каждые десять секунд в течение недели и
используются пять файлов данных (пять недель), то необходимый объем места на диске будет
составлять
(7 * 24 * 60 * 60) * 5 * 2
Q  464 * 5  176  ( )  607296 байт
10
Тренды переменных с плавающей точкой (восемь байт) требуют каждый в четыре раза больше
места. Поэтому можно для них использовать предыдущую формулу и умножить результат на
четыре.
За м еч а н ие
Запрещается удалять с жесткого диска архивные файлы, которые создает система Citect SCADA, во
время ее работы.

В большинстве случаев разумно создавать копии архивных файлов, например, для последующего
анализа или сохранении достаточного пространства на сервере трендов.
95

Глава 7. Команды и средства управления


(Commands and Controls)
Команды и средства управления позволяют операторам взаимодействовать c системой
Citect SCADA во время выполнения. Существуют три типа команд и средств
управления — Ползунковый переключатель (Slider), который позволяет изменять или
отображать значение аналоговой переменной; Команды ввода с помощью мыши
(Touch commands) и Команды ввода с помощью клавиатуры (Keyboard commands). Вы можете
назначить привилегии и области действия для любой команды или элемента управления, посылать
сообщения регистрации при всяком выполнении команды и записывать в журнал каждую команду
оператора.

7.1. Ползунковый переключатель (Slider)


Ползунковый переключатель (Slider) позволяет оператору изменять значение аналоговой
переменной путем перемещения графического объекта со свойством ползункового переключателя
на графической странице. Положение ползункового переключателя будет также автоматически
обновляться при изменении значения аналоговой переменной каким-либо иным способом.
Ползунковый переключатель можно передвигать горизонтально, вертикально или вращательно, что
определяется его свойствами. Для анимируемого графического объекта эти свойства нельзя
задавать одновременно – только какое-то одно направление. Функция ползункового переключателя
имеется у большинства графических объектов и задается с помощью вкладки Slider.

Упражнение 7.1. Создание и тестирование ползункового


переключателя
В графической странице Oven проекта Training7 для изменения значения аналогового тега
Oven_Temp создайте ползунковый переключатель и протестируйте его работу. В среде приложения
Citect Studio выберите проект Training7, перейдите в приложение Построитель графики Citect и
откройте графическую страницу Oven. В Окне объектов приложения
Построитель графики Citect (см. приведенный ранее рис. 3.17) щелкните левой кнопкой мыши на
кнопке Вставить символ, в результате появится диалоговое окно Вставить образ. Настройте этот
диалог в соответствии с рис. 7.1 и нажмите кнопку OK. Разместите ползунковый переключатель на
графической странице Oven так, как указано на рис. 7.2 и откройте окно Свойства… с помощью
его контекстного меню. В результате появится диалоговое окно Свойства: Образ
конфигурирования ползункового переключателя.

Рис. 7.1. Выбор графического объекта для ползункового переключателя


96

Рис. 7.2. Размещение ползункового переключателя на графической странице Oven

В окне диалога выберите вкладку Регулятор (По вертикали), настройте ее в соответствии с рис. 7.3
и нажмите кнопку Применить. Обратите внимание, что в поле При максимуме: указано значение
420, соответствующее высоте в пикселях прямоугольника, отображающего столбиковую
диаграмму. Один из способов определения этого значения состоит в использовании сетки на
редактируемой странице: используя меню Вид | Настройки сетки… можно указать подходящий
шаг по вертикали (рис. 7.4) и оценить нужные размеры. Теперь имеется возможность изменять
значение аналогового тега как с помощью ползункового переключателя, так и с помощью
управляющего элемента Genie — Ramp Up Down Button. Добавьте для ползункового
переключателя всплывающую подсказку (рис. 7.5) и нажмите кнопку OK.
97

Рис. 7.3. Конфигурирование ползункового переключателя

Сохраните графическую страницу Oven, выполните компиляцию, запустите проект и


протестируйте его работу. Обратите внимание, что при перемещении ползункового переключателя
соответствующим образом изменяются высота закрашенного столбца слайдера и значение
цифрового индикатора, отображающие значения аналогового тега Oven_Temp. При этом крайнее
верхнее положение ползункового переключателя соответствует верхней границе столбиковой
диаграммы. Проделайте также не менее важный эксперимент. С помощью элемента
Genie — Ramp Up Down Button изменяйте значение аналогового тега Oven_Temp и наблюдайте
за соответствующим изменением положения ползункового переключателя. Убедитесь в наличии
всплывающей подсказки. Завершите работу приложения.

Рис. 7.4. Изменение шага сетки по вертикали


98

Рис. 7.5. Конфигурирование всплывающей подсказки для ползункового переключателя

7.2. Команды ввода с помощью мыши (Touch commands)


Команды ввода с помощью мыши (Touch commands) позволяют оператору выполнить одну команду
или последовательность команд с помощью левой клавиши мыши, предварительно поместив курсор
мыши на изображение графического объекта. Для графического объекта можно определить
одновременно несколько команд — когда левая кнопка мыши нажата, либо отпущена, либо нажата
в течение длительного времени (более одной - двух секунд). Этого можно достичь путем
соответствующего задания свойств графического объекта во вкладке Ввод (Касание).
Пример использования команд ввода с помощью мыши приведен ранее в упр. 3.4 — 3.5.

7.3. Команды ввода с помощью клавиатуры


(Keyboard commands)
Команды ввода с помощью клавиатуры (Keyboard commands) представляют собой комбинацию
клавиш, которую нажимает оператор, и в ответ на которую выполняется заданная команда или
последовательность команд.
Клавиатурные команды можно определить таким образом, чтобы они действовали на все
графические страницы (System keyboard commands — Системные клавиатурные команды),
или только при отображении конкретной графической страницы
(Page keyboard commands — Страничные клавиатурные команды), или только при
размещении указателя мыши над конкретным объектом на графической странице
(Object keyboard commands — Клавиатурные команды графического объекта). Если для
разных клавиатурных команд определена одна и та же клавиатурная комбинация, то конфликт
разрешается путем исполнения клавиатурной команды, имеющей более высокий приоритет
(системные клавиатурные команды имеют наивысший приоритет, а клавиатурные команды
графического объекта имеют самый низкий приоритет).
Для доступа к клавиатурной комбинации (в частном случае к отдельной клавише) ее следует
определить - снабдить некоторым именем. Например, клавишу End можно назвать именем
Shutdown, клавишу Home — именем Home, клавишу F11 — именем Info и т. д. Некоторые клавиши
и клавиатурные комбинации в системе Citect SCADA являются предопределенными.
Для определения системной клавиши или клавиатурной комбинации можно в среде приложения
Citect Studio на странице Проекты сделать активным нужный проект, на левой стороне окна в
основном меню перейти на страницу Визуализация и перейти на вкладку Клавиатурные команды
(рис. 7.6). Системная клавиатурная команда или последовательность таких команд доступна во всех
частях проекта (действует на все графические страницы).
99

Рис. 7.6. Окно для определения системной клавиатурной команды

Клавиатурные команды страницы напоминают системные клавиатурные команды, но они доступны


только на тех графических страницах, для которых они определены. На одной графической
странице может быть определено несколько клавиатурных команд. Для определения клавиатурной
команды страницы можно в среде приложения Построитель графики Citect открыть требуемую
страницу (например, страницу Oven) и выполнить команду Файл | Свойства. В появившемся окне
Свойства:Oven следует выбрать Клавиатурные команды (рис. 7.7).

Рис. 7.7. Окно для определения страничной клавиатурной команды

За м еч а н ие
Системные клавиатурные команды и клавиатурные команды страницы будут рассмотрены далее.

Любой графический объект страницы может воспринимать ввод с клавиатуры наряду с вводом от
мыши. Для определения клавиатурной команды графического объекта следует воспользоваться его
свойством Ввод (Клавиатурные команды) (рис. 7.8).
Система Citect SCADA не позволяет непосредственно присваивать значение, вводимое с помощью
клавиатуры, пользовательскому тегу. Для этой цели используется служебный тег ArgValue1,
являющийся внутренней переменной, в которой формируется значение, вводимое с помощью
клавиатуры. В процессе формирования выполняется проверка корректности вводимых значений.
Как только оператор нажимает клавишу Enter, введенное в служебный тег ArgValue1 значение
копируется в пользовательский тег. Пример клавишной последовательности: ###ENTER. При этом
в поле команды может стоять оператор A = ArgValue1.
Ввести несколько значений можно с помощью внутренних переменных-тегов Arg1, Arg2, … Arg8.
Пример клавишной последовательности: ###,###ENTER. При этом в поле команды могут стоять
операторы: A = Arg1; B = Arg2. Но при вводе нескольких значений в отличие от предыдущего
100

случая не производится проверка корректности вводимых значений – такую проверку приходится


откладывать на потом.

Упражнение 7.2. Ввод с клавиатуры для графического объекта.


Проект Training8
В графической странице Oven проекта Training7 для изменения значения аналогового тега
Oven_Temp создайте объект, поддерживающий клавиатурный ввод, и протестируйте его работу. В
среде приложения Citect Studio выберите проект Training7, перейдите в приложение
Построитель графики Citect и откройте графическую страницу Oven. Пользуясь
Окном объектов приложения Построитель графики Citect (см. приведенный ранее рис. 3.17),
разместите на графической странице Oven объект Текст так, как это показано на рис. 7.9. Для
текстового объекта задайте только отображаемый текст.
Для обеспечения ввода значения тега Oven_Temp с помощью клавиатуры созданный текстовый
объект настройте в соответствии с рис. 7.10 и нажмите клавишу OK. Теперь для изменения значения
тега Oven_Temp достаточно с помощью мыши выделить графический объект – текст, ввести
требуемое значение тега (вводимое значение будет отображаться по мере ввода во всплывающем
окне) и нажать клавишу Enter. Причем если выделение объекта сохраняется на странице, то
независимо от положения курсора мыши нажатие на клавиши клавиатуры приводит к
формированию строки ввода. Вводимые значения и информация о выявленных ошибках при вводе
отображаются в строке, расположенной в левом нижнем углу страницы (это свойство шаблона,
использованного во включенном проекте Tab_Style_Include; см. также подраздел 16.4).

Рис. 7.8. Определение клавиатурной команды графического объекта

Сохраните графическую страницу Oven, выполните компиляцию, запустите проект и


протестируйте сделанные изменения. Завершите работу приложения.
Со в ет
Сохраните проект Training7 на магнитном диске. Для этого в среде приложения Citect Studio
достаточно выбрать на странице Проекты этот проект и выполнить команду Резервное копирование.
В появившемся окне Создание резервной копии проекта следует указать требуемые параметры и
нажать кнопку OK. Выполните команду Восстановить. В появившемся окне Восстановить проект
следует указать требуемые параметры (новый проект, имя проекта Training8) и нажать кнопку OK. В
дальнейшем работайте с проектом Training8.
101

Рис. 7.9. Объект для клавиатурного ввода значения пользовательского тега Oven_Temp

Рис. 7.10. Конфигурирование графического объекта Текст для клавиатурного ввода значения
пользовательского тега Oven_Temp
102

Глава 8. Расширенная графика.


Анализатор технологических процессов
(Process Analyst)
Анализатор технологических процессов (далее – Анализатор процессов) системы Citect SCADA
является управляющим элементом ActiveX, который позволяет человеку-оператору наблюдать
данные трендов с сервера трендов и данные оповещения (сигналов тревог) с сервера оповещений
(сигналов тревог). Анализатор процессов предоставляет визуальные средства для анализа и
сравнения данных трендов (реального времени или архивных) и данных оповещений (сигналов
тревог) в более понятной и удобной для человека форме, чем стандартные шаблоны трендов и
табличная форма отображения оповещений (сигналов тревог).

8.1. Общие сведения об анализаторе процессов


Анализатор процессов может быть помещен на любую графическую страницу, причем в
простейшем случае нет необходимости в его дополнительной настройке перед размещением.
Анализатор процессов способен выводить данные трендов и оповещений (сигналов тревог) в одном
и том же окне (рис. 8.1). Поскольку он использует информацию существующих серверов трендов и
оповещений, что и страницы трендов и оповещений (сигналов тревог), то нет необходимости в
дополнительной настройке. Вместе с тем, конечно, свойства анализатора процессов можно задавать
и в период разработки – при «конструировании» страниц.
Кратко рассмотрим назначение кнопок панелей инструментов Анализатора процессов, начав с
главной панели инструментов. Все кнопки панелей инструментов снабжены краткими
всплывающими подсказками. Кнопки Сохранить представление и Загрузить представление
позволяют, соответственно, сохранить текущую конфигурацию анализатора процессов в файле .pav
на магнитном диске или восстановить сохраненный ранее вид.

Рис. 8.1. Вид окна Анализатора процессов

Кнопка Печать позволяет напечатать текущий вид анализатора процессов. Кнопки


Копировать в буфер обмена и Копировать в файл позволяют, соответственно, скопировать
текущее изображение анализатора в буфер промежуточного хранения или в файл на магнитном
диске. Кнопка Добавить кривые позволяет добавить новое перо (перья). Кнопка Удалить кривые
позволяет удалить выбранное перо. Кнопка Сцепить/Расцепить кривые позволяет заблокировать
или разблокировать вертикальное или горизонтальное перемещение перьев друг относительно
103

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

Рис. 8.2. Конфигурирование графической страницы NewPage для автоматического восстановления


конфигурации Анализатора процессов

Теперь рассмотрим навигационную панель инструментов. В полях Начальный момент времени и


Конечный момент времени, расположенных по краям панели, отображаются, соответственно,
дата и время левой и правой границ временной оси анализатора процессов. В поле
Временной интервал отображается диапазон оси времени, который можно изменить с помощью
кнопки, расположенной в правой части поля. Назад на один интервал обеспечивает переход по
временной оси назад на интервал, указанный в поле Временной интервал. Кнопка Назад на пол-
интервала действует аналогично, но выполняет переход на половину временного интервала.
Действие кнопок Вперед на один интервал и Вперед на пол-интервала аналогично, но переход
выполняется вперед. Кнопка Синхронизировать инициализирует поле
Конечный момент времени текущим временем. Кнопка Переключение
автоматической прокрутки останавливает или включает режим прокрутки. Кнопки
Увеличить на 50% и Уменьшить на 50% соответственно увеличивают или уменьшают масштаб
по оси ординат на 50%. Кнопка Установка длительности позволяет задать любое значение
интервала временной оси, не используя фиксированный список интервалов. Кнопка
Изменить масштаб по вертикальной оси позволяет изменить масштаб вертикальной оси (только
для аналоговых перьев).
И, в заключение, несколько полезных замечаний о панели инструментов объектов. В столбце
Дерево объектов с помощью отмечаемых кнопок можно включать или скрывать перья. В столбце
Курсор*, который появляется при включении курсора, отображается текущее значение пера.
Со в ет
Для автоматического восстановления конфигурации Анализатора процессов используйте
стандартные функции языка Cicode. С этой целью задайте свойства графической страницы, на которой
размещен Анализатор процессов, в соответствии с рис. 8.2. Функция языка Cicode
LoadProcessAnalyst() имеет следующий вид:
/* Восстановление ранее сохраненной в файле на магнитном диске конфигурации
анализатора процессов */
FUNCTION LoadProcessAnalyst( )
/* Получение дескриптора анализатора процессов: AN214 –
анимационный номер анализатора процессов в примере*/
OBJECT hProcessAnalyst = ObjectByName( "AN214" );
/* Восстановление конфигурации анализатора процессов из файла
pa.pav, помещенного ранее в подпапку Analyst Views папки
проекта */
_ObjectCallMethod( hProcessAnalyst, "LoadFromFile","pa.pav", 1 );
104

END
В случае, если в проекте не планируется автоматически восстанавливать сохраненную ранее
конфигурацию Анализатора процессов, не делайте отметку в свойствах страницы, показанную на
рис. 8.2.

Упражнение 8.1. Добавление анализатора процессов на


графическую страницу
В графической странице NewPage проекта Training8 разместите управляющий элемент ActiveX
Анализатор процессов для наблюдения изменений значений тегов трендов и сигналов тревог.
Для этого в среде приложения Citect Studio выберите проект Training8, активизируйте приложение
Построитель графики Citect и откройте графическую страницу NewPage. Пользуясь
Окном объектов приложения Построитель графики Citect (см. приведенный ранее рис. 3.17)
воспользуйтесь кнопкой Анализатор процессов и разместите на графической странице NewPage
анализатор процессов. Другая возможность: выполнить команду Правка | Вставить Process
Analyst в меню Построителя графики Citect.
В результате появится диалоговое окно Свойства: Process Analyst Control, которое пока закройте
кнопкой Отмена и разместите Анализатор процессов в соответствии с рис. 8.3.
Сохраните графическую страницу NewPage и выполните компиляцию проекта.

Рис. 8.3. Размещение Анализатора процессов в графической странице NewPage

8.2. Свойства анализатора процессов. Отображение


трендов и сигналов тревог
Пользователи могут конфигурировать требуемые свойства анализатора процессов как в процессе
работы (см. приведенный ранее рис. 8.1), так и при конструировании страниц.
105

Упражнение 8.2. Настройка анализатора процессов при


конструировании и выполнении. Отображение трендов,
аналоговых и дискретных оповещений. Проект Training9
В графической странице NewPage проекта Training8 настройте анализатор процессов для
наблюдения изменения значения тренд-тега и протестируйте его работу.
Для этого в среде приложения Citect Studio выберите проект Training8, перейдите в среду
Построителя графики Citect и откройте графическую страницу NewPage. Настройте
анализатор процессов на отображение тренд-тега температуры в соответствии с рис. 8.4. В процессе
настройки название новой панели по умолчанию Панель1 изменено на название Тренды, а
название графика по умолчанию Кривая1 – на название Температура.
Дальнейшую настройку Анализатора процессов выполните в режиме исполнения. Для этого
сохраните графическую страницу NewPage, выполните компиляцию, запустите проект Training8 и
перейдите на графическую страницу NewPage. В результате вы будете наблюдать график тренда
температуры. Для отображения сигналов тревог на отдельной панели (части окна)
Анализатора процессов нажмите кнопку Показать свойства на главной панели инструментов
(она расположена справа в верхнем ряду иконок Анализатора процессов). Аналогично тому, как
это было указано ранее на рис. 8.4, создайте панель Оповещения. Для отображения оповещений
(сигналов тревог) на панели навигации (главной панели инструментов) Анализатора процессов
нажмите кнопку Добавить кривые; появится диалоговое окно Добавление новых кривых.
Настройте диалоговое окно в соответствии с рис. 8.5.

a) b)

c) d)
106

e) f)

Рис. 8.4. Настройка Анализатора процессов в режиме конструирования (отображение тренд-тега


температуры на отдельной панели)

Рис. 8.5. Диалоговое окно добавления оповещений в Анализатор процессов

Рассмотрим более подробно работу с диалоговым окном Добавить кривые. В поле Тип: можно
выбрать тренды или оповещения (сигналы тревог). Кнопка Поиск позволяет выполнить поиск
доступных трендов или сигналов тревог, результаты поиска помещаются в поле
Результаты поиска в виде списка, в котором можно выбрать нужный тренд или сигнал тревоги для
его конфигурирования. В поле Добавить кривые в: можно выбрать панель, в которой будет
отображаться выбранный тренд или оповещение (сигнал тревоги). В поле Тип кривой: можно
выбрать тип пера — аналоговый, цифровой или для оповещения (сигнала тревоги). В поле
Название кривой: можно задать название пера. Кнопка Добавить позволяет перенести выбранные
в поле Результаты поиска элементы в поле Выбранные элементы. С помощью кнопки Справка
можно вызвать справку по Анализатору процессов, а с помощью кнопки OK тренды или сигналы
тревог, представленные списком в окне Выбранные элементы, включаются для отображения в
работающей странице.
В окне Добавление новых кривых (см. приведенный ранее рис. 8.5) нажмите кнопку OK.
Изменяйте значение аналогового тега Oven_Temp, например, с помощью ползункового
переключателя, состояния горелки и вентиля подачи газа и пронаблюдайте поведение
107

отображаемых тревог на Анализаторе процессов. Возможный вид Анализатора процессов после


выполнения указанных действий представлен на рис. 8.6.

Рис. 8.6. Отображение трендов, аналоговых и дискретных оповещений в Анализаторе процессов

Со в ет
Если панели и перья созданы по время работы проекта, то их конфигурация при переключении между
страницами проекта автоматически не сохраняется. Для сохранения конфигурации Анализатора
процессов следует использовать команды Сохранить представление и Загрузить представление –
соответствующие иконки размещены слева в верхней строке окна Анализатора процессов (см. для
примера рис. 8.7).

Рис. 8.7. Сохранение конфигурации панелей и перьев Анализатора процессов


Поэкспериментируйте, нажимая различные кнопки на панели инструментов навигации
(Временной интервал, Фиксация интервала, Назад на один интервал, Назад на пол-
интервала, Вперед на пол-интервала и др.), и проанализируйте изменение вида графиков.
Поэкспериментируйте, нажимая различные кнопки на главной панели инструментов
(Показать/Скрыть точки, Показать/Скрыть курсор, Показать/Скрыть курсорные метки,
Отображение списка кривых, Показать свойства и др) и оцените реакцию на их нажатие.
Перейдите в область отображения Анализатора процессов, нажмите левую кнопку мыши и, не
отпуская ее, передвигайте мышку влево или вправо. Синхронно с этим область отображения будет
также передвигаться по шкале времени. Таким образом вы сможете просматривать архивные
данные.
Со в ет
Сохраните проект Training8 на магнитном диске. Для этого в среде приложения Citect Studio
достаточно выбрать в окне Проекты этот проект и выполнить команду Резервное копирование. В
появившемся окне Создание резервной копии проекта следует указать требуемые параметры и
нажать кнопку OK. В дальнейшем работайте с проектом Training9: для этого достаточно выполнить
команду Восстановить. В появившемся окне Восстановить проект следует указать требуемые
параметры (новый проект, имя проекта Training9) и нажать кнопку OK.
108

8.3. Типы перьев Анализатора процессов и настройка


свойств Анализатора процессов в период исполнения.
Мгновенные тренды
Перья Анализатора процессов служат для отображения данных как трендов, так и оповещений
(сигналов тревог). Анализатор процессов поддерживает три типа данных — аналоговые,
цифровые и перья оповещений (сигналов тревог), а также позволяет строить так называемые
«мгновенные» тренды.
Каждое перо имеет собственное графическое представление. Настраивать большинство свойств
пера можно во время исполнения.
Анализатор процессов обычно использует аналоговые перья для отображения данных, не
являющихся двоичными. По этой причине только аналоговые перья имеют вертикальную ось
значений, относительно которой строятся графики данных (см., например, приведенный ранее
рис. 8.6).
Анализатор процессов обычно использует цифровые перья для отображения двоичных данных.
Такое перо имеет значения 0 и 1. Заливка цветом используется для индикации данных, имеющих
единичное значение.
Анализатор процессов использует перья оповещений (сигналов тревог) для графического
отображения текущих значений или истории сигналов тревог в течение какого-либо времени.
Включение, выключение сигналов тревог и их подтверждение представляются графически
(рис. 8.8).

Сигнал тревоги
не подтвержден

Сигнал тревоги
выключен

Сигнал тревоги Сигнал тревоги


включен подтвержден

Рис. 8.8. Отображение дискретного оповещения Горелка выключена, но клапан включен проекта
Training9 в Анализаторе процессов

Для настройки свойств анализатора процессов во время исполнения следует нажать кнопку
Показать свойства на главной панели инструментов. В результате появится диалоговое окно,
позволяющее конфигурировать свойства Анализатора процессов, представленное на рис. 8.9.
Это окно содержит три вкладки. Вкладка Главная страница позволяет добавлять и
конфигурировать панели отображения и курсоры, удалять панели и курсоры, добавлять и
конфигурировать перья, удалять перья и задавать свойства перечисленных элементов,
используемых по умолчанию. Вкладка Панели инструментов позволяет определять состав кнопок
на главной и навигационной панелях инструментов. Вкладка Список объектов позволяет
конфигурировать состав столбцов в списке объектов.
109

Рис. 8.9. Задание свойств Анализатора процессов в период исполнения

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


например, кнопку Анализатор процессов в меню запущенного проекта на вкладке Тренды. При
этом Анализатор процессов будет иметь начальный вид, представленный на рис. 8.10. Выполните
его конфигурирование аналогично тому, как это делалось ранее. Один из вариантов состоит в том,
чтобы загрузить для этой страницы сохраненную ранее конфигурацию MyPA0.pav (рис. 8.11).

Рис. 8.10. Страница Анализатора процессов из включенного проекта Tab_Style_Include

Рис. 8.11. Загрузка ранее сохраненной конфигурации Анализатора процессов


110

Еще один способ запуска Анализатора процессов состоит в отображении всплывающего окна
Анализатора (иконка показана на рис. 8.10 и на рис. 8.12). После отображения нужной страницы (в
примере на рис. 8.12 это страница Oven) можно выполнить команду Тренды | Всплывающее окно
Process Analyst и провести конфигурирование Анализатора вручную или загрузив сохраненное
представление (см. приведенный ранее рис. 8.11). Всплывающее окно Анализатора процессов
остается на переднем плане и его можно передвинуть в удобное место на экране.

Рис. 8.12. Использование всплывающего окна Анализатора процессов

В предыдущих примерах для отображения графиков использовались тренд-теги, заранее


сконфигурированные в Citect Studio. Однако Анализатор процессов позволяет строить графики
переменных тегов без необходимости определять заранее тренд-теги. Такие тренды носят название
«мгновенных» (Instant Trends). Мгновенные тренды дают пользователю возможность отслеживать
изменение тега переменной в окне тренда без подготовки заранее тренд-тега. В отличие от обычных
тренд-тегов мгновенный тренд тегов переменных начинается в момент отображения окна и
заканчивается, когда окно закрывается, при этом в период разработки мгновенный тренд не требует
конфигурирования! Мгновенный тренд позволяет выбирать любой переменный тег. Для его
отображения в процессе выполнения проекта следует нажать на кнопку Добавить кривые. После
отображения окна настройки необходимо выбрать Тип: Переменные теги, нажать на кнопку
Поиск, а затем на кнопки Добавить и ОК. См. рис. 8.13. Размер выборки и длительность
отображения тренда можно использовать по умолчанию или настраивать (длительность – не более
8 дней). В отличие от тренд-тегов для хранения данных система использует не файлы, а кэш.
После проверки различных режимов работы Анализатора процессов завершите работу проекта.
111

Рис. 8.13. Добавление нового графика для отображения мгновенного тренда


112

Глава 9. Дополнительные черты графики.


Изображения, джинны (genie) и всплывающие
страницы
Для завершения обсуждения графики системы Citect SCADA последовательно рассмотрим такие
расширенные средства графики, как импорт графических изображений, настройка цветов,
использование графических изображений в качестве фона страницы, создание пользовательских
джиннов (genie) и всплывающих страниц.

9.1. Графическая страница. Импорт графики, настройка


цветов и использование графических изображений в
качестве фона
Дополнительные черты Графического построителя Citect системы Citect SCADA позволяют
импортировать изображения с цифровых камер, программного обеспечения сторонних
производителей изображений и из других источников. В графических изображениях проекта можно
заменять одни цвета и оттенки другими (Переставить цвета), изменять яркость, насыщенность и
цветовой диапазон (Настроить цвета) и добавлять в палитру часто используемые нестандартные
оттенки (Редактировать предпочтительные цвета) для облегчения доступа к ним в пределах
проекта.
В любой графической странице можно использовать изображение из внешних источников путем
импорта разнообразных типов графических файлов, включая файлы с расширениями .bmp, .dxf,
.eps, .jpg, .pcx, .png, .tif, .wmf и др. Цвета в импортированном файле можно настроить,
а файл использовать в качестве фонового изображения графической страницы или в качестве
пиктограммы кнопки на панели инструментов.

Упражнение 9.1. Импорт графики и замена цвета


В среде приложения Citect Studio выберите проект Training9, перейдите в среду
Построителя графики Citect и, используя кнопку Новый на панели инструментов, создайте
новую графическую страницу Lighting с параметрами, указанными по умолчанию. Для созданной
страницы используйте белый фон. Воспользуйтесь командой Файл | Импорт… для импорта файла
FloorPlan.bmp, находящегося в рабочей папке и отображающего план производственного
предприятия, и нажмите кнопку Открыть. Воспользуйтесь командой Средства | Заменить цвета
для замены пурпурного на прозрачный цвет (рис. 9.1). Для этого в окне Замена цвета щелкните
левой кнопкой мыши по раскрывающемуся списку в поле Из, выберите пурпурный цвет. В поле До
в качестве «цвета» выберите перечеркнутый прямоугольник, что означает прозрачность. Нажмите
кнопку OK. Вместо пурпурного цвета будет виден белый цвет фона страницы.

Рис. 9.1. Замена пурпурного цвета на прозрачный в файле, импортированном в графическую страницу
Lighting

Сохраните созданную графическую страницу, выполните компиляцию проекта и запустите проект.


Посмотрите созданную графическую страницу и завершите работу проекта.
113

В графике используется около 16.7 млн. разных оттенков, и настройка диапазона цветов по одному
является слишком трудоемкой. В этом случае удобно использовать операцию Настроить цвета,
которая дает пользователю возможность выбирать полный диапазон настраиваемых оттенков, а
также изменять яркость и насыщенность избранных оттенков и всего изображения.

Упражнение 9.2. Осветление синих оттенков и замена зеленых


оттенков
На графической странице Lighting проекта Training9 выберите изображение FloorPlan. Для
настройки цветов воспользуйтесь командой Средства | Настроить цвета и сконфигурируйте
настройку цветов в соответствии с рис. 9.2. Нажмите кнопку OK и синяя административная часть
на рисунке станет бледнее. Аналогичным образом, для настройки цветов еще раз воспользуйтесь
командой Средства | Настроить цвета и сконфигурируйте настройку цветов в соответствии с
рис. 9.3. Нажмите кнопку OK и темно-зеленая часть на рисунке (склады) станет коричневатой.

Рис. 9.2. Настройка цветов изображения FloorPlan графической страницы Lighting проекта Training9

При использовании изображения в качестве статического фона бывает полезно его заблокировать,
чтобы его невозможно было выбрать в среде приложения Построитель графики Citect. Это
позволит работать с другими графическими объектами поверх фонового изображения, не боясь
случайно выбрать само фоновое изображение.

Упражнение 9.3. Изображение как фон графической страницы.


Проект Training10
На графической странице Lighting проекта Training9 выберите изображение FloorPlan. Для
фиксации изображения в качестве фона графической страницы воспользуйтесь командой
Правка | Фиксировать объект.
114

Рис. 9.3. Настройка цветов изображения FloorPlan графической страницы Lighting проекта Training9

За ме ч а н ие
Для отмены фиксации изображения в качестве фона следует выполнить команду
Правка | Не учитывать фиксацию.

Сохраните созданную графическую страницу, выполните компиляцию проекта и запустите проект.


Посмотрите созданную графическую страницу и завершите работу проекта.
Со в ет
Сохраните проект Training9 на магнитном диске. Для этого в среде приложения Citect Studio
достаточно выбрать в окне Проекты этот проект и выполнить команду Резервное копирование. В
появившемся окне Создание резервной копии проекта следует указать требуемые параметры и
нажать кнопку OK. Для этого достаточно выполнить команду Восстановить…. В появившемся окне
Восстановить проект следует указать требуемые параметры (новый проект, имя проекта Training10)
и нажать кнопку OK. В дальнейшем работайте с проектом Training10.

9.2. Джинны (Genies)


Обычно каждый графический объект графической страницы конфигурируется отдельно. Джинны
(Genies) позволяют скомпоновать несколько связанных между собой объектов в группу и сохранять
группу в библиотеке джиннов, подобной библиотеке символов. После этого джинн можно
использовать как единый объект (вставлять, перемещать, изменять размер и т. д.), а элементы
джинна конфигурируются в совокупности друг с другом.
Например, можно определить джинн для устройства пуска/останова с кнопками пуска и останова и
индикаторной лампочкой и применять один и тот же джинн для разнообразного
оборудования — насосов, конвейеров и т. п. При использовании джиннов нужно лишь указать
информацию, уникальную для данного конкретного насоса или конвейера (тег переменной).
Включаемые проекты, входящие в комплект базовой установки системы Citect SCADA, имеют
несколько библиотек с джиннами, которые предназначены для использования в проектах. Обычно
джинны определяются без конкретных тегов переменных, что позволяет применять их как в данном
проекте, так и в других проектах. При вставке джинна на графическую страницу появится
диалоговое окно с запросом на ввод одного или нескольких тегов переменных и комментариев.
За ме ч а н ие
Пример использования джинна из библиотеки включаемых проектов для изменения значения
температуры печи был рассмотрен ранее в упр. 4.9 (проект Training3).
115

В графических страницах можно не только использовать системные библиотечные графические


объекты Джинны, но и создавать и использовать собственные пользовательские джинны.

Упражнение 9.4. Создание пользовательского джинна для


управления задвижкой подачи газа
В среде приложения Построитель графики Citect при выбранном проекте Training10 нажмите
кнопку Новый на панели инструментов и в появившемся диалоговом окне Новый для создания
пользовательского Джинна нажмите кнопку Джинн. В появившуюся страницу поместите набор
символов (Набор образов) и сконфигурируйте его в соответствии с рис. 9.4 — 9.6. На эту же
страницу поместите справа от набора символов графический объект Число и сконфигурируйте его
в соответствии с рис. 9.7. Cправа от графического объекта Число поместите графический объект
Текст и сконфигурируйте его в соответствии с рис. 9.8 — 9.9. Над размещенными графическими
объектами поместите графический объект Текст и сконфигурируйте его в соответствии с рис. 9.10.
Сгруппируйте все графические объекты с помощью графического объекта Прямоугольник
(рис. 9.11) и выполните команду Порядок | Группировать объекты.
Важно: левый верхний угол сгруппированного объекта совместите с точкой привязки,
расположенной в центре графической страницы.

Рис. 9.4. Свойство Представление (Общие) набора символов

Командой Файл | Сохранить как…сохраните графический объект Джинн. Для этого в окне
Сохранить как нажмите кнопку Новый. В появившемся окне Новая библиотека в поле
Название: укажите Training, нажмите кнопку OK, а в поле Джинн: окна Сохранить как укажите
ValveControl и нажмите кнопку OK (рис. 9.12) Разместите графический объект
Training.ValveContol на графической странице Oven. В окне его свойств поместите Gas_Valve и
нажмите кнопку OK (рис. 9.13). Сохраните графическую страницу Oven, выполните компиляцию,
запустите проект, посмотрите работу графического объекта Genie.ValveContol и завершите работу
проекта.
116

Рис. 9.5. Свойство Ввод (/\) набора символов

В созданный джинн можно в любое время внести изменения. Если джинн был вставлен на страницы
проекта, то перед изменением джинна убедитесь, что все страницы проекта сохранены. После
внесения изменений сохраните джинн и выполните команду Средства | Обновить страницы,
чтобы обновить все вставленные экземпляры джиннов в проекте.
Как следует из выполненного упражнения, в любом месте джинна текст или имена тегов
переменных могут быть заменены именем подстановки, для которого используется синтаксис
%Имя% (в нашем примере %Valve%). При вставке джинна на графическую страницу
пользователю предлагается заменить в данном экземпляре джинна имя подстановки на имя тега
переменной или текст (в рассмотренном упражнении в качестве такового использован тег
переменной Gas_Valve).

Рис. 9.6. Свойство Доступ (Общие) набора символов


За м еч а н ие
В рассмотренном упражнении имя подстановки %Valve% используется 7 раз, но вопрос о подстановке
выдается пользователю один раз. При каждой вставке экземпляра джинна на графическую страницу все
экземпляры %Valve% в этой копии будут заменяться указанным именем (в упражнении таким именем
являлось имя тега Gas_Valve).
117

Упражнение 9.5. Просмотр свойств джинна на графической


странице. Проект Training11
Поместите курсор мыши на любой элемент джинна, размещенного в рассмотренном ранее упр. 9.5,
затем нажмите и удерживайте клавишу Ctrl и выполните двойной щелчок левой кнопкой мыши.
Для выбранного фрагмента джинна откроется окно свойств в режиме только для чтения. Таким
образом просмотрите конфигурацию джинна и имена тегов переменных.

Рис. 9.7. Свойство Представление (Отображаемое Значение) графического объекта Число

Со в ет
Сохраните проект Training10 на диске. Для этого в среде приложения Citect Studio достаточно выбрать
в окне Проекты этот проект и выполнить команду Резервное копирование. В появившемся окне
Создание резервной копии проекта следует нажать кнопку OK. Восстановите проект с новым
именем. Для этого достаточно выполнить команду Восстановить…. В появившемся окне
Восстановить проект следует указать требуемые параметры (новый проект, имя проекта Training11)
и нажать кнопку OK. В дальнейшем работайте с проектом Training11.

Рис. 9.8. Свойство Представление (Отображаемое значение) графического объекта Текст

9.3. Всплывающие окна


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

Всплывающие страницы часто используют для отображения всплывающих органов управления


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

Упражнение 9.6. Создание всплывающего окна (Popup Window).


Проект Training12
В среде приложения Построитель графики Citect при выбранном проекте Training11 нажатием
кнопки Новый на панели инструментов создайте новую графическую страницу. В появившемся
окне Новый нажмите кнопку Страница и сконфигурируйте страницу в соответствии с рис. 9.14 (в
качестве шаблона выберите пустой шаблон blank) и нажмите кнопку OK. Выведите окно
Свойства страницы… контекстного меню созданной графической страницы и задайте ее свойства
в соответствии с рис. 9.15 (укажите заголовок, поменяйте цвет на белый, измените зону просмотра
– границы окна) и нажмите кнопку OK. Разместите в окне графический объект Genie: ValveControl
из библиотеки training, в появившемся окне ValveControl укажите имя тега Gas_Valve, нажмите
кнопку OK и командой Файл | Сохранить как… сохраните всплывающую страницу под именем
!MyPopUp. В начале имени поставлен восклицательный знак для того, чтобы эта страница входила
в проект, но не появлялась бы в списке страниц меню наряду со страницами NewPage, Oven,
Lighting.

Рис. 9.9. Свойство Заливка (Цвет) графического объекта Текст

Откройте графическую страницу Oven, разместите на ней графический элемент Кнопка, задайте
его свойства в соответствии с рис. 9.16. При нажатии на кнопку мыши графический объект вызывает
выполнение функции:
AssWin(“!MyPopup”, 200, 200, 2+4+64+128)
Пояснения параметров: AssWin – имя библиотечной функции Cicode, которая приводит к
отображению новое окно, !MyPopUp — имя созданной всплывающей страницы; 200, 200 —
горизонтальная и вертикальная координаты левого верхнего угла всплывающего окна; числа задают
режим отображения окна и объяснение их приведено в п. 23.3.5. Сохраните графическую страницу,
выполните компиляцию, запустите проект и протестируйте работу кнопки Управление задвижкой
на странице Oven. Возможный вид экрана показан на рис. 9.17.
Завершите работу проекта. Сохраните проект под именем Training11, затем восстановите проект
под именем Training12 и в дальнейшем работайте с этим проектом.
119

Рис. 9.10. Свойство Представление (Общие) графического объекта Текст

Рис. 9.11. Группировка графических объектов перед сохранением джинна

Рис. 9.12. Cохранение пользовательского джинна


120

Рис. 9.13. Окно диалога при вставке пользовательского джинна

Рис. 9.14. Выбор шаблона для всплывающей страницы

Рис. 9.15. Свойства всплывающей страницы

Рис. 9.16. Свойства кнопки - графического элемента Управление задвижкой на странице Oven
121

Рис. 9.17. Вид страницы Oven после нажатия на кнопку Управление задвижкой
122

Глава 10. Устройства. Конфигурирование


устройства для регистрации действий
оператора
Устройство представляет собой средство для передачи данных высокого уровня (отчетов, журналов
регистрации команд и оповещений – сигналов тревог) между системой Citect SCADA и такими
элементами, как принтер, базы данных, файлы на магнитном диске различных форматов. С
помощью устройств данные можно не только записывать, но и читать из файлов или баз данных.
Каждое устройство в системе Citect SCADA имеет отдельную запись, которая определяет формат
передаваемых или принимаемых данных, тип и имя устройства. Для определения устройства в среде
приложения Citect Studio на странице Проекты выберите проект и сделайте его активным,
выберите страницу Настройка и перейдите на вкладку Устройства.

Упражнение 10.1. Конфигурирование и использование устройства


для регистрации команд оператора. Проект Training13
В проекте Training12, выполните команду Система | Устройства, сконфигурируйте новое
устройство для регистрации команд оператора в соответствии с рис. 10.1 и нажмите кнопку
Сохранить. В поле Формат числа 15, 10 и 64 задают количество позиций на отображение,
соответственно, даты, времени и текста сообщения о выполненной оператором команде. Синтаксис
допустимых форматов можно посмотреть в справочной системе. В поле Имя файла переменная
[DATA]: задает путь к файлу для регистрации команд оператора.
Для ознакомления со значением переменной [DATA] следует использовать приложение,
запускаемое командой Проекты | Редактор настройки приложения Citect Studio (появляется
ниспадающая строка при щелчке мышкой по кнопке, расположенной рядом с Мастером
установки) или командой Средства | Редактор конфигурирования проектов в Графическом
построителе Citect. Запущенное приложение позволяет просматривать и изменять файл citect.ini.
Найдите секцию [CTEDIT] этого файла и посмотрите значение переменной [DATA] (значение по
умолчанию для этой переменной: С:\ProgramData \Schneider Electric\ Citect SCADA 2016\ Data\).
Значение -1 в поле Число файлов означает, что запись будет проводиться в один и тот же файл.
Перейдите в среду приложения Построитель графики Citect, откройте графическую страницу
Oven, модифицируйте свойства графического объекта Набор образов (задвижка на трубопроводе)
в соответствии с рис. 10.2 и нажмите кнопку OK. На графической странице Oven модифицируйте
свойства графического объекта Текст (Burner ON/OFF) в соответствии с рис. 10.3 и нажмите кнопку
OK. На графической странице Oven модифицируйте свойства графического объекта Кнопка с
надписью Управление задвижкой в соответствии с рис. 10.4 и нажмите кнопку OK. Сохраните
графическую страницу Oven, выполните компиляцию и запустите проект.
Перейдите на страницу Oven, выполните изменение состояния клапана, горелки и с помощью
кнопки создайте всплывающее окно. Откройте файл С:\ProgramData
\Schneider Electric\ Citect SCADA 2016\ Data\ My_Com_Log.txt и проанализируйте его содержимое.
Завершите работу с проектом.
Архивируйте проект под именем Training12, восстановите проект под новым именем Training13 и
в дальнейшем работайте с ним.
123

Рис. 10.1. Конфигурирование устройства для регистрации действий оператора

Рис. 10.2. Модификация свойств графического объекта Набор образов страницы Oven

Рис. 10.3. Модификация свойств графического объекта Текст страницы Oven

Рис. 10.4. Модификация свойств графического объекта Кнопка страницы Oven


124

Глава 11. События. Определение и обработка


событий
События могут запускать некоторое действие, например, команду или последовательность команд.
По событию можно извещать оператора, когда некоторый технологический процесс завершился или
выполнять некоторую последовательность команд, когда, например, технологический процесс
достиг некоторой точки. Система Citect SCADA позволяет задать время и логическое условие:
- указать время (день недели, день месяца или день года) или задать период времени (если период
меньше суток),
- задать условие в виде триггера или, иначе, переключателя (проверка условия проводится каждую
секунду),
- объединить указанные выше причины.
Действие будет выполняться в следующих случаях:
- когда наступил указанный момент времени или прошел указанный период и, кроме того, указанное
условие (триггер) является истинным или поле триггера является пустым,
- когда условие, заданное триггером, является истинным, и при этом поля времени и периода
пустые, при этом для повторного действия триггер должен переключиться (то есть условие должно
стать сначала ложным, а затем вновь истинным).
В качестве действия обычно записывается несколько команд на языке Cicode (для этого выделено
64 символа; если фрагмент программы длиннее, то его следует оформить в виде пользовательской
функции и указать ее имя для вызова).
События определяются в проекте и сохраняются в базе данных. Для исполнения команд, связанных
с событием, оно должно быть активировано (разрешено) с помощью Мастера конфигурирования
компьютера (индивидуальная настройка, окно Настройка событий). Можно обрабатывать
события на любом компьютере системы Citect SCADA, но только каждое событие на одном
компьютере.
События не обязательно должны иметь уникальные имена. Так, если система Citect SCADA
работает на нескольких компьютерах в сети и требуется запустить событие на всех компьютерах,
то нужно использовать Global в качестве имени события.
Для определения события в среде приложения Citect Studio на странице Проекты выберите проект,
активируйте его, выберите страницу Настройка и вкладку События.
Для активизации (разрешения) события следует любым способом запустить Мастер
конфигурирования компьютера (индивидуальная настройка) и в окне Настройка событий
включить обработку нужных событий.

Упражнение 11.1. Определение и разрешение событий. Проект


Training14
Перейдите в среду приложения Citect Studio демонстрационного проекта Training13, выполните
команду Настройка | События и добавьте события в соответствии с рис. 11.1.
Событие Global с периодом в 5с выполняет инвертирование тега Gas_Valve.
Строка номер 2 задает событие, вызывающее функцию Rand с периодом 15с для получения
равномерно-распределенного случайного числа (диапазон от 0 до 129) для присваивания значения
тегу Oven_Temp.
Строка номер 3 задает событие, которое срабатывает по триггеру – условию (Oven_Temp > 110) и
сбрасывает значение тега температуры в 0.
Имя Темр в таблице, таким образом, можно рассматривать как название для группы из двух
событий.
Выполните команду Сохранить.
125

Рис. 11.1. Добавление и конфигурирование событий

За ме ч а н ие
Используйте систему помощи для получения сведений об использованных функциях Cicode.

Запустите Мастер конфигурирования компьютера (по команде Проекты | Мастер установки) в


режиме Индивидуальная настройка и настройте окно Настройка событий в соответствии с
рис. 11.2. Заметьте, что система позволяет по отдельности разрешить или запретить обработку
определенных в Citect Studio событий, при этом событие Global в случае, если разрешены события
на компьютере, не требует разрешения.
Запустите проект. Перейдите в графическое окно Oven и пронаблюдайте за изменением состояния
клапана и значений температуры. При анализе значений, отображаемых в строку вывода Prompt и
рисуемых на графиках трендов, следует иметь в виду, что условие (Oven_Temp > 110) вызывает
появление в системе события только в том случае, если при предыдущей проверке (а проверки
условий, если не указан период, проводятся раз в секунду) значение тега температуры не превышало
значения 110. Кроме того, нужно иметь в виду, что каждая страница имеет свой период
сканирования, заданный в свойствах страницы (по умолчанию – 250мс), и вывод значений тегов и
графиков может «не успевать» за изменениями тегов, которые происходят в системе и заданы в
разных компонентах проекта.
Завершите работу проекта. Архивируйте проект под именем Training13, восстановите проект под
именем Training14 и в дальнейшем работайте с ним.

Рис. 11.2. Разрешение событий


126

Глава 12. Оповещения: категории, группы и


звуковое оформление
Оповещения (сигналы тревог) можно включать в определенные категории. Для каждой категории
можно задать формат отображения (шрифт и цвет), детали регистрации (принтер или файл),
некоторое действие при появлении оповещения, отнесенного к данной категории (например,
звуковой сигнал), приоритет, порядок отображения и др.
Можно сконфигурировать до 16376 категорий (категория 0 выбирается по умолчанию; категория
254 зарезервирована для итоговой информации по оповещениям, создаваемой пользователем;
категория 255 зарезервирована для аппаратных оповещений). Если определить оповещение и задать
для него категорию, то тем самым будет задан характер поведения при обработке сигнала тревоги.
Чтобы определить, куда будет направлена информация о сигнале тревоги, задайте устройство.
Можно регистрировать оповещения более, чем одним устройством, и выбирать для регистрации
группы оповещений. Каждая категория имеет связанный с ней приоритет, который используется
для определения порядка отображения оповещений, предоставляя удобные для оператора средства
фильтрации.
Со в ет
Разумно включать оповещения разных типов в различные категории, чтобы назначить каждому типу
собственный формат отображения и способ их обработки.

Для определения категории в среде приложения Citect Studio на странице Проекты выберите
проект, сделайте его активным, выберите на странице Модель системы окно Алармы и перейдите
в колонку таблицы оповещений, имеющее имя Категория.

Упражнение 12.1. Категории сигналов тревог. Проект Training15


Перейдите в среду Citect Studio демонстрационного проекта Training14, выполните команду
Модель системы | Алармы | Дискретные алармы и сконфигурируйте категорию 1 оповещений (в
таблице в соответствии с тем, как показано на приведенном ранее рис. 5.4 в колонке Категория,
укажите 1). После внесения изменения нажмите кнопку Сохранить. Далее выполните команду
Модель системы | Алармы | Аналоговые алармы и сконфигурируйте категорию 2 оповещений (в
таблице в соответствии с тем, как показано на приведенном ранее рис. 5.3 в колонке Категория,
укажите 2). После внесения изменения нажмите кнопку Сохранить. Выполните команду
Настройка | Устройства и добавьте еще одно устройство — для архивного файла журнала
оповещений (рис. 12.1), нажмите после заполнения строки кнопку Сохранить. Здесь
{Name,16} — имя оповещения и ширина поля вывода, {Desc,32} — описание оповещения и ширина
поля вывода, {OnTime,11} — время активации оповещения и ширина поля вывода,
{DeltaTime,11} —разница времени в секундах между OffTime и OnTime, {LogState,11} — текущее
состояние сигнала тревоги и ширина поля вывода. Значение -1 в поле Число файлов означает
запись в один файл. Для создания категорий оповещений выполните команду
Настройка | Категории алармов и добавьте две категории оповещений в соответствии с рис. 12.2,
в завершение нажав кнопку Сохранить.

Рис. 12.1. Конфигурирование устройства для создания архивного файла журнала оповещений (тревог)

Выполните компиляцию и запустите проект. Откройте страницу Oven и убедитесь, что с помощью
обработки событий создаются аналоговые и дискретные тревоги (должны слышаться акустические
сигналы). Посмотрите журнал тревог в файле С:\ProgramData\Schneider Electric\Citect SCADA 2016\
Data\My_Alarm_Log.txt или в файле [DATA]:My_Alarm_Log.txt, если каталог [DATA] имеет
127

значение, отличное от значения по умолчанию. Проверьте формат записи строк на соответствие


тому формату, который указан в таблице Настройка|Устройства.

Рис. 12.2. Свойства категорий оповещений (сигналов тревог), длинная строка таблицы разбита на две части

Познакомьтесь с возможностями фильтрации оповещений по разнообразным признакам. Для этого


откройте окно фильтрации оповещений. Сделать это можно одним из двух способов: с помощью
кнопки Фильтрация закладки меню Действие (рис. 12.3a) или выведя сводку оповещений окна
MySummary. Закладка меню Действие появляется на любой странице, связанной с выводом
оповещений. Для вывода сводки оповещений необходимо выбрать строку Сводка алармов меню,
появление которого пояснял показанный ранее рис. 5.10 и выбрать строку Установить фильтр
дополнительного меню, расположенного в левой части страницы со сводкой оповещений (рис.
12.3b).
За ме ч а н ие
Напомним, что имя файла страницы и заголовок страницы в общем случае не совпадают. В свойствах
страницы с именем Summary для вывода сводки оповещений (ее создание и использование было
пояснено на рисунках 5.9 и 5.10) указан заголовок MySummary.

Рис. 12.3a. Иконка Фильтрация в системе меню


128

Рис. 12.3b. Дополнительное меню для работы с фильтрами

Рис. 12.4. Окно фильтрации информации об оповещениях, относящихся к категории 1

Фильтрация оповещений предоставляет очень широкие возможности по отображению оповещений,


зафиксированных работающей системой, по разным признакам. На рис. 12.5 в качестве примера
показан фильтр, позволяющий вывести на экран оповещения, удовлетворяющие условию:
“значение тега Oven_Temp < 60”. Для формирования условия требуется добавить в текущий набор
правил два правила, показанные на рис. 12.5 (при добавлении используйте логическую связку
AND). Далее необходимо нажать на кнопки Выбрать все и ОК. Проанализируйте выведенный
список.

Рис. 12.5. Пример построения фильтра оповещений


129

Поэкспериментируйте с указанием различных правил фильтрации оповещений для различных


страниц. Завершите работу проекта. Архивируйте проект под именем Training14, восстановите
проект под именем Training15 и в дальнейшем работайте с ним.

Упражнение 12.2. Звуковое оформление сигналов тревог. Проект


Training16
Перейдите в среду приложения Citect Studio демонстрационного проекта Training15, выполните
команду Настройка | Категории алармов и назначьте приоритеты двум используемым категориям
оповещений: для дискретных оповещений — приоритет 2, для аналоговых оповещений
— приоритет 3, приоритет задается в поле Приоритет (треья колонка), см. приведенный ранее
рис. 12.2. Проверьте в папке [User] компьютера наличие файлов AdvAlarm.wav, DigAlarm.wav и
AnaAlarm.wav. По умолчанию папка [User] задает путь:
c:\ProgramData\Schneider Electric\Citect SCADA 2016\User\.
Запустите приложение Редактор настройки (рис.12.6). К разделу [ALARM] добавьте три
параметра — Sound1, Sound2 и Sound3, как показано на рис. 12.7. В открытом окне Редактора
кнопка Создать используется для добавления комментария, а кнопка Добавить – для включения
новой строки параметров в файл Citect.ini. Номера параметров Sound<n> соответствуют
приоритетам групп оповещений и их значением является путь к файлу типа wav, например:
Sound3 = [User]:AnaAlarm.wav
За ме ч а н ие
Параметры Sound<n> можно использовать только в проектах, основанных на шаблонах в стиле
Tab_Style или CSV_Include.

Рис. 12.6. Запуск Редактора настройки для редактирования файла citect.ini

Рис. 12.7. Модификация раздела [ALARM] файла citect.ini


130

Выполните компиляцию, запустите проект, прослушайте звуки. Звучанием при возникновении


оповещений можно управлять: кнопка, расположенная в левом нижнем углу окон, созданных в
стиле Tab_Style_1, позволяет отключать и включать звуки Sound<n>, а расположенная рядом кнопка
со стрелкой позволяет также отключать звук на указанный в возникающем меню промежуток
времени (рис. 12.8).

Рис. 12.8. Управление звучанием во время работы системы

Попробуйте различные варианты отключения звука.


Завершите работу проекта. Сохраните проект Training15, восстановите проект под именем
Training16 и в дальнейшем работайте с ним.
131

Глава 13. Система навигации


Средства навигации (вид и функции системы меню, переходы между страницами и тому подобные
действия) в проекте системы Citect SCADA определяются используемыми шаблонами страниц.
Стиль шаблонов (т.е. общие свойства шаблонов) задается при создании проекта, стиль каждой
страницы может быть изменен в свойствах страницы. В проектах настоящего учебного пособия
используется один из подготовленных стилей – Tab_Style_1, входящий во включенный проект
Tab_Style_Include (см. упражнение 2.1). В систему навигации этого стиля входят:
• система меню с настраиваемыми закладками (или вкладками - Tabs) в верхней центральной
и правой частях страниц,
• фиксированный набор иконок в верхней левой части страниц,
• фиксированный набор иконок и информационное поле, связанное с оповещениями
(сигналами тревог), в нижней части страниц.
Первый и второй указанные пункты будут рассмотрены ниже, использование компонентов системы
навигации, указанных в третьем пункте, было рассмотрено в главах 5 и 12.
С помощью команд меню пользователь может переходить на заданную страницу или вызывать
функцию, написанную на языке Cicode. Основным средством конфигурирования меню является
страница Навигация | Конфигурация меню в приложении Citect Studio, обеспечивающая
конфигурирование меню, подменю и команд меню.
Система меню может быть определена для той или иной страницы и имеет четыре уровня. Поле
Страница является либо пустым, либо содержит конкретное имя страницы внутри проекта. Пустое
поле показывает, что меню появляется на всех графических страницах проекта, а конкретное имя
страницы указывает, что меню появляется только на данной странице. Первый уровень определяет
имена закладок. Второй уровень определяет кнопки, которым можно сопоставить иконки,
размещаемые на открытой закладке первого уровня. Третий уровень задает перечень строк
ниспадающего меню, появляющегося рядом с кнопкой второго уровня. Четвертый уровень задает
подменю для строк третьего уровня.

Упражнение 13.1. Конфигурирование меню. Проект Training17


Для изменения системы меню проекта Training16 сделайте его активным и перейдите на страницу
Навигация | Конфигурация меню приложения Citect Studio. В отображаемой таблице заполнено
свыше 70 строк, которые определяют поведение проекта при работе с системой меню с
настраиваемыми закладками.
Запустите проект Training16 и, переключаясь между окнами работающей системы и приложения
Citect Studio, обратите внимание на работу SCADA-приложения с точки зрения возможностей
системы меню. Проанализируйте, как содержимое ячеек строк таблицы связано с действиями,
которые можно выполнять с системой меню.
За м еч а н ие
В таблице многие ячейки начинаются с символа «@», который используется для организации работы с
многоязычными проектами: при выводе на экран происходит замена текста, указанного в скобках после
символа «@», на текст из файла Название_языка.dbf (в нашем случае Russian.dbf), где содержатся пары
для замены и который находится в папке проекта Tab_Style_Include.

При анализе обратите, например, внимание на следующие особенности.


1. Строки таблицы, содержащие в колонке Уровень 1 текст @(Pages), @(Alarms), @(Trends),
@(Tags), имеют пустые ячейки в колонке Команда меню и задают верхний уровень
системы меню с именами вкладок Страницы, Алармы, Тренды, Теги, выводимых во
время выполнения проекта.
2. Строки, имеющие в колонке Страница пустые ячейки, задают позиции меню, которые
появляются на всех страницах в процессе работы проекта.
3. Строки, имеющие в колонке Уровень 1 текст @(Action), то есть Действие на русском
языке, имеют обязательно в колонке Страница название какой-то страницы, например,
Alarm.
4. Строки таблицы, содержащие непустые ячейки в колонке Уровень 2, обязательно имеют
непустую ячейку в колонке Уровень 1, задают одну иконку и некоторое действие на
132

закладке, соответствующей закладке Уровень 1. Действие указывается в колонке Команда


меню, а иконка (см. колонку Символ) берется из библиотеки символов <имя
библиотеки>.<имя символа>. Если название иконки отсутствует, используется иконка по
умолчанию <icons_32x32>.<default>. Найдите этот символ в библиотеке символов, открыв
любую графическую страницу и воспользовавшись командой Вставить символ на панели
объектов.
5. Строки таблицы, содержащие непустые ячейки в колонке Уровень 3, обязательно имеют
непустые ячейки в колонках Уровень 1 и Уровень 2 и задают некоторое действие,
указанное в колонке Команда меню. В работающем проекте третий уровень меню
отражается как дополнительная кнопка со стрелкой, расположенная справа от иконки,
соответствующей второму уровню меню. Для примера см. последнюю строку таблицы,
начинающуюся с ячеек @(Action), @(Save view), @(Reset view to default) и позволяющую
выполнить команду Действие | Сохранить представление | Сбросить вид к значениям
по умолчанию во время выполнения проекта. Вид элементов третьего уровня системы
меню при работе системы можно увидеть также на ранее приведенном рис. 12.3a.
Находясь на странице Навигация | Конфигурация меню приложения Citect Studio, добавьте три
новые строки в конце таблицы конфигурирования меню, как показано на рис. 13.1. Тем самым будет
создана новая закладка первого уровня Вспомогательные с двумя иконками второго уровня,
которые позволяют вызвать две программы MS Windows – редактор текста Wordpad и браузер
Интернета. В ячейки Команда меню включите вызов функции Cicode Exec, которая позволяет
запустить внешнюю по отношению к Citect SCADA программу с параметром путь к исполняемому
файлу, при этом укажите путь, соответствующий расположению нужных программ на рабочем
компьютере. В колонке Символ указаны подходящие символы из библиотеки icons_32x32.

Рис. 13.1. Конфигурирование новых элементов системы меню

Так как проект Training16 выполняется, то для того, чтобы вступили в силу сделанные изменения,
достаточно сохранить таблицу конфигурирования на странице Навигация | Конфигурация меню
и выполнить компиляцию проекта, использовав «горячие клавиши» Alt-F10. После этого нужно
перезапустить клиентское приложение; сделать это можно после запуска Менеджера
исполнительной системы Citect SCADA из программной группы меню Пуск MS Windows так, как
показано на рис. 13.2.

Рис. 13.2. Перезапуск клиентского приложения без остановки работы серверов

Протестируйте выполненные изменения. Вид системы меню с новыми элементами при исполнении
проекта Training16 показан на рис. 13.3
133

Рис. 13.3. Новые элементы системы меню первого и второго уровня при выполнении проекта

Завершите работу проекта. Архивируйте проект под именем Training16, восстановите проект под
именем Training17 и в дальнейшем работайте с ним.

Фиксированный набор иконок (рис. 13.4) расположен в верхней левой части страниц, созданных на
основе шаблонов в стиле Tab_Style_1. Поясним назначение иконок (слева направо, сверху вниз).

Рис. 13.4. Фиксированный набор иконок стиля шаблонов Tab_Style_1

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


вправо в круге переходит вперед по списку открытых страниц, а рядом находящаяся кнопка
расширения открывает список недавно открытых страниц.
Следующие три иконки со стрелками имеют форму квадрата. Стрелка влево-вверх возвращает на
родительскую страницу (если она определена), стрелка влево позволяет перейти на так
называемую предыдущую страницу (если она определена), стрелка вправо – на так называемую
следующую страницу (если она также определена).
Нажатие на иконку с изображением домика приводит к переходу на домашнюю страницу (она
также должна быть определена), последняя иконка в этом ряду позволяет вывести окно для
выбора нужной страницы из списка всех страниц проекта, не имеющих в начале имени файла
восклицательного знака «!».
Второй ряд начинается с иконки печати открытой страницы. Следующая иконка позволяет
зарегистрировать пользователя, а находящаяся рядом кнопка расширения открывает список
дополнительных действий по работе с учетными записями пользователей. Последняя в этом ряду
прямоугольная область вывода отображает имя активного в настоящий момент пользователя.

Упражнение 13.2. Использование набора иконок в стиле


Tab_Style_1. Проект Training18
В начале выполнения упражнения создайте «свою» домашнюю страницу, которую будем
использовать в этом и следующем упражнениях. Для этого, открыв Построитель графики Citect,
создайте новую страницу, используя шаблон Normal, по образцу рис. 3.5. Импортируйте два
графических файла Политех- фото.bmp и Политех-лого.bmp и создайте два текстовых объекта,
которые имеют на вкладках Представление | Отображаемое значение указанный текст для вывода
(без знака «=»). Сохраните страницу с именем MyHome.
134

Рис. 13.5. Возможный вид новой страницы MyHome

Откройте страницу NewPage и откройте окно с ее свойствами. На вкладке Общее заполните поля
Пред.страница и След.страница так, как показано на рис. 13.6. Тем самым может быть определена
круговая последовательность из трех пользовательских страниц, в которой для каждой страницы
имеется предыдущая и следующая страницы:
NewPage – Oven – Lighting – NewPage и т.д.
135

Рис. 13.6. Заполнение полей Предыдущая страница и Следующая страница для страницы NewPage

Договоримся, что каждая из этих страниц будет иметь родительскую, в качестве которой выберем
страницу MyHome – одну на всех. Для ее определения для страницы NewPage перейдите на вкладку
Окружение в свойствах страницы, нажмите на кнопку Добавить и добавьте свойство,
определяющее родительскую страницу (ParentPage), и значение MyHome. Для этого заполните два
поля появившегося окна так, как показано на рис. 13.7.

Рис. 13.7. Формирование свойства Родительская страница для страницы NewPage

Выполните аналогичные действия по образцу рис. 13.6 и рис. 13.7 для страниц Oven и Lighting. Тем
самым для всех трех пользовательских страниц NewPage, Oven и Lighting будут определены
предыдущая, следующая и родительская страницы.
Для того, чтобы определить в проекте Training17 страницу MyHome как домашнюю, необходимо
внести изменения в параметры, находящиеся в файле Citect.ini. Для этого запустите Редактор
136

настройки (выполните команду Проекты | Редактор настройки, см. приведенный ранее рис.
12.6), найдите группу параметров [Page] и для параметра HomePage задайте значение имени
страницы MyHome (рис. 13.8).

Рис. 13.8. Изменение значения параметра HomePage в файле Citect.ini

Сохраните изменения в файле Citect.ini и закройте Редактор настройки. Сохраните открытые


страницы NewPage, Oven и Lighting. Откомпилируйте и запустите проект Training17. Обратите
внимание, что если открывается страница NewPage, Oven или Lighting, то иконки, показанные на
рис. 13.4 в верхнем ряду и бывшие неактивными, становятся яркими и, следовательно, активными.
При нажатии на них происходит смена страниц проекта. Проверьте действие каждой из кнопок
верхнего ряда.
Первая иконка второго ряда задает печать открытой страницы. Используются установленные на
компьютере принтеры, в частности, может существовать возможность печати в pdf-файл.
Воспользуйтесь одним из установленных принтеров для вывода на печать страницы с трендом или
оповещениями.
137

В упр. 3.7 была продемонстрирована возможность конфигурирования в приложении Citect Studio


пользователей, обладающих разными правами при исполнении проекта. Но такая возможность
имеется также и в процессе исполнения – создавать новые учебные записи пользователей может
привилегированный пользователь.
Нажав на вторую иконку второго ряда, зарегистрируйтесь как MAIN_USER с паролем USER (см.
показанный ранее рис. 3.37) и нажмите на кнопку расширения рядом с иконкой для регистрации
(рис. 13.9).

Рис. 13.9. Ниспадающее меню, позволяющее создавать и редактировать учетные записи пользователей

Выберите строку Создать пользователя и заполните поля в появившемся окне так, как показано
на рис. 13.10. В качестве пароля используйте пароль USER. Нажмите OK.
За м еч а н ие
В поле Тип на рис. 13.10 можно указать роль пользователя (создавать и редактировать роли можно
только в приложении Citect Studio). В нашем случае такая возможность отсутствует, так как в проекте
Training17 (как и в предшествующих) определена единственная роль Administrators.

Рис. 13.10. Создание нового пользователя во время исполнения проекта

Перейдите в приложение Citect Studio и выполните команду Безопасность | Пользователи.


Проверьте появление новой строки в таблице пользователей – учетной записи OPERATOR1
(см.рис. 13.11).

Рис. 13.11. Таблица Пользователи, измененная в процессе исполнения проекта

Используя иконку регистрации пользователей и кнопку расширения, создайте еще одного


пользователя и проверьте возможность регистрации разных пользователей.
138

Архивируйте проект под именем Training17, восстановите проект под именем Training18 и в
дальнейшем работайте с ним.

Упражнение 13.3. Клавишные команды системного уровня.


Проект Training19
Решим задачу отображения в проекте Training18 домашней страницы MyHome при нажатии
клавиш Ctrl+H в случае, если отображается любая страница проекта. С этой целью в среде
приложения Citect Studio выполните команду Настройка | Клавиши клавиатуры, задайте
параметры в соответствии с рис. 13.12 и нажмите кнопку Сохранить.
Далее выполните команду Визуализация | Клавиатурные команды, задайте параметры в
соответствии с рис. 13.13 и также нажмите кнопку Сохранить.
Внесем в проект еще одно изменение: сделает так, чтобы первой отображаемой страницей при
запуске проекта была бы страница MyHome. Для этого запустите Мастер устрановки в режиме
Индивидуальная настройка и в диалоговом окне Общие настройки укажите в качестве первой
(Начальная страница) страницу MyHome.

Рис. 13.12. Конфигурирование клавиатурного ввода системного уровня

Рис. 13.13. Конфигурирование клавиатурного ввода системного уровня

Запустите проект и проверьте, какой будет начальная страница. Протестируйте действие


определенной в проекте клавишной команды системного уровня Ctrl+H при отображении разных
страниц. Завершите работу проекта. Архивируйте проект под именем Training18, восстановите
проект под именем Training19 и в дальнейшем работайте с ним.
139

Глава 14. Отчеты: определение, создание и


просмотр
Пользователю могут потребоваться регулярные отчеты о состоянии всего производства или отчеты,
представляющие информацию о возникновении особых ситуаций в работе оборудования. Отчеты
могут создаваться на основе запросов, в указанное время или при возникновении определенных
событий. Таким образом, отчеты, подобно событиям, могут создаваться периодически и/или по
некоторому условию. Отчеты могут содержать выражения языка Cicode, которые исполняются при
создании отчета. Кроме того, отчеты могут создаваться в любое время с помощью функции Report()
языка Cicode. Форма отчета указывается в файле формата отчета, а сам отчет выводится на
определенное устройство.
Таким образом, отчет является средством архивации событий и процессов и представления
соответствующей информации оперативному персоналу. При работе с отчетом его нужно
определить (сконфигурировать) при работе с Citect Studio, далее создать отчет и просмотреть
созданный отчет на этапе исполнения проекта.

Упражнение 14.1. Определение (конфигурирование) отчета


В среде приложения Citect Studio на странице Проекты выберите проект Training19, сделайте его
активным.
Для работы с отчетом добавьте новое устройство. Для этого выполните команду
Настройка | Устройства, сконфигурируйте устройство в соответствии с рис. 14.1 (имя устройства
– OvenReport; имя файла – [DATA]:My_OvenReport.rtf; тип файла – ASCII_DEV; число файлов – (-
1), что означает запись в один файл; Замечание – «Файл отчета»; в остальных ячейках таблицы
оставьте значения по умолчанию) и нажмите кнопку Сохранить.
Сконфигурируйте отчет. Для этого выполните команду Визуализация | Отчеты, заполните строку,
определяющую отчет в соответствии с рис. 14.2, и нажмите кнопку Сохранить. Колонки Время,
Период и Переключатель имеют то же назначение, что и колонки с такими же названиями в
таблице, определяющей события (см. упр. 11.1): время синхронизации, период времени,
определяющий создание отчетов, и условие, при выполнении которого создается отчет. В нашем
случае отчет будет формироваться при переключении тега Test из 0 в 1 (для повторного создания
отчета требуется, чтобы условие стало ложным, а потом вновь изменилось бы на истинное).
Задайте содержание и характер вывода информации в отчет. Система будет формировать отчет в
соответствии с форматом, указанным в файле OvenFormat.rtf. Для редактирования этого файла
нажмите на кнопку Изменить формат отчета (рис. 14.2).

Рис. 14.1. Добавление и конфигурирование устройства для работы с отчетом

По умолчанию при форматировании используется стандартный редактор Wordpad. Открывается


существующий файл форматирования отчета или пустой файл в случае нового отчета.
140

Рис. 14.2. Конфигурирование отчета

Файл формата отчета может содержать различную информацию, в том числе простой текст,
команды форматирования, выражения на языке Cicode и имена тегов переменных.
Простой текст (например, заголовок отчета и пояснения) размещаются в желательном формате.
Выражения на языке Cicode и теги переменных размещаются в фигурных скобках. Если необходимо
включить в отчет фрагмент программы на языке Cicode, то это можно сделать в операторских
скобках {CICODE} … {END}. В фигурных скобках можно разместить и комментарий: {! … }.
Задайте формат отчета в файле в соответствии со следующим текстом:
--------------------------------------------------------------
ОТЧЕТ ПО РАБОТЕ ПЕЧИ: REPORT ON OVEN
--------------------------------------------------------------
{Time(1) } {Date(2) }
{! после двоеточия указан формат вывода числа}
Температура печи Oven_Temp = {Oven_Temp:###.##}
Состояние задвижки Gas_Valve: {Gas_Valve:##}
Состояние горелки Burner_Stat: {Burner_Stat}
{! указывать формат вывода не обязательно}
{FF} {! Form Feed - перевод строки}

Сохраните файл, закройте окно редактора и нажмите кнопку Сохранить.


Выполните компиляцию проекта. Убедитесь в отсутствии ошибок.

Упражнение 14.2. Создание и просмотр отчетов. Отображение


текстового файла. Проект Training20
Запустите проект, перейдите на страницу NewPage и измените несколько раз тег Test.
Переключение значения Test из нуля в единицу приводит к формированию отчета. Проверьте это:
перейдите в папку [DATA] (по умолчанию это “c:\ProgramData\Schneider Electric\Citect SCADA
2016\Data\”) и откройте в ней файл My_OvenReport.txt. В нем содержатся записи-отчеты,
составленные по указанному формату OvenFormat.rtf, например, такие, как показаны на рис. 14.3.

Рис. 14.3. Пример отчета по работе печи

В том случае, если необходимо внести изменения в файл формата, то после изменений этого файла,
его сохранением и закрытием текстового редактора, достаточно выполнить компиляцию проекта
(по команде Alt-10) и без перезапуска всего проекта перезагрузить сервер отчетов. Для этого можно
запустить Менеджер исполнительной системы и выполнить перезагрузку сервера (рис. 14.4).
141

Рис. 14.4. Перезапуск сервера отчетов

Отчет может быть создан не только в соответствии с определением, данным в таблице


Визуализация | Отчеты (с указанным периодом и/или по указанному условию), но и при вызове
функции Cicode: Report(“Имя_отчета”). Кроме того, отчет можно просматривать не только с
помощью внешнего по отношению к SCADA-системе редактора, но и средствами системы
Citect SCADA.
Подготовьте страницу для вывода файла отчета. Для этого создайте новую страницу, используя
шаблон file_rtf (рис. 14.5).
За м еч а н ие
Для страницы вывода простого неформатированного текста предназначен шаблон file, а для страницы
вывода файла в формате html – шаблон file_html. В последнем случае на компьютере должен быть
установлен MS Internet Explorer.

Рис. 14.5. Выбор шаблона при создании новой страницы для вывода отчетов

При отображении этой страницы во время работы системы можно использовать кнопку для выбора
нужного файла, который пользователь хочет просмотреть, но в случае, когда такой файл заранее
известен (а это как раз справедливо для вывода файла отчета), имя файла можно указать на этапе
проектирования. Для этого нужно дважды щелкнуть мышкой на любой области открытой страницы
и в появившемся окне, реализующем ввод параметров джинна, ввести имя нужного файла (рис.
14.6). Сохраните страницу с именем show_report_file.
142

Рис. 14.6. Подготовка графической страницы для show_report_file вывода отчета

Для решения нашей задачи создания и отображения файла отчета добавим новые элементы в
систему меню. В конец таблицы Визуализация | Конфигурация меню добавьте три строки в
соответствии с рис. 14.7. Дополнительно в колонке Порядок поставьте числа 100.
Первая строка Отчеты задает новую позицию меню 1-го уровня и не содержит команд. Две
последующие строки задают меню 2-го уровня. По команде Создать отчет будет вызвана функция
Cicode Report c параметром – названием отчета. По команде Вывести отчет будет выполнен
переход на созданную страницу show_report_file благодаря выполнению функции PageDisplay.

Рис. 14.7. Конфигурация меню для вывода отчета

Откомпилируйте и запустите проект Training19. Протестируйте, как реализуются новые функции


в проекте: работа с добавленными элементами меню, создание и отображение файла отчета.
Возможный вид новой страницы показан на рис. 14.8.
143

Рис. 14.8. Новые позиции меню и графическая страница с отчетом

Завершите работу проекта. Архивируйте проект под именем Training19, восстановите проект под
именем Training20 и в дальнейшем работайте с ним.
144

Глава 15. Дополнительные возможности


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

15.1. Выполнение процессов в реальном масштабе


времени
Система реального масштаба времени (или более коротко – система реального времени) — это
система, которая должна реагировать на события во внешней по отношению к системе среде или
воздействовать на среду в рамках требуемых ограничений времени. Обычно о системе реального
времени говорят как о системе, для которой важно время получения результата. В случае SCADA-
системы обработка информации должна производиться за определённый конечный период времени,
чтобы поддерживать постоянное и своевременное взаимодействие с технологическим процессом и
человеком-оператором. Для системы Citect SCADA как системы реального времени один из явных
способов решения рассматриваемой задачи состоит в использовании событий (базовую
информацию по конфигурированию и использованию событий см. в Главе 11).

Упражнение 15.1. Выполнение Cicode-функции пользователя.


Проект Training21
В среде приложения Citect Studio демонстрационного проекта Training20 запустите приложение
Редактор Cicode, создайте файл ChangeTemp1 и добавьте функцию в соответствии с рис. 15.1.

Рис. 15.1. Cicode-функция пользователя

В среде приложения Редактор проектов Citect добавьте еще одно событие. Для этого выполните
команду Нстройка | События и сконфигурируйте событие в соответствии с рис. 15.2.
Скомпилируйте проект. Запустите приложение Мастер установки (Мастер
конфигурирования компьютера) в режиме Индивидуальная установка, включите событие
RunRealTime и выключите событие Temp. Запустите проект и пронаблюдайте за изменением тега
Oven_Temp. Повторите эксперимент, задав большую периодичность события. Обратите внимание
145

на уменьшение темпа вызовов пользовательской функции. Завершите работу проекта. Архивируйте


проект под именем Training20, восстановите проект под именем Training21 и в дальнейшем
работайте с ним.

Рис. 15.2. Конфигурирование события для выполнения функции пользователя

За ме ч а н ие
Минимальное значение для периода события составляет одну секунду. Если в упражнении вместо
одного события сконфигурировать два события с разными именами и периодом 1 секунда, но с
одинаковыми остальными параметрами, то пользовательская функция будет вызываться с меньшими
интервалами (примерно вдвое меньше – через половину секунды; если исполнительная система не
будет успевать обрабатывать события, частота выполнения функции будет меньше).

Упражнение 15.2. Выполнение Cicode-функции пользователя с


использованием нескольких событий. Проект Training22
Для выбранного проекта Training21 в среде приложения Citect Studio добавьте еще одно событие,
скопировав событие RunRealTime, и дайте ему другое имя – RunRealTime1. Скомпилируйте
проект. Запустите приложение Мастер установки (Мастер конфигурирования компьютера) в
режиме Индивидуальная установка и включите добавленное событие. Запустите проект и
пронаблюдайте за изменением тега Oven_Temp. Убедитесь в том, что интенсивность изменения
тега Oven_Temp увеличилась в полтора-два раза.
Повторите это упражнение, использовав четыре одинаковых периодических события,
различающихся именами, с интервалом возникновения 1 секунда каждое. Проанализируйте
характер изменения тега Oven_Temp. Убедитесь в увеличении темпа увеличения значения тега.
Завершите работу проекта. Архивируйте проект под именем Training21, восстановите проект под
именем Training22 и в дальнейшем работайте с ним.

15.2. Ограничение прав доступа пользователей


Система Citect SCADA предоставляет богатый набор средств для обеспечения безопасности
управления предприятием. Одним из важных элементов системы обеспечения безопасности
является ограничение прав доступа к страницам, графическим объектам и к возможности ввода –
изменению значений тегов. При реализации любого варианта безопасности следует очень
тщательно спланировать какие действия разрешается выполнять каждому из операторов, какие
участки разрешается видеть каждому из операторов и какие команды можно выполнять с
ограничениями или без ограничений.
В большинстве случаев оператор должен вводить команды по мере необходимости. Но могут
существовать некоторые команды, выполнение которых определенными операторами следует
ограничить. Данную функцию безопасности обеспечивают регистрационные записи пользователей.
Ограничение прав может быть также связано с выделением зон, к которым оператор имеет
исключительный доступ и которые указаны при определении пользователя. Наряду с этим
оператору можно запретить работу и просмотр страниц с информацией о каких-то подразделениях
предприятия (зонах), доступ к которым для него ограничен или запрещен. Если ни одна из зон и
привилегий не определена для графической страницы или ее графического объекта, то для данного
146

элемента по умолчанию будет определена зона 0 и отсутствие привилегий (отсутствие привилегий


обозначается как пустое поле или привилегия 0). Такая графическая страница или расположенный
на ней графический объект не будут иметь ограничений безопасности и будут доступны для любого
пользователя.
Одновременное использование зон и привилегий предоставляет чрезвычайно высокий уровень
безопасности.
Наряду с ограничением прав доступа, связанным с планированием безопасности работы
предприятия, разумно обеспечить ограничения для действий с самой системой Citect SCADA.
Например, после запуска проекта Citect SCADA можно запретить оператору переключаться на
другие приложения MS Windows.

15.3. Зоны и привилегии


При настройке проекта системы Citect SCADA, с помощью которого выполняется управление
технологическим процессом, можно использовать зоны, привилегии или зоны и привилегии
одновременно.
Общие правила, связанные с использованием зон и привилегий, можно уточнить следующим
образом.
1. Глобальные привилегии (они не привязаны к какой-либо зоне) позволяют иметь доступ к
любой зоне.
2. Сопоставление привилегии какой-то зоне в рамках роли означает, что пользователь,
имеющий эту роль, будет иметь доступ к этой зоне. Однако такой пользователь сможет
иметь доступ к некоторому элементу в этой зоне только в том случае, если этот элемент
соответствует привилегии пользователя.
3. Зона 0 позволяет пользователю с любой ролью иметь доступ к своим элементам. Так,
пользователь, имеющий привилегию 3 для работы в какой-то зоне, сможет также иметь
доступ к таким элементам в зоне 0, которые имеют привилегию 3.
4. Все пользователи имеют возможность доступа к зоне 0.
Чтобы ограничить доступ к конкретной графической странице, для нее следует назначить зону.
Чтобы ограничить доступ к графическому объекту страницы, следует назначить как зону, так и
уровень привилегий для этого объекта.
При назначении зон и привилегий следует начинать с графических страниц, а затем переходить к
их графическим объектам.
Чтобы назначить зону для графической страницы, следует выполнить команду
Свойства страницы… ее контекстного меню, в появившемся окне Свойства: ИмяСтраницы
выбрать вкладку Общие и заполнить нужным образом поля в группе Безопасность.
Чтобы назначить зону и/или привилегии клавиатурной команде графической страницы, следует
выполнить команду Свойства страницы… ее контекстного меню, в появившемся окне
Свойства: ИмяСтраницы выбрать вкладку Клавиатурные команды и заполнить нужным
образом поля этой вкладки.
Чтобы назначить зону и/или привилегии графическому объекту страницы, следует выполнить
команду Свойства… его контекстного меню, в появившемся окне Свойства: ИмяОбъекта
выбрать окно свойства Доступ (Общие) и заполнить нужным образом поля в группе Безопасность.
Чтобы назначить зону и/или привилегии клавиатурной команде графического объекта на странице,
следует выполнить команду Свойства… его контекстного меню, в появившемся окне
Свойства: ИмяОбъекта выбрать окно свойства Ввод (Клавиатурные команды) и заполнить
нужным образом поля в группе Безопасность.
Графический объект страницы может иметь Стиль запрета (стиль отображения в заблокированном
состоянии), если оператор не имеет достаточных прав на зону или привилегий на работу с
графическим объектом. Выбранный стиль блокировки графического объекта определяет, как этот
объект будет отображаться, когда доступ к нему запрещен. Допустимыми стилями блокировки
являются Рельефный, Серый и Скрытый.
147

Со в ет
Рекомендуем не назначать блокированным графическим объектам стиль скрытый, чтобы операторы,
забывшие зарегистрироваться с достаточными правами доступа, могли бы, по крайней мере, знать о
существовании этих графических объектов.

Чтобы определить стиль блокировки графического объекта страницы следует выполнить команду
Свойства… его контекстного меню, в появившемся окне Свойства: ИмяОбъекта выбрать окно
свойства Доступ (Запрещен) и выбрать нужный стиль блокировки графического объекта.

Упражнение 15.3. Назначение зон и привилегий графическим


страницам и графическим объектам
Проект Training19 восстановите под именем Training19Security и в дальнейшем работайте с ним.
Создайте две зоны.
В зону 1 включите графическую страницу Oven и расположенный на ней графический объект,
управляющий подачей топлива по трубопроводу. С этой целью перейдите в среду приложения
Построитель графики Citect, откройте графическую страницу Oven, выполните команду
Свойства страницы… ее контекстного меню, выберите вкладку Общие, модифицируйте
параметры страницы в соответствии с рис. 15.3 и нажмите кнопку OK.

Рис. 15.3. Включение графической страницы Oven в зону 1

Для назначения зоны и привилегий графическому объекту, представляющему задвижку на трубе


подачи топлива, выполните команду Свойства… его контекстного меню, в окне
Свойства: Набор образов настройте свойства Доступ (Общие) и Доступ (Запрещен) в
соответствии с рис. 15.4 и нажмите кнопку OK.
В зону 2 включите графическую страницу NewPage. С этой целью в среде приложения
Построитель графики Citect откройте графическую страницу NewPage, выполните команду
Свойства страницы… ее контекстного меню, последовательно выберите вкладки Общие и
Клавиатурные команды, модифицируйте параметры страницы в соответствии с рис. 15.5 и
нажмите кнопку OK. Обратите внимание, что страница NewPage предусматривает использование
клавиатурного ввода уровня страницы (по нажатию клавиши Page Down выполняется переход на
графическую страницу MyHome). Для назначения зоны и привилегий графическому объекту
Задание тега Test=FALSE выполните команду Свойства… его контекстного меню, в окне
Свойства: Кнопка настройте свойства Доступ (Общие) и Доступ (Запрещен) в соответствии с
рис. 15.6 и нажмите кнопку OK.
148

Рис. 15.4. Назначение зоны и привилегий графическому объекту Набор образов

Рис. 15.5. Включение графической страницы NewPage в зону 2

Рис. 15.6. Назначение зоны и привилегий графическому объекту-кнопке Задание тега Test=FALSE

Аналогичным образом выполните назначение зоны и привилегий графическому объекту


Задание тега Test=TRUE. В отличие от предыдущего случая используйте стиль блокировки Серый.
Для назначения зоны и привилегий графическому объекту выполните команду Свойства… его
контекстного меню, в окне Свойства: Кнопка настройте свойства Доступ (Общие) и Доступ
(Запрещен) в соответствии с рис. 15.7 и нажмите кнопку OK. Сохраните графические страницы
Oven и NewPage. Выполните компиляцию.
149

Рис. 15.7. Назначение зоны и привилегий графическому объекту Задание тега Test=TRUE

15.4. Добавление пользователей с различными правами


доступа
Для каждого потенциального пользователя проекта системы Citect SCADA (оператора или
специалиста другого профиля) необходимо добавить в базу данных запись, определяющую его
возможности в период выполнения проекта. Каждый такой предопределенный пользователь может
во время выполнения проекта зарегистрироваться и получить соответствующий доступ к зонам
(графическим страницам и графическим объектам).
За ме ч а н ие
Во время выполнения проекта для управления операторами можно использовать ряд стандартных
функций языка Cicode: LoginForm() — регистрация оператора, Logout() — выход оператора из
состояния зарегистрированного пользователя, UserInfo() — получение информации о текущем
операторе, UserCreateForm() — создание нового оператора, UserpasswordForm() — изменение
пароля оператора.

Для создания пользователя в среде приложения Citect Studio на странице Проекты выберите
проект, сделайте его активным, выберите страницу Безопасность и перейдите на вкладку
Пользователи.
Во включенном проекте Tab_Style_Include для привилегированных пользователей-
администраторов предусмотрена возможность добавления пользователей (но не ролей) в процессе
работы системы. Эти действия можно выполнить с помощью меню, появляющегося при нажатии на
правую кнопку мыши на иконки в левом верхнем углу всех страниц, созданных по шаблону
tab_style_1.Normal.

Упражнение 15.4. Модификация параметров ролей и


пользователей
Для реализации политики безопасности создайте новых пользователей. С этой целью перейдите в
среду приложения Citect Studio, выполните команду Безопасность | Роли. Для отображения в
таблице нужных колонок нажмите на кнопку с многоточием и отметьте галочками колонки,
показанные на рис. 15.8.
150

Рис. 15.8. Изменение перечня колонок, отображаемых в таблице определения ролей

Добавьте три новых роли в соответствии с рис. 15.9.

Рис. 15.9. Добавление новых ролей

В ячейке Зоны просмотра роли DesignerType ничего не указано, т. к. пользователи с этой ролью
будут иметь глобальные привилегии и, следовательно, автоматически будут имеют доступ ко всем
зонам. Содержимое полей Зоны привилегий 3 и Зоны привилегий 4 коррелировано с уровнями
приоритетов графических страниц и графических объектов зон 1 и 2 (см. приведенные ранее
рис. 15.4 — 15.7).
В ячейках Зона просмотра ролей OperatorType1 и OperatorType2 указаны номера зон, к которым
операторы, имеющие соответствующего роли, имеют доступ. Для удобства имена операторов
определяются именами графических страниц зон 1 и 2. Содержимое полей Зоны привилегий 3 и
Зоны привилегий 4 коррелировано с уровнями приоритетов графических страниц и графических
объектов зон 1 и 2 (см. приведенные ранее рис. 15.4 — 15.7).
Заполнение ячеек Права и Зоны просмотра в каждой строке взаимоисключающее: если заполнена
одна ячейка, то другая пустая.
На странице Пользователи для каждой новой роли создадим по одному пользователю: сделайте
это в соответствии с рис. 15.9. Для упрощения пароли для новых пользователей перед сохранением
таблицы оставим пустыми, после сохранения изменений в колонке Пароль появятся точки.
151

Рис. 15.9. Создание учетных записей новых операторов

Для проверки выполните компиляцию проекта.

Упражнение 15.5. Тестирование созданной политики безопасности


Запустите проект Training19Security и протестируйте политику безопасности с правами доступа по
умолчанию. Для работы в зоне 1 пытайтесь перейти на страницу Oven. Обратите внимание, что
перехода на графическую страницу Oven не происходит, а в поле Prompt текущей графической
страницы появляется сообщение Страница вне вашей зоны. Это означает, что по умолчанию (то
есть для пользователя, не обладающего никакими привилегиями 1..8, что означает также
привилегию 0) работа в зоне 1 запрещена. Тестирование работы в зоне 2 на странице NewPage дает
такой же результат. Переход же на страницу Lighting происходит, так как для этой страницы
действуют значения по умолчанию.
Далее протестируйте политику безопасности с правами привилегированных пользователей.
Зарегистрируйтесь как привилегированный пользователь с именем DESIGNER1 (без пароля). Для
работы в зоне 1 перейдите на страницу Oven. Щелкните левой кнопкой мыши по клапану на
трубопроводе — произойдет переключение клапана. Это означает, что работа пользователя
DESIGNER1 в зоне 1 не имеет ограничений. Тестирование работы в зоне 2 (на странице NewPage)
дает аналогичные результаты (кнопки и текстовый объект на графической странице NewPage
полностью доступны, клавиатурный ввод уровня графической страницы — переход по клавише
Ctrl+H на графическую страницу MyHome происходит).
Протестируйте политику безопасности с правами пользователей OVEN1 (работа в зоне 1) и
NEWPAGE1 (работа в зоне 2).
Зарегистрируйтесь как пользователь с именем OVEN1. Для работы в зоне 1 перейдите на страницу
Oven. Щелкните левой кнопкой мыши по клапану на трубопроводе — произойдет переключение
клапана. Это означает, что работа оператора OVEN1 в зоне 1 не имеет ограничений. Для работы в
зоне 2 попытайтесь выполнить переход на страницу NewPage. Обратите внимание, что перехода на
графическую страницу NewPage не происходит, а в поле Prompt текущей графической страницы
появляется сообщение Страница вне вашей зоны. Это означает, что работа пользователя OVEN1
в зоне 2 запрещена.
Зарегистрируйтесь как пользователь с именем NEWPAGE1. Для работы в зоне 1 выполните
команду Pages | Oven. Произойдет переход в графическую страницу Oven (область видимости для
пользователя NewPage включает зоны 1 и 2). Щелкните левой кнопкой мыши по клапану на
трубопроводе — переключение клапана не произойдет, клапан блокирован; это подтверждается
также его серым, а не цветным видом. Для работы в зоне 2 выполните переход на страницу
NewPage. Обратите внимание, что переход на графическую страницу NewPage имеет место, кнопки
и текстовый объект в графической странице NewPage полностью доступны, клавиатурный ввод
уровня графической страницы — переход по клавише Ctrl+H на графическую страницу MyHome
происходит. Это означает, что работа пользователя NEWPAGE1 в зоне 2 разрешена.

За ме ч а н ие
Привилегии могут назначаться как исключительно (независимо от других привилегий), так и
иерархически (например, привилегия уровня 3 имеет доступ к уровням 3, 2 и 1). Этим управляет
параметр [Privilege]Exclusive (рис.15.10), который по умолчанию имеет значение 1 (не иерархические
привилегии). В случае, если среди параметров отсутствует нужные секция и параметр, которому нужно
152

дать значение, отличное от значения по умолчанию, секцию и параметр следует создать, использовав
кнопку Добавить.

Рис. 15.10. Параметр файла Citect.ini, определяющий характер привилегий


153

Глава 16. Пользовательские шаблоны, точки


анимации и пользовательские меню
Если страницы проекта содержат элементы, являющиеся общими для нескольких графических
страниц, например, такие как панели инструментов и строки состояния, вы можете создать
собственный шаблон для использования в качестве основы страниц. В дальнейшем можно будет
создавать страницы на базе шаблона, добавляя к ним индивидуальные элементы.
Если впоследствии вы решите удалить или изменить расположение общего элемента или добавить
новый общий элемент, вам не придется изменять каждую страницу — достаточно внести изменения
в шаблон. Система Citect SCADA автоматически внесет изменения во все страницы, построенные
на основе шаблона.

16.1. Шаблоны Citect SCADA


Начиная работать над новым проектом, можно создавать страницы таким образом, чтобы они
выглядели в соответствии с определенными требованиями. В основе простейшей страницы лежит
шаблон Blank, представляющий собой пустое окно. Разработчик может добавлять в это окно
графические объекты и функции, а также разрабатывать новые шаблоны для страниц своего
проекта.
Для разработчиков, ограниченных сжатыми сроками проектирования, а также для новых
пользователей Citect SCADA существует множество предварительно разработанных шаблонов,
которые помогают быстро создавать нужные страницы. Стандартные шаблоны в предварительно
сконфигурированных включаемых системных проектах Include, CSV_Include, Tab_Style_Include,
SxW_Style_Include как раз и предназначены для удобного конфигурирования всех основных
функций, реализуемых в проекте.

Упражнение 16.1
Познакомьтесь с предопределенными шаблонами включаемых системных проектов Include и
Tab_Style_Include. Для этого перейдите в среду приложения Построитель графики Citect. Для
просмотра очередного шаблона нажмите кнопку Открыть на панели инструментов, в появившемся
окне Открыть выберите вкладку Шаблон, в поле Проект: выберите включаемый проект Include
или Tab_Style_Include, поле Заголовок отметьте, в поле Разрешение выберите по умолчанию, в
полях Стиль: и Шаблон: выберите необходимый шаблон и нажмите кнопку OK. По окончании
просмотра шаблона закройте его окно.
Проект Tab_Style_Include является предварительно сконфигурированным проектом, который
инсталлируется с системой. Он предназначен для сокращения времени, необходимого для
конфигурирования нового проекта, и содержит предопределенные шаблоны и страницы,
выполненные в стиле операционной системы MS Windows 7.
При создании нового проекта проект Tab_Style_Include может автоматически входить в новый
проект как включаемый проект. Это означает, что все шаблоны и другие возможности включаемого
проекта Tab_Style_Include доступны в новом проекте при создании графических страниц. Наряду
с шаблоном Normal стандартной графики для создания технологических графических страниц в
проект Tab_Style_Include включены предопределенные страницы трендов и оповещений, страница
средств администрирования, страницы для представления текстовых файлов, а также
разнообразные всплывающие окна. Все они оснащены меню и панелями инструментов навигации,
выполненными в одном стиле, которые обеспечивают согласованную функциональность и внешний
вид в пределах всего проекта. Включаемый проект поддерживает и мультимониторное
отображение, что позволяет одновременно отображать несколько графических страниц на
нескольких мониторах компьютера.

16.2. Создание собственных шаблонов


В большинстве проектов создаются шаблоны, разработанные специально для конкретной
автоматизированной системы управления. При создании шаблона можно поступить одним из двух
способов. Во-первых, можно взять за основу имеющийся стиль, например, Tab_Style_1 и, используя
154

возможности подсистемы навигации Citect Studio (Навигация | Конфигурирование меню),


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

Упражнение 16.2. Создание собственного шаблона. Проект


Training22Tmplt
Восстановите проект Training22 под именем Training22Tmplt и в дальнейшем работайте с этим
проектом.
Создайте новый шаблон для страниц вашего проекта на основе шаблона blank (рис. 16.1) и нажмите
кнопку OK. Командой Файл | Сохранить как… сохраните новый шаблон под именем MyNormal
в проекте Training22Tmplt. Выберите создание нового стиля, задайте имя нового стиля
MyTraining, для сохранения нового стиля нажмите кнопку OK (рис. 16.2), а для сохранения нового
шаблона еще раз нажмите кнопку OK. Вы увидите предупреждающее сообщение (рис. 16.3),
нажмите кнопку OK.

Рис. 16.1. Свойства нового шаблона


155

Рис. 16.2. Сохранение нового шаблона в новом стиле

Командой Файл | Свойства выведите окно свойств шаблона, в поле Цвет фона задайте белый цвет
(рис. 16.4) и нажмите кнопку OK.

Рис. 16.3. Предупреждение о необходимости обновления страниц, связанных с данным шаблоном

Рис. 16.4. Задание цвета фона созданного шаблона


156

16.3. Настройка собственных шаблонов


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

Упражнение 16.3. Настройка созданного шаблона MyNormal.


Создание строки заголовка
Добавьте строку заголовка к вашему шаблону — закрашенный прямоугольник в верхней части
страницы созданного шаблона.
Добавьте в левую часть строки заголовка текстовый графический объект Text для отображения
названия графической страницы со свойствами, представленными на рис. 16.5 (см. также справку
по функции PageInfo()).
Добавьте в правую часть строки заголовка рисованную кнопку, используемую для завершения
работы проекта. С этой целью вставьте на страницу символ Shutdown из библиотеки Icons со
свойствами, представленными на рис. 16.6 (см. также справку по функции Shutdown(). В
результате строка заголовка созданного пользовательского шаблона приобретает вид,
представленный на рис. 16.7.
Сохраните пользовательский шаблон. Выполните компиляцию проекта и сохраните проект под
прежним именем.

Рис. 16.5. Свойства графического объекта Teкст, используемого в строке заголовка созданного шаблона

Рис. 16.6. Свойства кнопки, используемой в строке заголовка созданного шаблона для закрытия окна
работающего проекта
157

Рис. 16.7. Строка заголовка пользовательского шаблона

Упражнение 16.4. Настройка созданного шаблона MyNormal.


Создание панелей инструментов
Расположите под созданной строкой в правой части страницы текстовый графический элемент для
отображения информации о зарегистрированном пользователе со свойствами в соответствии с рис.
16.8.

Рис. 16.8. Четыре формы для конфигурирования текстового объекта с информацией о пользователе

В среде приложения Построитель графики Citect нажмите кнопку Открыть на панели


инструментов и откройте шаблон _base стиля Tab_Style_1 из включаемого проекта
Tab_Style_Include. Этот шаблон, как следует из его названия и назначения, служит основой для
построения всех других шаблонов (кроме шаблона blank), полностью заполняющих окно
максимального разрешения работающего проекта. Фрагмент, находящийся в правой нижней части
открытого шаблона, представлен на рис. 16.9.

Рис. 16.9. Фрагмент шаблона _base стиля Tab_Style_1 из включаемого проекта Tab_Style_Include
158

Скопируйте две строки фрагмента, задающие дату и время (см. рис. 16.9), в пользовательский
шаблон MyNormal проекта Training22Tmplt. Импортируйте (Файл | Импорт…) логотип Санкт-
Петербургского политехнического университета из рабочей папки, уменьшите растровое
изображение и расположите графические элементы аналогично оригинальному расположению (см.
рис. 16.9) – в правом нижнем углу.
Сохраните пользовательский шаблон MyNormal.

16.4. Точки вывода анимации (AN)


Одна точка графической страницы, к которой привязан любой графический объект (обычно это
левый верхний угол), называется точкой вывода анимации. Она носит название, состоящее из
аббревиатуры слов Animation Number, и порядкового номера: AN<x>. При добавлении в
графическую страницу графического объекта (текста, символа, трубы и т. п.) Citect SCADA
автоматически присваивает номер точке вывода анимации. Этот номер указан в свойстве Доступ
(Общие) графического объекта, поле Объект AN. Количество объектов, которые можно
использовать, ограничивается только быстродействием компьютера, хотя это редко является
проблемой. Рекомендуется использовать на графической странице не более 3000 графических
объектов (точек вывода анимации) – с учетом всех входящих элементов и графических объектов в
шаблонах.
Система Citect SCADA всегда использует две первых точки вывода анимации для отображения
системной информации, связанной с использованием клавиатуры и вывода текста-подсказок, т. е.
эти точки являются зарезервированными. В некоторых графических страницах, например, в
страницах трендов, зарезервированными являются и некоторые другие точки вывода анимации с
начальными номерами.
Когда вы создаете свои шаблоны, рекомендуется резервировать для каждого шаблона некоторое
количество точек анимации. Это даст возможность добавлять в свои шаблоны в процессе их
модификации новые графические объекты. Когда объект будет добавляться к графической
странице, основанной на вашем шаблоне, он будет использовать следующий доступный номер
точки вывода анимации.
Если на одном из последующих этапов разработчик решает внести изменения в шаблон, то любой
включаемый в шаблон графический объект будет использовать следующую точку вывода
анимации. При этом два номера точек вывода анимации (в шаблоне и графической странице) будут
конфликтовать. Для устранения конфликта следует резервировать номера точек вывода анимации
для каждого своего шаблона. В случае, когда на одном из последующих этапов понадобится
добавить в шаблон графический объект, достаточно предварительно удалить один из номеров точек
вывода анимации, зарезервированных для данного шаблона.

Упражнение 16.5. Настройка созданного шаблона MyNormal.


Использование зарезервированных точек вывода анимации
В среде приложения Построитель графики Citect добавьте в пользовательский шаблон MyNormal
проекта Training22Tmplt панель инструментов, имеющую вид прямоугольника, расположите ее в
верхней части шаблона по ширине окна под графическим объектом =UserInfo(1) и настройте ее в
соответствии с рис. 16.10.

Рис. 16.10. Свойства прямоугольника – фона для панели инструментов


159

Левый верхний угол панели инструментов имеет координаты 0 – 75, а размер прямоугольника
1024 х 50). Эти параметры видны в правом нижнем углу окна Построителя графики Citect (рис.
6.11)

Рис. 16.11. Размеры графического объекта Прямоугольник (1024 х 50) и положение его левого верхнего угла
(0, 75), который определяет его точку анимации

Точки вывода анимации AN1 и AN2 расположите в пределах панели инструментов соответственно
в точках с координатами (340, 100) и (510, 100), как это показано на рис. 16.12. С этой целью
откройте шаблон tab_style_1.blank проекта Tab_Style_Include, выполните команду
Средства | Перейти к объекту…, в появившемся окне Перейти к объекту выберите
Точка анимации AN1 и нажмите кнопку OK. В появившемся окне Точка анимации в поле
Координата по Х введите 340, в поле Координата по Y введите 100 и нажмите кнопку OK.
Аналогично задайте координаты для AN2. С помощью кнопки Сохранить на панели инструментов
сохраните измененный шаблон Tab_Style_Include – tab_style_1.blank@-XGA, в появившемся окне
нажмите кнопку OK и закройте окно шаблона. Чтобы точки вывода анимации в шаблоне MyNormal
проекта Training22Tmplt, скрытые под панелью инструментов, стали видны, выберите
прямоугольник панели инструментов и выполните команду Порядок | На задний план. Для
улучшения видимости точек вывода анимации добавьте позади них темные прямоугольники (см.
рис. 16.12). Точка вывода анимации 1 отображает вводимые с клавиатуры символы, а точка вывода
анимации 2 отображает текст-подсказку, выводимую в результате выполнения Citect-функции
Prompt. Пояснения по поводу отображения вводимых с клавиатуры символов и функции
Prompt(“text”) см. в тексте Упражнения 4.11. Добавим, что параметры шрифта для вывода
информации в точки анимации AN1 и AN2 указываются в файле citect.ini. Так, шрифт вывода
подсказки задается в разделе [Font]Prompt. В случае необходимости изменение параметров следует
производить, запуская редактор работы с файлом citect.ini из Построителя графики Citect или
приложения Citect Studio.

Рис. 16.12. Точки вывода анимации AN1 и AN2 на панели инструментов

В строку формируемой панели инструментов добавьте еще один прямоугольник светло-серого


цвета, на который скопируйте графический объект Citect с изображением функции из шаблона
_base проекта Tab_Style_Include (рис. 16.13, левый нижний угол шаблона). Показанное на рис.
16.14 окно свойств с названием функции DspPromptAndKeyEcho делает понятным ее назначение:
вывод на экран той же информации, которая выводится с помощью точек анимации AN1 и AN2, то
есть текста Prompt и нажимаемых клавишах на клавиатуре.

Рис. 16.13. Фрагмент шаблона _base стиля Tab_Style_1 из включаемого проекта Tab_Style_Include
160

Рис. 16.14. Свойство графического объекта Cicode

За ме ч а н ие
Два варианта вывода подсказки Prompt и информации о нажимаемых клавишах включены в шаблон
для решения учебных задач, однако необходимо иметь в виду следующие особенности. Включение в
шаблон точек AN1 и AN2 связано с изменением шаблона blank, входящего в стиль Tab_Style_1. Но это
стиль из системного проекта Tab_Style_Include, который при обновлении системы Citect SCADA
заменяется на исходный системный. Это означает, что при обновлении страниц (при выполнении,
например, команды Средства | Обновить страницы в активном проекте) положение точек анимации
AN1 и AN2 во всех шаблонах, которые основаны на шаблоне blank, входящего в стиль Tab_Style_1,
изменится на исходное. В свою очередь изменится и отображение графических объектов на страницах,
созданных на основе подобных пользовательских шаблонов. Использование функции
DspPromptAndKeyEcho преодолевает указанную проблему обновления версий, хотя выводит
информацию двух видов (подсказку Prompt и информацию о нажимаемых клавишах) в одну строку.

Зарезервируйте для пользовательского шаблона MyNormal проекта Training22Tmplt двадцать


точек вывода анимации. Для этого выполните команду Средства | Настройки... и в появившемся
окне Параметры выберите опцию Инструменты версий 3.xx/ 4.xx и нажмите кнопку OK.
Появится еще одна панель объектов, представленная на рис. 16.15, обеспечивающая работу с
точками вывода анимации (инструменты панели снабжены всплывающими подсказками). В этой
панели объектов выберите инструмент Точка анимации и с его помощью зарезервируйте для
пользовательского шаблона еще 20 точек вывода анимации. Расположите точки вывода анимации
за одной из внешних границ видимой части страницы (рис. 16.16). При необходимости используйте
позицию меню Порядок | Выровнять… .Сохраните шаблон MyNormal.

Рис. 16.15. Дополнительная панель объектов, поддерживающая работу с точками вывода анимации
161

Рис. 16.16. Вид пользовательского шаблона MyNormal

16.5. Отображение в шаблоне сигналов тревог


Вы можете принять решение о выводе самых последних сигналов тревог на всех страницах.
Функция AlarmDsp() отображает список сигналов тревог, начиная с определенной точки вывода
анимации и до последующих точек. Данная функция используется в стандартных страницах,
входящих во включаемый проект Tab_Style_Include.
С помощью расположенных друг под другом объектов Cicode вы можете задать тип и количество
сигналов тревог (см. подробнее в справке по функции AlarmDsp()). Перед вызовом данной
функции для шаблона следует добавить к шаблону нужное количество точек вывода анимации из
числа зарезервированных по числу одновременно отображаемых сигналов тревог. Используемые
точки вывода анимации должны иметь последовательные номера. Вы можете проверить номер
точки вывода анимации в поле Объект AN свойства Доступ (Общие) объекта Cicode.

Упражнение 16.6. Настройка созданного шаблона MyNormal.


Отображение сигналов тревог
Решим задачу вывода на экран четырех последних сигналов оповещений. Освободите пять точек
вывода анимации с последовательными номерами из числа зарезервированных ранее: одну для
фона-прямоугольника и четыре для сигналов оповещений. Для этого просто удалите
последовательно расположенные точки из правой части шаблона. Нарисуйте в нижней части
пользовательского шаблона MyNormal проекта Training22Tmplt фон, имеющий вид черного
прямоугольника. Расположите в левой части прямоугольника друг под другом четыре объекта
Cicode и настройте верхний объект в соответствии с рис. 16.17.
162

Рис. 16.17. Свойства первого объекта Cicode

Аналогичным образом настройте остальные объекты Cicode и убедитесь, что точки вывода
анимации имеют последовательные номера, которые используются в качестве первого аргумента
в вызове функции AlarmDsp(). Этот номер находится в поле Объект AN на вкладке Доступ
свойств каждого из объектов. Второй и третий аргументы в вызове функции AlarmDsp() означают,
что в данном случае будут отображаться до четырех последних активных сигналов тревог.
Добавьте два набора символов в левый верхний угол панели инструментов, в которую вы ранее
добавили точки вывода анимации AN1 и AN2. Используйте параметры символов, представленные
на рис. 16.18 и 16.19.

Рис. 16.18. Свойства набора символов для отображения активных тревог

За ме ч а н ие
Функции PageAlarm(),PageHardware() и PageSummary() по умолчанию открывают страницы
с именами Alarm, Hardware и Summary, включенные в проект из системного проекта
Tab_Style_Include. Если вы хотите использовать отличающиеся названия для страниц сигналов тревог,
163

то должны ввести собственные названия этих страниц в файл Citect.ini. Установите INI-параметры
[Page] AlarmPage, HardwarePage и SummaryPage в соответствии с названиями ваших страниц.

Сохраните пользовательский шаблон MyNormal. Текущий вид шаблона представлен на рис. 16.20.

Рис. 16.19. Свойства набора символов для отображения аппаратных тревог

Рис. 16.20. Вид пользовательского шаблона MyNormal


164

16.6. Навигация (перемещение) в шаблоне


Большие проекты Citect SCADA содержат много графических страниц. Для перехода пользователя
к страницам часто используются боковые панели инструментов и меню.

Упражнение 16.7. Настройка созданного шаблона MyNormal.


Боковые панели инструментов навигации
Разместите в верхней левой части пользовательского шаблона MyNormal проекта Training22Tmplt
боковую панель инструментов навигации, содержащую три кнопки, графический объект Teкст с
поясняющим текстом и прямоугольник для группирования (рис. 16.21). Настройте первую кнопку
навигации для перехода на страницу NewPage в соответствии с рис. 16.22, а две другие кнопки –
аналогичным образом для отображения страниц Oven и Lighting. Окончательный вид
пользовательского шаблона на этом этапе иллюстрирует рис. 16.23. Сохраните пользовательский
шаблон MyNormal.

Рис. 16.21. Боковая панель инструментов навигации пользовательского шаблона MyNormal


165

Рис. 16.22. Свойства первой кнопки навигации

Рис. 16.23. Вид пользовательского шаблона MyNormal после включения боковой панели навигации

16.7. Использование пользовательского шаблона


На основе созданного пользовательского шаблона MyNormal можно создавать графические
страницы, обладающие общим набором свойств, заложенных в шаблон MyNormal.

Упражнение 16.8. Использование созданного шаблона MyNormal


Перейдите в среду приложения Построитель графики Citect для работы с проектом
Training22Tmplt.
Создайте новую графическую страницу, основанную на созданном пользовательском шаблоне. С
этой целью нажмите кнопку Новый на панели инструментов, в появившемся окне Новый нажмите
кнопку Страница и появится окно Использовать шаблон. Для выбора созданного
пользовательского шаблона в поле Стиль: выберите mytraining, в поле Шаблон: выберите
MyNormal, отметьте поле Связанный, в поле Разрешение: выберите XGA и нажмите кнопку OK.
166

На свободном поле напишите, например, следующий текст:


Пробная страница, созданная на основе шаблона MyNormal
Cохраните созданную страницу под именем MyPage. Для этого выполните команду
Файл | Сохранить как…, в поле Страница: появившегося окна Сохранить как укажите имя
MyPage и нажмите кнопку OK.
Для тестирования пользовательского шаблона MyNormal выполните компиляцию проекта,
запустите Мастер конфигурирования компьютера в режиме выборочной настройки, задайте в
качестве стартовой страницы MyHome, запустите проект, проверьте работу на странице MyPage
сначала как незарегистрированный пользователь, а потом зарегистрируйтесь как
привилегированный пользователь (возвратясь на стартовую страницу по команде Ctrl+H) и
перейдите на страницу MyPage вновь. Страница может выглядеть так, как показано на рис. 16.24.
Обратите внимание на следующие фрагменты окна MyPage. В левой части строки заголовка
отображается имя графической страницы. Если поместить указатель мыши над кнопкой,
расположенной в строке заголовка справа, то появится всплывающая подсказка. Справа под строкой
заголовка отображается имя зарегистрированного пользователя (в данном случае это
привилегированный пользователь). В правой части панели инструментов, расположенной сверху, в
поле вывода функции Cicode и в точке вывода анимации AN2 отображается информация, которая
задается аргументом в вызове функции Prompt(). В левой части панели инструментов,
расположенной снизу, отображается информация об активных тревогах. И, наконец, в правой части
этой же панели инструментов отображаются логотип, текущие значения времени и даты.
Протестируйте возможности работы с сигналами тревог. Для этого поместите, например, курсор
мыши на верхний элемент списка сигналов активных тревог, расположенного на нижней панели
инструментов. Появится всплывающая подсказка. Для квитирования (подтверждения) выбранного
сигнала тревоги щелкните левой кнопкой мыши и цвет текста станет менее ярким, а
подтвержденный сигнал окажется внизу списка. Обратите внимание, что квитирование сигнала
тревоги на странице MyPage доступно не только привилегированному пользователю, но и
пользователю, без регистрации. Переместите указатель на символ, расположенный в левой части
верхней панели инструментов. Появится всплывающая подсказка
На страницу активных оповещений. Нажмите на этот символ, и произойдет переход на страницу
активных тревог. После просмотра страницы снова вернитесь на страницу MyPage. Переместите
указатель на второй слева символ, расположенный в верхней панели инструментов. Появится
всплывающая подсказка На страницу аппаратных оповещений. Нажмите на этот символ, и
произойдет переход на страницу аппаратных тревог. После просмотра страницы снова вернитесь на
страницу MyPage. Удерживайте клавишу Ctrl и нажмите на клавишу с изображением Стрелки
вправо (RIGHT). Произойдет выход зарегистрированного пользователя из режима регистрации, и
объект перестанет отображаться.
Протестируйте боковую панель инструментов. Для этого поместите, например, курсор мыши на
кнопку Oven, расположенную на боковой панели инструментов. Появится всплывающая подсказка
Переход на страницу Oven. После просмотра страницы снова вернитесь на страницу MyPage.
Аналогичным образом протестируйте действие кнопок NewPage и Lighting.
167

Рис. 16.24. Возможный вид страницы MyPage при исполнении проекта

В заключение протестируйте использование точки вывода анимации AN1. С этой целью нажмите
какую-либо произвольную клавишу компьютера, например, клавишу g, действие которой в проекте
не определено, и пронаблюдайте за информацией, выводимой в области AN1 и AN2. Далее нажмите
клавишу Ctrl+H компьютера, действие которой в проекте определено. В результате произойдет
переход на страницу MyHome.
Завершите работу проекта и сохраните его.

16.8. Пользовательские меню


Команды меню позволяют вызвать функцию Cicode или выполнить переход к требуемой
графической странице. Это дает пользователю возможность работать с проектом, выбирая и
выполняя команды меню в стиле Windows. Для подготовки примера решим одну необходимую
задачу – создадим дополнительную переменную, которую будем использовать ниже как рабочую в
короткой программе на языке Cicode. Для этой цели, конечно, подходит любой тег, однако для
решения нашей задачи можно определить локальную переменную, которая при исполнении проекта
требует меньших ресурсов, так как локальные переменные не связаны с серверами и устройствами
ввода-вывода. В среде приложения Citect Studio выполните команду Модель системы | Теги
(рис. 16.25) и перейдите на страницу Локальные переменные. Создайте переменную с именем
MyInternal1 целого типа, заполнив два поля, как показано на рис. 16.26, в остальных полях строки
оставьте значения по умолчанию. Сохраните таблицу.
168

Рис. 16.25. Переход на страницу определения локальных переменных в Citect Studio

Рис. 16.26. Определение локальной переменной целого типа


Функция DspPopupMenu() создает раскрывающееся меню, содержащее команды. Многочисленные
вызовы этой функции позволяют создавать и иерархические меню с командами. Команды меню
могут отображаться как нормальные, отмеченные или отключенные и могут разделяться
сепараторами – горизонтальными линиями. Рассмотрим пример создания и работы с
раскрывающимся меню (листинг 16.1).

Листинг 16.1

' Первый вызов функции создает команды меню:


' команда Oven будет отображена в нормальном виде (режим «0») и отделена от
' последующих команд сепаратором – горизонтальной линией (см. два подряд идущих
' разделителя ,,);
' команда NewPage будет отображена как отключенная (см. префикс !);
' команда Lighting будет отображена как отмеченная (см. префикс ~)
DspPopupMenu(0,"Oven,,!NewPage,~Lighting");
' Второй вызов функции отображает меню на экране в позиции (10,80) и
' возвращает номер выбранной команды:
' 1, если выбрана команда Oven;
' 0, если выбрана команда NewPage (команда отключена, иначе будет
' возвращено значение 2);
' 3, если выбрана команда Lighting;
MyInternal1= DspPopupMenu(-1,"",10,80);
If MyInternal1=1 Then
PageDisplay("Oven"); ' Переход на страницу Oven
End
If MyInternal1=2 Then
PageDisplay("NewPage"); ' Переход на страницу NewPage
End
If MyInternal1=3 Then
PageDisplay("Lighting"); ' Переход на страницу Lighting
End
169

Упражнение 16.9. Создание и применение пользовательского


меню
Проверьте, что проект Training22Tmplt является активным и перейдите в среду приложения
Построитель графики Citect.
Откройте графическую страницу MyPage и разместите на ней кнопку Меню страниц в
соответствии с рис. 16.27.
Задайте свойства кнопки в соответствии с рис. 16.28. Полный текст, введенный в поле ˄ команда,
приведен ранее в листинге 16.1. В поле команды можно разместить фрагмент программы на языке
Cicode размером до 253 символов, включая управляющие символы. По этой причине в это поле
нужно включить только приведенные выше операторы языка без комментариев. Если требуется
исполнить код большего размера, то его следует оформить как пользовательскую функцию на языке
Cicode и в поле ˄ команда выполнить ее вызов.
Сохраните графическую страницу MyPage, выполните компиляцию, запустите проект и перейдите
на страницу MyPage.

Рис. 16.27. Размещение кнопки раскрывающегося меню на графической странице MyPage

Рис. 16.28. Свойства кнопки раскрывающегося меню в графической странице MyPage

Чтобы раскрыть меню, нажмите кнопку Меню страниц (рис. 16.29). Команда Oven отображается в
нормальном виде и отделена от остальных команд меню сепаратором – горизонтальной линией,
команда NewPage недоступна, а команда Lighting отмечена.
Протестируйте команды меню. Для этого выполните команду Oven меню Меню страниц. Если
пользователь обладает нужными правами доступа, будет выполнен переход на графическую
страницу Oven. Вернитесь на страницу MyPage и попытайтесь выполнить команду NewPage.
Перехода не произойдет, т. к. эта команда недоступна. Выполните команду Lighting, и будет
выполнен переход на графическую страницу Lighting.
170

Завершите работу проекта и сохраните проект.

Рис. 16.29. Вид раскрывающегося меню в графической странице MyPage


171

Глава 17. Всплывающие окна, сопоставление


имен и суперджинны. Элементы ActiveX
Всплывающие окна и окна на основе суперджиннов являются динамическими страницами, которые
можно использовать для ввода-вывода информации, когда страница отображается в процессе
работы проекта. Их обычно используют для отображения всплывающих органов управления
технологическими процессами или отдельными узлами промышленного оборудования. Одну и ту
же всплывающую страницу можно многократно использовать с различными наборами тегов.
Суперджинны представляют собой по существу шаблон всплывающей страницы. Его нельзя
непосредственно отобразить как графический объект; суперджинн позволяет динамически принять
параметры для их отображения на всплывающей странице и должен быть связан с джином, который
размещается как графический объект. Напомним, что в случае обычных всплывающих страниц,
вызываемых из джинна, требуется создавать отдельную всплывающую страницу для каждого
использования джинна. Суперджинн, как шаблон страницы, является основой для отображения
разных окон с параметрами и позволяет значительно сократить трудозатраты при выполнении
однотипных действий, связанных с отображением технологической или другой информации во
всплывающих страницах. Если специалист по интеграции работает с множеством различных
приложений, то использование суперджиннов позволяет сохранить их в файле с расширением
имя_библиотеки.ctm и легко копировать в другие проекты.

17.1. Сопоставление имен тегов


Существует целая группа функций, которые можно использовать для вызова страницы и задания
характера ее отображения. Многие из таких функций содержат список имен тегов для передачи их
в качестве параметров. В системе Citect SCADA реализован механизм передачи параметров для
отображения в вызываемой странице. Этот механизм основан на замене имен, используемых при
разработке страницы, на имена, подготавливаемые в функциях работы со страницами языка Cicode
– AssPopUp(), AssWin(), Ass() и подобных. Делается это с помощью сопоставления имен
(association).
При разработке страницы в свойствах графических объектов можно использовать ассоциативные
имена, которые обрамляются с двух сторон символами «знак вопроса» («?»). Перед именем может
быть (но не обязательно) указан тип данных, а само имя может представлять собой целое число:
?тип_данных асс_имя? или ?тип_данных число?
Например:
?digital mytag1? ?Temperature? ?real Pressure25? ?int 1? ?string 2? ?3?

Использование типа данных в ассоциативном имени не является обязательным, но если тип данных
указан, то параметр подстановки – тег – должен иметь соответствующий тип данных (digital,
int, real, string или другой используемый в системе Citect SCADA тип данных).

За м еч а н ие
Тип строковой переменной указывать обязательно.

При проектировании окна нужно предпринять еще одно действие по конфигурированию


сопоставления имен: в свойствах окна во вкладке Сопоставления для каждого ассоциативного
имени необходимо внести строку с указанием свойств сопоставления данного ассоциативного
имени.
При вызове функции, создающей или меняющей страницу, должны быть определены
сопоставления имен тегам, которое определяется тем, какая функция используется.
Во-первых, при использовании чисел в качестве ассоциативных имен сопоставление тегов
определяется порядком из расположения в вызове функции (до восьми тегов):
Имя_функции (параметры, ”ИмяТега1”, ”ИмяТега2”, …)
При этом, например, если в графических элементах окна используются ассоциативные имена –
числа: ?тип_данных 1? и ?тип_данных 3?, а другие не используются, то в вызове должен быть
пропущен второй тег, что указывается с помощью «лишней» запятой:
Имя_функции (параметры, ”ИмяТега1”, ,”ИмяТега3”)
172

Во-вторых, замена ассоциативных имен может быть подготовлена с помощью функции ассоциации
Ass, вызов которой выглядит так:
Ass(-2, ”асс_имя”, ”ИмяТега”, 0)
В случае ассоциативного имени-числа оно указывается без кавычек:
Ass(-2, число, ”ИмяТега”, 0)
После нескольких вызовов функции Ass, задающих сопоставление пар имен, должен быть сделан
вызов функции отображения окна. Имена тегов переменных будут подставлены на место
ассоциативных имен.
Сначала рассмотрим возможность отображения страниц с разными параметрами без использования
особенностей суперджиннов. Такие страницы могут быть «обычными», то есть занимать все
пространство окна, а также могут быть «всплывающими», появляющимися в новом окне
небольшого размера рядом с вызывающей кнопкой или в фиксированном месте экрана.
Определение и передача параметров в этих случаях одинакова. Для примера будем рассматривать
всплывающий вариант.

Упражнение 17.1. Создание всплывающей графической страницы


с сопоставлением имен. Проект Training21SuperGenie
Восстановите сохраненный ранее проект Training21 под именем Training21SuperGenie1 и в
дальнейшем работайте с этим проектом.
Для создания всплывающей графической страницы сначала создайте и сохраните новую пустую
страницу.
Для создания нового всплывающего окна перейдите в среду приложения
Построитель графики Citect и нажмите кнопку Новый на панели инструментов. В появившемся
окне Новый нажмите кнопку Страница, в следующем окне Использовать шаблон выберите
шаблон tab_style_1.blank, отметки Связанный и Заголовок оставьте без изменения, в поле
Разрешение: выберите XGA и нажмите кнопку OK. Задайте белый цвет фона страницы.
Разместите в левом верхнем углу созданной графической страницы три графических объекта так,
как это показано на рис. 17.1, и задайте их свойства в соответствии с рис. 17.2 — 17.4.

Рис. 17.1. Графические объекты всплывающего окна


За м еч а н ие
Созданное окно имеет два ассоциативных имени (?digital 1? и ?digital 2?), которые
используются в свойствах нескольких графических объектов.

Настройте размеры. Расположите курсор в правом нижнем углу под графическими объектами
страницы, он будет указывать необходимый размер всплывающей страницы (в строке состояния
внизу экрана будут отображаться координаты курсора относительно верхнего левого угла
страницы — в нашем случае 160, 130, где 160 является шириной, а 130 — высотой окна).
Выполните команду Файл | Свойства, в появившемся окне на вкладке Представление в поле
Ширина: укажите 160, в поле Высота: укажите 130.
Вкладка Сопоставления позволяет задать дополнительные свойства для ассоциативных имен.
Настройте эту вкладку в соответствии с рис. 17.5 (в случае, если ассоциативные имена являются
числами, вкладку Сопоставление можно не заполнять) и нажмите кнопку OK.
173

Рис. 17.2. Свойства графического объекта всплывающего окна для управления горелкой

Нажмите кнопку Сохранить на панели инструментов и сохраните страницу под именем


!BurnerValve.
За ме ч а н ие
Восклицательный знак в начале имени страницы означает, что эту страницу нельзя будет выбрать из
диалога выбора страницы в результате вызова функции PageSelect() или в меню Page во время
работы проекта.

Рис. 17.3. Свойства графического объекта всплывающего окна для управления краном трубопровода
174

Рис. 17.4. Свойства графического объекта для закрытия всплывающего окна

Рис. 17.5. Свойства ассоциативных имен на вкладке Сопоставления

Упражнение 17.2. Вызов всплывающей графической страницы с


сопоставлением имен
При выбранном проекте Training21SuperGenie1 в среде приложения Построитель графики Citect
перейдите на графическую страницу Oven.
Добавьте графический объект Кнопка и задайте его свойства в соответствии с рис. 17.6. При
нажатии мышкой на кнопку на вкладке Ввод | Касание задан вызов функции:
AssWin("!BurnerValve",240,480,1+8+512,"Burner_Stat","Gas_Valve")
Первым аргументом является имя графической страницы, следующие два аргумента задают место
расположения левого верхнего угла всплывающего окна, следующий аргумент определяет характер
отображения и поведения окна (для объяснения см. подраздел 23.3.5) Два последних аргумента в
вызове функции являются подстановками тегов для ассоциативных имен ?digital 1? и
?digital 2? соответственно.

За м еч а н ие
Имена тегов в вызове функции AssWin() указываются в кавычках. Если кавычки опустить, то вместо
имени тега функции будет передано значение тега.

Сохраните графическую страницу Oven, скомпилируйте и запустите проект


Training21SuperGenie1. Перейдите на графическую страницу Oven.
175

Рис. 17.6. Свойства графического объекта Кнопка для вызова всплывающей страницы с сопоставлением имен

Для вызова всплывающей страницы с сопоставлением имен нажмите кнопку


Вспл. окно с ассоциациями тегов (рис. 17.7). Протестируйте действие графических объектов
всплывающего окна путем последовательного нажатия кнопок Горелка вкл./выкл. и
Задвижка вкл./выкл. Для закрытия всплывающего окна нажмите нижнюю кнопку окна.
Завершите работу проекта и сохраните проект.
176

Рис. 17.7. Вызов и тестирование всплывающей страницы с сопоставлением имен

17.2. Расширенные свойства тегов (extensions)


Для того, чтобы сделать пример работы с суперджиннами более содержательным, рассмотрим
подробнее свойства тегов, которые будем использовать в упражнении.
Данные в системе Citect SCADA представлены тегами, которые являются обобщением понятия
переменной в «традиционном» программировании. Однако понятие тега является более общим и
более сложным, чем понятие упомянутой переменной: при определении тега
(Модель системы | Теги приложения Citect Studio, см. Главу 3) можно задавать многочисленные
свойства, которые в большинстве случаев имеют значения по умолчанию. Кроме этих свойств,
указываемых в таблице тегов, обратим внимание на расширения (extensions), связанные с чтением
значений тега из устройства ввода и возможностью для проектировщика или пользователя
управлять изменением значений тега.
Можно считать, что каждый тег представляет собой многоуровневую структуру данных с полями,
часть из которых меняет система, а другую часть может менять проектировщик или пользователь.
Для каждого тега, например, с дескриптором Tag1, имеются поля Field, Valid, Override,
OverrideMode, ControlMode. В свою очередь каждое из этих полей имеет поля V (от Value –
значение), T (от Timestamp – метка времени), Q (от Quality – качество), а также их комбинации –
VT и QT. Таким образом, в проекте Citect SCADA можно использовать переменные:
Tag1, Tag1.Field, Tag1.Field.V, Tag1.Field.VT, Tag1.Field.Q, Tag1.Field.QT, Tag1.Field.T,
Tag1.Valid, Tag1.Valid.V, Tag1.Override.VT, Tag1.OverrideMode.Q, Tag1.ControlMode.QT, и т.п.
Рассмотрим подробнее семантику этой многоуровневой структуры данных.
Необходимо отметить, что при получении данных из устройства ввода-вывода в системе
определяется качество передачи значений каждого тега, которое в обобщенном виде (так
называемый уровень 1) имеет одно из трех значений (см.табл. 17.1)
177

Таблица 17.1 Качество значений тегов

Название в Cicode Значение Описание

Плохое качество, значение тега в


системе не отражает состояние
входа в устройстве ввода-вывода.
QUAL_BAD 0x00 Причины указаны в поле качества
уровня 2 и 3 (см. справку по
системе, в настоящем пособии не
рассматривается).

Качество значения тега не


определено, причины указаны в
QUAL_UNCR 0x01 поле качества уровня 2 и 3 (см.
справку по системе, в настоящем
пособии не рассматривается).

QUAL_GOOD 0x03 Качество значения тега хорошее.


Метки времени представлены в формате Timestamp (всегда в Coordinated Universal Time, UTC),
который является 64-разрядным двоичным числом единиц времени в 100 нс начиная с 1 января 1601
года.
Значения тега, получаемые из устройства ввода-вывода, отражаются в полях тега Field и Valid:
• поля тега Field отражают последнее полученное из устройства ввода-вывода значение
• поля тега Valid отражают последнее полученное из устройства ввода-вывода значение
хорошего качества.
Упомянутые выше переменные можно пояснить следующим образом:
Tag1.Field.V – последнее полученное из устройства ввода-вывода значение
Tag1.Field.VT – время получения последнего значения из устройства ввода-вывода
Tag1.Valid.V – последнее полученное из устройства ввода-вывода значение хорошего качества
Tag1.Valid.VT – время получения последнего значения хорошего качества из устройства ввода-
вывода и т.д.
За м еч а н ие
Переменные Tag1, Tag1.Field и Tag1.Field.V представляют одно и то же значение, если режимы
замещения (OverrideMode) и управления записью (ControlMode) установлены в значения по умолчанию
(имеют нулевые значения). То же касается переменных Tag1.Valid и Tag1.Valid.V, а также других
подобных пар полей.

В том случае, если оператор обнаружил, что читаемые значения тега некорректны, например, из-за
неисправного датчика или ошибок коммуникаций, он может решить, что в SCADA-системе следует
использовать принудительно устанавливаемые значения тега – это и есть режим замещения
значений тега (режим Override). В программируемых контроллерах подобный вариант изменения
значений при отладке или эксплуатации системы управления называется форсированием. Режим
замещения значений тега может быть статическим или динамическим, причем в системе
Citect SCADA имеется три варианта статического режима, различающиеся начальным
принудительным значением. В статическом режиме пользователь может устанавливать значение
тега, а в динамическом это делает система (не пользователь). Переменная Tag1.OverrideMode.V
определяет режим замещения для тега Tag1 и может принимать следующие значения:
0 – режим замещения отключен
1 – статический режим замещения, начальным значением тега является значение Tag1.Field.V в
момент включения режима
2 – статический режим замещения, начальным значением тега является значение Tag1.Valid.V в
момент включения режима
3– статический режим замещения, начальным значением тега является последнее значение
замещения, которое было перед предыдущим выходом из режима замещения
178

4 – динамический режим, при котором тег повторяет текущее значение хорошего качества
(Tag1.Valid.V), причем запись значения тега со стороны пользователя запрещена.
Еще одна возможность по управлению изменениями тега связана с управлением записью значений
тега в устройство ввода-вывода: запись со стороны SCADA-системы можно запретить, что является
подчас очень важным при отладке, запуске в эксплуатацию системы управления или внесению
изменений. Этот режим носит название запрета записи значений тега (Control Inhibit). Переменная
Tag1.ControlMode.V имеет значения:
0 – режим запрета записи отключен
1– режим запрета записи включен.
В проекте, созданном на основе системного проекта Tab_Style_Include и стиля Tab_Style_1 имеются
стандартные страницы для задания указанных специальных режимов для каждого тега или группы
тегов. Это может сделать привилегированный пользователь на странице отображения списка тегов
(подобно тому, как можно менять значения тегов – см. упр. 3.7). Ввиду того, что при ненулевом
режиме замещения или ненулевом режиме запрета записи проект в системе Citect SCADA
выполняет предусмотренные при разработке функции с важными особенностями (например,
отображаются не считываемые из устройства ввода значения тега, а значения, установленные
оператором; вводимые оператором значения тега не передаются в устройство вывода), то в системе
предусмотрены следующие дополнительные возможности по информированию оператора о таких
особенностях:
• имеются две стандартные страницы для отображения списка тегов, значения которых
замещаются (Manual Override) и значения которых запрещено записывать (Control
Inhibit);
• графические объекты, которые анимируют теги, находящиеся в рассматриваемых режимах,
отображаются дополнительно специальным образом – выделяются цветом фона,
отмечаются сеткой из точек и т.п.
Характером отображения можно управлять с помощью параметров на странице [Page] файла
Citect.ini. (в настоящем пособии используются стандартные настройки включенного проекта и эти
вопросы не рассматриваются – для настройки, отличной от стандартной, см. справку по системе).

Упражнение 17.2. Изменение расширенных свойств тегов на


стандартных страницах
Запустите проект Training21SuperGenie1 на выполнение и перейдите на графическую страницу
Variable Tags (Теги-переменные). Зарегистрируйтесь как привилегированный пользователь
(например, MAIN_USER / USER) и, указывая мышью на какую-либо строку списка тегов, нажмите
на правую кнопку мыши. Вы можете выбрать режим замещения. На рис. 17.8 отмечен статический
режим замещения для тега Oven_Temp, начальное значение в котором повторяет последнее
значение замещения, которое тег имел тогда, когда режим замещения был включен предыдущий
раз. При первом включении после запуска (а это наш случай) начальное значение принято нулевым
для дискретных и числовых тегов, а для строковых тегов начальным значением является пустая
строка. Выберите любой статический режим замещения для тега Oven_Temp. Для дискретного тега
Gas_Valve выберите режим запрета записи. Код режима отображается в соответствующих
колонках.
Перейдите на страницы Manual Override (см. рис. 17.9) и Control Inhibit. Убедитесь, что они не
пустые и содержат по одному тегу, находящемуся в соответствующем режиме.
Перейдите на страницу Oven. Убедитесь, что графические объекты, в которых используются теги
Oven_Temp и Gas_Valve, отмечены сеткой из точек (рис. 17.10). Таким образом система
показывает, что эти теги находятся в специальных режимах – замещения значений и запрета
записи – и их связь с устройствами ввода-вывода организована особым образом.
179

Рис. 17.8. Установка режима замещения значения для тега Oven_Temp

Рис. 17.9. Стандартная страница со списком тегов, находящихся в режиме замещения значений

Рис. 17.10. Отображение графических объектов с сеткой точек в случае специальных режимов тегов
180

17.3. Создание и использование суперджиннов


В суперджиннах используется сопоставление имен, что создает условия для динамической передачи
имен тегов. Так как суперджинн – это шаблон всплывающего окна с параметрами, должен быть
создан также джинн, который будет содержать функцию, вызывающую окно-суперджинн с
подстановкой фактических параметров при каждом размещении джинна на графической странице
для любого тега проекта. Для того, чтобы были подготовлены динамические передачи параметров
в создаваемые исполнительной системой окна из разных графических объектов-размещений
джиннов в процессе работы системы, джинн требуется связать с шаблоном-суперджинном. В
результате среди графических страниц проекта появится новое окно, имеющее имя суперджинна,
но редактировать его или даже открыть для просмотра как окно нельзя – оно представляет собой
созданную на основе суперджинна заготовку окна для вызова в процессе работы.

Упражнение 17.3. Создание суперджинна для отображения


информации о расширенных свойствах тега
Создадим суперджинн для отображения информации о расширенных свойствах и специальных
режимах одного тега.
Проект Training21SuperGenie1 должен быть активным; запустите приложение Построитель
графики Citect. Создайте новый суперджинн с именем !SG_mytag. Для этого нажмите на иконку
Новый и в появившемся окне выберите самую нижнюю кнопку Суперджинн. Создайте текстовые
и числовые графические объекты, ориентируясь на рис. 17.11.

Рис. 17.11. Суперджинн !SG_mytag для отображения расширенных свойств тега, который заменит
ассоциативное имя ?mytag?

Все графические объекты являются текстовыми (за исключением иконки внизу окна для выхода).
Следующие текстовые поля приведены для пояснений других полей и не имеют анимации:
Значение, полученное из устройства В/В
во время
Последнее значение хорошего качества
Значение замещения
Три текствых поля «###.#» имеют отображаемые значения и всплывающие подсказки,
соответственно:
?mytag?.Field.V и Прочитанное значение тега ?mytag?
?mytag?.Valid.V и Значение хорошего качества тега ?mytag?
181

?mytag?.Override.V и Принудительное значение тега ?mytag?


На рис. 17.12 для примера показана конфигурация верхнего текстового поля «###.#». Два других
поля «###.#» анимированы аналогично.

Рис. 17.12. Конфигурация текстового поля ###.# суперджинна !SG_mytag

Конфигурация текстового поля «=timestamptostr(?mytag?.Field.VT, 7)» состоит в отображении


строкового значения:
timestamptostr(?mytag?.Field.VT, 7),
которое представляет собой вызов функции Cicode, преобразующей метку времени в формате
Timestamp (первый параметр) в строку в соответствии со вторым параметром. Значение «7» задает
вывод даты и времени с точностью до секунды. Вызов этой же функции выполняется для вывода
меток времени расширенных свойств с полями Valid и Override.
Конфигурация еще двух текстовых полей, набранных заглавными буквами, показана на рис. 17.13
и рис. 17.14.
Конфигурацию иконки для закрытия выполните в соответствии с ранее показанным рис. 17.4.

Рис. 17.13. Конфигурация текстового поля суперджинна !SG_mytag


182

Рис. 17.14. Конфигурация текстового поля суперджинна !SG_mytag

Укажите также свойства страницы (измените ее размеры и заполните строку для сопоставления
имен) в соответствии с рис. 17.15.

Рис. 17.15. Свойства страницы суперджинна !SG_mytag

Сохраните суперджинн с именем !SG_mytag. Появится окно с предупреждением о необходимости


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

Рис. 17.16. Обновление страниц в активном проекте


183

Упражнение 17.4. Джинн: присоединение суперджинна и


размещение экземпляров джинна на графической странице
Для того, чтобы обеспечить отображение расширенных свойств разных тегов в нашем проекте,
создадим джинн, экземпляры которого на странице Oven будут вызывать всплывающие окна,
создаваемые динамически на основе шаблона – созданного нами суперджинна.
Выполните команду Файл | Новый и создайте джинн. Разместите на странице джинна кнопку
(рис. 17.17) со свойствами, указанными на рис. 17.18.

Рис. 17.17. Размещение кнопки в новом джинне

Команда на вкладке Ввод | Касание состоит в вызове двух функций Cicode:


Ass(-2,"mytag","%MyTagToGet%",0);
WinNewAt("!SG_mytag",475,0,1+16+512)
Первый вызов связывает ассоциативное имя суперджинна с тегом – параметром джинна, второй
создает новое окно на основе страницы суперджинна, левый верхний угол которого находится в
точке (475,0). Последний параметр «1+16+512» определяет поведение окна (см. подраздел 23.3.5)

Рис. 17.18. Свойства кнопки в джинне MySG_TagQuality


184

Не забудьте точку анимации джинна переместить в левый верхний угол кнопки, как показано на
приведенном выше рис. 17.17. Выполните также действие по присоединению используемого
суперджинна !SG_mytag к джинну. Для этого выполните команду
Правка | Присоединить суперджинны (рис. 17.19). В появившемся окне нажмите кнопку
Добавить, выберите суперджинн !SG_mytag в библиотеке Training и нажмите OK и еще раз OK
для закрытия окна присоединения. Сохраните джинн под именем MySG_TagQuality в библиотеке
Training.

Рис. 17.19. Присоединение суперджинна !SG_mytag к джинну

Откройте страницу Oven и разместите три экземпляра созданного джинна MySG_TagQuality на


свободном месте страницы, например, так, как показано на рис. 17.20. При размещении экземпляров
джинна указывайте в качестве параметров имена трех тегов: Gas_Valve, Burner_Stat и Oven_Temp
и их тип данных. В случае необходимости для выравнивания кнопок используйте команду меню
Порядок | Выровнять…
Откомпилируйте и запустите проект. Перейдите на страницу Oven и посмотрите, с какой
информацией открываются всплывающие окна при нажатии мышкой на три новые кнопки.
Зарегистрируйтесь как привилегированный пользователь (например, MAIN_USER / USER) и
перейдите на страницу переменных-тегов Variable Tags. Измените расширенные свойства тегов
так, как это было сделано в упражнении 17.2. Перейдите на страницу Oven и проанализируйте
информацию, отображаемую во всплывающих окнах с учетом подсказок. Вариант того, как может
выглядит страница Oven, показан на рис. 17.21. Из рисунка понятно, что теги Gas_Valve и
Temp_Oven находятся в специальных режимах отображения (графические объекты, которые
анимированы этими тегами, имеют сетку из точек). Последнее полученное из устройства ввода-
вывода значение тега Temp_Oven было значением хорошего качества (значения Field и Valid
получены в одно и то же время, и они совпадают), но начиная с указанного времени (9:27:07) для
тега Temp_Oven установлен статический режим замещения (оператором принудительно
установлено значение 78 градусов). Режим запрета записи значения тега Temp_Oven в устройство
ввода-вывода не установлен.
185

Поэкспериментируйте с изменением значений тегов и режимов, связанных с расширенными


свойствами, переходя между страницами Oven и Variable Tags и анализируя отображаемую
информацию. Закройте и сохраните проект Training21SuperGenie1.

Рис. 17.20. Размещение экземпляров и указание параметров джинна MySG_TagQuality в Построителе


графики на странице Oven

Рис. 17.21. Использование суперджинна !SG_mytag в трех экземплярах джинна MySG_TagQuality в процессе
исполнения проекта на странице Oven

17.4. Объекты ActiveX


Citect SCADA позволяет включать в графические страницы проектов управляющие элементы (или
объекты) ActiveX. Это дает возможность пользоваться объектами ActiveX, разработанными как в
рамках Citect SCADA, так и вне Citect SCADA.
186

Важно иметь в виду, что поведение объекта ActiveX в значительной мере определяется свойствами
самого объекта. Функциональность, надежность и пригодность объекта к использованию с
Citect SCADA будут зависеть от способа создания этого объекта разработчиком. Также надо иметь
в виду, что возможность использования конкретного объекта ActiveX зависит от его установки на
компьютере, поэтому на разных компьютерах могут быть доступны для использования разные
наборы объектов ActiveX.
Объект ActiveX включается в проект Citect SCADA с помощью Построителя графики Citect.
Воспользовавшись кнопкой ActiveX палитры графических объектов можно выбирать объекты
ActiveX для использования в своих графических страницах. Это действие похоже на вставку
обычных графических объектов: как и другие графические объекты, их можно перемещать,
копировать и изменять их размеры.
В системе Citect SCADA многие важные и полезные свойства обеспечиваются с помощью объектов
ActiveX, входящих в систему стандартным образом. Например, анализатор технологических
процессов Process Analyst, работе с которым посвящена Глава 8, реализован в системе как объект
ActiveX. Также такими объектами являются графический управляющий элемент обмена
информацией с базами данных, планировщик для создания расписаний, управляющий элемент Vijeo
Web Gate.
Решим задачу использования объекта ActiveX на графической странице рассматриваемого проекта
Training21SuperGenie1.

Упражнение 17.5. Использование объекта ActiveX


Проверьте, что проект Training21SuperGenie1 является активным. Перейдите в среду
Построителя графики Citect и откройте графическую страницу Oven. С помощью команды меню
Правка | Вставить управляющий элемент ActiveX… или с помощью палитры графических
объектов выберите вставку объекта ActiveX. Будет выведено окно с установленными на
компьютере объектами ActiveX. Выберите управляющий элемент CiMeterX.TechMeter
(рис. 17.22), который представляет собой круговой стрелочный индикатор.

Рис. 17.22. Выбор управляющего элемента ActiveX для вставки на страницу Oven

Изучите свойства графического объекта, которые будут выведены в открывшемся окне. Обратите
внимание на вкладки Представление (General), Представление (Привязка тегов) и
Представление (Configure). Заполните поля этих вкладок в соответствии с рис. 17.23. Закройте
окно свойств и разместите графический объект на странице Oven, например, так, как показано на
рис. 17.24.
Для работы с объектами ActiveX язык Cicode имеет ряд функций, описание которых содержится в
справке по функциям языка Cicode. Пример использования некоторых из этих функций рассмотрен
ранее в разд. 8.1.
187

Рис. 17.23. Конфигурация управляющего элемента CiMeterX.TechMeter


Выполните компиляцию, запустите проект и перейдите на графическую страницу Oven.
Протестируйте работу нового графического объекта на странице. Возможный вид графической
страницы Oven при исполнении проекта приведен на рис. 17.25.

Рис. 17.24. Размещение выбранного управляющего элемента на графической странице Oven


Большинство объектов ActiveX сопровождается поясняющей документацией. Некоторые из них,
например, Анализатор процессов, имеют развернутую справку по использованию. Другие могут
иметь простые текстовые подсказки, кратко поясняющие каждое свойство. Это зависит от того, что
разработчик решил включить в комплект поставки.
188

Рис. 17.25. Вид страницы Oven с управляющим элементом ActiveX


189

Часть 2. Основы языка Cicode в системе


Citect SCADA
В Части 2 пособия последовательно приведено краткое описание языка Cicode, рассмотрены
интегрированная среда разработки (ИСР) Cicode-программ и особенности использования языка
Cicode в системе Citect SCADA. В Части 2 используются рисунки-копии окон Citect SCADA,
оформленные в двух стилях: заголовок размещен на полосе белого цвета, и заголовок размещен на
полосе синего цвета. Первый вариант характерен для Citect SCADA 2016, а второй – для систем
Citect более ранних версий. В обоих случаях программы Cicode и их фрагменты исполняются
одинаково.

Глава 18. Язык Cicode: назначение языка,


структура программы, данные
Язык Cicode является специализированным языком, предназначенным для использования в системе
Citect SCADA. Его отличительной особенностью является наличие обширной библиотеки
стандартных функций, обеспечивающих полную программную поддержку различных средств
Citect SCADA. Стандартные функции сгруппированы следующим образом (названия групп
стандартных функций перечислены в алфавитном порядке слева направо и сверху вниз):
 Accumulator Functions  ActiveX Functions
 Alarm Functions  Alarm Filter Functions
 Clipboard Functions  Color Functions
 Cluster Functions  Communication Functions
 DDE Functions  Device Functions
 Display Functions  DLL Functions
 Equipment Database Functions  Error Functions
 Event Functions  File Functions
 Form Functions  Format Functions
 FTP Functions  FuzzyTech Functions
 Group Functions  I/O Device Functions
 Keyboard Functions  Mail Functions
 Math/Trigonometry Functions  Menu Functions
 Miscellaneous Functions  .Net Functions
 Page Functions  Plot Functions
 Process Analyst Functions  Quality Functions
 Report Functions  Scheduler Functions
190

 Security Functions  Sequence of Events (SOE) Functions


 Server Functions  SPC Functions
 SQL Functions  String Functions
 Super Genie Functions  Table (Array) Functions
 Tag Functions  Task Functions
 Time/Date Functions  Timestamp Functions
 Trend Functions  Window Functions
 XML Functions 

Характеристика групп функций и отдельных функций будет приведена далее и имеется в
справочной системе [3], тема Cicode Programming Reference. Язык Cicode использует средства,
присущие языкам C и Visual Basic, но не является языком объектно-ориентированного
программирования. Язык интегрирован в систему Citect SCADA в виде приложения
Редактор Cicode (рис. 18.1), которое, по сути, представляет собой интегрированную среду
разработки, отладки и выполнения Cicode-программ. Запустить Редактор Cicode можно также из
Построителя графики Citect (позиция меню Средства)

Рис. 18.1. Вызов Редактора Cicode из среды Citect Studio

18.1. Структура Cicode-программы


Cicode-программа проекта представляет собой один или несколько Cicode-файлов с расширением
.ci и/или включаемых Cicode-файлов с расширением .cii. Эти файлы можно создавать,
просматривать и изменять в Редакторе Cicode (рис. 18.2). Кроме того, фрагменты Cicode-
программы могут использоваться в диалогах настройки свойств графических объектов приложения
(см. многочисленные примеры действий на языке Cicode, начиная с рис. 3.20 и заканчивая
рис. 17.18).
Никлаус Вирт, создатель языка Паскаль, дал следующее определение программы:
Программа = Структуры данных + Алгоритмы
191

Структуры данных представляют то, что обрабатывает программа (данные — переменные,


массивы), а алгоритмы определяют, каким образом данные будут обработаны (представлены
операторами и функциями языка). В соответствии с Н. Виртом, далее рассмотрим сначала данные,
а затем операторы и функции языка Cicode.

Рис. 18.2. Фрагмент списка Cicode-программ проекта Example

18.2. Данные языка Cicode


В качестве данных в Cicode-программе можно использовать константы, переменные, массивы и
теги переменных, которые могут иметь различные типы.

18.2.1. Типы данных


Типы данных языка Cicode представлены в табл. 18.1.
За ме ч а н ие
При вводе служебного слова с использованием строчных символов по окончании ввода служебного
слова строчные символы автоматически заменяются на прописные, а служебное слово выделяется
синим цветом.
192

Таблица 18.1. Типы данных языка Cicode

Служебное слово
(прописные Диапазон
Тип данного (формат)
символы, выделение значений
синим цветом)

INT Целое число (32 бита) От -2 147 483 648


до +2 147 483 647
REAL Число с плавающей точкой (64 бита) От -1.7E308 до
1.7E+308
с точностью 15
десятичных цифр
STRING Текстовая строка (не более 128 символов, ASCII с
включая нуль-символ) завершающим
нулевым
символом
OBJECT Управляющий элемент ActiveX (32 бита)
QUALITY Качество коммуникации тега с устройством QUAL_GOOD,
ввода-вывода (64 бита) QUAL_BAD,
QUAL_UNCR и
значения
подуровней
TIMESTAMP Метка времени, представляет целое число От 0 до 2E64-1
100-наносекундных интервалов с 1 января
1601 года (64 бита)

Со в ет
1.Если необходимо определить тип данных DIGITAL, используемый в тегах переменных, то можно
для этого использовать тип INT (при этом TRUE экв. 1, а FALSE экв 0).

2.Cicode хранит числа с плавающей точкой как 64-битовые числа для уменьшения ошибок округления
при выполнении вычислений с плавающей точкой. При сравнении значений типа данных REAL
рекомендуется использовать функцию округления Round() перед выполнением сравнения.

18.2.2. Определение переменных


Определение переменной, в общем случае, может содержать до шести полей, из которых три поля
не являются обязательными (они заключены в квадратные скобки):
[<Область_действия>]<Тип><Имя>[=<Начальное_значение>]<;>[<Комментарий>]
Необязательное поле Область действия переменной может иметь значение GLOBAL (переменная
доступна во всех файлах Cicode-программы), MODULE (переменная доступна только в одном
файле Cicode-программы, в котором она определена на внешнем уровне) или LOCAL (по
умолчанию, переменная доступна только в одной функции Cicode-программы, внутри которой она
определена).
Обязательное поле Тип переменной должно содержать ключевое слово INT, REAL, STRING,
OBJECT, QUALITY или TIMESTAMP.
Обязательное поле Имя переменной содержит идентификатор переменной, первые 32 символа
которого должны быть уникальными. Только первые 32 символа и будут восприниматься
компилятором.
В необязательном поле Начальное значение переменной может содержать соответствующую
константу.
В необязательном поле Комментарий помещают текст, поясняющий назначение переменной. Поле
комментария может начинаться символом <!> и тогда оставшаяся часть строки будет
комментарием.
193

18.2.2.1. Правила именования переменных


Рекомендуется использовать следующие правила именования переменных, сведенные в табл. 18.2.

Таблица 18.2. Правила именования переменных

Префикс
Тип идентификатора Область применения переменной
переменной

INT (32 бита) i Для индексов и счетчиков циклов


INT и OBJECT (32 бита) h Для дескрипторов
INT (32 бита) b Для булевских переменных
(TRUE/FALSE)
REAL (64 бита) r
STRING (до 127 символов) s

За ме ч а н ие
Для переменных с областью действия GLOBAL и MODULE перед префиксами, указанными в
табл. 18.2, рекомендуется использовать соответственно префиксы g и m.

18.2.2.2. Примеры определения переменных


Примеры определения переменных и вид ИСР Cicode-программы приведены на рис. 18.3.

Рис. 18.3. Примеры определения переменных и вид ИСР Cicode-программы

Со в ет
Обратите внимание на ступенчатую запись, оформление комментариев и цветовые выделения в ИСР.

18.2.3. Определение массивов


Определение массивов имеет такой же синтаксис, что и определение переменных, но имеются
отличия в заполнении трех полей.
В поле Область действия можно использовать только служебные слова GLOBAL и MODULE (по
умолчанию). Объясняется это тем, что не предусмотрено определение массива внутри функции.
В поле Имя указывается не только имя массива, но и его размеры. Каждый из размеров массива
указывается внутри пары квадратных скобок, как это будет показано далее. Для одномерного
массива (вектора) внутри пары квадратных скобок задается только его единственный размер,
означающий количество элементов массива. Для двумерного массива (матрицы) после имени
массива используется две пары квадратных скобок — внутри первой задается число строк матрицы,
а внутри второй — число столбцов матрицы. Для трехмерного массива, который можно
интерпретировать как вектор матриц, после имени массива следуют три пары квадратных скобок,
внутри, каждой из которых задается один из размеров массива. Массивы большей размерности не
предусмотрены.
В поле Начальное значение задается не одно начальное значение, а их список, в котором
начальные значения элементов массива отделены друг от друга запятыми. Если это поле
194

отсутствует, то выполняется автоматическая инициализация значений элементов массива нулями


(пустыми строками). Примеры определения массивов приведены на рис. 18.4.

Рис. 18.4. Примеры определения массивов

Как следует из приведенных примеров, обращение к элементам массивов выполняется с помощью


индексных выражений, записываемых внутри квадратных скобок, помещаемых после
идентификатора массива. Как и в языке C, индексация начинается с нуля. Следовательно,
максимальное значение индексного выражения должно быть на единицу меньше соответствующего
размера массива.
Со в ет
Обратите внимание на использование функции Message(), которая использована для отладочного
вывода.

В примере, приведенном на рис. 18.4, определение одномерного массива строк gsArray1 совмещено
с инициализацией его элементов. При этом элементы массива получают следующие значения:
gsArray1[ 0 ] = "This"
gsArray1[ 1 ] = "is"
gsArray1[ 2 ] = "a"
gsArray1[ 3 ] = "String"
gsArray1[ 4 ] = "Array"
Примеры определения двумерного и трехмерного массивов с инициализацией его элементов
иллюстрирует рис. 18.5. Двумерные массивы (матрицы) располагаются в памяти построчно и в
таком же порядке инициализируются. Аналогичным образом выполняется и обработка трехмерных
массивов.

Рис. 18.5. Примеры определения двумерного и трехмерного массивов с инициализацией элементов

18.3. Константы языка Cicode


Константы языка Cicode можно записывать в виде литералов или в форме именованных констант.
Приведем примеры констант-литералов:
1.0e-3, -2.4 (тип REAL); 255, -100 (тип INT); 0xFF (шестнадцатеричная константа, тип
INT); TRUE/FALSE (булевские константы, тип INT); "Строка" (строковая константа)
195

Константы можно записывать также в виде именованных констант. В этом случае идентификатор
константы должен иметь префикс c, а константа определена и инициализирована в начале файла
Cicode:
MODULE REAL cmrPI = 3.14; ! Именованная константа
! Именованная константа
GLOBAL STRING cgsProjectName = "Generic";

FUNCTION
tst( )
Message( "cmrPI", cmrPI, 0 );
Message( "cgsProjectName", cgsProjectName, 0 );
END

За ме ч а н ие
К сожалению, приходится констатировать, что в языке Cicode разрешено изменять значения
именованных констант. (Однако, очевидно, такие действия определяются желанием автора проекта.)
196

Глава 19. Операторы языка Cicode


Далее — о второй "стороне медали". Перейдем к рассмотрению операторов языка и их составных
частей — выражений.

19.1. Выражения языка Cicode


В состав многих операторов языка входят выражения, которые мы и рассмотрим далее. Выражения
строятся из операндов (участников выражения) и знаков операций. В качестве операндов выражения
можно использовать константы, переменные, в том числе теги переменных, элементы массивов и
указатели функций, имеющих возвращаемые значения. Знаки операций можно разделить на знаки
арифметических, битовых операций, операций отношений и логических операций.
19.1.1. Арифметические операции
Арифметические операции предназначены для арифметических вычислений над целыми
операндами или операндами с плавающей точкой. При этом левый и правый операнды могут иметь
неодинаковые типы (исключение — операция MOD требует целых операндов). В случае оператора
присваивания тип результата приводится к типу переменной в левой части оператора присваивания.
Знаки арифметических операций представлены в табл. 19.1.
Таблица 19.1. Арифметические операции языка Cicode

Обозначение Назначение

+ Сложение
- Вычитание
* Умножение
/ Деление
MOD Получение остатка от деления целого на целое
Операцию сложения можно использовать также для конкатенации двух строк (приписывания к
первой строке второй строки). Примеры использования арифметических операций иллюстрирует
рис. 19.1. Обратите внимание на возможность использования в Cicode-программе комментариев в
стиле языка C++.

19.1.2. Битовые операции


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

Рис. 19.1. Примеры использования арифметических операций


197

Таблица 19.2. Побитовые операции языка Cicode

Обозначение Назначение

BITAND Побитовое логическое умножение (конъюнкция) строки битов


BITOR Побитовое логическое сложение (дизъюнкция) строки битов
BITXOR Побитовое сложение по модулю 2 (исключающее ИЛИ) строки
битов

Рис. 19.2. Примеры использования операций над битами

19.1.3. Операции отношений


С помощью операций отношений можно сравнивать значения операндов, в том числе операндов
строкового типа. В случае сравнения строк оба операнда должны быть строками. При сравнении
арифметических значений операнды могут быть любого арифметического значения ( INT или REAL).
Знаки операций отношений представлены в табл. 19.3. Результатом вычисления операции
отношения является значение логического (целого) типа — TRUE (1) или FALSE (0). Примеры
использования операций отношений приведены на рис. 19.3.
Таблица 19.3. Операции отношений языка Cicode

Обозначение Назначение

= Проверка на равенство
<> Проверка на неравенство
< Проверка на "меньше"
> Проверка на "больше"
<= Проверка на "меньше или равно"
>= Проверка на "больше или равно "

19.1.4. Логические операции


С помощью логических операций можно проверить выполнение или невыполнение совокупности
условий (двух или более). Знаки логических операций представлены в табл. 19.4. Результатом
вычисления логической операции является значение логического (целого) типа — TRUE (1) или
FALSE (0). Примеры использования логических операций приведены на рис. 19.4.

19.1.5. Приоритеты (порядок выполнения) операций


Приоритеты (порядок выполнения) рассмотренных операций показаны в табл. 19.5. Каждая строка
таблицы содержит операции, имеющие одинаковый приоритет, причем, чем выше расположена
строка таблицы, тем выше приоритет операций соответствующей строки. Если выражение содержит
две или более операции одинакового приоритета, то операции выполняются в том порядке, в каком
они встречаются в записи выражения при его просмотре слева направо.
198

Рис. 19.3. Примеры использования операций отношений

Таблица 19.4. Логические операции языка Cicode

Обозначение Назначение

AND Логическое умножение


OR Логическое сложение
NOT Логическое отрицание

Рис. 19.4. Примеры использования логических операций

Таблица 19.5. Приоритеты (порядок выполнения) операций языка Cicode

Обозначение Назначение

() Круглые скобки, самый высокий приоритет


NOT Логическое отрицание, унарная операция
* / MOD Арифметические мультипликативные операции (бинарные)
: Операция форматирования (см. об этом далее в разд. "Операторы")
+ - Арифметические аддитивные операции (бинарные)
< > <= >= Операции отношений (бинарные)
= <> Операции отношений (бинарные)
AND Логическое умножение, бинарная операция
OR Логическое сложение, бинарная операция
BITAND BITOR Операции над строками бит (бинарные), самый низкий приоритет
BITXOR
199

Операторы языка Cicode можно разделить на три группы — операторы присваивания, операторы
ветвлений (условный IF … THEN и переключатель SELECT CASE) и циклические операторы
(FOR … DO и WHILE … DO). Этого достаточно для программирования любых алгоритмов.

19.2. Оператор присваивания


Оператор присваивания имеет следующую структуру:
Переменная или элемент_массива = выражение;
Оператор присваивания обрабатывается следующим образом. Вначале вычисляется значение
выражения, стоящего справа от знака присваивания. В частном случае выражение может иметь вид
переменной, тега переменной или константы и тогда вычисление не требуется. Затем полученное
значение приводится к типу переменной или элемента массива, записанному слева от знака
присваивания. На последнем этапе преобразованное значение присваивается переменной или
элементу массива. Примеры использования операторов присваивания приведены на рис. 19.5.
Со в ет
Обратите внимание на преобразование вычисленных значений выражений и на то, что использование
цепочек присваиваний в одном операторе не разрешено.

Язык Cicode предоставляет четыре стандартных функции для преобразования целых и


вещественных значений в строки и наоборот — IntToStr (преобразование переменной или
выражения целого типа в строку), RealToStr (преобразование переменной или выражения
вещественного типа в строку), StrToInt (преобразование переменной или выражения строкового
типа в целое) и StrToReal (преобразование переменной или выражения строкового типа в
вещественное значение). Также имеются функции для преобразования значений типов данных
QUALITY и TIMESTAMP (см., например, подраздел 17.3)
За ме ч а н ие
Выполнять преобразования данных можно автоматически и без использования перечисленных
стандартных функций (см. приведенные ранее примеры на рис. 19.5). Но чтобы обеспечить полный
контроль над процессом преобразования, все же предпочтительнее использование указанных
стандартных функций. И еще одно важное замечание — переменные с типом OBJECT нельзя
преобразовать ни к какому другому типу.

Рис. 19.5. Примеры использования операторов присваивания

Различные примеры преобразования целого значения в строку приведены на рис. 19.6.


Со в ет
Обратите внимание на форматирование результирующей строки (:#####) и комментарий на рис. 19.6,
относящийся к форматированию.
200

Рис. 19.6. Примеры преобразования целого значения в строку

Различные примеры преобразования вещественного значения в строку приведены на рис. 19.7.

Рис. 19.7. Примеры преобразования вещественного значения в строку

Со в ет
Обратите внимание на смысл аргументов в вызове функции RealToStr и средства форматирования
результирующей строки при автоматическом преобразовании (см. приведенный ранее рис. 19.7).

Различные примеры преобразования строки в целое значение приведены на рис. 19.8.

Рис. 19.8. Примеры преобразования строки в целое значение

Со в ет
Внимательно изучите приведенные примеры — это очень полезно.
201

Различные примеры преобразования строки в вещественное значение приведены на рис. 19.9.

Рис. 19.9. Примеры преобразования строки в вещественное значение

19.2.1. Форматирование текстовых строк. Использование


Escape-последовательностей
Строки можно форматировать, используя операцию конкатенации строк (приписывания,
обозначается знаком «+») и Escape-последовательности. Различные примеры подобного
форматирования строк приведены на рис. 19.10. Обратите внимание на использование в одном из
примеров Escape-последовательности. Полный перечень Escape-последовательностей приведен в
табл. 19.6.

Рис. 19.10. Примеры форматирования строк

Таблица 19.6. Escape-последовательности языка Cicode

Обозначение Назначение
^b Возврат - backspace
^f Подача страницы - form feed
^n Новая строка - new line
^t Горизотальная табуляци - horizontal tab
^v Вертикальная табуляция - vertical tab
^' Одиночная кавычка - single quote
^" Двойные кавычки - double quote
^^ Символ «крышечка» - Caret
^r Возврат каретки - carriage return
^0xhh Шсстнадцатиричный код hh (например, ^0x1A)
202

19.3. Операторы ветвлений


К операторам ветвлений относятся условный оператор, который можно записывать в полной или
сокращенной форме, и переключатель.

19.3.1. Условный оператор


Условный оператор IF обеспечивает выполнение одного или нескольких операторов в зависимости
от значения проверяемого выражения. Оператор IF можно использовать в полной (IF THEN ELSE)
или сокращенной (IF THEN) формах:
! Сокращенная форма
IF <выражение> THEN
оператор(ы); ! Выполняются, если проверяемое <выражение>
! имеет ненулевое значение
END
! Полная форма
IF <выражение> THEN
оператор(ы); ! Выполняются, если проверяемое <выражение>
! имеет ненулевое значение
ELSE
оператор(ы); ! Выполняются, если проверяемое <выражение>
! имеет нулевое значение
END
Здесь в качестве оператора(ов) можно использовать любые операторы языка, в том числе
условный оператор IF в полной или сокращенной форме и тогда получаем гнездо вложенных
операторов IF.
Примеры использования условного оператора IF приведены соответственно на рис. 19.11 — 19.13.

Рис. 19.11. Пример использования условного оператора IF в полной форме

Рис. 19.12. Пример использования условного оператора IF в сокращенной форме


203

Со в ет
Если внешний оператор IF в гнезде условных операторов записан в полной форме, то вложенный
оператор IF помещайте в ветвь ELSE. В этом случае код получается более понятным и его проще
сопровождать. Обратите внимание на ступенчатую запись условных операторов IF и их построчное
расположение.

19.3.2. Переключатель
Переключатель выполняет одну из групп операторов в зависимости от значения проверяемого
выражения. Переключатель является более эффективным способом записи кода по сравнению с
гнездом операторов IF и его использование предпочтительнее. Переключатель можно использовать
всегда, когда проверяемое выражение единственное. В отличие от других языков
программирования проверяемое выражение может быть любого типа, кроме типа OBJECT.

Рис. 19.13. Пример использования гнезда условных операторов IF

В общем случае переключатель имеет следующий формат:


SELECT CASE Проверяемое_выражение
CASE Выражение_варианта1, Выражение_варианта2
Оператор(ы);
CASE Выражение_варианта3 TO Выражение_варианта4
Оператор(ы);
CASE IS < Выражение_варианта5, IS > Выражение_варианта6
Оператор(ы);
CASE ELSE
Оператор(ы);
END SELECT
Выражение варианта может иметь вид выражение или выражение TO выражение. В выражении
варианта со служебным словом IS может использоваться любая из операций отношений. И,
наконец, в каждом из вариантов можно использовать список любых разновидностей выражений
вариантов, разделенных запятыми.
Примеры использования переключателей иллюстрирует рис. 19.14. Переключатель имеет
синтаксис и семантику такие же, как в языке Microsoft Visual Basic.
Со в ет
Внимательно изучите примеры, приведенные на рис. 19.14, поэкспериментируйте с ними, задавая
различные значения проверяемого выражения, протестируйте работу всех вариантов переключателей.

19.4. Циклические операторы


В языке Cicode предусмотрены два циклических оператора — цикл FOR … DO с заранее заданным
количеством повторений группы операторов, называемой телом цикла, и итерационный цикл
WHILE … DO с заранее неизвестным количеством повторений тела цикла. Оба циклических
оператора реализуют циклы с предусловием, отличающиеся тем, что тело цикла может выполняться
любое количество раз, в том числе, в частном случае, ни одного раза. Цикл с постусловием,
204

имеющийся в большинстве языков программирования высокого уровня, в языке Cicode


отсутствует.

Рис. 19.14. Примеры использования переключателя

19.4.1. Цикл FOR … DO


Цикл FOR … DO имеет следующую структуру:
FOR Переменная_цикла = Выражение1 TO Выражение2 DO
Оператор(ы); ! Тело цикла
END
В частном случае, когда значение Выражения1 превышает значение Выражения2, тело цикла не
будет выполнено ни разу. Переменная_цикла в процессе работы принимает последовательные
значения от значения Выражения1 до значения Выражения2 с шагом единица и должна иметь целый
тип.
В качестве операторов в теле цикла могут использоваться любые другие операторы. В частности, в
качестве таких операторов могут использоваться циклические операторы, и тогда мы получаем
гнездо циклических операторов.
Пример использования цикла FOR … DO приведен на рис. 19.15.
Со в ет
Обратите внимание на стандартные функции Prompt (вывод на графическую страницу) и Sleep
(программная задержка). Функцией Sleep пользуйтесь осмотрительно — ее использование
существенно загружает центральный процессор.

Рис. 19.15. Пример использования цикла FOR … DO

19.4.2. Цикл WHILE … DO


Цикл WHILE … DO имеет следующую структуру:
WHILE Проверяемое_выражение DO
Оператор(ы); ! Тело цикла
205

END
В частном случае, когда начальное значение Проверяемогоcвыражения нулевое (то есть ложное),
тело цикла не будет выполнено ни разу. В процессе работы выполнение тела цикла будет
повторяться до тех пор, пока значение Проверяемого_выражения не станет нулевым.
Пример использования цикла WHILE … DO приведен на рис. 19.16. Нетрудно заметить, что для
приведенного примера использование цикла FOR … DO предпочтительнее. Однако, когда заранее
неизвестно количество повторений тела цикла, применение цикла WHILE … DO является
единственной возможностью.

Рис. 19.16. Пример использования цикла WHILE … DO


206

Глава 20. Функции языка Cicode


Функции языка Cicode поддерживают технологию модульного программирования, в соответствии с
которой решаемая задача путем декомпозиции разбивается на более простые функционально
законченные подзадачи. Каждая из таких задач записывается в виде функции языка Cicode.
Психологами установлено, что человек в среднем в состоянии хорошо воспринимать не более семи
объектов («правило семи»). В соответствии с этим правилом функции, реализующие подзадачи,
должны соответствовать следующим ограничениям. Число операторов внутри функции не должно
превышать семи, а запись оператора не должна содержать более семи строк. Следовательно, общее
количество строк в записи функции не должно превышать 50 (7*7). Аналогично, количество
параметров функции не должно превышать семи.

20.1. Определение функции


В приводимом далее определении синтаксиса функции, как и ранее, элементы ее определения,
заключенные в квадратные скобки, не являются обязательными и могут отсутствовать. Функция
языка Cicode имеет следующий синтаксис:
[ Область_действия ]
[ Тип_возвращаемого_значения ]
FUNCTION
Имя_функции( [ Список_параметров ] )
Оператор;
...
Оператор;
[ RETURN Возвращаемое_значение; ]
END
Область_действия — необязательный элемент определения функции. Может принимать значения
PRIVATE или PUBLIC (по умолчанию PUBLIC) и записывается в отдельной строке. После
служебного слова точка с запятой не ставится. PUBLIC-функция доступна во всех Cicode-файлах,
графических страницах и базах данных системы Citect SCADA (например, в Alarm.dbf).
PRIVATE-функция доступна только в файле, где она определена.
Тип_возвращаемого_значения — необязательный элемент определения функции. Может
принимать значения INT, REAL, STRING, OBJECT, QUALITY или TIMESTAMP (умолчание
отсутствует) и записывается в отдельной строке. После служебного слова точка с запятой не
ставится.
FUNCTION — обязательное служебное слово, размещаемое в отдельной строке, после которого
точка с запятой не ставится. Отмечает начало функции.
Имя_функции — обязательный элемент определения функции, может содержать до 32 символов,
уникальный идентификатор, регистр любой. Размещается в отдельной строке, в конце точка с
запятой не ставится. Название функции должно включать, по крайней мере, следующую
информацию — от трех до пяти символов описания назначения функции (например, Trend, Plot,
Win); одно или два слова, описывающих обрабатываемые данные (например, Info, ClientInfo,
Mode), и одно слово, характеризующее выполняемое действие (например, Get, Set, Init, Read).
Например, приемлемыми именами функций могут быть
PlotInit,TrendClientOpen,TrendClientInfoRead.
Список_параметров — необязательный элемент определения функции. При его отсутствии сразу
же за именем функции следует пара круглых скобок, внутри которых ничего нет. При наличии
параметров они помещаются внутри круглых скобок и разделяются запятыми. Круглые скобки
следуют сразу же за именем функции в той же самой строке. Параметры могут иметь значения по
умолчанию. При необходимости, для удобства восприятия, параметры можно записывать не в
одной, а в нескольких строках. После закрывающей круглой скобки точка с запятой не ставится.
Параметр функции имеет следующий синтаксис:
Тип_параметра Имя_параметра [ = Значение_по_умолчанию ]

Имя_параметра может содержать до 32 символов, уникальный идентификатор без пробелов


внутри, регистр любой. Значение_по_умолчанию должно быть константой того же самого типа,
207

что и тип параметра. Это значение будет использовано, если в вызове функции не будет указан
соответствующий аргумент. Параметры с умалчиваемыми значениями должны располагаться в
конце списка параметров.
RETURN Возвращаемое_значение; — необязательный оператор в определении функции. Но он
должен обязательно присутствовать, если функция имеет возвращаемое значение. В качестве
Возвращаемого_значения можно использовать константу, переменную или выражение, тип
которого должен совпадать с типом значения, возвращаемого функцией. После
Возвращаемого_значения должна следовать точка с запятой.
Оператор; — каждый оператор должен размещаться в отдельной строке.
END — обязательный элемент определения функции, отмечающий конец функции. Должен
размещаться в отдельной строке. Является служебным словом, после которого не должно быть
точки с запятой.
На рис. 19.16, приведенном ранее, дан пример определения функции без возвращаемого значения с
областью действия PUBLIC по умолчанию, а на рис. 20.1 приведен более подробный набор и других
примеров определения функций.

Рис. 20.1. Примеры определения функций

20.2. Вызов функции


Синтаксис вызова функции зависит от того, имеет функция возвращаемое значение или нет. Если
функция не имеет возвращаемого значения, то она вызывается подобно процедуре в других языках
программирования:
Имя_функции( [ Список_аргументов ] );

Список_аргументов является необязательным элементом вызова функции. Он отсутствует, если


функция не имеет параметров, или может отсутствовать, если все параметры имеют значения по
умолчанию. В качестве примера см. вызовы функций PrivFunRet и PrivFun в примерах,
приведенных ранее на рис. 20.1.
Если функция имеет возвращаемое значение, то она вызывается с помощью оператора
присваивания:
Переменная = Имя_функции( [ Список_аргументов ] );

В качестве Переменной можно использовать переменную, элемент массива или тег переменной,
причем их тип должен совпадать с типом значения, возвращаемого функцией. Все сказанное ранее
относительно Списка_аргументов справедливо и в данном случае. Если возвращаемое значение
не нужно, то вызов функции можно выполнять не с помощью оператора присваивания, а с помощью
имени с аргументами, как вызов процедуры. В качестве примера см. вызовы функций PrivFunRet
в примерах, приведенных ранее на рис. 20.1.
208

Глава 21. Структура Cicode-файлов (*.ci).


Использование комментариев
Как указывалось ранее, в любом проекте системы Citect SCADA в составе Cicode-программы могут
использоваться Cicode-файлы кода с расширениями .ci и включаемые Cicode-файлы с
расширениями .cii (они будут рассмотрены позднее).
За ме ч а н ие
В частном случае проект может не содержать Cicode-файлов.

Далее рассмотрим варианты оформления комментариев, структуру файлов с расширениями .ci и


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

21.1. Синтаксис комментариев


Разумное использование комментариев во всех Cicode-файлах соответствует хорошему стилю
программирования. Комментарии позволяют вам (или другому разработчику) быстро понять
назначение переменной или работу функции, что важно при отладке и сопровождении
Cicode-программы. Компилятор языка Cicode, кроме собственного однострочного комментария,
начинающегося с символа «!», распознает комментарии в силе языков C и C++:
! Однострочный комментарий Cicode
WHILE DevNext( hDev ) DO
Counter = Counter + 1; ! Локальный комментарий Cicode
END
/* Многострочный комментарий в стиле языка C (в частном
случае он может занимать одну строку или часть строки).
Обратите внимание, что между символами, отмечающими начало
и конец комментария, пробел отсутствует.
Такое оформление комментария целесообразно использовать
для многострочных комментариев
*/
// Однострочный комментарий в стиле языка C++
Variable = 42; // Локальный комментарий в стиле языка С++

21.2. Структура и использование комментариев в


заголовке файла с расширением .ci
Исходные файлы (файлы с расширениями .ci, содержащие Cicode) рекомендуется сопровождать
заголовочныи комментарием с кратким описанием файла. Структуру и заголовочный комментарий
к файлу целесообразно отформатировать следующим образом:
/*
FILE: <name of file.CI> - имя файла

DESCRIPTION: <description of basically what is in the


file> - краткое описание того, что находится в файле

FUNCTIONS: PUBLIC
<list of the PUBLIC functions contained
in this file> - список функций PUBLIC, входящих в файд
PRIVATE
<list of the PRIVATE functions contained
in this file> - список функций PRIVATE, входящих в файл
*/

! ***************** GLOBAL CONSTANTS Глобальные константы ********************


209

<global constants> // <comments (purpose) - комментации (цель) >

! ***************** GLOBAL VARIABLES Глобальные переменные *********************


<global variables> // <comments (purpose) - комментарии (цель) >

! ***************** MODULE CONSTANTS Константы модуля *********************


<module constants> // <comments (purpose) - комментарии (цель) >

! ***************** MODULE VARIABLES Переменные модуля *********************


<module variables> // <comments (purpose) - комментарии (цель) >

! ***************** GLOBAL FUNCTIONS Глобальные функции *********************


<global functions>

! ***************** PRIVATE FUNCTIONS Локальные функции **********************


<private functions>

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

Приведем пример оформления заголовка исходного файла:


/*
FILE: Recipe.CI

DESCRIPTION: contains all functions for gathering recipe


data

FUNCTIONS: PUBLIC
OpenRecipeDatabase
CloseRecipeDatabase
ReadRecipeData
WriteRecipeData
GatherRecipeData
RecipeForm
OpenRecipeDatabase

PRIVATE
ButtonCallback
*/

! ***************** MODULE CONSTANTS ***********************


MODULE INT cmiRecipeMax = 100; //Maximum number of recipes

! ***************** MODULE VARIABLES ***********************


MODULE INT miRecipeNumber = 0; //Minimum number of recipes

21.3. Использование комментариев в заголовке


определения функции
Каждая функция в соответствии с хорошим стилем программирования должна иметь заголовочный
комментарий, отформатированный следующим образом:
/*
FUNCTION : <name of function> - имя функции

DESCRIPTION: <suggests the operation, application


210

source and multi-tasking issues> -


описание выполняемых действий и вопросов,
связанных с постановкой задачи в приложении
и многозадачностью

REVISION DATE BY COMMENTS


<revision number> <date> <author> <comments about the
change>
номер редакции, дата, автор, комментарии, связанные с внесением изменений

ARGUMENTS: <argument description> - описание аргументов

RETURNED VALUE: < description of possible return values> -


описание возможного возвращаемого значения

NOTES: примечания
*/
Порядок следования определений функций в соответствующей секции файла является значимым.
Определения функций инициализации и закрытия должны помещаться в начале секции.
Определения функций обработки команд должны следовать за ними, а определения локальных
сервисных функций должны размещаться в конце файла.
Приведем пример оформления заголовка и определения функции:
/*
FUNCTION : OpenRecipeDatabase

DESCRIPTION: opens the specified database

REVISION DATE BY COMMENTS


1 28/09/97 BS Original
2 05/10/97 SFA Added INI checking

ARGUMENTS:
STRING sName Name of the recipe database
INT dwMode Mode to open the recipe database (0 for
read only, 1 for read/write)

RETURNED VALUE: handle if successful, otherwise -1

NOTES:
*/
FUNCTION
OpenRecipeDatabase( STRING sName, INT dwMode)
...
END
211

Глава 22. Интегрированная среда разработки


и отладки Cicode-программ
Для изучения языка программирования Cicode будем работать с проектом CicodeDebug. Для его
создания выполним действие по копированию одного из созданных ранее проектов в новый проект
с этим именем: в приложении Citect Studio на странице Проекты сделайте активным один из
существующих проектов (например, Training1) и нажмите на кнопку Копировать в . В
появившемся окне выберите радиокнопку Новый проект, укажите имя нового проекта
CicodeDebug и нажмите ОК. На следующий вопрос системы подтвердите необходимость создания
нового каталога.
Интегрированная среда разработки и отладки Cicode-программ (ИСР, Редактор Cicode) может
быть запущена различными способами. Можно в приложении Построитель графики Citect
выполнить команду Средства | Редактор Cicode или нажать на панели инструментов кнопку
Редактор Cicode. Наиболее удобный способ заключается в использовании приложения Citect
Studio, в котором следует выбрать проект (например, CicodeDebug), нажать на кнопку Редактор
Cicode основного меню, расположенного в левой части экрана, и в открывшемся окне Редактора
Cicode (рис. 22.1) выполнять нужные действия по созданию, редактированию и отладке программ
на языке Cicode.

Рис. 22.1. Запуск ИСР Cicode-программ


Возможный вид ИСР показан на рис. 22.2. Строка заголовка, строка меню и окно редактирования
видимы всегда, а строку состояния, остальные окна и панели инструментов можно скрывать или
показывать по желанию разработчика.
212

Так, переключение строки состояния выполняется командой Вид | Строка состояния. Если ни
одна из панелей инструментов не отображается, то для конфигурирования панелей инструментов и
окон следует выполнить команду Отладка | Настройки… или активизировать акселератор Ctrl+T.
В появившемся диалоге Настройки… выбрать вкладку Окна и панели, установить флажки для тех
панелей инструментов и окон, которые требуется сделать видимыми и нажать кнопку OK
(рис. 22.3).
Панель Панель Строка
инструментов инстументов меню
Строка
Файл Citect
заголовка

Панель
Формат инструментов
Панель Правка
инструментов
инструментов
Формат
Вид Панель
инструментов
Панель Панель Отладка
инструментов инструментов
Закладки Настраиваемый
Окно
Файлы
Окно
редактирования

Окно точек
останова

Окно
вывода

Окно с
ошибками
компиляции Строка
состояния

Рис. 22.2. Возможный вид ИСР Cicode-программ

Рис. 22.3. Конфигурирование панелей инструментов и окон ИСР


Если же хотя бы одна из панелей инструментов отображается, то удобнее поместить указатель
мыши на свободное место рядом с панелью инструментов и правой кнопкой мыши вызвать
контекстное меню (см. приведенный ранее рис. 22.2). Далее следует установить флажки для тех
панелей инструментов и окон, которые требуется сделать видимыми, и щелкнуть левой кнопкой
мыши по любому месту вне контекстного меню.

22.1. Основные приемы работы в ИСР


ИСР можно использовать для ввода, редактирования и отладки Cicode-программы. Текстовый
редактор ИСР аналогичен современным средствам редактирования кода, которые используются в
настоящее время в других инструментальных системах. Он содержит соответствующие
интеллектуальные средства — панели инструментов и окна, подсветку разных лексических единиц
текста разным цветом, автоотступы и ступенчатую запись, всплывающие окна с прототипами
функций, автоматическое исправление ключевых слов, поддержку работы с клавиатурными
комбинациями («горячими клавишами») и т. п.
213

22.1.1. Определение предпочтений при редактировании


ИСР позволяет определить разнообразные параметры вводимого и отображаемого текста, которые
задаются с помощью так называемых предпочтений. Окно для определения предпочтений можно
вывести на экран, только если открыт какой-либо файл с текстом программы. Выполните команду
Вид | Предпочтения или нажмите «горячие клавиши» Ctrl+R. В появившемся окне (рис. 22.4)
можно задать цвет различных лексических единиц Cicode-программы, шрифт текста, автоотступ и
другие параметры работы редактора.

Рис. 22.4. Выбор предпочтений для работы текстового редактора

22.1.2. Создание и сохранение Cicode-файла


Для создания Cicode-программы целесообразно выполнить следующие действия. Перейдите в среду
приложения Citect Studio, на странице Проекты сделайте активным проект (например,
CicodeDebug), в который требуется включить создаваемую программу; нажав на соответствующую
иконку в левой части экрана, откройте приложение Редактор Cicode, выполните команду
Файл | Новый или дважды щелкните левой кнопкой мыши по пиктограмме с надписью Новый или
используйте «горячие клавиши» Ctrl+N. В появившемся окне выберите язык Cicode. В окне
редактирования ИСР введите текст файла (о структуре и оформлении файла см. приведенную ранее
гл. 21). Для примера введите строку комментария. Для сохранения введенного файла выполните
команду Файл | Сохранить как…. В появившемся диалоге Сохранить как в поле Имя файла:
введите требуемое имя файла и нажмите кнопку Сохранить (рис. 22.5).
В результате введенный файл Cicode1.ci появится в папке проекта
…\Citect SCADA 2016 \ User \ CicodeDebug и в окне ИСР.

Рис. 22.5. Первое сохранение редактируемого файла


214

22.1.3. Открытие существующего Cicode-файла


Для открытия существующего Cicode-файла целесообразно выполнить следующие действия.
Перейдите в среду приложения Citect Studio, на странице Проекты сделайте активным проект
(например, CicodeDebug), в котором имеется файл, подлежащий открытию, откройте приложение
Редактор Cicode, выберите строку нужного файла и дважды щелкните левой кнопкой мыши по
этой строке, или используйте пиктограмму Открыть, или выполните команду Файл | Открыть,
или используйте «горячие клавиши» Ctrl+O. В окне редактирования ИСР появится текст открытого
файла.

22.1.4. Удаление существующего Cicode-файла


Для удаления существующего Cicode-файла целесообразно выполнить следующие действия. В ИСР
выполните команду Файл | Открыть... или нажмите кнопку Открыть на панели инструментов
Файл, если она не скрыта. В появившемся диалоге Открыть выберите файл, подлежащий
удалению, и нажмите кнопку Delete на клавиатуре компьютера иди используйте контексное меню,
появляющееся при нажатии на правую кнопку мыши. В появившемся диалоге
Подтверждение удаления файла нажмите кнопку Да. Нажмите кнопку Отмена для закрытия
диалога Открыть. Если удаляемый файл был открыт в ИСР, в окне Файлы выберите удаленный
файл и выполните команду Файл | Закрыть.

22.1.5. Поиск текста в Cicode-файле


Для поиска текста в Cicode-файле целесообразно выполнить следующие действия. В ИСР, когда
активным является окно с текстом программы, выполните команду Правка | Найти…, или
активизируйте акселератор Ctrl+F, или нажмите кнопку Найти на панели инструментов Правка,
если она не скрыта. В появившемся диалоге Поиск (рис. 22.6) в поле Найти: введите искомый текст
(например, FUNCTION) и в случае необходимости задайте нужное состояние флагов поиска слов
(Только целые слова) и поиска с учетом регистра (Учитывать регистр). При нажатии кнопки
Найти далее произойдет поиск текста, начиная с текущей позиции курсора, и если искомый
фрагмент текста будет обнаружен, то он будет выделен (рис. 22.7). Для поиска следующего
фрагмента текста достаточно на клавиатуре компьютера нажать клавишу F3.

Рис. 22.6. Поиск текста в файле

Рис. 22.7. Результаты поиска заданного текста


При нажатии кнопки Отметить все произойдет отметка строк файла, содержащих искомый текст
(рис. 22.8). При необходимости снятия отметки строк нажмите кнопку Убрать закладки на панели
инструментов Закладки. При нажатии кнопки Отмена поиск отменяется.
215

Рис. 22.8. Отметка строк с заданным текстом

22.1.6. Компиляция Cicode-файла и просмотр информации об


ошибках
Для компиляции Cicode-файла сделайте видимым окно Окно с ошибками компиляции (команда
Вид | Ошибки компиляции), выполните команду Файл | Компилировать или активизируйте
акселератор Alt+F10. При наличии ошибок информация о них может иметь вид, представленный на
рис. 22.9 и 22.10.

Рис. 22.9. Информация об ошибках компиляции в ИСР

Рис. 22.10. Информация об ошибках компиляции в Citect Studio


216

22.1.7. Режимы ИСР


Настройка режимов отладки выполняется с помощью диалога Настройки… (см. приведенный
ранее рис. 22.3), который появляется при выполнении команды Отладка | Настройки…. С
помощью этого диалога можно, в частности, определять или изменять поведение ИСР при
возникновении ошибок, определять, когда отладка должна начаться и поведение отладчика в
режиме отладки.
Диалог Настройки… имеет три вкладки для задания свойств ИСР — вкладка Окна и панели (см.
приведенный ранее рис. 22.3), о которой говорилось ранее, вкладка Параметры (рис. 22.11) и
вкладка Язык форматирования (рис. 22.12).

Рис. 22.11. Конфигурирование режимов ИСР

Рис. 22.12. Конфигурирование режимов форматирования ИСР

22.1.8. Размещение окон и панелей инструментов ИСР


Окна просмотра и панели инструментов ИСР могут быть либо "приклеены" к любой стороне фрейма
главного окна ИСР, либо размещены в виде плавающего окна в произвольном месте экрана.
По умолчанию панели инструментов размещаются в предназначенной для них области в верхней
части главного окна ИСР, окна просмотра располагаются под ними: окно Файлы — слева, окно
редактирования — справа, а остальные окна просмотра ниже их (см. приведенный ранее рис. 22.2).
Размеры "приклеенных" (docked) окон автоматически выбираются так, чтобы они полностью
размещались рядом друг с другом в пределах главного окна ИСР и не перекрывали друг друга.
Панели инструментов и окна просмотра можно, по желанию пользователя, размещать в любом
месте экрана, в том числе и вне области, занятой ИСР. Чтобы панель инструментов или окно
просмотра перевести в "плавающий" (floating) режим и разместить в произвольном месте экрана,
достаточно поместить указатель мыши на заголовок панели инструментов или окна просмотра
(рис. 22.13), нажать левую клавишу мыши, перемещая мышь, выбрать новое положение панели
инструментов или окна просмотра и отпустить клавишу мыши (рис. 22.14). Аналогичным образом
можно панель инструментов или окно просмотра вернуть в прежнее положение (состояние
Docking).
217

Рис. 22.13. Местоположение заголовков панелей инструментов и окон просмотра

Рис. 22.14. Панель инструментов Правка в "плавающем" состоянии

22.1.9. Назначение и использование панелей инструментов ИСР


ИСР предусматривает использование нескольких панелей инструментов — Файл, Citect, Правка,
Отладка, Формат, Вид, Закладки и Настраиваемый. Каждая из панелей инструментов, по
желанию пользователя, может быть показана или скрыта. Использование кнопок панелей
инструментов по сравнению с аналогичными командами меню позволяет более оперативно
выполнить требуемое действие. Назначение кнопок панелей инструментов легко определить с
помощью всплывающих подсказок. Для получения всплывающей подсказки достаточно поместить
курсор мыши на пиктограмму кнопки. Всплывающее окно содержит текст о назначении кнопки,
который отображается в течение нескольких секунд.
Панель инструментов Файл предназначена для оперативного выполнения наиболее часто
выполняемых файловых операций. Панель содержит кнопки Новый (создать новый файл),
Открыть (открыть существующий файл), Сохранить (сохранить текущий, активный файл),
Печать (напечатать текущий файл), Компилировать и запустить (компилировать и запустить
проект), Компилировать (компилировать проект) и Предпочтения (посмотреть или изменить
свойства отображаемых файлов). Команды, выполняющие аналогичные действия, имеются также в
меню Файл и Вид.
Панель инструментов Citect предназначена для оперативного запуска приложений системы
Citect SCADA и получения справочной информации. Панель содержит кнопки Citect Studio
(переход в среду конфигурирования), Построитель графики (переход в среду графического
редактора), Мастер конфигурирования компьютера (запуск мастера настройки компьютера),
Справка по функциям Cicode и Разделы справочника (получение справки). Команды,
выполняющие аналогичные действия, имеются в меню Средства и Справка, но их использование
менее оперативно.
Панель инструментов Правка предназначена для оперативного редактирования текущего файла.
Панель содержит кнопки Отменить действие (отменить последнюю операцию редактирования),
Вырезать (вырезать выделенный текст и поместить его в буфер промежуточного хранения),
Копировать (копировать выделенный текст в буфер промежуточного хранения), Вставить
(вставить текст из буфера промежуточного хранения в место, отмеченное курсором), Найти (найти
заданный фрагмент текста в текущем файле), Найти далее (найти следующий фрагмент текста в
текущем файле), Заменить (заменить заданный фрагмент текста новым фрагментом) и Найти
218

функцию пользователя. Команды, выполняющие аналогичные действия, имеются в меню


Правка.
Панель инструментов Отладка предназначена для отладки текущего файла. Панель содержит
кнопки Поставить/Убрать точку останова (переключить состояние точки останова),
Запустить/Остановить отладку (переключить состояние режима отладки), Продолжить
(продолжить выполнение с текущей точки), Шагнуть в (выполнить текущую строку, если она не
содержит вызов функции или, иначе, войти внутрь функции), Шагнуть через (выполнить текущую
строку, даже если она содержит вызов функции) и Выйти (выйти из текущей функции). Команды,
выполняющие аналогичные действия, имеются в меню Отладка.
Панель инструментов Формат предназначена для форматирования и комментирования текущего
файла. Панель содержит кнопки Отступ (сдвинуть строки с выделенным текстом на табулятор
вправо), Выступ (сдвинуть строки с выделенным текстом на табулятор влево), Комментировать
(превратить строки с выделенным текстом в комментарий) и Раскомментировать (убрать признак
комментария в строках с выделенным текстом). Команды, выполняющие аналогичные действия, в
меню отсутствуют.
Панель инструментов Вид предназначена для переключения окон просмотра. Панель содержит
кнопки Показать/Скрыть стек (переключить Окно стека), Показать/Скрыть потоки
(переключить Окно потоков), Показать/Скрыть глобальные переменные (переключить
Окно глобальных переменных), Показать/Скрыть точки останова (переключить
Окно точек останова), Показать/Скрыть вывод (переключить Окно вывода),
Показать/Скрыть ошибки компиляции (переключить Окно с ошибками компиляции) и
Показать/Скрыть файлы (переключить Окно файлов). Команды, выполняющие аналогичные
действия, имеются в меню Вид.
Панель инструментов Закладки предназначена для работы с отмеченными строками (см.
приведенный ранее рис. 22.8). Панель содержит кнопки Поставить/Убрать закладку
(переключить отметку текущей строки), Убрать закладки (снять отметку всех строк),
Следующая закладка (перейти на следующую отмеченную строку), и Предыдущая закладка
(перейти на предыдущую отмеченную строку). Команды, выполняющие аналогичные действия,
имеются в меню Правка.

22.1.10. Назначение и использование окон просмотра ИСР


ИСР предусматривает использование нескольких окон просмотра, среди которых:
Окно точек останова, Окно вывода, Окно глобальных переменных, Окно стека, Окно потоков,
Окно с ошибками компиляции и Окно файлов.
Окно точек останова. Это окно используется для отображения списка всех точек останова,
имеющихся в данный момент в проекте (рис. 22.15). Для любой из строк окна отображения точек
останова с помощью правой кнопки мыши можно вызвать контекстное меню (рис. 22.16), с
помощью которого точку останова можно удалить или переключить ее состояние. Если в
Окне точек останова выбрать какую-либо строку и дважды щелкнуть левой кнопкой мыши, то в
окне редактирования отобразится соответствующий файл с выделенной строкой, соответствующей
точке останова. В столбце Файл окна Точек останова отображается полный путь, имя и
расширение файла, содержащего точку останова. В столбце Строка отображается номер строки
файла, отмеченной как точка останова, а в столбце Доступна — указывается, включена точка
останова (Yes) или нет (No).
Окно вывода. Это окно используется для отображения списка сообщений, посылаемых
Citect SCADA в процессе отладки (рис. 22.17). В нем размещаются сведения о начале и завершения
потоков в том порядке, в котором потоки активизируются, а также сведения о прерываниях.
Окно вывода отображает сообщения, посылаемые функцией TraceMsg( ).
219

Рис. 22.15. Окно отображения точек останова проекта CicodeDebug

Рис. 22.16. Контекстное меню точки останова окна Breakpoint window

Рис. 22.17. Окно вывода ИСР


За ме ч а н ие
Имейте в виду, что сообщения в Окно вывода выдаются, только если включен режим отладки
(например, при выполнении команды Отладка | Запустить отладку или при активизации акселератора
Shift+F5).

Окно глобальных переменных. Это окно используется для отображения списка значений глобальных
и модульных переменных. Глобальная или модульная переменная добавляется в список только при
включенном режиме отладки после первого присвоения ей значения (рис. 22.18). При последующем
изменении значения глобальной переменной новое значение также обновляется в соответствующей
строке списка.
220

Окно стека. Это окно используется для отображения списка значений из стека для текущего потока.
Стек содержит вызовы функций с указанием значений их аргументов, значения всех переменных,
используемых в функциях и возвращаемые функциями значения (рис. 22.19). Окно стека
показывается и обновляется только при включенном режиме отладки (построчная трассировка).
Окно потоков. Это окно имеет вид, представленный на рис. 22.20. Окно потоков показывается и
обновляется только при включенном режиме отладки. Окно имеет следующие столбцы. Столбец
Name отображает имя потока — имя функции, запустившей поток (эта функция может быть
вызвана, например, из функции TaskNew( )). Если вы Щелкните левой кнопкой мыши по имени
потока, то переведете фокус отладчика на этот поток и отладчик отобразит источник этого потока.
За м еч а н ие
Если поток не был запущен из функции TaskNew( ), то имя в столбце Name отобразится как
Command.

Рис. 22.18. Окно глобальных переменных ИСР

Рис. 22.19. Окно стека ИСР


Столбец HND отображает дескриптор потока. Столбец CPU отображает процент загрузки потоком
центрального процессора. Считается, что программа Cicode эффективна, если это значение не
превышает 25%. Большие значения свидетельствуют о перегрузке, от которой может помочь
использование в циклах функции Sleep( ). Столбец State отображает состояние
потока — состояние Ready означает готовность потока к запуску, состояние Sleep означает
приостанов потока с помощью функции Sleep( ), а состояние Run означает выполнение потока.
Столбец CPU_Time отображает суммарное время центрального процессора, использованное
потоком.
221

Рис. 22.20. Окно потоков ИСР

Окно с ошибками компиляции. Это окно имеет вид, представленный ранее на рис. 22.9. Окно
отображает список ошибок, выявленных в процессе компиляции. Если щелкнуть два раза левой
кнопкой мыши по строке списка ошибок, то в окне редактирования отобразится файл, содержащий
ошибку, в котором будет выделена ошибочная строка.
Окно файлов. Это окно имеет вид, представленный ранее на рис. 22.2, и содержит три вкладки.
Вкладка Все проекты отображает иерархическое дерево всех проектов и их Cicode- и VBA-файлов.
Вкладка Открыть проект отображает иерархическое дерево текущего выбранного проекта и всех
включенных проектов. Вкладка Открытые файлы отображает названия всех файлов, открытых в
настоящее время для редактирования. Щелчок по любому из этих файлов приведет к его загрузке в
окно редактирования и сделает его активным.

22.2. Отладка фрагментов и функций Cicode-программы


Чтобы определить местонахождение ошибок Cicode, следует в ИСР включить режим отладки. Для
этого достаточно в ИСР выполнить команду Отладка | Запустить отладку, или активизировать
акселератор Shift+F5, или нажать кнопку Запустить/Остановить отладку на панели инструментов
Отладка, если она не скрыта.
За ме ч а н ие
Если при переходе в режим отладки текущий проект не выполнялся, то автоматически выполняется
компиляция и запуск проекта. В правом нижнем углу окна ИСР пиктограмма режима отладки имеет
зеленый цвет, а при выключенном режиме отладки — красный (см. приведенный ранее рис. 22.20).

Аналогично, для выключения режима отладки следует в ИСР выполнить команду


Отладка | Остановить отладку, или активизировать акселератор Shift+F5, или нажать кнопку
Запустить/Остановить отладку на панели инструментов Отладка, если она не скрыта.
Для отладки Cicode-фрагмента или Cicode-функции можно применить, например, следующий
прием. В какую-либо графическую страницу текущего проекта (например, в графическую страницу
Startup проекта CicodeDebug) для целей отладки можно поместить кнопку (рис. 22.21) и
сконфигурировать ее в соответствии с рис. 22.22, то есть вызывать пользовательскую Cicode-
функцию tst*() при нажатии мышкой на кнопку.
Теперь отлаживаемый Cicode-фрагмент достаточно поместить для отладки в тело глобальной
функции tst*( ) и установить точку останова на первом же операторе в теле функции. Аналогично,
для отладки другой функции достаточно в свойствах кнопки заменить имя функции требуемым
именем, определение функции поместить в Cicode-файл проекта Cicode*.ci (см., например,
приведенный ранее рис. 22.20) и, как и в предыдущем случае, установить точку останова на первом
же операторе в теле функции.
222

Рис. 22.21. Кнопка, используемая для отладки Cicode-фрагментов и функций


Со в ет
Перед включением в ИСР режима отладки не забудьте выполнить компиляцию и устранить возможные
синтаксические ошибки. Для запуска компиляции можно либо выполнить команду
Файл | Компилировать, либо активизировать акселератор Alt+F10, либо нажать кнопку
Компилировать на панели инструментов Файл, если она не скрыта.

Рис. 22.22. Свойства кнопки, используемой для отладки Cicode-фрагментов и функций


Если теперь включить режим отладки, то проект автоматически запустится. Для выполнения
отладки функции tst*( ) теперь достаточно нажать кнопку tst*(), добавленную в графическую
страницу проекта CicodeDebug для целей отладки и функция tst*( ) будет выполнена до точки
останова.
Далее можно выполнить построчную трассировку функции, контролируя результаты, полученные
после выполнения очередной строки. Для трассировки, как было указано ранее, можно
использовать панель инструментов Отладка или команды меню Отладка. Для контроля значений
глобальных и модульных переменных в точках останова можно использовать
Окно глобальных переменных, а изменения значений локальных переменных функции можно
наблюдать в Окне стека. Именно таким образом тестировались все приведенные ранее фрагменты
и функции Cicode.
223

Глава 23. Использование Cicode-файлов,


Cicode-команд и Cicode-функций в системе
Citect SCADA
Cicode — язык программирования, специально разработанный в системе Citect SCADA для
мониторинга и управления оборудованием производственного предприятия, технологической
линией или технологической установкой. Используя язык Cicode, разработчик может получить
доступ в реальном времени ко всем данным (переменным) проекта Citect SCADA и всем средствам
обслуживания Citect SCADA, таким, как теги переменных, сигналы тревог, тренды, отчеты и т. п.
Можно использовать язык Cicode в качестве интерфейсного средства для объединения различных
средств работы на компьютере, например, операционной системы и коммуникационных портов.
Язык Cicode поддерживает также ряд дополнительных средств.

23.1. Использование Cicode-файлов


Вы можете помещать определения функций в Cicode-файлы, сохраняемые на магнитном диске, и
имеющие расширение .ci. Для уменьшения будущих потенциальных проблем поддержания
Cicode-файлов следует придерживаться Cicode-стандарта программирования (см. подробнее в
справочной системе, тема
Cicode Reference |Cicode Programming Reference|Using Cicode Programming Standards). О структуре
и оформлении Cicode-файлов было сказано ранее в Главе 21.
Когда выполняется компиляция проекта системы Citect SCADA, компилятор обрабатывает также
все функции, глобальные и модульные переменные, определенные в файлах Cicode. В результате
определенные в этих файлах пользовательские функции становятся доступными наравне с
предопределенными (стандартными) функциями языка. Можно использовать столько файлов
Cicode, сколько необходимо – имеется только естественное ограничение в объеме дисковой памяти.
Файлы Cicode размещаются в той же самой папке, что и файлы проекта. Когда выполняется
сохранение проекта, то сохраняются и все исходные файлы Cicode.

23.2. Использование Cicode-команд


Команды языка Cicode расширяют возможности управляющих элементов в системе мониторинга и
управления Citect SCADA. Команды используются для управления системой Citect SCADA и, тем
самым, для управления производственным процессом.
Каждая команда имеет механизм для ее активации. Команда может быть запущена вручную,
оператором, вводящим ключевую последовательность или нажимающим кнопку или объект на
графической странице. Можно также так сконфигурировать команду, чтобы автоматически
выполнить ее, когда оператор регистрируется в процессе работы или выполняет противоположное
действие, когда графическая страница открывается или закрывается, когда возникает оповещение
(сигнал тревоги) или когда возникает некоторое событие.
Чтобы определить команду языка Cicode, следует ввести выражение, оператор или группу
операторов, разделенных точкой с запятой в поле Команда вкладки Ввод (Касание)
соответствующего графического объекта (рис. 23.1).
224

Рис. 23.1. Пример определения команды языка Cicode графического объекта Набор образов
Каждое выражение или оператор команды обычно выполняет отдельную задачу, например,
присваивает переменной значения, вычисляет значения или отображает сообщения на экране. Если
нужно оценить состояние производственного процесса вместо управления им, в поле Команда
следует записать соответствующее выражение или его частную разновидность, например,
переменную. Можно задать значение переменной в поле Команда, в поле Выражение или в
вызываемой функции Cicode путем использования оператора присваивания:
<VAR_TAG> = Value;
Здесь <VAR_TAG> является именем переменной, которой присваивается новое значение, а Value
задает новое значение.
За ме ч а н ие
В качестве Value можно использовать не только константу, но и переменную или выражение.
В поле Команда графического объекта можно задавать не один, а несколько операторов, например,
так, как это показано на рис. 23.2.

Рис. 23.2. Пример задания нескольких операторов в поле Команда (кнопка tst*(), графическая страница
Debug проекта CicodeDebug)
225

В приведенном примере в поле Вверх команда использованы три оператора, разделенные точкой с
запятой. Операторы представляют собой операторы присваивания тегам переменных требуемых
значений. В процессе работы проекта CicodeDebug при нажатии кнопки tst*(), расположенной на
графической странице Debug, последовательно выполняются указанные в поле Вверх команда
операторы присваивания.
За ме ч а н ие
Обязательно разделяйте операторы Cicode-команды точкой с запятой. При невыполнении этого
требования нельзя правильно обнаружить конец оператора, что приведет к ошибке компиляции. После
последнего оператора точку с запятой можно опускать.

Число операторов, которые можно ввести в поле Команда, ограничено только размерами этого поля
(71 строка и 207 символов в строке; в одной строке можно располагать любое число операторов, что
определяется длиной строки). Однако для наглядности не следует использовать слишком много
операторов (в соответствии с "правилом семи" не используйте более семи операторов). Для
выполнения этого требования, при необходимости, оформляйте эти операторы в виде функции
(функций) и в поле Команда помещайте только вызов функции (функций). Другой возможностью
является использование включаемых файлов, содержащих необходимые операторы, о чем будет
сказано далее.
Как указывалось ранее, количество операторов и выражений, которые можно ввести в поле
Команда или Выражение, ограничивается перечисленными в предыдущем абзаце размерами поля.
Если размеры поля недостаточны, то можно использовать включаемый файл с расширением .cii
и поместить в него выражения и операторы Cicode-команды. Включаемый файл представляет собой
обычный текстовый ASCII-файл, который можно создать с помощью текстового редактора,
встроенного в ИСР Cicode-программ. Как и файлы с расширением .ci, включаемые файлы хранятся
в папке проекта и сохраняются при сохранении проекта.
За ме ч а н ие
Следует отметить, что во включаемый файл нельзя помещать вызовы функций. При использовании в
поле Команда включаемого файла нельзя одновременно в это поле помещать вызовы функций. Вместе
с тем, при отсутствии включаемого файла в поле Команда можно одновременно помещать вызовы
функций, выражения и операторы. Не путайте включаемые файлы и включаемые проекты — это
совершенно разные вещи.

В поле Команда имя включаемого файла следует вводить в следующем формате:


@<filename.cii>

Здесь filename задает имя файла с расширением .cii по правилам DOS, а использование угловых
скобок является обязательным.
Пример использования включаемого файла при задании свойств графического объекта
иллюстрируют рис. 23.3 и 23.4.

23.3. Часто используемые функции


Язык Cicode содержит множество стандартных функций, реализующих решение разнообразных
задач. Многие из них используются при создании комплексных проектов системы Citect SCADA.
Использование некоторого множества стандартных функций рассмотрено ранее. Наиболее часто
используемые стандартные функции можно разделить на пять категорий — функции для работы с
оповещениями (сигналами тревог – Alarm Functions), с графическими страницами
(Page Functions), с отчетами (Report Functions), со временем и датой (Time/Date Functions) и
прочие функции (Miscellaneous Functions).
226

Рис. 23.3. Пример использования включаемого файла в поле Команда (кнопка tst*(), графическая страница
Debug проекта CicodeDebug)

Рис. 23.4. Включаемый файл Cicode1.cii

23.3.1. Функции для работы с сигналами тревог (Alarm Functions)


Разработчик может использовать функции работы с оповещениями (сигналами тревог) для
отображения оповещений и связанных с ними страниц помощи, для квитирования (подтверждения),
включения и выключения оповещений. Можно ограничить доступ к каждой команде, которая
использует сигнальные функции, и тем самым гарантировать, что только оператор с
соответствующими правами доступа может выполнить соответствующие команды. Однако такая
возможность существует только в том случае, если ограничение доступа касается категорий, а не
индивидуальных оповещений.
В этой группе, в числе прочих, имеются следующие стандартные функции.
Функция AlarmAck( ) предназначена для квитирования (подтверждения приема) оповещения.
Если команда, запускающая эту функцию, выполнена, то позиционирование курсора на оповещение
в списке квитирует ее. Таким образом, можно квитировать не только одно, но и несколько
оповещений (см. пример проекта Training9, команда Alarms | Active Alarms и проекта
Training22Tmplt, шаблон графической страницы mytraining.MyNormal). Более подробные
сведения о функции см. в [3], ключевое слово для поиска AlarmAck. Пример использования
функции имеется в файле TabAlarm.ci проекта Tab_Style_Include.
Функция AlarmComment( ) предназначена для добавления комментария к выбранному элементу
списка страницы Alarm Summary в процессе работы проекта. Комментарий отображается, когда
курсор позиционируется на соответствующий элемент списка сигналов тревог, если ранее была
227

выполнена команда, активизирующая функцию AlarmComment( ). При этом аргумент функции,


задающий текст комментария, вводится с клавиатуры и его длина не может превышать 128
символов. Более подробные сведения о функции см. в [3], ключевое слово для поиска
AlarmComment. Пример использования функции имеется в файле Alarms.ci проекта Example.
Функция AlarmDisable( ) предназначена для отключения сигнала тревоги. Эту функцию можно
использовать только привилегированному пользователю для отключения многократно
повторяющихся тревог (см. пример проекта Training9, команда Alarms | Active Alarms, команда
Disable контекстного меню для выбранной тревоги). Более подробные сведения о функции см. в [3],
ключевое слово для поиска AlarmDisable. Пример использования функции имеется в файле
Alarms.ci проекта Example.
Функция AlarmEnable( ) предназначена для подключения ранее выключенного сигнала тревоги.
Эту функцию можно использовать привилегированному пользователю для подключения
многократно повторяющихся тревог (см. пример проекта Training9, команда
Alarms | Disabled Alarms, команда Enable контекстного меню для выбранной тревоги). Более
подробные сведения о функции см. в [3], ключевое слово для поиска AlarmEnable. Пример
использования функции имеется в файле Alarms.ci проекта Example.
Функция AlarmDsp( ) предназначена для отображения сигналов тревог, определяемых списком
аргументов (см. пример проекта Training22Tmplt, шаблон графической страницы
mytraining.MyNormal). Более подробные сведения о функции см. в [3], ключевое слово для поиска
AlarmDsp.
Функция AlarmActive( ) предназначена для отображения сигналов тревог, категория тревог
определяется списком аргументов. Пример использования функции имеется в проекте
Training22Tmplt, шаблон графической страницы mytraining.MyNormal. Более подробные
сведения о функции см. в [3], ключевое слово для поиска AlarmActive.
Информацию о других функциях этой группы можно получить в [3], тема Cicode
Reference | Cicode Programming Reference | Cicode Function Categories | Alarm Function Introduction |
Alarm Functions.

23.3.2. Функции для работы с графическими страницами


(Page Functions)
Вы можете использовать функции работы с графическими страницами (далее — страничные
функции) для отображения созданных вами графических страниц и стандартных страниц
оповещений (сигналов тревог).
Функция PageInfo( ) предназначена для получения информации о текущей странице. Вид
получаемой информации определяется аргументом функции. Пример использования функции
имеется в проекте Training22Tmplt, шаблон графической страницы mytraining.MyNormal. Более
подробные сведения о функции см. в [3], ключевое слово для поиска PageInfo.
Функция PageAlarm( ) предназначена для отображения сконфигурированных в проекте категорий
активных сигналов тревог на странице тревог (см. пример проекта Training9, команда
Alarms | Active Alarms, и проекта Training22Tmplt). Более подробные сведения о функции см. в
[3], ключевое слово для поиска PageAlarm.

Упражнение 23.1. Использование функции PageAlarm( )


Используйте проект Training22 и создайте новую графическую страницу ToTestFunctions для
размещения графических объектов, позволяющих изучить рассматриваемые функции. На
графической странице ToTestFunctions создайте графический объект Кнопка с запускаемой по
щелчку мыши функцией вывода строки PageAlarm(0) аналогично тому, как это было сделано в
проекте CicodeDebug. Протестируйте работу созданного графического объекта. Посмотрите в
справочной системе роль аргумента функции PageAlarm(). Протестируйте вызов функции
PageAlarm() с различными значениями аргументов. Убедитесь, что фильтрацию отображения
сигналов тревог для заданных категорий функция не поддерживает.
За ме ч а н ие
Для правильной работы функции необходимо предварительно создать страницу Alarm для
отображения активных тревог. В рассматриваемых проектах это сделано благодаря использованию
включенного проекта Tab_Style_Include.
228

Функция PageDisplay( ) отображает на экране новую страницу. Имя страницы задается


аргументом функции (используйте функцию PageLast( ) для отображения предыдущей
страницы). См. примеры любых проектов в приложении Citect Studio, страницы
Визуализация | Конфигурация меню. Более подробные сведения о функции см. в [3], ключевое
слово для поиска PageDisplay.

Упражнение 23.2. Использование функции PageDisplay( )


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Кнопка с запускаемой по щелчку мыши функцией вывода строки PageDisplay("Oven").
Протестируйте работу созданного графического объекта.
Функция PageGoto( ) отображает на экране новую страницу. Имя страницы задается аргументом
функции. Функция аналогична функции PageDisplay( ), но вызов функции PageLast( ) после
вызова функции PageGoto( ) не обеспечивает отображения предыдущей страницы. Более
подробные сведения о функции см. в [3], ключевое слово для поиска PageGoto.

Упражнение 23.3. Использование функции PageGoto( )


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Кнопка с запускаемой по щелчку мыши функцией вывода строки PageGoto("Oven").
Протестируйте работу созданного графического объекта. Протестируйте вызов функции
PageGoto( ).
Функция PageHardware( ) отображает аппаратные сигналы тревог на сконфигурированной в
проекте странице аппаратных тревог (см. пример проекта Training9, команда
Alarms | Hardware Alarms). Более подробные сведения о функции см. в [3], ключевое слово для
поиска PageHardware.

Упражнение 23.4. Использование функции PageHardware()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Кнопка с запускаемой по щелчку мыши функцией вывода строки PageHardware().
Протестируйте работу созданного графического объекта.
За ме ч а н ие
Для правильной работы функции необходимо предварительно создать страницу Hardware, имеющую
шаблон hardware для отображения соответствующих оповещений. В рассматриваемых проектах это
сделано благодаря использованию включенного проекта Tab_Style_Include. Напомним, что на
странице аппаратных оповещений отображаются предупреждения как об аппаратных, так и о
программных ошибках и сбоях (например, арифметическое переполнение или деление на 0).

Функция PageLast( ) отображает графическую страницу, которая показывалась перед текущей


страницей. С ее помощью можно выполнить "откат" на отображение десяти последних страниц.
Более подробные сведения о функции см. в [3], ключевое слово для поиска PageLast.

Упражнение 23.5. Использование функции PageLast()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Кнопка с запускаемой по щелчку мыши функцией вывода строки PageLast().
Протестируйте внесенные изменения.
Функция PageNext( ) отображает следующую графическую страницу, определенную в свойстве
След. страница формы графической страницы. Более подробные сведения о функции см. в [3],
ключевое слово для поиска PageNext.

Упражнение 23.6. Использование функции PageNext()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Кнопка с запускаемой по щелчку мыши функцией вывода строки PageNext(). Определите
свойство След. страница графической страницы ToTestFunctions (задайте переход на страницу
Lighting). Протестируйте работу созданного графического объекта.
Функция PagePrev( ) отображает графическую страницу, определенную в свойстве
Пред. страница формы графической страницы. Более подробные сведения о функции см. в [3],
ключевое слово для поиска PagePrev.
229

Упражнение 23.7. Использование функции PagePrev()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Кнопка с запускаемой по щелчку мыши функцией вывода строки PagePrev(). Определите
свойство Пред. страница графической страницы ToTestFunctions (задайте переход на страницу
NewPage). Протестируйте работу созданного графического объекта.
Функция PageSummary( ) отображает общую информацию о сигналах тревог на странице тревог,
сформированной в проекте. Более подробные сведения о функции см. в [3], ключевое слово для
поиска PageSummary.

Упражнение 23.8. Использование функции PageSummary()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Кнопка с запускаемой по щелчку мыши функцией вывода строки PageSummary(0).
Протестируйте работу созданного графического объекта. Посмотрите в справочной системе, какой
смысл имеет аргумент функции PageSummary(). Убедитесь, что фильтрацию отображения
сигналов тревог для заданных категорий функция не поддерживает.
Замечание
Для правильной работы функции необходимо предварительно создать страницу Summary, имеющую
шаблон summary для отображения соответствующих оповещений. В рассматриваемых проектах это
сделано благодаря использованию включенного проекта Tab_Style_Include.
Информацию о других функциях этой группы можно получить в [3], тема
Cicode Reference | Cicode Programming Reference | Cicode Function Categories | Page
Function Introduction | Page Functions.

23.3.3. Функции для работы с отчетами (Report Functions)


Функция Report( ) запускает создание отчета на сервере отчетов. Аргументом в вызове этой
функции является имя отчета. См. пример в Упражнении 14.2 и, в частности, приведенный выше
рис. 14.7. Более подробные сведения о функции см. в [3], ключевое слово для поиска Report.

Информацию о других функциях этой группы можно получить в [3], тема


Cicode Reference | Cicode Programming Reference | Cicode Function Categories | Report
Function Introduction | Report Functions.

23.3.4. Функции для работы со временем и датой


(Time/Date Functions)
Назначение функций для работы со временем и датой ясно из их названий.
Функция Date( ) возвращает текущую дату в виде строки. Более подробные сведения о функции
см. в [3], ключевое слово для поиска Date. Обратите внимание на возможные значения аргументов
функции.

Упражнение 23.9. Использование функции Date()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Текст с запускаемой по щелчку мыши функцией вывода строки Date(3). Протестируйте
работу созданного графического объекта. Протестируйте функцию со различными значениями
аргументов.
Функция Time( ) возвращает текущее время в виде строки.. Более подробные сведения о функции
см. в [3], ключевое слово для поиска Time.

Упражнение 23.10. Использование функции Time()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Текст с запускаемой по щелчку мыши функцией вывода строки Time(1). Протестируйте
работу созданного графического объекта. Проверьте работу функции при различных значениях
аргументов.
Функция SysTime( ) возвращает внутреннее время системы Citect SCADA в миллисекундах в
виде целого значения. Эту функцию удобно использовать для измерения величины интервала
230

времени между двумя вызовами функции. Более подробные сведения о функции см. в [3], ключевое
слово для поиска SysTime.

Упражнение 23.11. Использование функции SysTime()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Текст, позволяющий запустить функцию SysTime(). Настройте графический объект таким
образом, чтобы при нажатии над ним левой кнопки мыши происходил вызов функции SysTime().
Протестируйте работу созданного графического объекта.
Функция TimeCurrent( ) возвращает текущие время/дату. Более подробные сведения о
функции см. в [3], ключевое слово для поиска TimeCurrent. Функция TimeToStr( ) преобразует
время/дату в строку. Более подробные сведения о функции см. в [3], ключевое слово для поиска
TimeToStr. Пример использования этих функций имеется в проекте Training22Tmplt (шаблон
графической страницы mytraining.MyNormal).
Информацию о других функциях этой группы можно получить в [3], тема
Cicode Reference | Cicode Programming Reference |Cicode Function Categories|Time/Date Function Intr
oduction | Time/Date Functions.
Как было рассмотрено в подразделе 18.2, в системе Citect SCADA можно использовать тип данных
TIMESTAMP. Пример использования функции, преобразующей значение этого типа данных в
строку для вывода на страницу, см.в подразделе 17.3. Информацию о других функциях этой группы
можно получить в [3], тема
Cicode Reference | Cicode Programming Reference |Cicode Function Categories|Timestamp Functions.

23.3.5. Разные функции (Miscellaneous Functions)


Функция Beep( ) формирует акустический сигнал с помощью внутреннего динамика или
встроенной звуковой карты. Аргумент функции может принимать значения -1, 0, 1, 2, 3 или 4, что
соответствует различным акустическим сигналам. Если используется встроенный динамик
компьютера, то функция завершается только после окончания воспроизведения звука. Если
используется звуковая карта, то функция завершается немедленно, а звук воспроизводится в
фоновом режиме. Более подробные сведения о функции см. в [3], ключевое слово для поиска Beep.
Функция FullName( ) возвращает полное имя текущего зарегистрированного в системе
пользователя. Более подробные сведения о функции см. в [3], ключевое слово для поиска FullName.

Упражнение 23.12. Использование функции FullName()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Текст, позволяющий запустить функцию FullName(). Протестируйте работу созданного
графического объекта.
Функция Login( ) регистрирует пользователя в системе и определяет права доступа пользователя
к ресурсам системы Citect SCADA.. Более подробные сведения о функции см. в [3], ключевое слово
для поиска Login.

Упражнение 23.13. Использование функции Login()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Кнопка, позволяющий запустить функцию Login(). Протестируйте работу созданного
графического объекта.
Функция LoginForm( ) отображает диалоговое окно, с помощью которого пользователь
регистрируется в системе. См. пример любого проекта, включающего проект Tab_Style_Include с
шаблонами стиля Tab_Style_1, команда Регистрация локального меню. Более подробные сведения
о функции см. в [3], ключевое слово для поиска LoginForm.
Функция Logout( ) заканчивает работу зарегистрированного пользователя в системе. См. пример
любого проекта, включающего проект Tab_Style_Include с шаблонами стиля Tab_Style_1, команда
Окончание регистрации локального меню. Более подробные сведения о функции см. в [3],
ключевое слово для поиска Logout.
Функция Name( ) возвращает имя текущего зарегистрированного в системе пользователя. Более
подробные сведения о функции см. в [3], ключевое слово для поиска Name.
231

Упражнение 23.14. Использование функции Name()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Текст с запускаемой по щелчку мыши функцией вывода строки =Name(). Протестируйте
работу созданного графического объекта.
Функция UserInfo( ) возвращает информацию о текущем зарегистрированном в системе
пользователе. Вид возвращаемой информации определяется значением аргумента функции. См.
пример проекта Training22Tmplt, шаблон страниц mytraining.MyNormal, графический объект
Текст с запускаемой по щелчку мыши функцией вывода строки =UserInfo(1), свойство
Представление (Отображаемое значение). Более подробные сведения о функции см. в [3],
ключевое слово для поиска UserInfo.

Упражнение 23.15. Использование функции UserInfo()


Используйте проект Training22 и создайте на графической странице ToTestFunctions графический
объект Текст с запускаемой по щелчку мыши функцией вывода строки =UserInfo(0).
Протестируйте работу созданного графического объекта. Протестируйте функцию при всех
значениях аргументов.

Функция Prompt( ) отображает на экране сообщение, заданное аргументом функции. Более


подробные сведения о функции см. в [3], ключевое слово для поиска Prompt.
Функция Shutdown( ) завершает работу проекта системы Citect SCADA. Более подробные
сведения о функции см. в [3], ключевое слово для поиска Shutdown.
Функция ShutdownForm( ) показывает диалоговое окно, позволяющее пользователю завершить
работу проекта системы Citect SCADA. Более подробные сведения о функции см. в [3], ключевое
слово для поиска ShutdownForm.
Функция Sleep( ) приостанавливает текущую задачу Cicode, из которой вызвана функция, на
количество секунд, заданное аргументом функции. При этом функция не влияет на выполнение
других задач Cicode. Более подробные сведения о функции см. в [3], ключевое слово для поиска
Sleep.
Функция SleepMS( ) аналогично функции Sleep( ), но ее аргумент задает время приостановки в
миллисекундах. Более подробные сведения о функции см. в [3], ключевое слово для поиска
SleepMS.
Функция Rand(n) возвращает псевдослучайное число между 0 и значением (n-1), используя
равномерный закон распределения. Значение аргумента функции должно быть в диапазоне от 2 до
32767 включительно. См. пример проекта Training22, среда приложения Citect Studio, команда
Настройка | События, поле Действие. Более подробные сведения о функции см. в [3], ключевое
слово для поиска Rand.
Функция Toggle( ) изменяет значение дискретного тега, указанного в качестве аргумента
функции, на противоположное. См. пример проекта Training22, среда приложения Citect Studio,
команда Настройка | События, поле Действие. Более подробные сведения о функции см. в [3],
ключевое слово для поиска Toggle.
Функция WinNewAt( ) отображает заданную страницу в новом окне, расположенном в указанном
месте. Созданное окно может быть позже закрыто с помощью функции WinFree( ). Функция
имеет следующий синтаксис:
WinNewAt(Page, X, Y, Mode);
Здесь Page — имя или номер страницы, отображаемой в окне; X — горизонтальная координата в
пикселях левого верхнего угла окна; Y — вертикальная координата в пикселях левого верхнего угла
окна; Mode — режим отображения окна, который может комбинироваться из перечисленных далее
элементарных режимов.
 0 — обычная страница.
 1 — "страничное" дочернее окно. Окно закрывается, когда отображается новая страница,
например, когда происходит вызов функции PageDisplay( ) или PageGoto( ). Родительским
является текущее активное окно.
232

 2 — "оконное" дочернее окно. Окно закрывается автоматически, когда родительское окно


"освобождается" с помощью функции WinFree(). Родительским является текущее активное
окно.
 4 — запрет изменения размера. Окно отображается с тонкой рамкой и без иконок
"Максимизировать/минимизировать".
 8 — отсутствие иконок. Окно отображается с тонкой рамкой и без иконок
"Максимизировать/минимизировать" и системного меню. Нельзя изменять размер окна.
 16 — отсутствие заголовка. Окно отображается с тонкой рамкой, без заголовка и без иконок
"Максимизировать/минимизировать" и системного меню. Нельзя изменять размер окна.
 32 — разрешено эхо. В этом случае весь ввод с клавиатуры, подсказки, сообщения об ошибках
отображаются в родительском окне. Этот режим следует использовать при работе с дочерними
окнами (режимы 1 и 2).
 64 — всегда на переднем плане (всплывающее окно).
 128 — открыть уникальное окно. Этот режим предотвращает открытие окна два или более раз.
 256 — открыть окно целиком. Этот режим обеспечивает такое отображение, когда ни одна часть
окна не выходит за пределы экрана.
 512 — открыть уникальное окно. Этот режим предотвращает открытие окна одновременно два
или более раз, но то же окно, связанный с другим содержимым, может быть открыто.
 1024 — запрет динамического изменения размера окна. Имеет более высокий приоритет по
сравнению с параметром [Page]DynamicSizing.
 4096 — позволяет окну быть измененным, не поддерживая текущий формат изображения.
Формат изображения определяет соотношение между шириной и высотой окна, что означает,
что это позволяет растягивать или сжимать окно к любым пропорциям. Имеет более высокий
приоритет по сравнению с параметром [Page]MaintainAspectRatio.
 8192 — текст на странице будет изменен в пропорции с максимальным изменением масштаба к
измененному окну. Имеет более высокий приоритет по сравнению с параметром
[Page]ScaleTextToMax.
См. пример проекта Training21SuperGenie1, графическая страница Oven. Более подробные
сведения о функции см. в [3], ключевое слово для поиска WinNewAt.
Функция AssWin( ) связывает до восьми тегов переменных с открываемым окном или
суперджинном и отображает новое окно. Результат действия этой функции такой же, как при
восьмикратном вызове функции Ass( ) или функции AssTag( ) с последующим вызовом
функции WinNewAt( ). Если требуется связать с новым окном или суперджинном более восьми
тегов переменных, то следует вызвать функцию AssVarTags( ), AssTag( ) или Ass( ) для
выполнения нужного связывания перед вызовом функции AssWin( ). Функция имеет следующий
синтаксис:
AssWin(sPage, X, Y, Mode, sTag1..8);
Здесь sPage — имя страницы; X — горизонтальная координата в пикселях левого верхнего угла
окна; Y — вертикальная координата в пикселях левого верхнего угла окна; Mode — режим
отображения окна, который может комбинироваться из перечисленных далее элементарных
режимов:
 0 — обычная страница.
 1 — "страничное" дочернее окно. Окно закрывается, когда отображается новая страница,
например, когда происходит вызов функции PageDisplay( ) или PageGoto( ). Родительским
является текущее активное окно.
 2 — "оконное" дочернее окно. Окно закрывается автоматически, когда родительское окно
"освобождается" с помощью функции WinFree(). Родительским является текущее активное
окно.
 4 — запрет изменения размера. Окно отображается с тонкой рамкой и без иконок
"Максимизировать/минимизировать".
 8 — отсутствие иконок. Окно отображается с тонкой рамкой и без иконок
"Максимизировать/минимизировать" и системного меню. Нельзя изменять размер окна.
233

 16 — отсутствие заголовка. Окно отображается с тонкой рамкой, без заголовка и без иконок
"Максимизировать/минимизировать" и системного меню. Нельзя изменять размер окна.
 32 — разрешено эхо. В этом случае весь ввод с клавиатуры, подсказки, сообщения об ошибках
отображаются в родительском окне. Этот режим следует использовать при работе с дочерними
окнами (режимы 1 и 2).
 64 — всегда на переднем плане (всплывающее окно).
 128 — открыть уникальное окно. Этот режим предотвращает открытие окна два или более раз.
 256 — открыть окно целиком. Этот режим обеспечивает такое отображение, когда ни одна часть
окна не выходит за пределы экрана.
 512 — открыть уникальное окно. Этот режим предотвращает открытие окна одновременно два
или более раз, но то же окно, связанное с другим содержимым, может быть открыто.
 1024 — запрет динамического изменения размера окна. Имеет более высокий приоритет по
сравнению с параметром [Page]DynamicSizing;
 sTag1..8 — первые восемь физических тегов для связывания с Super Genie.
См. пример проекта Training21SuperGenie1, графическая страница Oven. Более подробные
сведения о функции см. в [3], ключевое слово для поиска AssWin.
Функция DspPopupMenu( ) позволяет создавать всплывающие пользовательские меню, которые
могут содержать подменю и команды. Пример использования этой функции рассмотрен ранее в
главе 16, проект Training22Tmplt, графическая страница MyPage.

23.4. Категории стандартных функций Cicode и их


назначение
Система Citect SCADA включает 1035 стандартных функций языка Cicode, разбитых на 49
категорий (табл. 23.1).
Таблица 23.1. Категории стандартных функций языка Cicode

Категория Назначение

Accumulator Functions (8 функций) Операции с аккумуляторами


ActiveX Functions (12 функций) Операции с объектами ActiveX
Alarm Functions (80 функций) Операции с сигналами тревог
Alarm Filter Functions (15 функций) Действия по работе с фильтрами сигналов тревог
Clipboard Functions (5 функций) Операции с буфером промежуточного хранения
Cluster Functions (8 функций) Операции с кластерами
Color Functions (7 функций) Операции с цветами графики
Communication Functions (6 функций) Операции по коммуникациям
DDE Functions (13 функций) Взаимодействие приложений с использованием DDE
Device Functions (31 функция) Управление доступом к устройствам
Display Functions (87 функций) Управление отображением и обработкой графических
страниц и объектов
DLL Functions (4 функции) Операции с DLL
Equipment Database Functions Действия с оборудованием
(17 функций)
Error Functions (12 функций) Операции с ошибками (проверка статуса других
функций)
Event Functions (5 функций) Операции с событиями

File Functions (23 функции) Операции с файлами


Form Functions (35 функций) Операции с формами
234

Категория Назначение
Format Functions (11 функций) Операции конвертирования данных
FTP Functions (5 функций) Мониторинг FTP коммуникаций и файлов
FuzzyTech Functions (7 функций) Поддержка управления с нечеткой логикой
Group Functions (10 функций) Управление группами областей, категориями
сигналов тревог и т.п.
I/O Device Functions (4 функций) Операции с устройствами ввода/вывода
Keyboard Functions (17 функций) Операции с клавиатурой
Mail Functions (5 функций) Операции с использованием почты
Math/Trigonometry Functions Математические и тригонометрические функции
(25 функций)
Menu Functions (19 функций) Действия по работе с древовидным меню
Miscellaneous Functions (53 функции) Прочие функции
.Net Functions (6 функций) Действия по доступу к веб-сервисам с
использованием .net-объектов
Page Functions (43 функций) Операции с графическими страницами
Plot Functions (12 функций) Операции с графиками и диаграммами
Process Analyst Functions (5 функций) Действия, относящиеся к Анализатору
технологических процессов
Quality Functions (10 функций) Действия по организации работы с типом данных
QUALITY
Report Functions (4 функции) Операции с отчетами
Scheduler Functions (38 функций) Действия, относящиеся к Планировщику Citect
Security Functions (25 функции) Операции с пользователями и их правами
Sequence of Events (SOE) Functions Действия, относящиеся к SOE
(4 функции)
Server Functions (14 функций) Действия по работе с серверами Citect и доступом к
ним клиентов
SPC Functions (12 функций) Обработка статистики процессов управления
SQL Functions (37 функций) Операции с SQL-базами данных
String Functions (32 функции) Операции со строками
Super Genie Functions (21 функция) Операции с Super Genie
Task Functions (35 функции) Управление задачами
Table (Array) Functions (3 функции) Получение максимума, минимума, математического
ожидания или отклонения для значений элементов
таблицы или массива
Tag Functions (41 функций) Управление тегами
Time/Date Functions (22 функции) Получение значения даты или времени
Timestamp Functions (12 функций) Действия по работе с типом данных TIMESTAMP
Trend Functions (84 функций) Операции с трендами
Window Functions (32 функции) Управление отображением окон

XML Functions (19 функций) Действия по работе с файлами в формате XML

Более подробные сведения об отдельных категориях стандартных функций и их составе см. в [3],
тема Cicode Reference | Cicode Programming Reference | Cicode
235

Functions Categories | Название_категории. Подробные сведения об отдельной стандартной


функции см. в [3], ключевое слово для поиска Имя_функции.

Литература
1. Давыдов В.Г. Система супервизорного управления Vijeo Citect. Базовый курс: Учеб. пособие.
Санкт-Петербургский государственный политехнический университет. Компания Schneider
Electric// Изд.СПбГПУ. 2009. - 208 с.
2. Citect SCADA 2016. Installation and Configuration Guide. November 2016. – 88p. (англ.яз.)
3. Файл Citect SCADA.chm (Citect SCADA Help, встроенная справка, англ.яз.)
4. OPC Factory Server V3.60. User Manual. 35008244.11. Schneider Electric. 2015. – 410p. (англ.яз.)
5. Vijeo Citect. Технический обзор. Высокоэффективное решение для диспетчерского управления
и сбора данных. Schneider Electric. 2015. – 67c.
6. Руководство по решениям в автоматизации. Практические аспекты систем управления
технологическими процессами. // Перевод с англ. под редакцией Ю.А.Фролова и
В.Н.Хохловского. –Schneider Electric. MKP-CAT-AUGUIDE-11. 2011. – 320c.
236

Предметный указатель
Citect SCADA панель инструментов навигации графической
SCADA-система, система супервизорного страницы, 61
управления и сбора данных, 9 панель инструментов сигналов тревог
Citect Studio графической страницы, 61
интегрированная среда разработки Citect- периодические тренды, 88
приложений, 12 Построитель графики Citect, 13
OFS (OPC Factory Server), 49 привилегии, 45
OPC (OLE for Process Control), 49 проекты OvenTraining, 9
Process Analyst просмотр и редактирование тегов в процессе
аналоговые перья, 108 исполнения проекта, 44
главная панель инструментов, 102 расширенные оповещения (Advanced Alarms), 80
навигационная панель инструментов, 103 Редактор Cicode, 13
панель инструментов объектов, 103 рисование объекта на странице, 61
перья сигналов тревог, 108 система меню, 131
цифровые перья, 108 смешанные тренды, 88
аналоговые оповещения (Analog Alarms), 80 событийные тренды, 88
аппаратные оповещения (сигналы тревог), 80 создание нового проекта, 14
включаемый проект Tab_Style_Include, 16 создание новой графической страницы, 29, 61
всплывающая графическая страница, 117, 172 сопоставление имен (association), 171
графические страницы, 61 специализированная строка меню графической
графический объект Кнопка, 30 страницы, 61
графический объект Текст, 33 структурированные имена тегов переменных, 37
демонстрационный режим, 11 суперджинн (supergenie), 171, 180
джинн (genie), 114 теги (дескрипторы) переменных, 28
добавление нового сигнала тревоги, 81 требования к аппаратуре и программному
ИСР обеспечению компьютера, 9
Интегрированная среда разработки и отладки управление проектами, 14
Cicode-программ, 212 цифровые оповещения (Digital Alarms), 80
кластеризация, 18 Язык Cicode
ключ аппаратной защиты, 11 ИСР, окно просмотра вывода, 219
команды ввода с помощью клавиатуры ИСР, окно просмотра глобальных переменных,
(клавиатурные команды), 98 220
конфигурируемые оповещения (сигналы тревог), ИСР, окно просмотра ошибок компиляции, 222
80 ИСР, окно просмотра потоков, 221
критическое обновление программного ИСР, окно просмотра стека, 221
обеспечения, 11 ИСР, окно просмотра точек останова, 219
лицензирование, 11 ИСР, окно просмотра файлов, 222
манипуляции с объектами графической страницы, ИСР, панель инструментов Citect, 218
61 ИСР, панель инструментов Вид, 219
мастер конфигурирования компьютера, 20 ИСР, панель инструментов Закладки, 219
мастер экспресс-настройки параметров связи, 25 ИСР, панель инструментов Отладка, 219
оповещения с отметкой времени ИСР, панель инструментов Правка, 218
(Time Stamped Alarms), 80 ИСР, панель инструментов Файл, 218
определение клавиатурной команды ИСР, панель инструментов Формат, 219
графического объекта, 99 программа проекта, 190
определение клавиатурной команды страницы, 99 технология модульного программирования, 206
определение системной клавиши или
клавиатурной комбинации, 98
237

Приложение 1. Учебные курсы Центра


обучения АО «Шнейдер Электрик» по
тематике пособия
Актуальные темы и программы учебных курсов размещены на сайте российского отделения
Schneider Electric (АО «Шнейдер Электрик»):
http://www.schneider-electric.ru/ru/download/document/Training-center-catalogue-automation/
На момент окончания написания настоящего учебного пособия (сентябрь 2017 года) Центр
обучения предлагал следующие три учебных курса по тематике пособия, содержание первого и
третьего из которых отражено в настоящем издании.
Система супервизорного управления Vijeo Citect: базовый курс
(AUT 20)
Принципы организации системы Vijeo Citect
- Концепция “клиент-сервер”, типы серверов
- Обозреватель, составные части проекта
- Управление проектами
- Мастер настройки компьютера
Установление связи с контроллерами
- Теги, их типы и правила формирования их имен
- Мастер коммуникаций, виды устройств связи
- Базовые возможности OFS (OPC Factory Server)
- Тестирование связи
Graphic Builder, меню, палитра инструментов
- Виды анимации при работе с графикой
- Ввод данных – команды оператора
- Управление на основе ActiveX
- Импорт графических изображений, создание пользовательских библиотек
- Использование и создание genies
- Всплывающие окна и super genies
- Шаблоны страниц
Project Editor и его система меню
- Устройства и файлы регистрации данных
- События
- Аварийные сигналы
- Конфигурирование и отображение трендов
- Process Analyst
- Конфигурирование и отображение отчетов
- Обеспечение прав доступа

Сетевые возможности системы супервизорного управления Vijeo


Citect (AUT 23)
Сетевые возможности Vijeo Citect
- Серверы, серверы в/в и клиенты
- Конфигурирование Display Client
-Распределенная обработка
Резервирование в Vijeo Citect
- Различные варианты резервирования
- Конфигурирование системы резервирования
- Распределенные серверы и глобальные клиенты
Ядро системы и отладка
- Доступ к ядру, информация о запуске и работе ядра
- Коммуникационные возможности и ядро системы
- Web'клиент
238

Язык программирования Cicode для Vijeo Citect (AUT 24)


Назначение языка Cicode, структура Cicode-программы. Данные. Операторы и функции
- Типы данных, переменные, массивы, константы
- Выражения
- Операторы присваивания
- Преобразования и форматирование
- Операторы ветвлений, циклические операторы
- Синтаксис и семантика определения функции
- Синтаксис и семантика вызова функции
Использование файлов, команд и функций
- Структура Cicode-файлов
- Комментарии и их использование
- Использование Cicode-файлов и Cicode-команд
Интегрированная среда разработки и отладки
- Создание, сохранение, открытие Cicode-файла
- Поиск текста в Cicode-файле
- Компиляция Cicode-файла и просмотр ошибок
- Режимы работы интегрированной среды
- Окна и панели инструментов
- Отладка фрагментов и функций Cicode-программы
Работа со стандартными функциями
- Функции для работы с сигналами тревог
- Функции для работы с графическими страницами и отчетами, временем и датой
- Прочие функции