СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Тема 2.5. SCADA-система WinCC

Категория: Информатика

Нажмите, чтобы узнать подробности

Просмотр содержимого документа
«Тема 2.5. SCADA-система WinCC»

Тема 2.5. SCADA-система WinCC


Структура и назначение SCADA-системы WinCC.

Windows Control Center (WinCC) – среда разработки и выполнения программ верхнего уровня АСУ ТП. WinCC используется для визуализации технологического процесса и разработки графического интерфейса оператора.

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

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

В WinCC значения процесса могут быть распечатаны или сохранены в электронном виде. Это облегчает процесс документирования процесса и позволяет анализировать технологические данные позднее.

Роль и место WinCC в АСУ ТП иллюстрирует рисунок 4.1:

Рисунок 4.1. Роль и место WinCC в АСУ ТП.

WinCC – это модульная система. Основными компонентами являются Система проектирования (Configuration Software, CS) и Система исполнения (Runtime Software, RT).


Система проектирования


Сразу после запуска WinCC открывается WinCC Explorer (Проводник WinCC). WinCC Explorer является ядром системы проектирования. В WinCC Explorer отображается структура всего проекта. Кроме того, здесь происходит администрирование проекта.

Из WinCC Explorer могут быть вызваны специальные редакторы, предназначенные для проектирования. Каждый редактор используется для создания специальной подсистемы WinCC. Наиболее важными подсистемами WinCC являются:

    • система обмена данными Communication (Связь) конфигурируется непосредственно в WinCC Explorer;

    • графическая система; редактор графической системы, используемый для создания кадров процесса, называется Graphics Designer (Графический редактор);

    • система администрирования пользователей, редактор которой называется User Administrator (Администратор пользователей);

    • система архивирования; редактор Tag Logging (Регистрация тегов) используется для определения данных, которые необходимо архивировать;

    • система регистрации аварийных сообщений; процесс конфигурирования сообщений выполняется редактором Alarm Logging (Регистрация аварийных сообщений);

    • система отчетов; редактор для создания шаблонов отчетов называется Report Designer (Редактор отчетов). Все данные конфигурации сохраняются в базе данных CS. Система исполнения

Система исполнения (Runtime software) позволяет пользователю следить и управлять процессом. Система

исполнения в основном используется для решения следующих задач:

  • чтения данных, сохраненных в базе данных CS;

  • отображения кадров процесса на экране;

  • взаимодействия с системой автоматизации;

  • архивирования текущих данных процесса, например, значений процесса и сообщений о событиях;

  • управления процессом, например, путем ввода оператором значений уставок, переключения On/OFF.

WinCC – это открытая система. В ней можно применять разнообразные компоненты ActiveX, динамически подгружаемые библиотеки программ (dll), внедрять OLE (object linking and embedding) объекты, использовать преимущества обмена данными через DDE (dynamic data exchange).


Требования к установке.

WinCC поддерживает все платформы ПК, совместимые с IBM/AT. Для обеспечения эффективной работы с WinCC, необходимо выполнить настройку конфигурации в соответствии с приведенными ниже рекомендованными значениями. Для однопользовательской системы (системы, развернутой на одном ПК) рекомендуются следующие минимальные параметры ПК, в зависимости от версии WinCC:

Таблица 4.1. Требования к установке WinCC.

Параметр

WinCC 6.0

WinCC 7.4

ЦПУ

Intel Pentium III, 800 МГц

2хядерный, 2,5 ГГц

Оперативная

Windows 2000/XP: 512

Windows 7/8.1 (32х): 2 Гб

память

Мб.

Windows 7/8.1/10 (64х): 4 Гб


Windows Server

Windows Server 2008/2012:


2000/2003 R2: 1 Гб

4 Гб

Дисковое



пространство:



- установка

700 Мб

1,5 Гб

- работа

1 Гб

2 Гб

Продолжение табл. 4.1.

1

2

3

Виртуальная память

1.5 x оперативная память

1.5 x оперативная память

Количество цветов

256

256

Разрешение экрана

800х600

800х600

Жесткий диск, на котором установлена операционная система, должен иметь минимально 100 МБ свободного пространства для дополнительных системных файлов. Для активизации проекта, в дополнение к этому на диске должно иметься в распоряжении еще как минимум 100 МБ.

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

Имя компьютера не должно включать недопустимые символы, такие, как знаки препинания, символы верхнего ряда клавиатуры, скобки всех видов и символ пробела. Не следует изменять имя компьютера после установки WinCC.

Перед установкой WinCC необходимо установить MS Message Queuing Services (Службы очереди сообщений Microsoft). Этот компонент является частью операционной системой, однако не устанавливается по умолчанию и должен быть установлен вручную. При использовании Windows 8.1 / Windows Server 2012 R2 требуется наличие установленного пакета Microsoft .NET Framework.

WinCC 6.0 требует Microsoft Internet Explorer 6.0 Service Pack 1 или выше, а WinCC 7.4 - Microsoft Internet Explorer V10.0. Если вы хотите использовать в HTML справку WinCC в полном объеме, необходимо разрешить использование скриптов на языке JavaScript в Internet Explorer в разделе "Опции Internet".

Для работы WinCC V6.0 требуется Microsoft SQL Server 2000 SP3 с заранее заданным именем экземпляра "WinCC". Его необходимо установить до установки WinCC.

Для работы WinCC V7.4 требуется Microsoft SQL Server 2014 Service Pack 1. Его установка запускается автоматически при установке WinCC. При установке демо-версии WinCC V7 устанавливается SQL Server Express.

Установку и использование WinCC рекомендуется выполнять с правами администратора системы или продвинутого пользователя. Программа настройки WinCC предлагает три основных варианта установки WinCC. Для установки наиболее полного набора компонентов (возможен выбор всех компонентов), выберите вариант "User-defined (Определяемая пользователем)" в WinCC V6.0 или "Expert mode (Режим эксперта)" в WinCC V7.4.

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

Обратите внимание на тот факт, что без установки лицензий WinCC работает в демонстрационном режиме и примерно через час работа будет завершена. При этом, если активирована среда исполнения (Runtime), то проект закрыт не будет, а все редакторы перед их закрытием предложат сохранить изменения.


Создание проекта и его настройка.

При запуске WinCC Explorer открывает проект, с которым он работал до закрытия. Если WinCC Explorer запущен впервые после установки, в диалоговом окне будет предложено три варианта создания проекта либо открытие существующего:

  • "Single-User Project (Однопользовательский проект)” (выбор по умолчанию );

  • "Multi-User Project (Многопользовательский проект)”;

  • "Client Project (Клиентский проект)”;

  • "Open an existing Project (Открыть существующий проект)”.

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

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

  1. многопользовательская система с одним или большим числом серверов: несколько серверов с одним или большим количеством клиентов. Одна клиентская станция обращается к нескольким серверам. Рабочие данные находятся на различных серверах. Конфигурационные данные хранятся на серверах и на клиентских станциях. В этом случае потребуется создание клиентских проектов;

  2. многопользовательская система только с одним сервером: один сервер и один или несколько клиентов. Все данные находятся на сервере, на котором необходимо создать многопользовательский проект. Сервер подключается к ПЛК. В многопользовательском проекте необходимо сконфигурировать клиентов, которые обращаются к серверу. Затем потребуется создать клиентские проекты на соответствующих компьютерах.

Клиентский проект. Компьютер с клиентским проектом получает данные с серверов и не имеет подключения к ПЛК. Используется в следующих случаях:

  1. клиент подключен к нескольким серверам. Рабочие данные распределены между различными серверами. Конфигурационные данные многопользовательских проектов находятся на соответствующих серверах. Локальные конфигурационные данные клиентских проектов, такие как кадры, сценарии и теги, могут храниться на клиентских станциях;

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

Для обучения рекомендуется выберать тип "Single-User Project (Однопользовательский проект)”. В следующем окне необходимо выбрать путь к папке проекта и задать его имя, например "Qckstart". Не рекомендуется создавать проекты в системном разделе жесткого диска (что предлагается по умолчанию). В пути к папке проекта и в его имени не должно быть кириллических символов. При создании проекта удостоверьтесь, что места на выбранном диске достаточно для хранения ожидаемого объема данных, ведь при архивации значительного количества данных размер WinCC- проекта может составлять несколько гигабайт.

После создания проекта в окне WinCC Explorer отобразится дерево проекта. Основные элементы дерева проекта:

  1. Корень – имя проекта, через контекстное меню позволяет изменять основные свойства проекта.

  2. Computer – перечень компьютеров, входящих в проект, содержит, как минимум, имя текущего компьютера. В случае многопользовательского проекта с клиентами здесь задаются имена компьютеров-клиентов.

  3. Tag Management – управление тегами (переменными) проекта.

  4. Graphics Designer - редактор графических элементов мнемосхемы.

  5. Alarm Logging – редактор системы сообщений о событиях.

  6. Tag Logging – редактор системы архивирования значений переменных.

  7. Report Designer - редактор системы отчетов, протоколов, документации.

  8. Global Script - редактор функций и фоновых действий.

  9. User Administrator – администрирование пользователей проекта.

После создания проекта в его папке содержатся следующие основные файлы и папки:

  1. Файл имя_проекта.mcp – главный файл проекта.

  2. Файлы имя_проекта.mdf и имя_проекта.ldf – база данных конфигурации проекта, содержит описание тегов, архивов, сообщений и прочую информацию.

  3. Файлы имя_проектаRT.mdf и имя_проектаRT.ldf – база данных среды исполнения (RunTime), содержит архивы тегов и сообщений. Могут достигать размера в несколько Гб, что нужно учитывать при выборе файловой системы и диска для хранения проекта.

  4. GraCS - содержит графические файлы формата *.pdl (кадры мнемосхем) и импортированные изображения в формате bmp, wmf, emf. WinCC 6.0 поддерживает также форматы gif и jpeg.

  5. Library - содержит библиотеку (файл Library.pxl) и функции (сценарии на языке С) проекта (файлы *.fct).

  6. PAS - содержит глобальные фоновые действия (сценарии, запускаемые в цикле, а не вызываемые из функций, например, для проверки связи с контроллером).

  7. PRT - содержит отчеты проекта.

  8. Папка с именем текущего компьютера содержит вложенные папки GraCS, PAS для хранения локальных конфигураций и фоновых действий.

Настройка проекта. Если в дереве проекта выделить корень, вызвать контекстное меню и выбрать Properties, то откроется окно свойств проекта. В нем можно (вкладка General) изменить тип проекта (single-user, multi-user и др.), задать дополнительные циклы опроса/обновления данных и изображений. Вкладка HotKeys позволяет назначить горячие клавиши для входа пользователя в систему (login), выхода из системы (logout), печати экрана с помощью сочетаний Ctrl+буква.

Аналогичные действия для элемента дерева проекта Computer позволяют задать его свойства:

  1. General - имя станции, должно совпадать с ее именем в локальной сети, так что при переносе проекта его нужно исправить. Для клиент-серверной системы здесь же отображается список компьютеров.

  2. StartUp - список модулей WinCC, запускаемых в режиме RunTime. Здесь же можно добавить запуск других приложений (калькулятор) с параметрами их командной строки, рабочим каталогом, размером окна при запуске.

  3. Parameters - язык при запуске. В качестве основного следует указать русский. Здесь же можно запретить стандартные для Windows сочетания клавиш, чтобы нельзя было свернуть, закрыть RT, запустить что-то непредусмотренное.

  4. Graphic Runtime – стартовое изображение, размер окна, отключение кнопок и событий главного окна, клавиши управления курсором и навигации по мнемосхемам.

  5. Вкладка Runtime содержит вспомогательные настройки.

Для сохранения изменений в настройках необходимо нажать кнопку «ОК».


Управление тегами (Tag Management).

Подсистема Tag Management (Управление тегами) предназначена для администрирования тегов и

коммуникационных драйверов, которые используются в проекте. В WinCC теги, получающие значения от процесса, считаются внешними тегами или тегами процесса. Для тегов процесса Tag Management позволяет выбрать коммуникационный драйвер (из числа предложенных протоколов), посредством которого WinCC соединяется с ПЛК, а также параметры обмена данными. Соответствующие теги создаются в папке этого коммуникационного драйвера. Она содержит модуль канала, его соединения, а также соответствующие группы тегов и теги процесса.

Теги, не получающие значений от процесса и предназначенные для хранения внутренних данных, называются внутренними тегами и создаются в папке "Internal Tags (Внутренние теги)".

Для наглядного представления тегов и удобства работы с ними их можно объединять в группы. В компоненте Tag Management (Управление тегами) созданные теги организуются в структуру папок, навигация по которой аналогична навигации по папкам Windows.

При создании тегов нужно учитывать следующие моменты;

    • В рамках одного проекта теги должны иметь уникальные имена. Имена тегов не чувствительны к регистру, то есть нельза создать два тега с именами “tag1” и “Tag1”, но при обращении к ним из кадров WinCC и функций имя тега нужно указывать именно такое, под каким он был создан. Обращение к несуществующему тегу вызовет ошибку.

    • Длина имени тега не должна превышать 128 символов. Для структурного тега это ограничение распространяется на все выражение "имя структурного тега + точка + имя элемента структурного тега".

    • В имени тега можно указывать число, как слитно, так и через символ нижнего подчеркивания. Подчерк в

именах нужен для автонумерации тегов при их копировании

    • В именах тегов не допускается использование некоторых служебных символов. При вводе таких символов имя тега не меняется. Не допускаются имена тегов, начинающиеся с символа '@'. Теги с префиксом

@ создаются только самой WinCC.

Создание внутреннего тега. Можно определить следующие параметры для внутреннего тега:

  1. имя;

  2. тип данных;

  3. обновляется во всем проекте/на локальных компьютерах (применимо только к многопользовательским проектам без дополнительных клиентских проектов);

  4. граничные значения;

  5. начальное значение.

Для внутренних тегов можно использовать следующие типы данных:

  1. Text reference (Текстовая ссылка);

  2. Binary tag (Двоичный тег);

  3. Signed 8-bit value (8-битное значение со знаком);

  4. Unsigned 8-bit value (8-битное значение без знака);

  5. Signed 16-bit value (16-битное значение со знаком);

  6. Unsigned 16-bit value (16-битное значение без знака);

  7. Signed 32-bit value (32-битное значение со знаком);

  8. Unsigned 32-bit value (32-битное значение без знака);

  9. Floating-point number 32-bit IEEE 754 (32-битное число с плавающей точкой);

  10. Floating-point number 64-bit IEEE 754 (64-битное число с плавающей точкой);

  11. Text tag, 8-bit character set (Текстовый тег с 8- битной кодировкой символов);

  12. Text tag, 16-bit character set (Текстовый тег с 16- битной кодировкой символов);

  13. Raw data tag (Тег необработанных данных).

Создание внешнего тега. Состоит из нескольких этапов:

  1. добавление драйвера канала;

  2. создание нового соединения с источником данных (например, ПЛК);

  3. собственно создание тега.

Добавление драйвера канала. Обмен данными между WinCC и ПЛК осуществляется с помощью специальных драйверов связи, каналов. WinCC поддерживает каналы связи с контроллерами SIMATIC S5/S7/505, а также каналы независимых производителей. Чтобы добавить драйвер связи, щелкните правой кнопкой мыши на компоненте Tag Management в левой части окна WinCC Explorer. Во всплывающем меню необходимо выбрать пункт "Add new Driver (Добавить новый драйвер)”. В открывшемся окне надо выбрать один из отображенных драйверов (например, "SIMATIC S7 Protocol Suite") и нажать на кнопку "Open (Открыть)”. Выбранный драйвер будет отображен во вложенной папке компонента Tag Management. В ней находятся все возможные модули связи с контроллерами Simatic S7.

Создание нового соединения. Для создания нового соединения, необходимо щелкнуть правой кнопкой мыши на модуле канала, например, MPI. Во всплывающем меню следует выбрать пункт "New Connection (Новое соединение)”. В открывшемся диалоговом окне "Connection Properties (Свойства соединения) в поле имени необходимо ввести имя нового соединения, например, "PLC1".

Посмотрим свойства соединения, щелкнув правой кнопкой мыши на модуле канала и выбрав во всплывающем меню пункт "System Parameter". В закладке Simatic S7 можно настроить Cycle Management - управление циклом опроса

канала: by PLC - цикл организуется контроллером, или Change driven Transfer - передача лишь при изменении параметра. Ниже включается контроль состояния (lifebeat monitoring), в первом окне указан инрервал опроса контроллера, во втором - таймаут ожидания ответа (в секундах). Последний флажок - включение контроля за остановом CPU.

В закладке Unit задаются параметры выбранного ПЛК. Если установлен флаг Automatically, то параметры задаются автоматически. Если нет, то настройка производится через среду программирования ПЛК STEP7, опция "Setting PGPC Interface". Если STEP7 не установлен, то настройка подключения произволится через меню "Пуск", "Панель управления", "Setting PGPC Interface".

Параметры соединения задаются кнопкой Parameters в закладке General свойств соединения. Там задаются: номер станции (на данной шине), идентификатор сегмента, номер планки, номер устройства на планке.

Создание внешнего тега. Внешние теги создаются через меню правой кнопки мыши по логическому соединению. При создании тега необходимо задать его свойства в двух закладках: General и Limits/Reporting.

В закладке General задаются: имя (латиницей до 128 символов), тип данных (обсуждался ранее), адрес - откуда брать данные: из блока данных STEP7 (DB), из памяти ПЛК (bit memory), счетчиков, таймеров, с его входов/выходов. В зависимости от источника данных, можно указать адрес переменной в нем. При этом возможно запросить получение так называемого кода качества (Quality Code). Это дополнительный бат, содержащий данные о достоверности получаемого значения.

После выбора данных, на которые будет ссылаться тег, если они отличны от типов Binary, Text и Raw Data, можно выбрать преобразование их формата (Adapt Format). Ниже

можно включить масштабирование значений (Linear scaling), При его включении разрешаются поля ввода граничных значений, состоящие из двух групп: Process Value Range и Tag Value Range. Значения в полях Value1 и Value1 задают точки для вычисления коэффициента преобразования. Например, при преобразовании кода АЦП модуля аналогового ввода в значение аналогового параметра в качестве границ диапазона процессного значения можно указать 0 и 27648, а в качестве границ значений тега – 0 и 100. В закладке Limits/Reporting задаются предельные значения тега, при выходе за которые будет отображаться предел (удобно при дребезге значения), стартовое значение, отображаемое при запуске, подстановочное значение и

ситуации, в которых оно будет отображаться.


Редактор изображений (Graphics Designer).

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

Чтобы создать новый кадр процесса и открыть Graphics Designer, необходимо в левой части окна WinCC Explorer щелкнуть правой кнопкой мыши на узле "Graphics Designer". Во всплывающем меню необходимо выбрать пункт "New Picture (Новый кадр)". При этом будет создан и отображен в правой части окна WinCC Explorer файл кадра с именем "NewPdl0.pdl" (".pdl" = "Picture Description File (Файл описания кадра)"). Там также будут отображены ранее созданные кадры.

Чтобы посмотреть кадр и открыть Graphics Designer, необходимо дважды щелкнуть на имени кадра в правой части

окна WinCC Explorer. Кроме этого, можно открыть в редакторе кадр, щелкнув правой кнопкой мыши на его имени и выбрав пункт "Open Picture (Открыть кадр)” во всплывающем меню.

Окно редактора содержит следующие основные панели и палитры:

  • Standard (Стандартная панель инструментов) - содержит кнопки создания, открытия, сохранения файлов и т.д.;

  • Aligment (Палитра выравнивания) – позволяет изменять абсолютное положение одного или более объектов, положение выбранных объектов относительно друг друга или выравнивать высоту и ширину нескольких объектов;

  • Colors (Палитра цветов) - bспользуется для определения цвета (рамки, фона) для выбранного объекта;

  • Zoom (Палитра масштабирования) - устанавливает коэффициент масштабирования (в процентах) для активного окна;

  • Object Palette (Палитра объектов) - cодержит готовые графические объекты, используемые при создании мнемосхем;

  • Style (Палитра стилей) - позволяет изменить внешний вид (стиль) выбранного объекта: тип линии или границы, толщину линии или границы, конца линии или узор заливки;

  • Dynamic Wizards (Панель динамических мастеров) – позволяет задавать различные действия для придания динамики объектам мнемосхемы;

  • Layers (Панель слоев) - позволяет определить, какие из 32 возможных слоев изображения будут видимы;

  • Font (Палитра шрифтов) - изменяет тип, размер и цвет шрифта текстовых объектов.

Для определения панелей или палитр, которые будут отображаться в Graphics Designer, используются команды панели меню "View (Вид)"\"Toolbars (Панели инструментов)".

При создании нового изображения его размер соответствует разрешению экрана компьютера. Часть изображения будет скрыта панелями и палитрами редактора, поэтому его необходимо отмасштабировать, или изменить размер, выбрав из контекстного меню пустого изображения команду "Properties (Свойства)", а в дереве свойств - "Geometry (Геометрия)".

Для создания мнемосхем используются объекты из палитры Object Palette. Палитра состоит из двух вкладок: Standard (Стандартные) и Controls (Объекты ActiveX). К стандартным относятся:

  • Standard Objects (Стандартные объекты) – простейшие объекты WinCC, такие как Polygon (Многоугольник), Ellipse (Эллипс), Rectangle (Прямоугольник), и т .д.;

  • Smart Objects (Интеллектуальные объекты) – «умные» объекты, такие как PictureWindow (контейнер для вложенного кадра/изображения), Control (контейнер для объекта ActiveX), I/O Field (Поле ввода /вывода), и т .д.;

  • Windows Objects (Объекты Windows) – элементы управления, такие как Button (Кнопка), Check-Box (Флажок), и другие поля форм.

На вкладке Controls находятся объекты ActiveX из компелкта WinCC, основными из которых являются:

  • WinCC Online Table Control – объект для отображения значений переменных в табличном виде;

  • WinCC Online Trend Control - объект для отображения графиков;

  • WinCC Online Alarm Control - объект для отображения таблицы сообщений об ошибках и сбоях.

Используя палитру объектов, можно разместить в кадре какой-либо из них. Доступ к параметрам объекта можно получить, сделав по нему 2 клика левой кнопкой мыши, или через пункт "Properties" в контекстном меню правой кнопки мыши, или через кнопку "Properties" в панели инструментов.

К параметрам относятся: геометрия, цвет границы/фона, стиль линий/заливки, и прочее (Miscellaneous).

Библиотека элементов. Разработка интуитивно- понятного человеко-машинного интерфейса предполагает наличие готовых объектов инфраструктуры технологических процессов. Вызвать библиотеку таких объектов из графического редактора можно кнопкой "Display Library" стандартной панели инструментов. Библиотека состоит из двух частей:

Global Library (общая библиотека) - расположена в папке установки WinCC в папке ApLib\library.pxl и доступная из всех проектов WinCC на данном компьютере. При переустановке WinCC данный файл будет переписан.

Project Library (проектная библиотека) – расположена в папке проекта в папке Library\library.pxl. Содержит нестандартные, разработанные пользователем объекты. Может быть перемещена на другой компьютер вместе с проектом.

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

Динамическое изменение свойств объектов. Свойства объектов мнемосхемы можно менять не только вручную, задавая их значения в столбце Static, но и динамически, через контекстное меню в столбце Dynamic (если в нем для выделенного свойства имеется символ лампочки). Динамизацию свойства можно осуществить, выбирая привязку к тегу, свойству, событию через инструмент Dynamic Dialog, через сценарий (Action) на языках программирования ANSI C или Visual Basic Script (VBS), либо прямую привязку к значению какого-либо тега.

Рассмотрим подробнее эти способы динамизации.

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

Если нужного тега нет, его можно создать прямо в этом окне. После привязки тега к свойству символ лампочки сменит цвет на зеленый, а рядом появится имя привязанного тега и частота его опроса (по умолчанию 2 с). Клик правой кнопки мыши по столбцу Current позволяет выбрать цикл опроса значения. Здесь Window Cycle - цикл обновления кадра, Picture Cycle цикл обновления изображения в кадре или контейнере, Upon Change – обновление по изменению значения тега, User Cycle 1 и далее – пользовательские значения циклов, заданные в свойствах проекта. Отметка в столбце Indirect (Косвенная адресация) возможна, если выбранный тег (имя его отображено в столбце Dynamic), является текстовым и содержит строку - имя другого тега, значение которого и будет определять свойство объекта.

Этот способ можно использовать не только для отображения, но и для ввода значения тега. Вставив в кадр объект IO Field из панели Smart Objects, выберем группу свойств Output/Input и привяжем свойство Output Value к любому аналоговому тегу (если свойство Data Format задано как Decimal).

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

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

В качестве триггеров применяются следующие события:

  • Тег. Событие происходит при изменении тега или циклически, с заданным периодом. Можно применять периоды, заданные пользователем.

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

  • Цикл кадра. Событие происходит циклически. Период определяется свойством Update Cycle объекта picture.

  • Цикл окна. Событие происходит циклически. Период определяется свойством Update Cycle объекта Picture Window.

Возможности по формированию выражения зависят от выбранного типа данных результата: "Analog", "Boolean", или "Direct". Тип "Analog" позволяет сформировать значение свойства, если результат находится в одном из заданных диапазонов. Тип "Boolean" позволяет задать значение свойства, когда результат выражения есть "Истина" или "Ложь". Тип "Direct" формирует значение свойства непосредственно из значения выражения.

Имена тегов могут быть введены непосредственно (имя в одиночных кавычках) или с помощью диалога выбора тегов. Если имя введенного тега не найдено, открывается диалог "Missing tags.

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

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

При нажатии кнопки "Check" или "Accept" список значений диапазонов ("Result of Expression /Formula") сортируется по возрастанию верхнего предела диапазона.

Задание значений диапазонов для типа "Analog". Можно определить несколько диапазонов значений выражения для указанного типа результатов. Создание нового диапазона производится кнопкой "Add". Новый диапазон значений всегда создается между последним определенным диапазоном и диапазоном "other".

Можно изменить верхнее значение диапазона, сделав двойной щелчок левой кнопкой мыши в строке диапазона в колонке "to". Можно назначить значение свойства объекта при вхождении значения выражения в указанный диапазон, сделав двойной щелчок левой кнопкой мыши в строке диапазона в колонке свойства объекта.

Создание выражений для типа данных "Bit". Теги вводятся, как и для других типов данных. При работе с 8, 16 и 32х битными тегами можно вызвать диалог для выбора значащих бит. Выбрав значащие биты, можно задать значения свойства, когда эти биты установлены или сброшены.

При нажатии кнопки "Check" или "Accept" синтаксис выражения будет проверен. Если будет найдена ошибка, появится сообщение об этом.

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

Факт формирования значения свойства объекта через динамический диалог обозначается символом молнии красного цвета в столбце Dynamic вместо символа зеленой лампочки при привязке свойства к тегу. Код макроса,

описывающий динамический диалог, можно просмотреть, щелкнув правой кнопкой значок в диалоговом окне "Object Properties (Свойства объекта)", а затем выбрав в контекстном меню команду "C Action (C-макрос)". Тогда выражение, созданное с помощью динамического диалога, будет преобразовано в C макрос. После изменения кода макроса или сохранения макроса этот макрос больше нельзя будет редактировать с помощью динамического диалога. Он будет сохранен, как C-макрос, а символ молнии в столбце Dynamic станет зеленого цвета.

C-макросы можно использовать для динамизации свойств объекта и для программирования реакций на события. При динамизации свойств объекта значение свойства объекта определяется по возвращаемому значению C-функции. Использовать C-макросы целесообразно, если, например, необходимо обработать в одном макросе несколько входных параметров или выполнить условную конструкцию (if ... then ...). Особенно рекомендуется использовать C-макросы, если нужно одновременно получить доступ к нескольким тегам.

C-макросы следует использовать в том случае, если возможности, предоставляемые соединением с тегом или динамическим диалогом, не достаточны для решения задачи.

Для примера рассмотрим создание макроса, аналогичного по действию прямой привязке к тегу. Для изменямого свойства некоторого объекта мнемосхемы выберем C-Action из контекстного меню. В открывшемся редакторе С-макросов в правой части окна выделим и сотрем комментарии в теле функции и вставим оператор return, за которым следует выбранная в правой части окна редактора функция GetTagWord из раздела Internal functions/tag/get. После выбора функции откроется окно выбора ее параметров, которые могут быть тегом, графическим объектом или картинкой. Выберем какой-либо тег, нажмем OK и изменим

частоту опроса события, нажав кнопку Trigger, расположенную правее поля Event Name (Имя события) в панели инструментов редактора макросов. Выберем Tag, укажем тег, значение которого отслеживается и установим частоту опроса Upon Change. Закроем окно редактора кнопкой OK - макрос будет сохранен и откомпилирован. В случае ошибки она будет описана в нижней части окна и редактор макроса не будет закрыт.

После сохранения макроса необходимо также сохранить кадр, содержащий объект, чьи свойства меняются макросом.

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

  • если необходимо в макросе обработать несколько входных параметров;

  • если необходимо использовать условную конструкцию (if

... then ...);

  • если необходимо изменить в макросе несколько свойств объекта;

  • если необходимо обратиться к диалоговым окнам операционной системы.

VBS-макросы создаются в редакторе VBS-макросов. Макросы, созданные в Graphics Designer, всегда сохраняются вместе в кадром, в котором они были созданы. Документация по созданным VBS-макросам добавляется в проектную документацию Graphics Designer вместе со свойствами всех сконфигурированных объектов. Все VBS-макросы, созданные в кадре, можно посмотреть в WinCC Explorer в диалоговом окне Properties, вызываемого из контекстного меню для конкретного кадра.

Признаком применения VBS-макроса является розовый цвет символа молнии в столбце Dynamic свойства объекта.

Преимуществом VBS-макросов является их сохранение в кадре, а недостатком – сложность подключения внешних по отношению к WinCC динамических библиотек (в том сисле системных dll) и импорта функций из них. В данном курсе применение VBS-макросов не рассматривается.

События объектов. Кроме динамизации свойств объектов можно определять реакцию объекта на различные события, например, изменение свойств объекта, клик мышью по объекту и другие. Возможные для объекта обработчики событий находятся в окне свойств объекта на вкладке Events (События). В ней вначале перечислены общие события для объекта (Mouse, Keyboard и т.д.), а затем обработчики событий, возникающих при изменении свойств (например, изменение фонового цвета Colors\Background Color).

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

  1. Direct Connection (Прямое соединение) – позволяет формировать простейшие действия;

  2. C-Action (C-макрос) – с помощью макроса на языке C;

  3. VBS-Action (VBS-макрос) с помощью макроса на языке VBS.

Прямое соединение. При выборе данного варианта появляется окно Direct Connection, в котором задается передача значения из Source (Источник) в Target (Приемник). Источником может являться:

  1. Constant (Константа) – некоторая константа, в том числе имя кадра (файла мнемосхемы) WinCC;

  2. Property (Свойство) – значение любого свойства любого объекта любого кадра;

  3. Tag (Тег) – значение какого-либо тега. Приемником может быть:

  1. Current Window (Текущее окно) – какое-либо свойство окна, в котором отображается кадр;

  2. Object in Picture (Объект изображения) - значение любого свойства любого объекта любого кадра;

  3. Tag (Тег) – значение какого-либо тега.

При выборе варианта Tag (как в источнике, так и в приемнике) можно указать, как будет использовано значение выбранного тега:

Direct (Прямое использование) – будет использовано значение этого тега;

Indirect (Косвенное использование) - будет использовано значение тега, имя которого хранится в указанном теге.

В качестве примера опишем передачу аналогового значения, вводимого в объект I/O Field, в свойство Fill Level объекта Rectangle. Выбрав поле ввода/вывода, в окне его свойств перейдем в закладку событий. В группе событий Output Value (слева) выберем событие Change (Изменение) и из контекстного меню выберем Direct Connection.

Левая часть (Source) в окне диалога уже задана – это само свойство Output Value. В правой части окна (Target) необходимо выбрать тип приемника Object in Picture, далее в нижней части окна, в левом окне списка выбрать объект- получатель (Rectangle1), а в правом окне списка его свойство Fill Level. Для подтверждения выбора надо нажать кнопку ОК.

C-макрос для программирования реакции на событие. Использование макросов для определения реакции на изменение свойства объекта влияет на производительность системы исполнения. Событие происходит, если изменяется значение свойства объекта. В этом случае, макрос, связанный с этим событием, начинает выполняться. Когда кадр закрывается, выполнение всех макросов по очереди завершается. Это может привести к большой нагрузке на

систему. Собственно применение С-макросов будет рассмотрено далее, в главе «Сценарии и функции».

VBS-макрос для программирования реакции на событие. В данном курсе применение VBS-макросов не рассматривается.

Запуск проекта WinCC.

После создания и сохранения кадра мнемосхемы, можно посмотреть, как он выглядит в режиме исполнения, как динамически меняются свойства объектов и отрабатываются их события. Для этого в Проводнике WinCC в свойствах компьютера необходимо открыть вкладку Graphic Runtime и обязательно заполнить следующие поля и параметры:

  1. Start Picture (Стартовое изображение) – имя кадра, который будет отображаться при запуске режима WinCC Runtime, его можно выбрать с помощью кнопки "Browse (Просмотр)";

  2. В поле Windows Attributes (Атрибуты окна) нужно установить флажки Title, Border и Full Screen, что обеспечит изображение кадра во весь экран, но с возможностью изменения его размера и закрытия при необходимости.

После внесения изменений в свойства компьютера можно запустить WinCC Runtime через команды меню WinCC Explorer "File (Файл)"\"Activate (Активировать)". Флажок около "Activate" означает, что режим исполнения активирован.

Альтернативно можно использовать кнопку "Activate” на панели инструментов WinCC Explorer.

Есть также возможность запуска кадра, открытого в графическом редакторе (а не того, который указан в поле Start Picture вкладки Graphic Runtime свойств компьютера). Для этого также можно использовать кнопку "Activate", но на панели инструментов Graphics Designer.

Закрытие окна WinCC Explorer. Для выхода из WinCC Explorer используется стандартная кнопка закрытия окна Windows либо команда File\Exit в меню WinCC Explorer. При этом возможны два варианта закрытия:

Close Project and Exit WinCC (Закрыть проект и выйти из WinCC) – для полного выхода из SCADA-системы;

Exit WinCC Explorer (Выйти из WinCC Explorer) – для закрытия только окна WinCC Explorer. Проект при этом останется открытым в фоновом режиме, а если был запущен режим WinCC Runtime, то он так и останется работающим.

Организация иерархии кадров.

Как правило, в SCADA-системах используются несколько кадров, которые в процессе работы могут менять друг друга, либо перекрывать (всплывающие окна).

Для работы с кадрами в WinCC предусмотрен объект Picture Window из группы объектов Smart Objects. Этот объект является контейнером, в котором можно отобразить кадр по принципу «картинка в картинке».

Создание всплывающего окна. В простейшем случае при работе с объектами Picture Window используется следующий набор действий:

Создается основной кадр;

Создается кадр для отображения во всплывающем окне;

В основном кадре размещается объект Picture Window, в свойстве Picture Name которого указывается имя pdl-файла, отображаемого во всплывающем окне, а также другие свойства (например, свойство Adapt Size (Адаптировать размер) рекомендуется установить вYes (Да), а Display (Отображать) – в No (Нет));

Кроме объекта Picture Window в основном кадре требуется разместить объект (например, кнопку), в обработчике действия Mouse Action которого конфигурируется действие по отображению всплывающего окна – установка свойства Display объекта Picture Window

вYes. Это легко сделать с помощью Direct Connection, передавая константу 1 в свойство Display объекта Picture Window.

Перечислим другие полезные свойства объекта Picture Window:

Update Cycle – цикл обновления свойств объектов, отображаемых в кадре, при использовании у этих объектов триггера Window Cycle;

Sizeable (Изменяемость размеров) – определяет, можно ли в WinCC Runtime с помощью мыши изменять размер этого окна;

Movable (Перемещаемость) - определяет, можно ли в WinCC Runtime с помощью мыши перемещать это окно;

Border (Рамка) - определяет наличие рамки этого окна;

Title (Заголовок) - определяет наличие строки заголовка этого окна;

Can Be Maximized (Может быть максимизировано) - определяет наличие кнопки максимизации (во весь экран) этого окна;

Can Be Closed (Может быть закрыто) - определяет наличие кнопки закрытия этого окна;

Foreground (Передний план) - определяет положение этого окна относительно других окон, для всплывающих окон рекомендуется устанавливать вYes;

Scroll Bar (Полоса прокрутки) - определяет наличие полосы прокрутки этого окна при превышении размерами изображения размеров окна;

Adapt Size (Адаптировать размер) – определяет, нужно ли подгонять размеры этого окна под размер изображения в окне;

Adapt Picture (Адаптировать изображение) – определяет, нужно ли подгонять размер изображения под размер этого окна;

Tag Prefix (Префикс имени тега) – позволяет задать префикс перед именами всех тегов, отображаемых в этом окне (подробнее см. главу «Структурные типы данных»);

Server Prefix (Префикс сервера) – имя WinCC-сервера, на котором расположено отображаемое изображение (в случае клиентского проекта).

Закрытие всплывающего окна.

Помимо стандартного способа закрытия с помощью кнопки (наличие которой задается свойством Can Be Closed), есть возможность программного закрытия окна по нажатию расположенной в нем кнопки, обработчик события Mouse Action которой с помощью Direct Connection передает константу 0 в свойство Display объекта Current Window.

Типовая компоновка экрана систем визуализации.

В SCADA-системах принято разделять экран на три области (см. рис. 4.2):

Рисунок 4.2. Типовая структура экрана систем визуализации. Область обзора – верхняя часть экрана для отображения имени текущего пользователя системы, кнопок навигации по мнемосхемам, обобщенных индикаторов состояния процесса.

Вид этой области, как правило, не изменяется.

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

Область клавиатуры – нижняя часть экрана, служит для размещения дополнительных кнопок, выполнения каких-либо действий (например, выхода из среды выполнения).

В WinCC подобное разбиение можно реализовать размешением необходимого количества контейнеров Picture Window на стартовом кадре с разрешением, равном разрешению экрана. В простейшем случае достаточно одного такого объекта шириной по размеру кадра и высотой примерно 85% экрана, оставляющего свободными верхнюю и нихнюю часть кадра. В верхней части размещаются кнопки, нажатие которых меняет значение свойства Picture Name контейнера, записывая туда имена открываемых кадров.

В нижней части можно поместить кнопку выхода из WinCC Runtime. Для конфигурирования этого действия можно воспользоваться мастером динамики, выделив эту кнопку и в панели мастеров динамики вызвав мастер Exit WinCC Runtime. В диалоговом окне мастера достаточно определить событие (Mouse Click) и нажать кнопку ОК.


Объекты пользователя и структурные типы данных.

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

Объекты-группы. В простейшем случае такие составные объекты можно сделать на основе объекта-группы. Для этого, выделив объекты щелчком мыши при нажатой клавише Shift, необходимо вызвать контекстное меню, в котором следует выбрать команду Group Object (Группировать объекты)\

Group (Группировать). С объектом-группой можно работать, как с обычным объектом (перемещать, копировать, удалять), при этом свойства объектов, входящих в состав группы, доступны для редактирования, а их события доступны для обработки. У объекта-группы есть также общие для группы свойства и события. Для разгруппирования объектов используется команда Ungroup (Разгруппировать) контекстного меню.

Объекты пользователя. Недостатком объекта-группы является его громоздкость, обусловленная вложенностью свойств: группа – объект – свойство. Поэтому в WinCC существует еще один вид составных объектов – Customized Object (Объект пользователя). Он отличается тем, что содержит только те свойства и события, которые задаст обработчик. Как правило, такие объекты используются при работе со структурными типами данных, которые будут описаны позднее.

Для примера разместим в любом кадре стандартный объект Static Text (для отображения имени некоторого тега) и интеллектуальный (smart) объект I/O Field (для отображения его значения). Выделим их с нажатой кнопкой Shift и по клику правой кнопки мыши выберем в меню Customize object/Create. В запустившемся диалоге настройки (Customization Dialog) по умолчанию выбрана закладка Properties (Свойства), в ней в поле Objet Type (Тип объекта) зададим имя типа объекта (по умолчанию Customized Object), скажем, Paramon. Далее свойства составных частей объекта можно перетащить в свойства всего объекта, по умолчанию именуемых UserDefined2. Заметим, что в состав объекта могут входить только те его свойства, которые можно изменять динамически. Из Static Text возьмем Text и BackColor, из I/O Field - Output Value. Для каждого добавленного свойства вызовем из контекстного меню команду Properties, после чего зададим Attribute Name (Имя

атрибута) для простоты дальнейшей работы таким же, что и Name of Property (Имя свойства). Всю группу добавленных свойств переименуем из Userdefined2 в Svoistva.

Аналогично во вкладке Events (События) можно добавить в события объекта события его составных частей, но только вызванных мышью и клавиатурой. Обработчики событий изменения свойств объекта создаются автоматически. Для примера будет достаточно взять только события Mouse Action (Действие мыши) на его обеих составных частях.

Готовый объект можно перетащить в библиотеку объектов, вызываемую кнопкой Display Library. Если положить объект в Global Library, то он будет доступен во всех проектах на этом компьютере, а если в Project Library, то его, вместе с проектом, можно будет переместить на другой компьютер.

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

Для создания структуры используется WinCC Explorer. В нем необходимо выбрать узел Structure Type (Структурный тип) и из контекстного меню выбрать команду New Structure Type. В окне редактирования структуры необходимо задать имя структурного типа и с помощью кнопки New Element (Новый элемент) добавить поля структуры. Каждое поле имеет свое имя и свой тип, по умолчанию Short NewTag (Короткое целое новый тег). Имя можно изменить командой контекстного меню Rename (Переименовать), а тип можно выбрать из того же контекстного меню. Созданное поле структуры может быть как внутренним тегом (Internal Tag), так и внешним. Для внешних полей кроме имени и типа

необходимо указать смещение (в байтах) относительно начала структуры. Смещение задается в поле Offset (Смещение). Как правило, это относится к описанию структурных данных, созданных в контроллерах Simatic S7.

Для примера создадим структурный тег с именем paramon, содержащий внутренние переменные (поля структуры): Name – типа text 8 bit, Value типа float, BackColor типа DWORD. Теперь можно создавать переменные этого нового типа: в узле Internal Tag выполним команду контекстного меню New. В списке Data type наш новый тип paramon будет в самом конце списка. Нажав кнопку ОК, получим сразу все теги, входящие в структуру, в виде ИмяТега.ИмяПоля. Лицензия на WinCC учитывает количество тегов, входящих в состав структур. Кроме того, необходимо учитывать, что если структурный тег (экземпляр структуры) создан, то изменять состав структуры нельзя! Для этого потребуется удалить все экземпляры структуры, изменить ее состав и вновь создать структурные теги.

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

«размножением» шаблона на мнемосхемах. Для создания шаблона, свойства созданного экземпляра объекта пользователя привязываются к полям созданного структурного тега в окне свойств объекта. Необходимо дважды кликнуть мышью рядом с именем свойства выделенного объекта в столбце Dymanic, а в открывшемся окне ввести точку и имя поля структурного тега. Для ранее созданного объекта типа Paramon в свойстве Text пишем

«.Name» , в свойстве BackColor - «.BackColor», в Output Value

– «.Value». Если необходима дополнительная обработка свойства, можно запрограммировать обработчик события в

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

Подготовленный шаблон объекта можно размножить командой контекстного меню Duplicate (Дублировать), а затем в палитре Dynamic Wizard выберем закладку Standard, а в ней мастер Link a prototype to a structure. В диалоге можно ввести либо выбрать имя структурного тега, а можно вместо привязки к существующей структуре - создать новую, того же типа. Заметим, что часть названия структуры, до точки, отделяющей имя поля, называется TagPrefix.

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

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

Для корректной работы всплывающего окна в режиме Runtime необходимо в свойство TagPrefix объекта Picture Window, в котором будет отображаться кадр, ввести имя структурного тега (без точки), а значение свойства Display установить в No. Если объект Picture Window имеет свойство Title (Заголовок), установленное в Yes, то имя структурного тега можно ввести также в свойство Capture Text.

Для примера создадим всплывающее окно настройки параметров пользовательского объекта, отображаемое по клику на этом объекте. Создадим новый кадр с именем, например, Monitor. В его верхний левый угол вставим окна

ввода/вывода, связанные с полями структурного тега типа paramon. Естественно, что формат ввода этих окон (атрибут Data Format свойства Output/Input) должен соответствовать типу поля структурного тега (Text для поля Name, Decimal для Value, Hexadecimal для BackColor). Добавим кнопку с текстом "Выход", для ее события Mouse Action с помошью Direct Connect передадим константу 0 в объект Current Window, свойство Display. Уменьшим размер кадра до минимально допустимых размеров.

В основном кадре с мнемосхемой вставим объект Picture Window1, зададим его свойства: Display - No, Foreground - Yes, AdaptSize - Yes, PictureName - имя нового кадра (Monitor.pdl), TagPrefix – paramon_1. Для отображения этого объекта настроим событие клика по объекту: для Mouse Action с помощью Direct Connect передадим константу 1 в объект PictureWindow1, свойство Display.

В заключение отметим, что в режиме Runtime свойство TagPrefix применяется только для неотображаемого объекта. У отображаемого окна оно изменится, но окно останется привязано к предыдущему структурному тегу. Имя структурного тега подставляется в качестве префикса ко всем тегам внутри окна. Если же в окне требуется обратиться к тегу не из данной структуры, перед именем тега нужно поставить префикс «@NOTP::».


Сценарии и функции (Global Script).

Ранее было отмечено, что сценарии на языке программирования С можно использовать как для динамического изменения свойств объекта, так и для обработки событий, в том числе событий изменения свойств объекта. Сценарии пишутся в редакторе сценариев, вызываемом командой C-Action из контекстного меню свойств объекта в столбце Dynamic. Правая часть окна редактора служит для написания текста сценария, а в левой

расположен список функций, которые можно использовать при написании сценариев. Этот список состоит из трех узлов: Project functions (Функции проекта) – содержит функции, созданные непосредственно в этом проекте. Файлы этих функций хранятся в папке Library WinCC-проекта и

недоступны из других проектов.

Standard functions (Стандартные функции) – содержит функции, доступные из всех проектов на данном компьютере. Эти функции можно редактировать, а можно и создавать свои функции в данном узле. Файлы функций расположены в папке установки WinCC (как правило, C:\Program Files\Siemens\WinCC\aplib). При написании собственных стандартных функций следует учитывать, что в случае переустановки WinCC данный каталог будет перезаписан, поэтому необходимо будет создать их резервную копию.

Internal functions (Внутренние функции) - содержит функции, доступные из всех проектов на данном компьютере. Эти функции нельзя редактировать. Их файлы хранятся там же, где и файлы стандартных функций.

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

lpszPictureName – ссылка на имя кадра, в котором расположен объект;

lpszObjectName – ссылка на имя объекта в кадре; lpszPropertyName – ссылка на ися свойства, для которого

выполняется действие.

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

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

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

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

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

«Compile» панели инструментов редактора, либо команда контекстного меню, либо сочетание клавиш «Shift+F8». Результат компиляции выводится в нижней части окна.

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

Функции для работы с тегами. Они расположены в группе Internal functions в папке tag. Имя функции содержит ряд ключевых подстрок, которые определяют особенности этой функции:

  • Get (Set) – чтение (запись) значения тега;

  • Тип данных (Bit, Byte, DWord, Float) – определяет тип тега, с которвм работает функция;

  • State – помимо чтения (записи) тега получает слово состояния тега;

  • StateQC - помимо чтения (записи) тега получает слово состояния и код качества тега;

  • Wait - чтение (запись) значения тега из (в) ПЛК с ожиданием результата.

Примеры имен функций (с параметрами):

  1. SetTagByte (Tag Tag_Name, BYTE value) – записывает байтовое значение value в тег с именем Tag_Name;

  2. GetTagFloatWait (Tag Tag_Name) – возвращает значение вещественного тега Tag_Name, ожидая, пока данные будут получены из ПЛК;

  3. SetTagBitState (Tag Tag_Name, short int value, PDWORD lp_dwstate) - записывает битовое значение value в тег с именем Tag_Name, а в область памяти с адресом lp_dwstate – состояние тега;

  4. GetTagFloat StateQC (Tag Tag_Name, PDWORD lp_dwstate, PDWORD pdwQualityCode) – возвращает значение 32- битного тега с именем Tag_Name, а в области памяти с адресами lp_dwstate и pdwQualityCode записывает состояние и код качества тега.

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

  • Tag selection (Выбор тега) – вызов списка тегов для вставки в качестве значения параметра;

  • Graphic objects (Графические объекты) – вызов окна выбора объектов и свойств для вставки в качестве значения параметра;

  • Pictures (Изображения) – вызов окна выбора кадров для вставки в качестве значения параметра.

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

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

Рисунок 4.3. Пример мнемосхемы системы водоснабжения.

Добавим объект TextList из Smart Object, в котором будем выводить текст "Вкл." и "Выкл.", относящийся к какому-либо элементу инфраструктуры, например, насосу (Pump), состояние которого определяется внутренним бинарным тегом Pump. Объет имеет особенности по созданию элементов списка и направлению передачи информации. При его создании открывается Configuration Dialog, в котором задается привязка к тегу, частота опроса, тип - для вывода, ввода или того и другого, а также параметры шрифта. Для ввода элементов списка используется свойство Output/Input -

Assignments. Два клика по нему открывают окно, в котором можно задать, при каком значении тега (диапазоне значений, превышении значения, понижении значения ниже указанного уровня) кокой текст будет выводиться. Существующие назначения можно удалять, передвигать выше и ниже, а вновь заданные добавлять. Кроме того, свойство Number of visible Lines указывает число отображаемых строк списка.

Применим TextList для отображения состояния двигателя. Свяжем его с тегом Pump с интервалом опроса Upon Change, назначим значению 0 текст "Выкл.", а значению 1 - "Вкл.". Установим число отображаемых строк: 1.

Зададим динамическое изменение свойств (фонового цвета, свойство Group\Colors\Background) насоса через C- Action. По триггеру (изменению тега Pump) будем считывать (функция tag/get/GetTagBit) значение этого тега и возвращать цвет насоса (CO_GREEN, CO_RED) в зависимости от значения тега. Активизируем проект, и, выбирая значения из списка, убедимся в изменении цвета заливки (а значит, и состояния) насоса при изменении объекта TextList.

long _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

if(GetTagBit("Pump") ) return CO_GREEN; else return CO_RED;

}

Для управления задвижками потребуются кнопки, дающие команду на открытие или закрытие (изменение бинарного тега) соответствующей задвижки. Это объекты Windows, событие Mouse Click которых может не только изменять значение тега, но и менять цвет кнопки:

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

SetTagBit("Valve_1",1); SetBackColor("Start.PDL","Button1",CO_LTGRAY); SetBackColor("Start.PDL","Button2",CO_RED);

}

Код можно усложнить для использования одной кнопки с изменяющимся текстом.

Когда однотипных объектов (например, задвижек) на мнемосхеме много, то можно мнемосхему упростить, вынося управление объектами на всплывающее окно.

Создание всплывающего окна было описано ранее, а его вызов совместим с определением имени настраиваемого объекта и его записи в текстовый (8 бит) тег ValveName:

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

SetTagChar("ValveName","Valve_2"); SetVisible("Start1.Pdl","PictureWindow1",TRUE); SetPropChar("Start1.Pdl","PictureWindow1","Caption

Text",GetTagChar("ValveName"));

}

Тег ValveName используется для косвенной адресации действий при нажатии кнопок во всплывающем окне:

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

SetTagBit(GetTagChar("ValveName"),1); SetBackColor("Valve.PDL","Button7", CO_RED);

}

Изменение уровня в резервуаре (вещественный тег Level) возможно в сторону увеличения при включенном насосе (Pump), и открытой входной задвижке Valve_1, а в сторону уменьшения – при открытой выходной задвижке (Valve_2). Для того чтобы вводимое значение учитывало состояние насоса и задвижек, будем вводить значение тега Level с помощью объекта IOField и сценария изменеия его свойства OutputValue:

double _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

double new, cur; cur=GetTagDouble("Level");

new=GetInputValueDouble(lpszPictureName,"IOField1"

);

if (new cur)

{

if(GetTagBit("Pump")&&GetTagBit("Valve_1"))

{

SetTagDouble("Level",new); return new;

}

}

else if (GetTagBit("Valve_2"))

{

SetTagDouble("Level",new); return new;

}

return cur;

}

При обработке кликов мыши можно вставить в C-Action код запроса на подтверждение, при положительном ответе на который и выполняется действие. Например, запросим подтверждение на выход из Runtime (используя внутреннюю функцию из группы wincc\system) при нажатии на кнопку:

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

HWND Handle; //Дескриптор окна Runtime Handle=FindWindow("PDLRTisAliveAndWaitsForYou","Wi

nCC-Runtime - ");

//Поиск дескриптора родительского окна

//1й параметр – Classname, 2й – имя окна

If (MessageBox(Handle, "Вы уверены?", "Внимание", MB_YESNO |MB_ICONQUESTION| MB_SETFOREGROUND) == IDNO)

return;

// Вывод окна с заголовком "Внимание", текстом "Вы уверены?", кнопками YES и NO,

// иконкой вопроса, в модальном режиме

// При нажатии кнопки "NO" - выход из C-Action DeactivateRTProject();// Иначе - выход из Runtime

}

Аналогично, используя системную функцию Windows

ShowWindow(Handle, SW_MINIMIZE), можно свернуть окно

среды исполнения в системный трей. Возможны и другие варианты действий:

  • Выход из WinCC с закрытием проекта (функция DMExitWinCCEx (DM_SDMODE_WINCC));

  • Выход из WinCC и завершение работы Windows: (DMExitWinCCEx (DM_SDMODE_SYSTEM);

  • Выход из WinCC и сеанса пользователя Windows: (DMExitWinCCEx(DM_SDMODE_LOGOFF);

  • Выход из WinCC и перезагрузка Windows: (DMExitWinCCEx (DM_SDMODE_REBOOT).

Вызов этих функций по нажатию на кнопку можно обеспечить с помощью мастера динамики, закладка System Functions. Там имеется еще один полезный мастер, для запуска из среды выполнения WinCC другого приложения (Start Another Application), вместо вызова которого рекомендуется использовать сценарий, позволяющий запускать необходимое приложение в единственном экземпляре, с необходимыми аргументами:

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

HWND Handle;

Handle=FindWindow("XLMAIN","Microsoft Excel - test"); //Поиск окна приложения по заголовку

If (Handle) {SetForegroundWindow(Handle);

//Если приложение есть – на передний план ShowWindow(Handle, SW_MAXIMIZE);

//Если приложение есть – во весь экран return;}

//Если нет – запуск, как дочернего Handle=FindWindowNULL,"WinCC-Runtime -");

If (ProgramExecute("C:\\Program Files\\Microsoft Office\\Office 10\\Excel.exe d:\\test.xls")

MessageBox(Handle,"При запуске Excel возникла ошибка", "Ошибка",MB_OK|MB_ICONERROR);

}

Функции для работы со свойствами. При работе со свойствами объекта из кода сценария, как правило, требуется:

  • Выбрать кадр, на котором расположен объект;

  • Выбрать объект;

  • Выбрать свойство;

  • Считать (записать) значение.

Функции для работы со свойствами объектов расположены в парке graphics внутренних функций. Также, ка и для тегов, функции делятся на два типа: получения свойства (get) и установки свойства (set). При всем разнообразааи представленных в этой папке функций их можно разделить на две группы:

  • Работы со свойствами с указанием его типа (папка property);

  • Все остальные.

Рассмотрим кратко функции первой группы. Для чтения и записи есть по четыре функции соответствующих типов:

  • GetPropBOOL (SetPropBOOL) – чтение (запись) свойства типа BOOL;

  • GetPropChar (SetPropChar) – чтение (запись) свойства типа Char;

  • GetPropDouble (SetPropDouble) – чтение (запись) свойства вещественного типа (как одинарной точности, так и двойной;

  • GetPropWord (SetPropWord) чтение (запись) свойства любого целочисленного типа.

Функции получения свойства содержат три текстовых параметра имя кадра (lpszPictureName), имя объекта (lpszObjectName) и имя свойства (lpszPropertyName). Функции записи дополнительно содержат еще один параметр соответствующего типа. Для указания имени свойства используется название его Attribute Name (Имя атрибута).

Примеры использования функций работы со свойствами встречались ранее (SetPropChar в примере открытия

всплывающего окна для задания заголовка окна) и будут рассмотрены далее в примере пользовательской функции.

Отладка сценариев. WinCC позволяет отлаживать программный код путем вывода текста в специальное окно, формируемое объектом Application Window из группы Smart Objects. При добавлении этого объекта в кадр последовательно появляются диалоговые окна, в которых необходимо выбрать тип содержимого Global Script в первом окне и GCS Diagnostics во втором. Параметры этого объекта аналогичны параметрам Picture Window.

Если в момент выполнения сценариев в среде Runtime возникнет какая-либо ошибка (обращение к несуществующему тегу, объекту, свойсву), то в это окно будет выведена информация об ошибке, из которой можно выяснить:

  • кадр, в котором произошла ошибка (lpszPictureName);

  • объект, в котором произошла ошибка (lpszObjectName);

  • свойство, в обработчике которого произошла ошибка (lpszPropertyName);

  • описание ошибки (szErrortext).

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

printf("Something wrong!\r\n").

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

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

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

#pragma code ("Kernel32.dll")

//подключение библиотеки VOID Sleep(

DWORD dwMilliseconds // sleep time

);

BOOL TerminateProcess(

HANDLE hProcess, // handle to the process UINT uExitCode // exit code for the process

); //импорт функции HANDLE OpenProcess(

DWORD dwDesiredAccess, // access flag

BOOL bInheritHandle, //handle inheritance option DWORD dwProcessId // process identifier

); //импорт функции

#pragma code() //отключение библиотеки

#pragma code("User32.dll")//подключение библиотеки BOOL PostMessage(

HWND hWnd, // handle to destination window UINT Msg, // message

WPARAM wParam, // first message parameter LPARAM lParam // second message parameter

); //импорт функции

DWORD GetWindowThreadProcessId(

HWND hWnd, // handle to window LPDWORD lpdwProcessId // process identifier

); //импорт функции

#pragma code()//отключение библиотеки HWND hwnd; // дескриптор окна

DWORD pid; //ID процесса HANDLE hProcess;//HANDLE процесса

DWORD PROCESS_TERMINATE=1;//Флаг доступа ProgramExecute("C:\\winnt\\notepad.exe");

// Запуск блокнота hwnd=FindWindow(NULL,"Безымянный - Блокнот"); ShowWindow(hwnd, SW_MAXIMIZE); //Развернули окно

Sleep(4000);//подождать 4 секунды для ввода текста PostMessage(hwnd, WM_CLOSE, 0, 0);

// Сигнал завершения. Предлагается сохранить файл ProgramExecute("C:\\Winnt\\System32\\mspaint.exe"); hwnd=FindWindow(NULL,"Безымянный - Paint");

// Запуск Paint

ShowWindow(hwnd, SW_MAXIMIZE); //Развернули окно Sleep(1000);// подождать 1 секунду GetWindowThreadProcessId(hwnd, &pid);

// Получаем PID процесса-владельца окна hProcess=OpenProcess(PROCESS_TERMINATE, FALSE,

pid); //Получаем HANDLE процесса TerminateProcess(hProcess,0);

// убить процесс без сохранения файла

}

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

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

  • вычисления программируются только один раз;

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

  • код сценария будет короче и понятнее;

  • могут быть защищены с помощью пароля от несанкционированного изменения и просмотра;

  • не имеют триггеров.

Функции проекта хранятся в подпапке "\library" проекта WinCC как файлы с расширением "*.fct".

В качестве примера приведем функцию, передающую свойства Text и OutputValue одного пользовательского объекта (см. главу 3.6) в другой, принимая их имена:

BOOL New_Function(char *lpszPictureName, char

*SourceName, char *TargetName)

{

if (SetPropChar(lpszPictureName, TargetName, "Text", GetPropChar(lpszPictureName,SourceName,"Text")))

{

printf("Text is set to %s\r\n", GetPropChar(lpszPictureName,SourceName,"Text"));

if (SetPropDouble(lpszPictureName, TargetName, "OutputValue", GetPropDouble(lpszPictureName, SourceName, "OutputValue")))

{

printf("Output Value is set to %d\r\n", (int)GetPropDouble(lpszPictureName, SourceName, "OutputValue"));

return TRUE;

}

else

{

printf("Output Value is NOT set!!!\r\n"); return FALSE;

}

}

MessageBox(NULL,"Свойства не скопированы!", "Ошибка!", MB_OK|MB_ICONERROR);

return FALSE;

}

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

один пользовательский объект типа paramon, по событию клика мыши по которому будет вызываться сценарий вида:

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

New_Function("Start.Pdl","paramon1","paramon3");

}

Сохранив кадр и перезапусив среду выполнения, пронаблюдаем за работой функции. Если поменять свойства объекта paramon1 с помощью всплывающего окна его настройки (см. главу 3.6), а потом кликнуть по объекту paramon3, то его свойства примут значения аналогичных свойств объекта paramon1. При наличии в кадре объекта Application Window, в нем будут выведены диагностические сообщения вида:

Text is set to qwerty Output Value is set to 111

войства

В качестве упражнения рекомендуется расширить приведенный пример копированием свойства BackColor объекта типа paramon.

Отметим, что пользовательские функции могут использоваться также:

  • в динамических диалогах в редакторе Graphic Designer;

  • в других функциях проекта;

  • в фоновых сценариях.

Фоновые сценарии (локальные и глобальные макросы). Иногда возникает необходимость выполнять некие действия в проекте автомптизации вне зависимости от того, какой кадр мнемосхемы открыт в среде выполнения, какие действия выполняет оператор и т.д. Это может быть запись данных в таблицы Excel при окончании смены и сохранение файлов, циклическая проверка каналов связи с ПЛК, и т.д. Такие действия называются фоновыми, они выполняются с определенным циклом или запускаются при возникновении некоторого события (срабатывания триггера)

и могут выполняться как на отдельном компьютере (локальные макросы), так и на всех компьютерах, на которых запущен многопользовательский проект (глобальные макросы). Для однопользовательских проектов эти понятия равнозначны. При этом глобальные макросы создаются во вкладке Global actions (Глобальные макросы) подпапки Actions папки C-Editor узла Global Script в проводнике WinCC Explorer. Сохраняются они в папке PAS каталога проекта в виде файлов с расширением "*.pas". Локальные макросы создаются во вкладке Actions: Имя_компьютера редактора C- Editor и сохраняются в в подпапке "\Имя_компьютера\Pas" папки проекта.

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

Для выполнения макроса в список запуска системы исполнения должен быть отмечен компонент Global Script Runtime (Система исполнения редактора Глобальных сценариев) на вкладке Startup окна свойств компьютера в проводнике WinCC.

Для переноса макроса на другой компьютер (в другой проект) его вначале необходимо экспортировать командой меню Edit\Export редактора Global Script. Экспортированный файл имеет расширение *.act и после переноса на другой компьютер должен быть импортирован соответствующей командой, после чего необходимо перегенерировать заголовки кнопкой Generate Header в окне редактора Global Script или соответствующей командой из меню Tools. Перегенерация заголовков требуется и при переносе пользовательских функций.

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

В качестве примера рассмотрим макрос, изменяющий значение тега Level ранее рассмотренного примера системы водоснабжения. Этот макрос будет запускаться циклически (кнопка Info / Trigger окна редактора, закладка Trigger, узел Timer тип Cyclic) и изменять значения тега в зависимости от состояния насоса Pump и задвижек Valve_1 и Valve_2, а также управлять бинарным тегом аварийного сообщения Alarm. В данном примере закомментированы диагностические сообщения (опреаторы printf) и функции установки значения тега Position типа Unsigned 8-bit, который потребуется для формирования сообщений о превышении / понижении уровня в резервуаре (см. главу 3.10).

int gscAction( void )

{

static float x=0; static int direction=1; double pi=3.1415, y;

if (GetTagBit("Alarm")) SetTagBit("Pump",0);

if (GetTagBit("Pump")&&GetTagBit("Valve_1")) direction=1;

if (GetTagBit("Valve_2")) direction=-1;

//printf("Direction %d\r\n", direction); x=x+direction*0.1; y=GetTagDouble("TankLevel");

if (y=90.0) {

SetTagBit("Alarm",1);

//SetTagByte("Position",2);

//printf("Alarm is set!\r\n");

}

else

{

SetTagBit("Alarm",0);

//SetTagByte("Position",0);

}

if (y

//SetTagByte("Position",1);

}

y=50+50*sin(x); SetTagDouble("Level",y);

return 0;

}

Необходимо отметить, что имя функции, выполняемой в фоновом действии, задано по умолчанию и функция обязана возвращать целое значение (по умолчанию 0). Это значение можно использовать в целях диагностики работы макроса. Для примера модифицируем представленный выше код, изменив последнюю строку для возвращения текущего значения тега Level:

return (int) y;

После перекомпиляции и сохранения кода макроса необходимо перейти в графический редактор и в главном кадре добавить объект Application Window для работы с Global Script в режиме GSC Runtime. Сохранив кадр, в среде исполнения увидим, что в этом объекте отображается таблица, а в ней в сторке с именем макроса будет выводиться возвращаемое макросом значение (столбец Return Value). Если макрос имеет несколько точек выхода, то, задавая разные возвращаемыке значения для этих точек, можно определить место, в котором произошел выход из макроса.


Разграничение прав доступа (User Administrator).

Обычно даже в несложных проектах требуется разграничить права пользователей. Например, оператор не должен изменять параметры оборкдования, а инженер АСУ ТП – управлять процессом. Для организации такого разделения прав доступа в WinCC используется редактор User Administrator (Администратор пользователей), вызываемый из Проводника WinCC.

Настройка доступа. Процесс настройки доступа состоит из нескольких этапов:

  1. создание списка всех возможных разрешений на доступ к тем или иным функциям системы визуализации;

  2. создание групп пользователей;

  3. присвоение группам пользователей разрешений на доступ к функциям системы;

  4. создание учетных записей пользователей;

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

Список разрешений на доступ включает, как правило, функции управления ТП, функции настройки оборудования, функции модификации мнемосхем и сценариев. При создании проекта ряд таких разрешений (17 для локальных пользователей и 3 – для сетевых) уже создан. Название разрешений можно редактировать, а сами разрешения – удалять (Insert authorization) и добавлять (Delete authorization) через команду меню Table (Таблица), однако поскольку эти разрешения по умолчанию используются в некоторых стандартных объектах и сценариях, то удалять их не рекомендуется. Добавление разрешения возможно лишь при остановленной системе выполнения и сводится к вводу номера разрешения (от первого свободного до 999). После добавления разрешения в таблице появится новая строка с соответствующим номером, в которую нужно ввести название разрешения. Поскольку проверка разрешения выполняется по номеру, то требований к названию разрешения нет.

Создание групп пользователей. Существующие группы (как минимум, группа администраторов, Administrator group) отображаются в левой части окна редактора. Для добавления группы используется команда Add group (Добавить группу) из контекстного меню в этом окне редактора, или клманда меню редактора User \ Add group (Пользователь \ Добавить группу). Группа добавляется с автоматически формируемым

названием, которое можно изменить. Рекомендуется не удалять группу администраторов, но добавить группу операторов, инженеров (технологов), программистов.

Для выделенной в левой части окна редактора группы можно в правой части задать необходимые разрешения. Эти разрешения будут применяться для всех членов данной группы. Для выбранной группы можно настроить регистрацию в системе исполнения с использованием чип- карты (при наличии необходимого оборудования), разрешить группе доступ через интернет как web-клиенту с использованием компонента WinCC WebNavigator. Можно также настроить автоматический выход пользователей из системы через указанное количество минут (0 - ограничения по времени нет) после регистрации (absolute time) или неактивности (idle time). Сами права задаются и отбираются двойным кликом левой кнопки мыши.

Создание учетных записей пользователей происходит в выделенной в левой части окна группе с использованием команды Add user из контекстного меню или меню User редактора. В появившемся окне следует ввести учетное имя пользователя и дважды – его пароль. Если установлен флажок Copy group settings also (Также копировать права группы), то пользователю будут скопированы права группы. Имя пользователя и пароль (не менее 6 символов) могут содержать русские буквы, но следует иметь в виду, что текущая раскладка клавиатуры ни в среде выполнения, ни в окне регистрации пользователя не отображаются.

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

Регистрация пользователей. Авторизация может производиться нажатием клавиш, определенных для

входа/выхода в/из системы в свойствах проекта, закладка HotKeys, где после ввода сочетаний клавиш необходимо нажать кнопку Assisn (Назначить).

Другой вариант регистрации – использование обычной кнопки, при клике на которую в сценарии вызывается функция standard/options/PassLoginDialog с символьным параметром – номером монитора, на котором отображается окно авторизации. Для проектов с одним монитором (не использующим видеостену из набора мониторов) задается параметр, равный ‘1’. Это окно имеет существенный недостаток – после отображения оно находится не в фокусе ввода, хотя текстовый курсор и отображается в поле Login. Для ввода учетного имени пользователя в это поле необходимо кликнуть в него мышью.

Есть способ вызова другого окна регистрации - использование функции PWRTLogin из дополнительной библиотеки UseAdmin.dll:

void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

#pragma code ("UseAdmin.dll") BOOL PWRTLogin (TCHAR Monitor);

#pragma code() PWRTLogin(1);

}

Еще один, достаточно экзотический способ регистрации пользователя в системе, называется «Регистрация через переменную». Этот способ применяется при отсутствии на операторском компьютере клавиатуры и неудобстве использования экранной клавиатуры. Суть данного способа описана в справочной системе.

Отображение зарегистрированного пользователя. Имя зарегистрированного в процессе диалога пользователя хранится в системном теге @CurrentUser. Для отображения имени текущего пользователя можно использовать стандартный объект StaticText, связанный с этим тегом.

Использование разрешений доступа. Любой элемент управления на мнемосхеме можно защитить от использования разными способами.

Можно явно указать, какой уровень доступа необходимо иметь пользователю, чтобы воздействовать на объект. Для этого в свойствах объекта /Misc/Authorization выберем какой- либо (но один!) уровень доступа. В среде выполнения объект будет отображаться как доступный, но клик по нему от пользователя, не имеющего нужного уровня доступа, приведет к появлению сообщения о недостаточности прав.

У всех элементов управления есть свойство /Misc/Operator Control Enable, указывающее, доступен ли элемент в WinCC- Runtime. Если установить значение этого свойства в No, то объект будет недоступным (отображается более бледным в среде исполнения) и его события обрабатываться не будут. Доступность можно изменять с помощью функции. Например, обусловим доступность кнопки выхода из Runtime выключением двигателя. Изначально свойство кнопки Operator Control Enable находится в состоянии "No", объект виден, но не активен. При возникновении события изменения тега Pump можно вызвать C-Action, который проверит состояние тега и сделает доступной кнопку выхода из Runtime:

BOOL _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName) {

if (!GetTagBit("Pump")) SetOperation("Start.Pdl","Button5",TRUE);

else SetOperation("Start.Pdl","Button5",FALSE);

}

Если необходимо разрешить доступ к объекту лишь пользователям, имеющим несколько уровней доступа, или кроме уровня доступа проверять и имя пользователя, то свойство OperatorControlEnabled можно изменять динамически сценарием, используя функцию PASSCheckLevelPermission из группы standard/options:

BOOL _main(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)

{

return PASSCheckLevelPermission(2) && PASSCheckLevelPermission(8) &&

!strcmp(GetTagChar("@CurrentUser"),"Petrov");

}

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

@CurrentUser.

Недоступные кнопки, как и кнопки, при клике на которых появляется сообщение о недостаточности прав, раздражают пользователей. Поэтому часто объекты просто не отображаются для не зарегистрированных либо не обладающих необходимыми привилегиями пользователей. Для этого их свойство Display изначально установлено в No, а триггером является изменение тега @CurrentUser, по которому запускается сценарий, проверяющий права доступа и отображающий (скрывающий) объект. Рекомендуется для тренировки создать сценарий, отображающий кнопку только при регистрации одного из имеющихся в системе пользователей.


Архивирование тегов (Tag Logging).

Любая система визуализации технологического процесса имеет возможность накопления архивов измеренных значений. В WinCC основная работа по конфигурированию архивов измеренных значений ведется в редакторе Tag Logging (Регистрация тегов). В редакторе Tag Logging конфигурируются сами архивы, теги, которые должны архивироваться, а также циклы архивирования. Конфигурирование в Tag Logging существенно упрощается, если используется Мастер архивов (Archive Wizard).

Система Tag Logging состоит из двух компонентов: системы конфигурирования (Tag Logging CS) и системы исполнения (Tag Logging Runtime), запуск которой настраивается в свойствах компьютера, вкладка Startup.

Описание редактора. Открыть редактор можно из проводника WinCC. Его окно состоит из трех основных частей:

  1. область навигацмии (слева вверху) – позволяет получить доступ к основным элементам системы архивирования;

  2. область детализации (справа вверху) – содержит компоненты, входящие в состав элемента, выбранного в области навигации;

  3. область архивных тегов (основная часть окна) – содержит список архивных тегов выбранного архива.

Собственно работа по созданию и настройке системы архивирования состоит из нескольких этапов:

  1. создание пользовательских либо изменение предустановленных циклов сбора и архивирования данных;

  2. создание архивов;

  3. создание архивных тегов;

  4. настройка периода накопления архивов.

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

  1. имя таймера;

  2. базовый (Base) таймер;

  3. множитель (Faktor) для базового таймера.

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

Создание архивов. После конфигурирования таймеров можно переходить к созданию архивов. Архив - это набор архивных тегов, сгруппированных по какому-либо признаку.

Для создания архивов используется мастер Archive Wizard, запускаемый соответствующей командой контекстного меню на узле Archives окна навигации. Мастер предлагает имя архива по умолчанию, которое можно изменить, и выбор типа архива – процессного или сжатого. Процессный архив хранит значения тегов, а сжатый выполняет обработку значений тегов агрегатными функциями за некоторый интервал времени. В большинстве случаев импользуются процессные архивы.

На втором шаге мастера необходимо выбрать теги для добавления в архив. Это можно сделать и позже, после окончания работы мастера.

Создание архивных тегов. Архивные теги можно создавать в процессе работы мастера архивов, а можно и позже. В этом случае используется команда New Tag (Новый тег) контекстного меню, вызванного на имени архива. В открывшемся окне можно выбрать теги WinCC, на основе которых будут созданы архивные теги. Это окно позволяет выбрать несколько тегов.

В качестве примера можно добавить в архив ранее созданные аналоговый тег Level и бинарные теги Pump и Alarm. В результате в нижней части окна редактора

отобразятся созданные архивные теги. Из контекстного меню на каком-либо архивном теге можно выбрать команду Properties (Свойства) для открытия окна свойств архивного тега. Это окно содержит несколько вкладок, содержимое которых различается для бинарных и аналоговых тегов процесса.

На первой вкладке (Archive Tag) задается имя архивного тега, по умолчанию совпадающее с именем тега процесса. Его можно изменить, можно выбрать другой тег процесса с помощью кнопки "Select…" ("Выбор ..."), ввести комментарий к тегу и задать некоторые свойства архивного тега. К ним относятся:

Тип ввода (Supplying tags) – автоматическая передача в архив значения выбранного тега (System) или ручной ввод тега (Manual input);

Режим архивирования (Archiving) – разрешен (Enabled) или запрещен (Disabled);

Тип сбора данных (Acquisition Type) – ациклический (Acyclic), циклический продолженный (Cyclic-continuous), циклический селективный (Cyclic-selective), по изменению тега (Upon change);

Цикл (Cycle) – выбот таймеров сбора (Acquisition) и архивирования (Archiving/Display) с указанием множителя;

Запись архивного значения в тег (Also put archived value in tag) – позволяет выбрать тег, в который будет записано архивированное значение.

Для бинарного тега данная вкладка имеет заблокированное поле выбора таймера сбора (Acquisition).

Вторая вкладка свойств архивного тега (Properties) позволяет записывать не только реальное значение процессного тега, но и результат обработки значений, полученных по таймеру сбора, за время, определяемое таймером архивирования. Для обработки применяются агрегатные функции или функция, выбираемая из числа

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

Для любых типов сбора данных возможна запись единицы измерения тега, задаваемой в поле Direct, а также выбор значения, записываемого при ошибке значения получения процессного тега – последнего полученного (Last Value) или подстановочного (Substitution Value), заданного в свойствах тега.

При выборе циклического типа сбора данных можно разрешить запись в архив лишь при изменении значения (Archive upon change), заданного в группе полей Processing (Обработка), на заданную абсолютную (abs.) или относительную (%) величину (Hysteresis).

При выборе циклического селективного сбора данных становится возможным ввод в группу полей Number of values (Число значений) числа измеренных значений перед (Leader) и после (Trailer) записываемым значением.

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

  • при каждом изменении сигнала (on every signal change);

  • всегда, даже если изменения нет (always);

  • по переднему фронту сигнала (on signal change 0 - 1);

  • по заднему фронту (on signal change 1 - 0).

Также всегда доступен выбор значения, записываемого при ошибке сбора данных – последнего измеренного или подстановочного. А вот при выборе циклического селективного типа сбора данных появляется возможность указания числа измеренных значений перед (Leader) и после (Trailer) записываемым значением.

Вкладка свойств архивного тега Events (События) присутствует как у аналогового, так и у бинарного тегов. Она используется для указания события, формируемого функцией или тегом, используемого как триггер начала архивирования (Start event / Start tag) при выборе ациклического типа сбора данных, и события остановки записи (Stop event / Stop tag) при выборе циклического селективного типа сбора данных.

В свойствах аналоговых архивных тегов присутствует вкладка – Display (Отображение). В ней можно указать нижний и верхний предел значений архивируемого тега.

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

Настройка периода архивирования. Следующим шагом в настройке архивов является задание периода архивации. Для этого в окне навигации редактора архивов необходимо выделить узел Archive Configuration. В окне детализации появятся два объекта:

  • Tag Logging Fast (Быстрый архив);

  • Tag Logging Slow (Медленный архив).

Состав данных, помещаемых в эти архивы, определяется циклом архивирования. Этот параметр можно задать в свойствах архива, в которых на вкладке Archive Configuration (Конфигурация архива) задаются свойства сегментов архива. Сегмент – это отдельная база данных Microsoft SQL Server, содержащая архивные данные за определенный промежуток времени. Для сегментов можно задать следующие параметры:

  1. Time period covered by a single segment (Период времени, охватываемый одиночным сегментом) – период времени, в течение которого данные будут записываться в сегмент.

  2. Max. size of a single segment (Максимальный размер одиочного сегмента) – размер, который может занимать сегмент.

Эти два параметра определяют размер сегмента. Смена сегмента (создание нового сегмента архивов) будет происхдить при достижении текущим сегментом одного из этих параметров (либо время либо размер):

  1. Time period of all segments (Максимальный период времени) – общий период времени архивирования.

  2. Max. size of all sedments (Максимальный размер всех сгментов) – общий размер всех сегментов.

Эти параметры аналогичны первым двум и определяют общий размер архива измеренных значений. При достижении заданного размера либо при окончании общего периода самые старые значения (самый старый сегмент) удаляются.

На второй закладке Backup Configuration (Резервное копирование) настраивается резервное копирование, если в нем есть необходимость. Включение резервного копирования выполняется с помощью флажка Activate Backup (Включить резервное копирование). После включения резервного копирования нужно задать пути к папкам, в которые будут копироваться данные: Destination path (Путь назначения) и Alternative destination path (Альтернативный путь назначения). Как видно, можно указать два различных пути, например, копировать данные на два разных компьютера либо на компьютер и внешний жесткий диск.

Механизм резервного копирования достаточно простой: при заполнении сегмента он копируется по указанным путям. Если на момент копирования устройства для резервного копирования недоступны, сбоя в системе архивирования не произойдет. Как только устройство для резервного копирования будет обнаружено, на него будут скопированы все накопившиеся на данный момент сегменты.

Отображение архивных данных в виде графиков. Для отображения архивных данных в виде графиков и таблиц рекомендуется создать отдельный кадр мнемосхемы, на который можно добавить объекты ActiveX с именами WinCC Online Trend Control и WinCC Online Table Control, которые находятся на вкладке Controls палитры объектов.

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

На первой вкладке Curves (Кривые) или Trends (Тренды) в зависимости от версии WinCC задаются основные свойства объекта: количество, тип и цвет кривых, привязка кривых к архивным тегам, их названия и оси. Для примера создадим кривую для архивного тега Level:

  • добавим новую кривую кнопкой «+» или New (Новая), расположенной ниже окна Trends (Тренды);

  • привяжем кривую к архивному тегу с помощью кнопки Selection (Выбор), при нажатии которой откроется окно выбора архивных тегов;

  • зададим тип и цвет линии.

Простейшее окно отображения графика создано. Для управления его свойствами в среде исполнения рекомендуется во вкладке Toolbar (Панель инструментов) включить отображение всех кнопок, установив флажок All keyboard functions (Все инструментальные функции).

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

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

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

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

Свойства осей времени задаются на вкладке Time Axis (Оси времени) окна конфигурации. Для каждой кривой, добавленной на вкладке Curves (или Trends), выбрав ее из списка Trends, можно указать ее подпись (Label или Object Name) и диапазон времени (Time Range), отображаемый на оси, как в единицах измерения времени (по умолчанию – минутах), так и в виде количества отображаемых точек.

Свойства осей значений задаются на вкладке Value Axis (Ось значений) окна конфигурации. Осей значений может быть несколько (для каждой кривой) или одна для всех кривых. В случае несколько осей для каждой оси можно задать подпись и отображаемый диапазон (Value Range), который может вычисляться автоматически установкой флажка Automatic(Автоматически), либо задаваться вручную в полях ввода From (От) To (До). Также возможно задать отображение линий сетки (Grid Lines).

При настройке объекта Online Trend Control имеется возможность выделить цветом определенные состояния

значения отображаемого тега. Эта группа свойств задается для каждого отображаемого тега во вкладке (в версии 7 и выше – отдельном окне, вызываемом из главной вкладки) Limit Values (Граничные значения), при этом возможно задать:

Low Limit Value (Нижнее предельное значение) – цвет кривой на графике ниже указанного предела;

High Limit Value (Верхнее предельное значение) – цвет кривой на графике выше указанного предела;

Value with uncertain status (Величина с неопределенным состоянием) – цвет кривой на графике при плохом качестве тега (например, при отсутствии связи с ПЛК).

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

Отображение архивных данных в виде таблиц. Для представления архивов измеренных значений в табличном виде используется объект WinCC Online Table Control, расположенный на вкладке Controls палитры объектов графического редактора. Для изучения его свойств добавим данный объект на кадр, предназначенный для отображения графиков, отказавшись от его конфигурирования сразу после добавления. Задав размер и положение объекта в кадре, двойным кликом мыши вызовем окно его конфигурации.

Настроим простейшую таблицу для отображения значений аналогового тега Level:

  1. во вкладке Columns (Колонки) выделим в списке Column элемент Column 1;

  2. переименуем его, введа имя в поле Name (Имя);

  3. установим связь с архивным тегом с помощью кнопки выбора тега;

По умолчанию для столбца времени задан диапазон отображения данных за 1 минуту. Его можно изменить во

вкладке Column (или Time Columns в версии 7 и выше), выбрав имя столбца значений и задав диапазон отображения, точно так же, как в объекте отображения графиков.

Для возможности настройки таблицы в системе исполнения (Runtime), перейдем во вкладку Toolbar (Панель инструментов) и выберем отображение всех кнопок панели инструментов установкой флажка All keyboard functions (Все функции управления). Нажав кнопку ОК, сохраним конфигурацию. Простейшая таблица создана.

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

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

В общем случае объект Online Table Control может отображать несколько столбцов, для каждого из которых можно задать свой столбец времени.

Для самостоятельного изучения настроек объекта рекомендуется добавить таблицу значений бинарного тега, архивируемого лишь при изменении сигнала (или по какому- либо фронту), например, Pump, и настроить его отображение другим цветом со своим столбцом времени и диапазоном отображения.


Архивирование сообщений (Alarm Logging).

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

записываться в архив, а также распечатываться в виде протокола.

Система сообщений состоит из компонента проектирования – редактора Alarm Logging (Регистрация аварийных сообщений) и компонента исполнения Alarm Logging Runtime, подключаемого во вкладке Startup окна свойств компьютера. В редакторе Alarm Logging определяются классы, типы и блоки, составляющие содержание сообщения, а также события, при которых соответствующие сообщения отображаются на экране. Для отображения сообщений в графическом редакторе есть специальный объект – WinCC Alarm Control (Окно отображения аварийных сообщений WinCC), расположенный в палитре объектов.

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

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

У каждого события может быть несколько ключевых точек времени, которые могут быть отображены в сообщении:

  1. Время возникновения события – момент времени, когда событие произошло (изменилось значение бита, значение тега нарушило границу). В этот момент формируется сообщение о событии, сообщение приобретает статус пришедшего (Came In).

  2. Время исчезновения события – момент времени, когда событие прекратилось (восстановилось значение бита, значение тега вошло в границы). Сообщение приобретает

статус ушедшего (Went Out). Такие сообщения нужны не для всех событий.

  1. Время квитирования прихода сообщения – момент времени, когда оператор увидел сообщение и подтвердил факт его прихода. Сообщение приобретает статус квитированного (Acknowledged). Такие сообщения нужны для особо важных, например, аварийных, событий.

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

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

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

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

Редактор Alarm Logging. Открытие редактора производится кликом мыши по узлу Alarm Logging в дереве проекта, отображаемого в Проводнике WinCC. Окно редактора состоит из трехосновных частей:

  1. область навигации – позволяет получить доступ к основным элементам системы сообщений;

  2. область детализации – содержит компоненты, входящие в состав выбранногоэлемента в области навигации;

  3. список сообщений – содержит список сконфигурированных сообщений.

Настройка системы сообщений состоит из следующих этапов:

  1. создание (изменение) блоков сообщений;

  2. создание (изменение) классов и типов сообщений;

  3. создание сообщений;

  4. настройка периода накопления архивов сообщений.

Блоки сообщений. Для доступа к ним используется узел Message Blocks (Блоки сообщений) в области навигации. Существует три вида блоков:

  1. System blocks (Системные блоки) – блоки сообщения, формируемые системой (дата, время, номер, статус и т.д.);

  2. User text blocks (Пользовательские текстовые блоки) – поля сообщения, задаваемые пользователем, не более 10;

  3. Process value blocks (Блоки процессных величин) – поля сообщения, содержащие значения тегов, не более 10. Полный список системных блоков можно посмотреть,

выбрав в окне навигации подузел System blocks и вызвав команду Add/Remove (Добавить/Удалить) из контекстного меню в области детализации. В появившемся окне можно переместить доступные системные блоки (Available System Blocks) в список выбранных (System Blocks Selected) с помощью соответствующих кнопок. Всего доступно 20 блоков, наиболее часто используются следующие:

  1. Date (Дата) – дата формирования сообщения;

  2. Time (Время) – время формирования сообщения;

  3. Duration (Длительность) – время существования сообщения до ухода или квитирования;

  4. Status (Статус) – статус сообщения: пришло, ушло, квитировано;

  5. Number (Номер) – номер сообщения в системе;

  6. Class (Класс) – класс сообщения;

  7. Type (Тип) – тип сообщения;

  8. Loop in Alarm (Контур) – признак наличия у сообщения функции для переходу к кадру, на котором находится объект, вызвавший сообщение;

  9. User name (Имя пользователя) – имя учетной записи пользователя, зарегистрированного в системе выполнения;

  10. Priority (Приоритет) – приоритет сообщения.

Все системные блоки имеют следующие свойства:

  1. Name (Имя) – название поля, можно изменить;

  2. Length (Длина) – размер поля в символах;

  3. Flash on (Мигание) – включение мигания поля для неквитированного сообщения;

  4. Alignment (Выравнивание) – размещение текста внутри поля (слева, справа, по центру).

Для полей даты и времени можно также выбрать формат отображения данных.

В качестве упражнения рекомендуется добавить в сообщение до 6 системных блоков, включая блок «Статус», поменять их названия на русскоязычные, добавить признак мигания в свойствах блока «Статус».

Работа с пользовательскими блоками и блоками процессных величин производится аналогично. Рекомендуется добавить два пользовательских блока длиной не менее 20 символов: «Текст сообщения» и «Место возникновения», а также два блока процессных величин для отображения тегов Level и Alarm.

Классы и типы сообщений. Классы и типы сообщений доступны в узле Message classes области навигации. В проекте по умолчанию создается 3 класса, но с помощью команды Add/Remove (Добавить/Удалить) из контекстного меню в области детализации можно добавить новые, общим числом не более 16.

Свойства классов задаются в окне, вызываемом командой Properties (Свойства) контекстного меню в области

детализации. В первой вкладке (Class 1) окна свойств задается имя класса и добавляются типы, о которых будет сказано позже. Во вкладке Acknowledgement (Квитирование) определяются возможности квитирования сообщений данного класса:

  1. Acknowledgement Came In (Квитировать пришедшие) – пришедшие сообщения данного класса требуют квитирования;

  2. Acknowledgement Went Out (Квитировать ушедшие) – ушедшие сообщения данного класса требуют квитирования;

  3. Flashing On (Мигание) – в неквитированных сообщениях будет включено мигание полей, у которых установлен флаг мигания;

  4. Only Initial Value (Только первое значение) – доступно при установке предыдущего и задает мигание только первого неквитированного сообщения данного класса из нескольких;

  5. Message Without Status «Went Out» (Сообщение без статуса «Ушло») – определяет, что сообщение данного класса не будут иметь статуса «Ушло».

На третьей вкладке (Status Texts, Тексты состояний) задаются тексты, выводимые в поле статуса сообщения:

  1. Came In (Пришло) – как правило, символ «+»;

  2. Went Out (Ушло) – как правило, символ «–»;

  3. Acknowledged (Квитировано) – как правило, символ «*»;

  4. Came In and Went Out (Пришло и ушло) – как правило, символ «+/-».

Состояние «Пришло и ушло» формируется для сообщений, требующих квитирования, но ушедших без квитирования оператором.

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

выбранного в окне навигации класса, либо на первой вкладке окна свойств класса. Для каждого класса можно сформировать до 16 типов сообщений. Рассмотрим свойства какого-либо типа, например Alarm из класса Errors, доступные по команде Properties его контекстного меню. Их два: Name of Msg. Type (Имя типа сообщения) и Preview (Предпросмотр). Первое свойство позволяет изменить имя типа, а второе для каждого статуса сообщения (Came In, Went Out, Acknowledged) позволяет задать цвет текста (Text Color) и текст фона (Background Color). Изменение цвета производится для выбранного состояния с помощью соответствующих кнопок.

Создание сообщений. После создания и настройки блоков, классов и типов сообщений можно переходить к созданию сообщений. Для этого необходимо выделить тип нужного класса и из контекстного меню выбрать команду Create Message (Создать сообщение). В появившемся окне нужно ввести в поле A no. of … messages are to be created (Количество создаваемых сообщений) количество сообщений данного типа, а в поле Number of first message (Номер первого сообщения) – уникальный номер сообщения.

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

  1. Class (Класс) – текущий класс сообщения, может быть изменен.

  2. Type (Тип) – текущий тип сообщения, может быть изменен.

  3. Group (Группа) – группа, к которой относится сообщение, по умолчанию None (Нет).

  4. Priority (Приоритет) – приоритет сообщения, по умолчанию 0.

  5. Группа флажков This message (Это сообщение):

    • is single acknowledgement only (только индивидуальное квитирование) – показывает, что сообщение может быть квитировано только кнопкой квитирования одиночного сообщения (будет описана далее);

    • controls the central signaling device (управляет сигнальным устройством) – показывает, что сообщение запускает сигнальное устройство;

    • will be archieved (будет архивироваться) – показывает, что сообщение будет записываться в архив сообщений;

    • is created on a negative edge (создается по отрицательному фронту) – показывает, что сообщение будет создаваться по отрицательному фронту (изменению 1-0) тега сообшения;

    • triggers an action (запускает сценарий) – показывает, что любое изменение статуса сообщения (пришло, ушло, квитировано) будет запускать стандартную функцию GmsgFunction, которую можно отредактировать под свои задачи.

  6. Группа полей Connection (Соединение) устанавливает связь сообщения с тегами:

    • Message tag/Message bit (Тег сообщения/бит сообщения) – позволяет выбрать тег и номер бита в нем, по установке которого в 1 создается сообщение;

    • Acknowledge tag/Acknowledge bit (Тег квитирования/бит квитирования) – позволяет выбрать тег и номер бита в нем, с помощью которого можно квитировать сообщение;

    • Status tag/Status bit (Тег статуса/бит статуса) – позволяет выбрать тег и номер бита в нем, который будет содержать статус сообщения.

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

биты состояния. Например, если в качестве тега статуса указан 8-битный тег, то с его помощью можно отображать состояние четырех сообщений, при этом биты 0-3 будут показывать состояние сообщений, а биты 4-7 – состояние квитирования сообщений. Если значения битов равны 0, то сообщение ушло (квитировано), если 1, то сообщение пришло (не квитировано). Отсюда очевидно, что использовать в качестве тега статуса бинарные теги невозможно. Зато при использовании тега статуса можно отображать статус сообщения на мнемосхеме: анализируя его через сценарии или динамический диалог с битовым типом результата, можно менять цвет объекта, вызвавшего сообщение, при его приходе и включать мигание объекта при неквитированном сообщении, связанным с этим объектом.

Для примера создадим сообщение класса Error типа Alarm, требующее индивидуального квитирования, архивируемое, создаваемое по установке бита 0 бинарного тега Alarm. Можно также создать сообщение того же класса, типа Failure, архивируемое, не требующее квитирования и создаваемое по обратному фронту бита 0 тега Pump, то есть по отключению насоса.

Вторая вкладка окна свойств сообщения (Text) содержит текст информационного сообщения и текст пользовательских блоков сообщения, «Текст сообщения» и «Место возникновения». Иногда в текст сообщения необходимо вставить значение какого-либо тега в момент возникновения сообщения. Для этого правее поля ввода текста необходимо нажать кнопку троеточия, после чего откроется окно Insert Process Value (Вставка процессного значения), в котором в списке Process value block (Блок процессного значения) необходимо выбрать нужный из числа ранее созданных блоков процессных величин. Затем необходимо из списка выбрать формат (Type), соответствующий формату тегу блока, позицию в строке сообщения, где будет выводится

значение тега, число цифр целой (Number of digits) и дробной (Precision) частей значения тега. В результате вставки ссылки на процессную величину текст сообщения примет примерно следующий вид:

Переполнение: уровень @1%2d@

Третья вкладка окна настройки сообщения Tag/Action связать блоки процессных величин с тегами WinCC (сколько блоков – столько и тегов), а также настроить действие Loop in Alarm (Контур) для перехода к кадру, на котором расположен источник события. Настройка заключается в выборе кадра в поле Picture Name/Parameter (Имя кадра/Параметр) и функции перехода в поле Function Name (Имя функции), по умолчанию применяется функция OpenPicture. Заметим, что можно выбрать любую функцию, получающую один параметр текстового типа. На этом создание сообщения закончено.

Как видно из представленных примеров, формирование сообщений по изменению бинарных тегов не представляет собой особой сложности. В случае же целочисленных или вещественных тегов (например, использованного ранее тега Level), существуют два способа оценивания их значений: с помощью дополнения Analog Alarm (Аналоговая тревога), вызываемого командой Tools\Add Ins редактора Alarm Logging и анализ значений тегов в фоновых сценариях с установкой битов некоторого вспомогательного целочисленного тега.

При малом количестве анализируемых тегов целесообразно использовать дополнение Analog Alarm. После его установки в окне навигации редактора появляется соответствующий узел. Выбрав его и вызвав команду New (Новый) контекстного меню, в появившемся окне следует выбрать тег для оценивания в поле Tag to be monitored (Тег для наблюдения). Ниже можно выбрать формирование одного сообщения при преодолении значением тега всех

предельных значений (a message for all limit values), при этом станет доступно поле message number (номер сообщения), в которое надо ввести уникальный (еще не использованный) номер формируемого сообщения. Если же необходимо формировать сообщения о преодолении каждого граничного значения, то флаг в этом поле устанавливать не надо. Для уменьшения количества сообщений при дребезге значения тега возле граничного уровня можно задать задержку (Delay) формирования сообщений, указав ее величину и единицу измерения. После нажатия кнопки ОК в этом окне в узле Analog Alarm появится элемент с именем оценивеемого тега.

Для задания граничных значений наблюдаемого тега необходимо выбрать элемент с его именем в окне навигации редактора и вызвать команду New (Новый) контекстного меню. В появившемся окне необходимо выбрать вид предела: Upper limit (Верхний предел) или Lower limit (Нижний предел), а также ввести значение предела в поле Limit value or tag (Предельное значение или тег), либо выбрать тег, содержащий значение предела, нажатием кнопки Tag (Тег). Заметим, что возможно косвенное обращение к тегу, содержащему предельное значение, если установлен флажок Indirect (Косвенно).

Для предотвращения ложных срабатываний при дребезге значений наблюдаемого тега можно задать зону нечувствительности (Deadband) в поле Hysteresis (Гистерезис) в абсолютных величинах (absolute) или процентах (in percent). Правее можно выбрать, при каком переходе значения тега через предел будет формироваться сообщение. В нижней части окна необходимо ввести уникальный номер сообщения, формируемого при преодолении порога. Заметим, что при анализе внешнего тега, получаемого из ПЛК, целесообразно установить флажок Suppress messages if quality code does not equal to “GOOD” (Подавлять сообщения, если код качества не

равен “GOOD”), что полезно в случае устаревших данных или обрыве связи с ПЛК.

Верхних и нижних пределов тега можно задавать более одного (например, Warning High – предупреждение о превышении, Alarm High – тревога при превышении), но для каждого предела придется создавать сообщение со своим номером, а потом конфигурировать его, как и ранее.

Если наблюдаемых аналоговых тегов достаточно много, то формировать сообщения о преодолении их пределов целесообразнее программным путем. Для иллюстрации этого подхода обратимся к ранее рассмотренному фоновому сценарию (см. гл. 3.7). В нем, при превышении тегом Level значения 90, закомментирована установка значения целочисленного тега Position:

//SetTagBytePosition»,2);

что соответствует установке в 1 бита 1 этого тега. При уменьшении значения тега Level ниже 10, в тег Position передается значение 1, что соответствует установке в 1 его бита 0. В случае же нахождения значения тега Level в допустимом диапазоне, в тег Position передается значение 0, что сбрасывает все его биты.

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

Настройка архивирования сообщений. Для настройки архивирования сообщений используется узел Archive Configuration (Конфигурирование архивов). В WinCC версии ниже 7 есть два типа архивов: Long-term archive (Долгосрочный архив) и Short-term archive (Краткосрочный архив). Первый конфигурируется аналогично архиву тегов, а второй позволяет задать максимальное количество сохраняемых в оперативной памяти сообщений с последующей их перезаписью. В версии 7 используется только Message Archive (Архив сообщений), который

настраивается также, как и долгосрочный. Базы данных архивов сообщений хранятся в папке проекта, подпапка ArchiveManager\AlarmLogging.

Отображение сообщений. Для отображения сообщений используется объект WinCC AlarmControl (Окно отображения аварийных сообщений WinCC), расположенный в палитре объектов графического редактора. Этот объект можно разместить в отдельном кадре и настроить вызов данного кадра с помощью кнопки. Затем необходимо выполнить конфигурирование данного объекта

Во вкладке Toolbar (Панель инструментов) можно выбрать кнопки, которые будут отображаться на панели инструментов. Для изучения возможностей объекта рекомендуется отображать все кнопки.

Во вкладке Message Blocks (Блоки сообщения) можно указать те блоки, которые будут отображаться в строке сообщения. Здесь также можно указать свойства этих блоков сообщения. Рекомендуется отображать все блоки, которые были сконфигурированы в редакторе Alarm Logging, включая пользовательские блоки и блоки процессных величин.

Во вкладке Message Line (Строка сообщения) или Message Lists (Списки сообщений) в версии 7 можно указать те блоки, которые будут отображаться в строке сообщения. Здесь также можно указать порядок следования этих блоков в строке. В списке имеющихся блоков сообщения отображаются все блоки, которые были выбраны во вкладке Message Blocks (Блоки сообщений).

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

  • Message List (Список сообщений) – переключение в режим отображения действующих сообщений (выбран по умолчанию);

  • Short-Term archive (Краткосрочный архив) – переключение в режим отображения архива сообщений, хранящихся в оперативной памяти;

  • Long-Term Archive (Долгосрочный архив) – переключение в режим отображения архива сообщений, хранящихся в базе данных;

  • Lock List (Список блокировки) – переключение в режим отображения заблокированных сообщений (см. далее);

  • Acknowledge single message (Квитирование одиночного сообщения) – для квитирования выделенного сообщения;

  • Acknowledge all visible messages (Квитирование всех видимых сообщений) – для квитирования всех сообщений, кроме тех, у которых в свойствах установлено только индивидуальное квитирование;

  • Open lock dialog (Открыть диалог блокировки) – для вызова окна настройки блокирования сообщений;

  • Print message sequence report (Печать отчета последовательности сообщений) – для вызова задания на печать (см. гл.3.11);

  • Unlock/Lock Message (Разблокировать/Блокировать сообщение) – для блокирования или разблокирования выделенного сообщения;

  • Loop In Alarm (Контур) – выполнение функции Loop In Alarm для выделенного сообщения, если она настроена.

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

  1. Блокировка сообщения, выбранного в списке. Необходимо выделить сообщение в списке и нажать кнопку панели инструментов Unlock/Lock Message.

  2. Блокировка сообщения по номеру. Необходимо нажать кнопку панели инструментов Open lock dialog. В появившемся окне выбрать сервер (в случае однопользовательского проекта – localhost::), нажать кнопку Add (Добавить) и ввести номер блокируемого сообщения.

  3. Блокировка классов сообщений. Необходимо нажать кнопку панели инструментов Open lock dialog. В появившемся окне выбрать сервер, класс и тип сообщения и нажать кнопку Lock (Блокировать).

Для просмотра списка блокированных сообщений необходимо переключить окно сообщений в режим просмотра списка заблокированных сообщений, нажав кнопку Lock List. Для разблокировки сообщений есть также три способа – через выделение сообщения в списке блокируемых и надатия кнопки Unlock/Lock Message, через окно, вызываемое кнопкой Open lock dialog, причем сообщения, блокируемые по номеру, удаляются из списка блокируемых кнопкой Delete (Удалить), а блокируемые по классу или типу – кнопкой Unlock (Разблокировать).

Иногда применяется и другой способ блокирования сообщений – объединение их в группу через узел Group Messages (Группы сообщений) окна навигации редактора Alarm Logging и последующее блокирование группы через окно, вызываемое кнопкой Open lock dialog.

Группа создается в элементе User Defined узла Group Messages, после чего группе присваивается имя. Свойства группы описаны чуть ниже.

В созданную группу можно добавить отдельное сообщение (командой Add Single Message контекстного меню группы) или ранее созданную группу (командой Add Group Message). Кроме того, сообщения можно добавлять в группы через окно свойств сообщения, где есть список

существующих групп, в одну из которых может входить настраиваемое сообщение.

Что касается свойств группы сообщений, то к ним относятся тег и бит статуса, тег и бит квитирования, тег и бит блокирования (Lock tag/Log bit). Первое и второе свойства аналогичны таковым у отдельного сообщения, а последнее показывает состояние блокирования группы сообщений.

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


Прочие возможности WinCC. Редактор отчетов (Report Designer).

Одной из функций системы визуализации ТП является формирование и печать различных протоколов и отчетов. Для выполнения этих задач служит редактор Report Designer, вызываемый из проводника WinCC и содержащий два элемента: Layouts (Шаблоны) и Print jobs (Задания на печать). В WinCC по умолчанию присутствует ряд шаблонов и заданий на печать. Они позволяют распечатывать протоколы из окон сообщений, графиков и таблиц архивных значений. Также существуют шаблоны и задания на печать проектной документации. Шаблоны делятся на страничные (page layout) и строковые (line layout). Первые представляют собой бланки, в которые при создании отчета выводятся данные. Вторые используются для построчной печати протоколов. Задания на печать содержат информацию о том, по какому шаблону, за какой интервал времени и на каком принтере (включая виртуальные) будут печататься протоколы. Заметим, что для

печати в операционной системе должен быть установлен и выполняться Spooler (служба диспетчера печати).

Шаблоны создаются (с помощью команды New page layout контекстного меню) и редактируются через элемент Layouts и могут содержать как статическую, так и динамическую части. Статическая часть содержит надписи, изображения и прочее, задается при проектировании шаблона и в процессе печати не изменяется. Динамическая часть содержит поля и объекты, в которые выводятся данные из архивов тегов и сообщений, извлекаемые в процессе печати.

Статическая и динамическая части редактируются отдельно, переключение между ними производится кнопками Static Part (Статическая часть) и Dynamic Part (Динамическая часть) панели инструментов редактора отчетов. В шаблонах отдельно конфигурируются Cover Sheet (Титульная страница), Report Contents (Содержимое отчета) и Final Page (Последняя страница), переключение между ними выполняется соответствующими кнопками редактора.

Для примера подготовим страничный шаблон печати значений тегов. Создав в редакторе новый шаблон (командами File (Файл) \ New (Новый) из меню редактора), в статической части выберем первую страницу, на которой в объекте Static Text (Статический текст) введем название отчета. Перейдя к основной части отчета, сдублируем название отчета в верхнем колонтитуле, а в нижнем, с помощью соответствующих объектов из группы System Objects (Системные объекты) палитры объектов редактора, разместим поля печати даты/времени (Date/Time) и номера страницы (Page Number).

Далее необходимо перейти к редактированию динамической части отчета с помощью соответствующей кнопки. В этой части будут содержаться объекты Tag (Тег) для отображения значений тегов, которые можно взять из группы Dynamic Objects (Динамические объекты) палитры

объектов. Эта палитра содержит также вкладку Runtime Documentation (Документация среды выполнения), содержащую объекты для вывода сообщений, таблиц и графиков, а также вкладку Project Documentation (Проектная документация), содержащую объекты для вывода списка кадров, сценариев в кадрах, фоновых сценариев и пользовательских функций, конфигураций архивов тегов и сообщений, и много других.

По окончании создания шаблона его необходимо сохранить под каким-либо именем (по умолчанию, NewRPL0.RPL). Шаблон сохраняется в подпапке PRT папки проекта.

Задания на печать создаются в элементе Print jobs узла Report Designer проводника WinCC с помощью команды New print job контекстного меню. Новое задание всегда помещается в конец списка существующих заданий на печать. Используя двойной клик мышью на задании, откроем окно его свойств, содержащее три вкладки.

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

Вторая вкладка, Selection (Выбор), позволяет задать диапазон печати страниц отчета и интервал времени, за который будут распечатаны данные: относительный (Relative), начиная с момента начала печати, или абсолютный (Absolute).

Третья вкладка, Printer Setup (Установка принтера), позволяет выбрать до трех принтеров, установленных в операционной системе, причем при неготовности первого

будет использоваться второй, и так далее. Выбор стандартного принтера (Standard Printer) отправляет задание на принтер, выбранный в операционной системе по умолчанию. Дополнительно (или вместо принтера) можно распечатывать отчет в файл. При этом можно указать префикс папки с файлом отчета (она находится в папке PRT_OUT каталога проекта) и минимальный размер места на диске, при котором будут генерироваться предупреждения (Generate warnings) или происходить остановка (Discard trigger for logging) печати в файл.

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

Нормальный режим печати отчетов – из среды выполнения WinCC Runtime. Для этого в кадрах мнемосхем необходимо обеспечить вызов заданий на печать. Их можно вызвать с помощью размещения в кадре объекта Application Window в режиме Print Jobs с одним из вариантов отображения заданий на печать:

All Jobs (Все задания) – просто список всех заданий на печать;

All Jobs – Context Menu (Все задания – Контекстное меню)

- список всех заданий на печать с возможностью вызова для них контекстного меню;

Job Detail View (Детальный вид задания) – список всех заданий с детальной информацией о выбранном задании на печать.

Наиболее гибким можно считать вариант All Jobs – Context Menu. Выбрав его, рассмотрим возможности по вызову заданий на печать. Они обусловлены списком отображаемых в данном объекте заданий на печать и кнопками панели инструментов:

All print jobs (Все задания) – отображаются все задания (по умолчанию, кнопка с таким именем нажата).

System print jobs (Системные задания) – отображаются системные (из комплекта установки WinCC) задания, чьи имена начинаются с символа @.

User-defined print jobs (Пользовательские задания) – отображаются только пользовательские задания (не содержат в имени символа @).

Selected print jobs (Отмеченные задания) – отображаются только те задания (системные и пользовательские), в свойствах которых установлен флаг Mark (Selected в версии WinCC 7.х) for print job list (Отмечен для списка заданий на печать).

Часть названия этого варианта (Context Menu) дает понять возможность использования контекстного меню на названии задания на печать. Действительно, в нем есть команды предварительного просмотра и отправки на печать.

Выбор заданий из списков разной степени селекции требует понимания названия заданий на печать. В то же время объекты отображения графиков и таблиц архивных значений, а также аварийных сообщений содержат кнопки вызова заданий на печать. Какие именно задания будут вызваны из этих объектов, можно посмотреть и выбрать в окнах их свойств, вкладка General (Общие), поле Print Job.

Подобную кнопку можно разместить и просто в кадре, но при нажатии на нее требуется обеспечить вызов функции PRTJobPreview для предпросмотра задания или PRTJobPrint для печати его. Эти функции имеют один параметр – имя задания на печать, и находятся в группе стандартных функций в папке Report.


Многопользовательская работа с проектами WinCC.

WinCC может использоваться для создания систем с архитектурой клиент-сервер, в состав которых входят

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

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

Все компьютеры системы с архитектурой клиент-сервер должны быть связаны друг с другом как минимум через локальную сеть (Local Area Network, LAN).

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

«толстый» клиент, подключающийся по локальной сети), web-клиент (клиент, подключающийся через сеть Интернет) и

«тонкий» клиент (клиент, подключающийся по протоколу Remote Decstop Protocol, RDP, протоколу удаленного подключения к рабочему столу).

В зависимости от конфигурации, клиенты в системе с архитектурой клиент-сервер могут:

  1. отображать требуемое представление данных сервера (на нескольких клиентах - многопользовательская система);

  2. отображать представление данных нескольких серверов (распределенная система);

  3. создавать серверный проект (на удаленном клиенте);

  4. запускать и останавливать выполнение серверного проекта (с удаленного клиента).

  5. В системе с архитектурой клиент-сервер web-клиенты используются в тех случаях, когда, например:

  6. необходим доступ к системе с использованием узкополосных каналов;

  7. необходим только временный доступ к данным;

  8. необходим доступ к данным, размещенным физически на больших расстояниях, например, через Интернет.

  9. Web-клиенты имеют следующие преимущества:

  10. в сети могут использоваться клиентские компьютеры с разными операционными системами;

  11. для нескольких web-клиентов возможен доступ к серверу одновременно;

  12. могут быть реализованы системы с большим количеством компьютеров.

Для подключения web-клиентов, на сервере требуется минимальный комплект установки WinCC и установленная опция WinCC Web Navigator, а также установлен Web-сервер IIS (Internet Information Server) из состава операционной системы.

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

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

Наиболее простым и безопасным способом организации клиент-серверной системы является многопользовательский проект. При этом связь с ПЛК и хранение архивов выполняет только один компьютер-сервер, а остальные компьютеры

(«толстые» клиенты) подключаются к серверу по локальной сети. Для этого они должны быть добавлены в список компьютеров-клиентов многопользовательского проекта, и для каждого из них могут быть заданы свои стартовые кадры и прочие настройки запуска проекта, включая локальные фоновые сценарии. Для открытия проекта по сети в редакторе User Administrator должен быть создан пользователь с разрешением 1000 – Remote Activation (Удаленный запуск), имя и пароль которого потребуется ввести прои открытии проекта по сети. Могут быть также созданы пользователи с правами 1001 – Remote Configuration (Удаленное конфигурирование) и 1002 – Web Access – monitoring only (или Dat@Monitor – Just monitor! в версии ниже 7) для обеспечения подключения к проекту в режиме только наблюдения через сеть Internet.

Заметим, что перечисленные права доступа к проекту по сети существенно отличаются по сетевой нагрузке на сервер, а потому клиенты с разными типами подключения имеют разные веса. Обычный «толстый» клиент с правом удаленного запуска имеет вес 2, клиент с правом удаленного конфигурирования (станция проектировщика) имеет вес 4, а тонкий клиент и клиент Web имеют вес 1.

Если в сети WinCC используются только обычные

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

Максимальное количество серверов, к которым может обращаться один клиент, равно 12. Если сервера требуют резервирования (с использованием пакета WinCC Redundancy), то для формирования 12 резервированных пар серверов могут быть использованы не более 24 серверов.

Резервированные сервера содержат один и тот же (cкопированный на резервный сервер утилитой WinCC Project

Duplicator) проект WinCC. Резервирование позволяет не терять управление технологическим процессом и архивы тегов и сообщений при отключении одного из серверов. В нормальной ситуации оба сервера работают и накапливают архивы. При этом сообщения могут быть синхронизированы, так что при появлении или квитировании сообщения на одном сервере, сообщение будет появляться или квитироваться на другом сервере.

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


1