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

Предисловие, содержание

Создание блоков ПЛК 1

SIMATIC Создание экранных панелей 2

Создание интерактивной 3
Руководство по справки
программированию, Создание библиотеки и 4
создание блоков для PCS 7 программы установки

Руководство Глоссарий, предметный


указатель

Редакция 08/2001
A5E00122559-01
Указания по технике безопасности

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


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

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

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

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

Замечание
привлекает ваше внимание к особо важной информации о продукте, обращении с ним или к
соответствующей части документации.

Квалифицированный персонал

К монтажу и работе на этом оборудовании должен допускаться только квалифицированный персонал.


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

Надлежащее использование

Примите во внимание следующее:

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

Товарные знаки
SIMATIC®, SIMATIC HMI® и SIMATIC NET® - это зарегистрированные товарные знаки SIEMENS AG.

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


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

Copyright © Siemens AG 2001 Все права сохранены Отказ от ответственности


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

Siemens AG
Bereich Automatisierungs- und Antriebstechnik
Geschaeftsgebiet Industrie-Automatisierungssysteme ©Siemens AG 2001
Postfach 4848, D- 90327 Nuernberg Технические данные
могут быть изменены.
Siemens Aktiengesellschaft A5E00122559-01
Предисловие

Цель данного руководства


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

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

Требования
Для использования этого руководства необходим опыт по разработке и
применению блоков ПЛК и лицевых панелей, а также знания
соответствующего аппаратного и программного обеспечения. В данном
руководстве приводится только информация, необходимая для
согласованности между блоками, которые Вы создали самостоятельно, и
блоками PCS 7. Дополнительную информацию Вы можете найти в
документации, приведенной в Ссылках [References] в конце этого
руководства.
Общую информацию об использовании компонентов PCS 7 Вы можете найти
в Руководстве по конфигурированию PCS 7.

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 iii
Общий план
В этом руководстве делается обзор отдельных компонентов PCS 7-
совместимых блоков. Порядок, в котором они представлены, совпадает с
последовательностью разработки функциональных блоков и лицевых
панелей.
• Вы разработаете блок ПЛК "CONTROL", блок простого контроллера, шаг
за шагом определяя заголовок блока, параметры блока и локальные
переменные. Затем Вы создадите исходный код.
• На следующем этапе Вы разработаете лицевую панель. Вы создадите ее
с помощью Дизайнера графики WinCC [Graphics Designer] и элементов
Дизайнера лицевых панелей [Faceplate Designer].
• На последнем этапе – создание системы интерактивной справки для
блока, а затем библиотеки MYLIB, состоящей из всех компонентов.
По мере того как Вы будете выполнять инструкции, Вы увидите фрагменты
блока-примера, необходимые для понимания текущего раздела. В разделе
1.10 пример блока ПЛК приведен полностью.

Бланк ответа
Если у Вас есть комментарии к этому руководству или к интерактивной
справке, то, пожалуйста, заполните анкету, приведенную в конце этого
руководства и пошлите по указанному адресу. Пожалуйста, потратьте
несколько минут, чтобы дать собственную оценку.
http://www.ad.siemens.de/partner

Центры обучения
Фирма Siemens предлагает несколько обучающих курсов, знакомящих Вас с
системой автоматизации SIMATIC S7. Для получения более подробной
информации, пожалуйста, обращайтесь в региональные центры обучения или
в центральный центр обучения в D 90327 Нюрнберге, Германия (Nuremberg,
Germany):
Телефон: +49 (911) 895-3200.
http://www.sitrain.com/

Руководство по программированию, создание блоков для PCS 7


iv A5E00122559-01
Документация SIMATIC в сети Интернет
Вы можете найти документацию в сети Интернет по адресу:
http://www.ad.siemens.de/support
Для быстрого поиска необходимой Вам документации используйте Knowledge
Manager [Распорядителя знаний]. Если у Вас есть какие-либо вопросы или
предложения, касающиеся документации, то Вы можете воспользоваться
конференцией "Documentation [Документация]" на Интернет-форуме.

Автоматизация и приводы, Обслуживание & поддержка


Круглосуточная поддержка по всему миру:

Nuremberg

Johnson City

Singapore

SIMATIC Basic Hotline

Всемирная (Нюрнберг) Всемирная (Нюрнберг)


Техническая поддержка Техническая поддержка
(бесплатная) (на платной основе, только с
Местн. вр.: Пн-Пт с 7:00 до 17:00
карточкой SIMATIC)
Местн. вр.: Пн-Пт с 0:00 до 24:00
Тел.: +49 (180) 5050 222
Факс: +49 (180) 5050 223 Тел.: +49 (911) 895-7777
Факс: +49 (911) 895-7001
E-mail: techsupport@
ad.siemens.de GMT: +01:00
GMT: +1:00
Европа / Африка (Нюрнберг) Америка (Johnson City) Азия / Австралия (Сингапур)
Авторизация Техническая поддержка и Техническая поддержка и
авторизация авторизация
Местн. вр.: Пн-Пт с 7:00 до 17:00 Местн. вр.: Пн-Пт с 8:00 до 19:00 Местн. вр.: Пн-Пт с 8:30 до 17:30
Тел.: +49 (911) 895-7200 Тел.: +1 423 461-2522 Тел.: +65 740-7000
Факс: +49 (911) 895-7201 Факс: +1 423 461-2289 Факс: +65 740-7001
E-mail: authorization@ E-mail: simatic.hotline@ E-mail: simatic.hotline@
nbgm.siemens.de sea.siemens.com sae.siemens.com.sg
GMT: +1:00 GMT: -5:00 GMT: +8:00

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

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 v
Обслуживание & поддержка в сети Интернет
Кроме документации мы также предоставляем наши технические знания в
сети Интернет по адресу:
http://www.ad.siemens.de/support
здесь Вы можете найти следующее:
• Информационные брошюры о текущих продуктах, FAQs (Часто
задаваемые вопросы), программы для загрузки, советы и приемы.
• Информационный бюллетень предоставляет наиболее свежую
информацию о продуктах.
• Knowledge Manager [Распорядитель знаний] поможет найти необходимую
Вам документацию.
• Пользователи и специалисты со всего мира могут поделиться
информацией на форуме.
• Ваш региональный представитель департамента Automation & Drives
[Автоматизаци и приводы] в нашем банке данных представительств.
• Информацию о полевом обслуживании, ремонте, запасных деталях и
прочем в разделе "Services [Службы]".

Руководство по программированию, создание блоков для PCS 7


vi A5E00122559-01
Содержание
1 Создание блоков ПЛК 1-1
1.1 Необходимое программное обеспечение........................................................1-1
1.1.1 Вставка образца блока ...................................................................................... 1-2
1.2 Структура блока ПЛК ..........................................................................................1-3
1.2.1 Настройки компилятора SCL ............................................................................ 1-4
1.2.2 Настройки SIMATIC менеджера ....................................................................... 1-6
1.2.3 Заголовок блока [Block Header] ........................................................................ 1-7
1.2.4 Область объявлений........................................................................................ 1-12
1.2.4.1 Параметры блока.............................................................................................. 1-12

1.2.4.2 Локальные переменные................................................................................... 1-20

1.2.5 Область кода ..................................................................................................... 1-21


1.3 Инициализация ..................................................................................................1-22
1.4 Временные зависимости ..................................................................................1-23
1.5 Асинхронный запуск и обработка блоков OB ошибок .................................1-25
1.6 Операторское управление, мониторинг и сообщения.................................1-28
1.6.1 Блокировка сообщений во время запуска .................................................... 1-33
1.6.2 Блокировка отдельных сообщений................................................................ 1-34
1.6.3 Компиляция исходного файла........................................................................ 1-35
1.7 Конфигурирование сообщений........................................................................1-36
1.8 Связь с BATCH flexible ......................................................................................1-39
1.9 Создание типа блока CFC................................................................................1-41
1.9.1 Пример: CONTROL2......................................................................................... 1-41
1.10 Соглашения об именах и числовых диапазонах ..........................................1-42
1.11 Исходный код примеров ...................................................................................1-43
2 Создание экранных панелей [Faceplates] 2-1
2.1 Этапы создания экранной панели ....................................................................2-1
2.1.1 Проектирование экранной панели ................................................................... 2-1
2.1.2 Конфигурирование экранной панели .............................................................. 2-2
2.1.3 Тестирование экранной панели ....................................................................... 2-3
2.2 Создание экранных панелей с помощью Дизайнера экранных панелей
[Faceplate Designer] .............................................................................................2-4
2.2.1 Шаблоны Дизайнера экранных панелей [Faceplate Designer]..................... 2-5
2.2.1.1 Block Icons [Пиктограммы блоков] ................................................................... 2-5

2.2.1.2 Шаблонные кадры .............................................................................................. 2-5

2.2.1.3 Object Construction Kit [Набор для создания объектов]................................ 2-6

2.2.1.4 Global Scripts [Глобальные скрипты] ............................................................... 2-6

2.2.2 Шаги конфигурирования.................................................................................... 2-6


2.2.2.1 Настройка кадра группового изображения для типа экранной панели ..... 2-8

2.2.2.2 Настройка списка просмотра [View List] для типа блока.............................. 2-8

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 vii
2.2.2.3 Редактирование кадра в соответствии с требуемым типом и изображением
2-10

2.2.2.4 Настройка кадра объектного изображения [Loop Display] для типа блока.. 2-
11

2.2.2.5 Конфигурирование представление тренда [Trend View] ............................ 2-12

2.2.2.6 Конфигурирование дополнительных представлений ................................. 2-13

2.2.2.7 Создание Вашего собственного представления для типа блока.............. 2-14

2.2.3 Подготовка экранных панелей для динамического отображения [Dynamic


Display] ................................................................................................................ 2-15
2.2.4 Изменение языка............................................................................................... 2-17
3 Создание интерактивной справки 3-1
3.1 Структура файла справки.................................................................................. 3-1
3.2 Структура файла реестра.................................................................................. 3-3
4 Создание библиотеки и программы установки 4-1
4.1 Создание библиотеки......................................................................................... 4-1
4.2 Создание программы установки....................................................................... 4-2
Глоссарий Глоссарий-1
Предметный указатель Предметный указатель-1

Руководство по программированию, создание блоков для PCS 7


viii A5E00122559-01
1 Создание блоков ПЛК

1.1 Необходимое программное обеспечение


Описываемые здесь блоки предназначены для использования в PCS 7 V5.1 и
более поздних версиях на ЦПУ S7-4xx. Для создания блоков Вам потребуется
следующее программное обеспечение:
• стандартный пакет STEP 7, версии 5.1 или выше
• SCL Compiler [Компилятор SCL], версии 5.1 или выше
• CFC, версии 5.1 или выше
Блоки ПЛК для PCS 7 создаются с помощью языка программирования SCL.
Поэтому это единственный метод, описываемый в данном руководстве.
Дополнительную информацию о SCL Вы можете найти в следующих
источниках:
• Интерактивная помощь SIMATIC менеджера
(Calling help on the optional packages [Вызов помощи по дополнительным
пакетам]> Programming Blocks with S7-SCL [Программирование блоков с
помощью S7-SCL]).
• Руководство "S7-SCL Getting Started [Начальный курс S7-SCL]"
• Руководство "S7-SCL для S7-300 и S7-400"
Данные руководства должны быть установлены на Вашем жестком диске
(Start [Пуск] > Simatic > Documentation [Документация]).

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-1
1.1.1 Вставка образца блока

Блок "CONTROL [управление]", описываемый здесь, представлен в виде


исходного файла SCL. Чтобы включить его в свой проект, выполните
следующие действия:
• Выберите папку Sources [исходные файлы] в Вашем проекте, а затем
выберите Insert [Вставить] > External Source File...[Внешний исходный
файл]. В открывшемся диалоговом окне "Insert External Source File
[Вставка внешнего исходного файла]", найдите папку, в которой
располагается исходный файл SCL блока "CONTROL", выберите файл и
нажмите на кнопку "Open [Открыть]".
Теперь исходный файл SCL находится в папке с исходными файлами и
должен быть откомпилирован с помощью компилятора SCL.
Перед компиляцией убедитесь, что блок "OP_A_LIM" (FB46) находится в
папке блоков вашего проекта. Если это не так, то скопируйте его в Ваш проект
из библиотеки "PCS 7 Library [Библиотека PCS 7]\Technological Blocks
[Технологические блоки]".
• Введите имя "CONTROL" и адрес FB 501 в таблице обозначений.
• Откройте исходный файл SCL "CONTROL", дважды щелкнув на нем
мышью, запустите компилятор SCL, после безошибочной компиляции
закройте компилятор SCL.
Теперь в папке блоков Вашего проекта есть блок FB 501.

Руководство по программированию, создание блоков для PCS 7


1-2 A5E00122559-01
1.2 Структура блока ПЛК
Блок ПЛК будет исполняться корректно в PCS 7 только в том случае, если
будут выполнены определенные формальные критерии и блок будет
содержать всю необходимую информацию. Далее будут описаны критерии,
выполнение которых необходимо.
На диаграмме блока, представленной ниже, показана общая структура блока
"CONTROL" (FB501). Более детально об отдельных областях блока
рассказывается в разделах, указанных в скобках.

Заголовок блока (см. раздел 1.2.3)

Область объявлений (см. раздел 1.2.4)

Параметры блока (см. раздел 1.2.4.1)

Локальные переменные
(см. раздел 1.2.4.2)

Область кода (см. раздел 1.2.5)

Инициализация
(см. раздел 1.3)

Асинхронный запуск и обработка


блоков OB ошибок (см. раздел 1.5)

Управление и мониторинг
(см. раздел 1.6)

Сообщ ения ALARM_8P


(см. раздел 1.6)

Технологическая область
(см. раздел 1.6.1)

Рисунок 1-1: Структура экземпляра блока "CONTROL" (FB501)

Функциональный блок или функция?


Если Вы хотите, чтобы в Вашем блоке хранились значения и сообщения или
чтобы он был доступен для операторского управления и наблюдения, то он
должен быть создан как функциональный блок (FB). Блок FB имеет "память" в
виде блока данных (DB), которые иногда называют данными экземпляра.
Если блок не должен обладать перечисленными свойствами, то он может
быть создан как функция (FC).

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-3
1.2.1 Настройки компилятора SCL

Настройки "Creating Blocks [Создание блоков]"


В компиляторе SCL, выбрав меню Options [Опции] > Customize
[Настройка]> Create Block [Создание блока], Вы можете установить
следующие опции:
• Overwrite blocks [Перезапись блоков]
Если во время компиляции создается блок с именем, которое уже
существует в папке "Blocks [Блоки]" программы S7, то старый блок
заменяется новым.
При загрузке блоков в ПЛК при совпадении имен старые блоки также
заменяются на новые.
Если данная опция не выбрана, то новый блок будет записан поверх
старого, только после подтверждения такой перезаписи.
• Display warnings [Выводить предупреждения]
В случае выбора данной опции, во время компиляции, вместе с ошибками
будут выводиться предупреждения.
• Display errors before warnings [Сначала выводить ошибки]
При выборе данной опции ошибки в сообщении будут выводиться до
предупреждений.
• Generate reference data [Создать справочные данные]
При выборе данной опции, при создании блока, автоматически будут
созданы справочные данные.
С помощью команды меню Options[Опции] > Reference Data
[Справочные данные] Вы сможете создать или изменить справочные
данные в любое время.
• Include system attribute "S7_server" [Включить системный атрибут
"S7_server"]
Выберите данную опцию, если Вы хотите, чтобы при создании блока
учитывался системный атрибут для параметра "S7_server". Этот атрибут
устанавливается если параметр соответствует конфигурации соединения
или сообщения. Параметр содержит номера соединений или сообщений.

Примечание к образцу блока:


Если блок содержит сообщения, то Вы должны выбрать опцию "Include
system attribute 'S7_server' [Включить системный атрибут 'S7_server']". Иначе,
импорт или вставка блока в схему CFC прервется сообщением об ошибке.

Руководство по программированию, создание блоков для PCS 7


1-4 A5E00122559-01
Настройки "Compiler [Компилятор]"
Вы можете установить или сбросить флаги для следующих опций в
диалоговом окне, вызываемом из меню Options [Опции] > Customize
[Настроить] > Compiler [Компилятор]:
• "Monitor array limits [Показывать границы массива]"
• "Create debug info [Создать информацию о проверке]"
• "Set OK flag [Установить флаг OK]"
Остальные опции должны оставаться отмеченными. Более детальную
информацию об отдельных опциях Вы можете посмотреть в руководстве по
SCL.
При выборе опций, не забывайте о следующем:
• Monitor array limits [Следить за границами массива]
Если в Вашей программе используются массивы, то во время исполнения
будет проверено, лежит ли индекс в объявленных границах массива. В
случае возникновения ошибки изменяется состояние флага OK и
сбрасывается значение на выходе ENO. Данная проверка занимает
значительное ресурсы в режиме исполнения.
Если вы используете массивы, то Вам следует оставить эту опцию
выбранной, до тех пор пока Вы не оттестируете ваш блок и не убедитесь,
что индекс не выходит за границы массива.
• Create debug info [Создать информацию о проверке]
При выборе данной опции отладчик будет производить тестирование
программы и после того, как она будет уже откомпилирована и загружена
в ЦПУ. При этом возрастает требования программы к объему памяти и
время исполнения на ПЛК увеличивается. Поэтому Вам следует выбирать
эту опцию только на стадии тестирования блока, и не выбирать ее в
окончательной версии.
• Set OK flag [Установить флаг OK]
Флаг OK является внутренней системной переменной. Если происходит
ошибка во время исполнения дополнительного пакета, например,
переполнение в результате арифметических операций, то система
изменяет значение флага OK и выводит значение на выход ENO. Эта
проверка занимает значительные ресурсы в режиме исполнения. Однако
это рекомендуется делать при отключении автоматической установки
флага OK, что позволяет Вам самим обнаружить запрещенную операцию/
нарушение границ в алгоритме. В случае возникновения ошибки Вы
можете сами явно установить флаг OK, если Вы хотите установить
соединение с выходом ENO. (Это выполняется системой и не
сопровождается снижением работоспособности, так как состояние флага
OK передается на выход системой.)

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-5
1.2.2 Настройки SIMATIC менеджера

В PCS 7-совместимых блоках ПЛК пользовательский интерфейс (имена


параметров, комментарии и т.д.) должен быть на английском языке. Сами
блоки Вы можете разрабатывать на любом языке. Описание и примеры
приведены на английском языке [English].

Выбор языка
Если Вы хотите сохранить Ваши блоки в библиотеке (см. также главу 4), то
для того чтобы папки в Вашей библиотеке имели PCS 7-совместимые имена,
(Sources [Исходные файлы], Symbols [Символы] и Blocks [Блоки])
должен быть выбран английский язык. Для этого в SIMATIC менеджере нужно
выбрать Options [Опции]> Customize [Настроить]> Language [Язык] и в
качестве национального языка [National Language] и языка символики
[mnemonics] установить "English [английский язык]".

Ввод в таблицу символьных имен


Имя блока, вводимое в заголовок блока (так как описано ниже), должно быть
также внесено в таблицу символьных имен в виде символьного имени.
Для этого откройте в программе S7 таблицу символьных имен, щелкнув
дважды мышью на "Symbols [Символьные имена]". В колонке "Symbol
[Символьное имя]" введите символьное имя (в данном случае: "CONTROL"), а
в колонке "Address [Адрес]" наберите номер FB (в данном случае: FB 501).
См. также Раздел 1.10, Соглашение об именах и числовых диапазонах.

Руководство по программированию, создание блоков для PCS 7


1-6 A5E00122559-01
1.2.3 Заголовок блока [Block Header]

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


Эти атрибуты используются в PCS 7 для различных целей. Их можно
посмотреть и изменить выбрав в SIMATIC менеджере свойства объекта для
блока (см. также атрибут KNOW_HOW_PROTECT [Защита НОУ-ХАУ]).
Фрагмент кода блока-примера:

//Copyright (C) Siemens AG 1999. Авторские права защищены. Конфиденциально


(*********************************************************************************
КРАТКОЕ ОПИСАНИЕ:

На примере этого блока показывается как создавать PCS 7-совместимые


блоки ПЛК.

Он реализует простой алгоритм управления, задаваемый следующей формулой:


Регулируемая переменная = коэффициент * (уставка – фактическое значение)

Если значение регулируемой переменной превышает верхнюю аварийную уставку,


устанавливается выход ошибки QH_ALM. ALARM_8P генерирует сообщение для ОС. Сообщение
может быть блокировано с помощью переменной M_SUP_AH.

Если значение регулируемой переменной будет ниже нижней аварийной уставки,


устанавливается выход ошибки QL_ALM. Сообщение для ОС также генерируется ALARM_8P.
Сообщение блокируется с помощью переменной M_SUP_AL.

Блок поддерживает BATCH flexible и поэтому для него требуются следующие параметры:
BA_EN, BA_NA, BA_ID, OCCUPIED и STEP_NO.

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


Выход SUPP_OUT через время ожидания SUPPTIME обращается ко входу SUPP_IN.

***********************************************************************************)

//Автор: ABC Дата: 13.08.00 Версия:1.00


//Изменено: Дата: Версия:
//Замена:

//**************************************************************************************
// Заголовок блока
//**************************************************************************************

FUNCTION_BLOCK "CONTROL"
TITLE = 'CONTROL'

{ // Список системных атрибутов


S7_tasklist:= 'OB80,OB100'; // Блок вызывается в случае ошибки и теплой перезагрузки
S7_m_c:= 'true'; // Возможно управление и наблюдение за блоком
S7_alarm_ui:= '1'; // Парам. для диалога сообщ. PCS 7 ('0'=станд. диалог сообщений)
}
AUTHOR: ABC
NAME: CONTROL
VERSION: '0.01'
FAMILY: XYZ
KNOW_HOW_PROTECT

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-7
На следующих двух экранных формах представлены свойства объекта для
скомпилированного образца блока, стрелками показаны атрибуты заголовка
блока.

Функ циональ ный блок

Название

Рисунок 1-2: Свойства объекта для блока (Часть 1)

• Функциональный блок [FUNCTION_BLOCK]


Здесь вводится имя блока, содержащее максимум 8 символов. Это имя
будет отображаться в свойствах объекта для блока, при его просмотре в
SIMATIC менеджере и в каталоге CFC. Перед компиляцией блока в
таблице символьных имен введите номер.
• Заголовок [Titel]
Данная информация не обрабатывается в PCS 7, однако, она
отображается в поле комментария в свойствах объекта для блока в
SIMATIC менеджере. Комментарий, следующий сразу после этого
атрибута также отображается в поле комментария в свойствах объекта.
Другой комментарий заголовка блока можно посмотреть только в
редакторе SCL.
Рекомендуется вводить такое же имя как и в поле "Функциональный
блок".

Руководство по программированию, создание блоков для PCS 7


1-8 A5E00122559-01
ИМЯ СЕМЕЙСТВО ВЕРСИЯ АВТОР

ЗАЩИТА НОУ-ХАУ

Рисунок 1-3: Свойства объекта для блока (Часть 2)

• Имя [NAME]
Введите здесь такое же имя, как и для функционального блока
[FUNCTION_BLOCK]. Если Вы собираетесь использовать интерактивную
помощь, то это имя (и название СЕМЕЙСТВА) образуют часть ключа,
определяющего размещение справочной информации для этого блока в
файле помощи.
• Версия [VERSION]
Введите номер версии с 0.00 по 15.15.
• Семейство [FAMILY]
Если Вы хотите объединить блоки в отдельной библиотеке и разбить их
на несколько групп, то введите имя семейства блоков, состоящее
максимум из 8 символов.
Если Вы собираетесь пользоваться интерактивной помощью, то имена из
полей Семейство [FAMILY] и Имя [NAME] образуют часть ключа, по
которому можно найти вспомогательную информацию по блоку в файле
справки.

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-9
• Автор [AUTHOR]
В данном поле обычно указывается имя человека или название
организации, создавших данный блок. В PCS 7-совместимых блоках, это
поле также может использоваться для двух целей:
- Если Вы хотите создать библиотеку своих блоков, то введите в это
поле общее название для блоков этой библиотеки, состоящее
максимум из 8 символов.
- Если Вы используете интерактивную помощь, то в пути доступа к
соответствующему файлу будет это имя.
• Защита ноу-хау [KNOW_HOW_PROTECT]
С помощью данного атрибута Вы можете запретить просмотр и
изменение алгоритма и атрибутов блока. Если данный атрибут
установлен, то атрибуты блока можно посмотреть только в
SIMATIC менеджере в свойствах объекта блока и их нельзя изменить. Вне
Вашего проекта блок без соответствующего исходного файла можно
открыть с помощью редактора STL, в редакторе SCL его открыть нельзя.
И в этом случае будут показаны только параметры блока. В Вашем же
проекте компилятор SCL останется доступным.
• Список системных атрибутов для блоков [List of System Attributes for
Blocks]
Используя системные атрибуты, Вы подготавливаете блок для
соединения с ОС. Например, атрибут S7_m_c определяет относиться или
нет блок к ОС; другими словами, будут ли создаваться внутренние
структуры данных для блока на ОС. Также, используя системные
атрибуты, Вы можете управлять инсталляцией блока в схеме SFC.
Атрибут S7_tasklist, например, определяет блоки OB, в которые блок
инсталлируется автоматически.

Таблица 1-1: Системные атрибуты для PCS 7-совместимых блоков

Системный Значение Значение по


атрибут умолчанию
S7_tasklist Содержит список блоков OB (например блоки Не инсталлируется
ОВ ошибок или запуска), в которых блок будет более одного раза
инсталлирован CFC.
S7_m_c Определяет возможность наблюдения и False [Ложь]
управления блоком с ОС.
S7_alarm_ui Идентификатор для сервера сообщений: 0
S7_alarm_ui :='0' стандартный диалог
сообщений
S7_alarm_ui :='1' диалог сообщений PCS 7
S7_tag Если значение данного системного атрибута False [Ложь]
равно 'false', то блок не вносится в список тегов
ОС; другими словами, он не может быть выбран
для "Loop in Alarm" на ОС. Это подходит для
блоков, которые только отсылают сообщения и
не имеют панели.

Руководство по программированию, создание блоков для PCS 7


1-10 A5E00122559-01
S7_hardware Идентификатор блока драйвера модуля, --
который вставлен в схему CFC, для которого
определены параметры и который
автоматически соединяется с помощью
функции CFC "Generate module drivers [Создать
драйверы модулей]" в SIMATIC Manager
[SIMATIC менеджере].
Значения: 'subnet', 'rack', 'sm', 'im', 'fm'
S7_read_back Определяет учитывается или нет экземпляр True [Истина]
блока функцией "Chart [Схема] > Read Back
[читать обратно]" в CFC. Если системный
атрибут имеет значение 'false [ложь]', то
параметры экземпляра блока не могут быть
считаны обратно.

Системные атрибуты отображаются в свойствах объекта блока на вкладке


"Attributes [Атрибуты]" в SIMATIC менеджере, если блок не защищен от
записи (атрибут защита ноу-хау [KNOW_HOW_PROTECT] заголовка блока),
то атрибуты можно изменять.

Рисунок 1-4: Системные атрибуты блока

Примечание:
Вы можете посмотреть полный список системных атрибутов в контекстно-
зависимой справке и/или в разделе справки "Attributes for Blocks and
Parameters [Атрибуты блоков и параметров]".

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-11
1.2.4 Область объявлений

1.2.4.1 Параметры блока


Параметры блока определяют взаимодействие блока с другими блоками,
операторское управление и наблюдение (CFC, WinCC ...).

Типы параметров
Существуют следующие типы параметров:
• Параметры ввода
Параметры ввода должны быть определены для PCS 7-совместимых
блоков в следующих ситуациях:
- Вы хотите получать значения параметра от другого блока или
- Вы хотите управлять параметрами с ОС или
- Вы хотите иметь возможность влиять на вид экранных панелей на ОС
с помощью параметров (например, установки ограничений для
отображаемых диапазонов) или
- для управления параметрами во время тестирования в CFC или
- Вы хотите установить параметры для генерирования сообщений (ID
события сообщения блока ALARM_8P)
• Параметры вывода
Параметры вывода для PCS 7-совместимых блоков должны быть
определены в следующих ситуациях:
- Вы хотите передать значение параметра другому блоку или
- Вы хотите контролировать параметры с ОС или
- Вы хотите контролировать параметры во время тестирования в CFC
• Параметры ввода-вывода
Параметры ввода-вывода могут как читаться, так и записываться обратно
во время исполнения алгоритма блока. Параметры ввода-вывода должны
быть определены для PCS 7-совместимых блоков, когда Вам необходимо
мягкое переключение между значениями вводимыми из программы (ПЛК)
и значениями, введенными оператором (ОС). Чтобы реализовать эту
функциональную возможность, Вам необходимо три параметра:
- Параметр ввода для переключения
- Параметр ввода для связанного значения
- Параметр ввода-вывода для значения, введенного оператором. Этот
параметр должен быть параметром ввода-вывода, так как связанное
значение должно постоянно перезаписывается поверх значения,
введенного оператором. Это обеспечивает мягкое переключение
между связанным значением и значением, введенным оператором.

Руководство по программированию, создание блоков для PCS 7


1-12 A5E00122559-01
Комментарии к параметрам
Если Вы хотите добавить комментарий к параметрам блока, то он должен
начинаться с "//" и следовать после определения параметра.
Комментарий отображается в схеме CFC в свойствах объекта ввода-вывода
или в свойствах объекта блока на вкладке "Inputs/Outputs [Входы-выходы]".
Он может быть изменен здесь, несмотря на защиту блока (атрибут Защита
НОУ-ХАУ [KNOW_HOW_PROTECT] заголовка блока).

Системные атрибуты для параметров


Так же как и сам блок, параметры блока могут быть определены более
детально с помощью системных атрибутов.
Они позволяют определить следующее:
- Как параметр будет отображаться на ОС.
Пример: S7_unit определяет единицы измерения параметра
(например, литры). Вы также можете отобразить текст, определенный
для этого атрибута на Вашей экранной панели.
- Обрабатывается ли параметр в CFC и если да, то как.
Пример: S7_visible определяет отображается или нет параметр в
схеме CFC.

Таблица 1-2: Системные атрибуты для параметров PCS 7 совместимых блоков

Сист. Дейст Описание Знач-е


атрибут вие по
умолча
нию
S7_sampleti Time Если параметр обладает этим системным атрибутом, false
me respon то для него период цикла автоматически [ложь]
se определяется по вызывающему OB циклических
[Время прерываний. При компиляции схемы CFC должен
отклик быть установлен флаг "Update sampling time
а] [Обновить время выборки]" (см. также раздел 0).
S7_dynamic CFC Если для параметра установлен этот системный false
атрибут, то он автоматически регистрируется при [ложь]
тестировании в тестовом режиме CFC.
S7_edit CFC Этот атрибут определяет можно или нет false
редактировать параметр в SIMATIC Менеджере в [ложь]
таблице "Edit Parameters/Signals [Правка
параметров/сигналов]" (без открытия схемы CFC).
S7_link CFC Этот атрибут определяет можно или нет установить true
соединение для параметра в схеме CFC. [истина]
S7_param CFC Этот атрибут определяет можно ли установить true
значение параметра в схеме CFC. [истина]
S7_visible CFC Если значение этого системного атрибута для true
параметра равно 'false [ложь]', то параметр не будет [истина]
отображаться в схеме CFC.
S7_m_c OCM Этот атрибут определяет можно ли будет управлять false
или наблюдать за параметром с ОС. [ложь]

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-13
Сист. Дейст Описание Знач-е
атрибут вие по
умолча
нию
S7_shortcut OCM Этот атрибут содержит идентификатор (максимум 16 --
символов) параметра. Это имя (например, "Setpoint
[Уставка]") также может отображаться на экранной
панели на ОС.
S7_string_0 OCM Этот системный атрибут применим только к --
параметрам ввода (или параметрам ввода-вывода) с
типом данных BOOL. Он содержит текст, максимум 16
символов, который может отображаться на экранной
панели, как текст для оператора (например, "Open
Valve [Открыть клапан]"). Если оператор выбирает эту
функцию, то параметру присваивается значение 0.
S7_string_1 OCM Этот атрибут применим только к параметрам ввода --
(параметрам ввода-вывода) с типом данных BOOL.
Он содержит текст, максимум 16 символов, который
может отображаться на экранной панели как текст
для оператора (например, "Close Valve [Закрыть
клапан]"). Если оператор выбирает эту функцию, то
параметру присваивается значение 1.
S7_unit OCM Содержит название единицы измерения параметра и --
может состоять из 16 символов. Единица измерения
(например, "мбар") может отображаться в CFC на
входе-выходе блока.
S7_server Server Интерфейсный параметр назначаемый серверу. No
Сервер сообщений [Message server]: server
S7_server:='alarm_archiv' call
[Вызов.
сервера
нет]
S7_a_type No Интерфейсный параметр содержащий ввод номера --
server сообщения типа сообщения x или ввод номера
call архива

Использование и изменение системных атрибутов


При использовании системных атрибутов "S7_string_0" и "S7_string_1"
помните следующее:
Определяемое значение может отображаться на экранной панели как текст
оператора. Если оператор выполняет функцию, то значение 0 или 1
передается ПЛК. В CFC отображается текущее значение параметра. Вы
также можете изменять это значение вывода с помощью системного
атрибута.
Для этого Вы разделяете значение системного атрибута на две части знаком
равенства, например, S7_string_1 := 'Suppress HH =YES'. CFC распознает
знак равенства и заменяет значение вывода параметра, на значение, которое
следует после знака равенства, другими словами, в данном случае вместо
значения 1 будет выведено слово "YES".

Руководство по программированию, создание блоков для PCS 7


1-14 A5E00122559-01
В CFC выводится максимум 8 символов, даже если Вы задали больше. На
экранной панели отображается весь текст, в данном случае будет "Suppress
HH =YES".
В CFC системные атрибуты отображаются в свойствах объекта Ввода-
вывода, здесь же их можно редактировать. На рисунке ниже показаны
свойства объекта для параметра с типом данных BOOL и параметров, тип
данных которых не BOOL (Рисунок 1-6). Стрелками указаны соответствующие
системные атрибуты.

Рисунок 1-5: Свойства объекта для параметров с типом данных BOOL

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-15
Рисунок 1-6: Свойства объекта для параметров в типом данных не BOOL

Руководство по программированию, создание блоков для PCS 7


1-16 A5E00122559-01
Ниже представлен фрагмент кода блока-примера, в котором определяются
параметры блока:

//**************************************************************************************
//Область объявлений: параметры блока
//**************************************************************************************
VAR_INPUT
SAMPLE_T {S7_sampletime:= 'true'; // Параметр выборки для блока (цикл задачи)
S7_visible:='false'; // Параметр невидим
S7_link:= 'false' // Параметр нельзя связывать
} :REAL := 1; // Время выборки [сек] (по умолчанию 1 сек)

L_ALM {S7_m_c := 'true'; // Возможно управление и наблюдение за параметром


S7_visible:='false'; // Параметр невидим
S7_link := 'false' // и не может быть связан
} :REAL := 0; // нижняя аварийная уставка (по умолчанию 0)

H_ALM {S7_m_c := 'true';


S7_visible:='false';
S7_link := 'false'} :REAL :=100; // верхняя аварийная уставка (по умолчанию 100)

M_SUP_AL {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_string_0:= 'Suppress LL=No'; // Текст оператора для значения (M_SUP_AL)= 0
S7_string_1:= 'Suppress LL=Yes' // Текст оператора для значения (M_SUP_AL)= 1
} :BOOL; // подавление нижней аварийной уставки

M_SUP_AH {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_string_0:= 'Suppress HH=No';
S7_string_1:= 'Suppress HH=Yes'
} :BOOL; // подавление верхней аварийной уставки

SP_OP_ON {S7_visible:='false';
S7_dynamic:='true' // Тест/исполнение CFC: показывает реальное значение в ПЛК)
} :BOOL := 1; // Разрешение 1=оператору ввод уставки

SPBUMPON {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_string_0:='SP bumpless=Off';
S7_string_1:='SP bumpless=On'
}
:BOOL := 1; // Разрешение 1=безударное переключение уставки включено
SP_EXTON {S7_visible:='false';
S7_dynamic:='true' // Тест/исполнение CFC: показывает реальное значение в ПЛК)
}
:BOOL := 1; // 1: выбрать SP_EXT

SP_EXT {S7_dynamic:='true'}

:REAL := 0; // Внешняя уставка


SP_HLM {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_shortcut:='SP high limit'; // Текст (макс. 16 символов) для отображения не ОС
S7_unit:=''} // Ед. измерения (макс. 16 символов)
:REAL := 100; // Установить верхнюю уставку

SP_LLM {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_shortcut:='SP low limit';
S7_unit:=''}
:REAL := 0; // Установить нижнюю уставку

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-17
GAIN {S7_link:='false';
S7_edit:='para'; // Настройки параметра в Ассистенте импорта/экспорта (IEA)
S7_m_c:='true';
S7_shortcut:='Gain';
S7_unit:=''} :REAL := 1; // Коэффициент пропорциональности

EV_ID {S7_visible:='false';
S7_link:='false';
S7_param :='false'; // Параметр не может быть установлен в CFC
S7_server:='alarm_archiv'; // Номер сообщения, определяемый сервером
S7_a_type:='alarm_8p' // Сигналы блока с помощью ALARM_8P
} :DWORD := 0; // ID сообщения

// Parameters for BATCH flexible


STEP_NO {S7_visible := 'false';
S7_m_c := 'true'} :WORD; // Номер шага Batch
BA_ID {S7_visible := 'false';
S7_m_c := 'true'} :DWORD; // Batch ID
BA_EN {S7_visible := 'false'; // Параметр невидим в схеме CFC
S7_m_c := 'true' // Возможно управление и наблюдение за параметром
} :BOOL := 0; // Разрешено пакетное управление
BA_NA {S7_visible := 'false';
S7_m_c := 'true'} :STRING[16] := ''; // Имя пакета

OCCUPIED {S7_visible := 'false';


S7_m_c := 'true'} :BOOL := 0; // Занятый пакет

RUNUPCYC {S7_visible:='false';
S7_link:='false'} :INT := 3; // Количество циклов исполнения
SUPPTIME :REAL := 0; // Время выборки
SUPP_IN :REAL := 0; // Входное значение для задержки выборки
END_VAR
VAR_OUTPUT
LMN {S7_shortcut:='pressure'; // Имя параметра на ОС
S7_unit := 'mbar'; // Единицы измерения параметра
S7_m_c := 'true' // Мониторинг блокирован
} :REAL; // Регулируемое значение

QH_ALM :BOOL := false; // 1 = активизировать верхнюю аварийную уставку HH

QL_ALM :BOOL := false; // 1 = активизировать нижнюю аварийную уставку LL

QSP_HLM {S7_visible:='false';
S7_dynamic:='true'} : BOOL := 0; // 1=активизировать вывод верхней уставки

QSP_LLM {S7_visible:='false';
S7_dynamic:='true'} : BOOL := 0; // 1=активизировать вывод нижней уставки

Q_SP_OP {S7_visible:='false';
S7_dynamic:='true';
S7_m_c:='true'} : BOOL := 0; // Состояние: 1=оператор может ввести уставку

QOP_ERR {S7_visible:='false';
S7_dynamic:='true'} : BOOL := 0; // 1=Ошибка оператора

QMSG_ERR {S7_visible:='false';
S7_dynamic:='true'} : BOOL := 0; // ALARM_8P: выход ошибки

MSG_STAT {S7_visible:='false';
S7_dynamic:='true'} : WORD := 0; // Сообщение: выход STATUS

MSG_ACK {S7_visible:='false';
S7_dynamic:='true'} : WORD := 0; // Сообщение: выход ACK_STATE

SUPP_OUT :REAL := 0; // Вывод значения для задержки выборки


SP {S7_dynamic:='true';
S7_m_c:='true'} : REAL := 0; // Активная уставка

END_VAR

Руководство по программированию, создание блоков для PCS 7


1-18 A5E00122559-01
VAR_IN_OUT
PV_IN {S7_dynamic:='true';
S7_m_c:='true';
S7_unit:='%'} : REAL := 0; // Значение процесса (AUX_PR04 сообщения)

SP_OP {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_shortcut:='Setpoint';
S7_unit:=''} : REAL := 0; // Уставка операторского ввода

// Свободно определяемые вспомогательное значения блока ALARM_8P

AUX_PR05 {S7_visible := 'false'} : ANY; // 5 вспомогательное значение


AUX_PR06 {S7_visible := 'false'} : ANY; // 6 вспомогательное значение
AUX_PR07 {S7_visible := 'false'} : ANY; // 7 вспомогательное значение
AUX_PR08 {S7_visible := 'false'} : ANY; // 8 вспомогательное значение
AUX_PR09 {S7_visible := 'false'} : ANY; // 9 вспомогательное значение
AUX_PR10 {S7_visible := 'false'} : ANY; // 10 вспомогательное значение

END_VAR

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-19
1.2.4.2 Локальные переменные
Дополнительные переменные, которые не являются параметрами блока,
должны быть определены как локальные переменные.
Существует два типа локальных переменных:
• Статические переменные
• Временные переменные

Статические переменные
Статические переменные, в отличие от временных переменных, сохраняют
свое значение на протяжении множества вызовов блока, пока Вы не измените
их значение в алгоритме блока.
В PCS 7-совместимых блоках эти переменные особенно важны, если Вы
хотите вызвать в Вашем блоке существующие блоки, Ваши собственные или
стандартные блоки. В этом случае Вы должны реализовать
многоэкземплярный блок. Это можно сделать, определив экземпляр
вызываемого блока в области статических переменных.
Для безошибочной компиляции вызывающего блока вызываемый блок
должен существовать в папке блоков программы S7.
Если Вы хотите, чтобы параметры вызываемого блока были видны вне блока
и можно было устанавливать соединение с ними, то Вы должны присвоить
значения параметров из алгоритма вашего блока параметрам вашего блока.
Параметры самого вызываемого блока невидны для окружения.
Многоэкземплярность
Примеры многоэкземплярных приложений Вы можете найти в разделе,
посвященном типам блоков CFC и в соответствующем коде SCL в проекте-
примере.

Примечание:
При компиляции блока вызываемые им SFB и SFC, такие как SFC6
(RD_SINFO) или SFB0 (CTU), автоматически находятся в стандартной
библиотеке и вставляются в Вашу программу S7.
Когда Вы вставляете вызывающий блок в схему CFC, вызываемые им FB
копируются в папку блоков, если они находятся в той же библиотеке, что и
вызывающий блок. В противном случае Вы должны скопировать их сами.

Руководство по программированию, создание блоков для PCS 7


1-20 A5E00122559-01
Временные переменные
Временные переменные действительны в течение одного вызова блока;
другими словами, при каждом вызове блока они обновляются.
В данном случае для PCS 7-совместимых блоков нет никаких особых правил.
Фрагмент блока-примера:

//**************************************************************************************
// Область объявлений: Временные переменные
//**************************************************************************************

VAR_TEMP
// Начальные данные: структура с информацией для OB, который просто вызывает блок
TOP_SI: STRUCT
EV_CLASS :BYTE;
EV_NUM :BYTE;
PRIORITY :BYTE;
NUM :BYTE;
TYP2_3 :BYTE;
TYP1 :BYTE;
ZI1 :WORD;
ZI2_3 :DWORD;
END_STRUCT;

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


START_UP_SI: STRUCT
EV_CLASS :BYTE;
EV_NUM :BYTE;
PRIORITY :BYTE;
NUM :BYTE;
TYP2_3 :BYTE;
TYP1 :BYTE;
ZI1 :WORD;
ZI2_3 :DWORD;
END_STRUCT;

S7DT :DATE_AND_TIME; // переменная местного времени


DUMMY :INT; // вспомогательная переменная
END_VAR

1.2.5 Область кода

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

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-21
1.3 Инициализация
При первом вызове блока обычно должны быть определены различные
параметры. В зависимости от технологической функциональности Вашего
блока могут быть необходимы операции, которые выполняются только один
раз. Если в Вашем блоке есть такие операции, то в нем должна быть
выполнена инициализации.
Это делается определением переменной типа BOOL (например,
sbRESTART). Вы можете объявить переменную как статическую переменную.
Так как нет никаких гарантий, что Ваш блок будет исполняться первый раз
только во время перезапуска (например, после повторной загрузки блока в
ЦПУ в режиме RUN [Исполнения]), в большинстве случаев рекомендуется
размещать область инициализации в циклической части Вашего блока. Это
позволяет проводить инициализацию при повторных вызовах блока.

//**************************************************************************************
// Зависимость от вызывающего OB
//**************************************************************************************

// Чтение начальных данных с помощью SFC6 (RD_SINFO)


DUMMY := RD_SINFO (TOP_SI := TOP_SI, START_UP_SI := START_UP_SI);

IF sbRESTART THEN
// Инициализация
TOP_SI.NUM := 100; // Выполнить инициализацию как для теплой перезагрузки
sbRESTART := FALSE; // сброс переменной инициализации
END_IF;
// В каком OB вызывается блок?

CASE WORD_TO_INT(BYTE_TO_WORD(TOP_SI.NUM)) OF

//************************************************************************************
// OB обработки ошибок
//************************************************************************************

// OB80: ошибка времени


80:
QH_ALM := 0; // сброс выходов ошибок
QL_ALM := 0;

//************************************************************************************
// Запуск
//************************************************************************************

// OB100: теплая перезагрузка


100:
QH_ALM := 0; // сброс выходов ошибок
QL_ALM := 0;
siRUNUPCNT := RUNUPCYC; // Сохранить значение RUNUPCYC
ELSE
....

Руководство по программированию, создание блоков для PCS 7


1-22 A5E00122559-01
1.4 Временные зависимости
Если Ваш блок выполняется по временному прерыванию в режиме реального
времени и при этом для выполнения операций с временной зависимостью
необходимо рассчитывать периоды времени (например, блоки контроллеров),
то должен быть определен параметр ввода (например, SAMPLE_T) типа
REAL, в который будет записываться длина временного интервала.
В зависимости от циклического прерывания OB, в котором вызывается Ваш
блок этим параметрам будут присваиваться новые значения. Это
гарантирует, что алгоритм Вашего блока всегда будет исполняться с
правильным временем.
Если Вы определите для этого параметра системный атрибут
S7_sampletime, и установите его в значение 'true [истина]', то CFC
автоматически установит значение, соответствующее вызывающему OB.
Также учитывается скорость сканирования. Вы также должны определить для
параметра системные атрибуты S7_visible и S7_link и установить для них
значение 'false [ложь]'. Тогда параметр будет невидим и для него нельзя
будет установить соединение в схеме CFC, что позволит предотвратить
случайное изменение значения пользователем.
Однако автоматическое присвоение значений параметру функциями схемы
CFC будет осуществляться только если при компиляции программы была
активизирована флаговая кнопка "Update sampling time [Обновить время
выборки]".

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-23
В следующей части блока-примера приведена реализация операции с
временной зависимостью. С помощью параметра SUPPTIME в блоке может
быть определено время ожидания. Изменение значения на входе SUPP_IN
через заданное время ожидания передается на выход SUPP_OUT.

/***************************************************************************************
// Область объявлений: параметры блока
//**************************************************************************************
VAR_INPUT

SAMPLE_T {S7_sampletime:= 'true' // Временной парам. выборки для блока (=цикл задачи)
S7_visible:='false'; // параметр невидим
S7_link:= 'false' // параметр нельзя связать
} :REAL := 1; // время выборки [сек] (по умолчанию 1 секунда)
....
END_VAR

//**************************************************************************************
// Область объявлений: статические переменные
//**************************************************************************************
VAR
....
sSUPP_IN :REAL := 0; // старое значение ввода задержки выборки
ACT_TIME :REAL := 0; // счетчик времени
....
END_VAR

VAR_OUTPUT
....
SUPP_OUT :REAL := 0; // выходное значение для задержки выборки
....
END_VAR

//**********************************************************************************
// Технологическая область
//**********************************************************************************

IF (SUPP_IN <> sSUPP_IN) THEN


ACT_TIME := SUPPTIME; // Счетчик времени инициализации
sSUPP_IN := SUPP_IN;
END_IF;

IF (ACT_TIME > 0) THEN // Если время ожидания еще не закончилось


ACT_TIME := ACT_TIME-SAMPLE_T; // Уменьшить время ожидания
ELSE
SUPP_OUT := SUPP_IN; // Соединить вход с выходом
END_IF;
....

Руководство по программированию, создание блоков для PCS 7


1-24 A5E00122559-01
1.5 Асинхронный запуск и обработка блоков OB
ошибок
Если происходит асинхронное событие, такое как горячая перезагрузка,
вставка/удаление модуля, сбой корзины или похожие события, то ПЛК
вызывает асинхронный OB. Если Вы хотите, чтобы Ваш блок реагировал на
такие события, то Вы должны инсталлировать Ваш блок в соответствующем
OB и в теле блока проверять не произошло ли такое событие.

Инсталляция в асинхронном OB
Чтобы инсталлировать Ваш блок в определенном ОВ используйте системный
атрибут "S7_tasklist". В качестве значения этого атрибута Вы можете указать
все необходимые блоки OB (например, S7_tasklist := 'OB80,OB100'). При
вставке блока в схему CFC, CFC автоматически инсталлирует блок в текущий
OB циклических прерываний и во все OB, определенные в S7_tasklist.

Проверка вызывающих OB
Чтобы определить OB, в котором исполняется Ваш блок на данный момент,
Вы должны в алгоритме Вашего блока вызвать SFC6 (RD_SINFO). Она читает
загрузочную информацию Вашего блока и предоставляет информацию о
текущем активном OB (параметр TOP_SI) и о последнем вызываемом OB
запуска (параметр START_UP_SI).
Два параметра имеют идентичную структуру и оба должны быть определены
в Ваших временных переменных. Элементы структуры имеют следующие
значения:

Таблица 1-3: Параметры TOP_SI и START_UP_SI

Элемент Тип данных Описание


структуры

EV_CLASS BYTE [БАЙТ] Биты с 0 по 3: ID события


Биты с 4 по 7: Класс события
EV_NUM BYTE [БАЙТ] Номер события
PRIORITY BYTE [БАЙТ] Номер класса приоритета
NUM BYTE [БАЙТ] Номер вызывающего OB
TYP2_3 BYTE [БАЙТ] ID данных для ZI2_3
TYP1 BYTE [БАЙТ] ID данных для ZI1
ZI1 WORD Дополнительная информация 1
[СЛОВО]
ZI2_3 DWORD Дополнительная информация 2_3
[ДВОЙНОЕ
СЛОВО]

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-25
В пределах описания элементы структуры соответствуют временным
переменным вызывающего OB. Однако в зависимости от OB они могут иметь
различные имена и типы данных. Это означает, что Вы должны присваивать
отдельные элементы структуры друг другу и обрабатывать их в соответствии
с описанием OB (см. "STEP 7 - System and Standard Functions manual
[Руководство по системным и стандартным функциям STEP 7]"). Это показано
в следующей таблице и в фрагменте блока-примера на примере OB80
(ошибка времени).

Таблица 1-4: Назначение элементов информации о запуске TOP_SI


временным переменным OB80

TOP_SI / STARTUP_SI OB80


Элемент Тип Временная переменная Тип
структуры данных данных

EV_CLASS BYTE OB80_EV_CLASS BYTE


[БАЙТ] [БАЙТ]
EV_NUM BYTE OB80_FLT_ID BYTE
[БАЙТ] [БАЙТ]
PRIORITY BYTE OB80_PRIORITY BYTE
[БАЙТ] [БАЙТ]
NUM BYTE OB80_OB_NUMBR BYTE
[БАЙТ] [БАЙТ]
TYP2_3 BYTE OB80_RESERVED_1 BYTE
[БАЙТ] [БАЙТ]
TYP1 BYTE OB80_RESERVED_2 BYTE
[БАЙТ] [БАЙТ]
ZI1 WORD OB80_ERROR_INFO WORD
[СЛОВО] [СЛОВО]
ZI2_3 DWORD OB80_ERR_EV_CLASS BYTE
[ДВОЙНОЕ [БАЙТ]
СЛОВО]
OB80_ERR_EV_NUM BYTE
[БАЙТ]
OB80_OB_PRIORITY BYTE
[БАЙТ]
OB80_OB_NUM BYTE
[БАЙТ]

Примечание:
• В каждой временной переменной каждый OB содержит дату и время
вызова. Однако они не включаются в данные о запуске, которые
читаются с помощью SFC6.
• PCS 7 совместимые блоки не инсталлируются в OB горячего перезапуска
(OB101).

Руководство по программированию, создание блоков для PCS 7


1-26 A5E00122559-01
Ниже представлен фрагмент блока-примера, в котором показан порядок
обработки OB:

//**************************************************************************************
// Область кода
//**************************************************************************************

CASE WORD_TO_INT(BYTE_TO_WORD(TOP_SI.NUM)) OF

//************************************************************************************
// OB обработки ошибок
//************************************************************************************

// OB80: ошибка времени


80:
QH_ALM := 0; // сброс выходов ошибок
QL_ALM := 0;

//************************************************************************************
// Startup
//************************************************************************************

// OB100: теплая перезагрузка


100:
QH_ALM := 0; // сброс выходов ошибок
QL_ALM := 0;
siRUNUPCNT := RUNUPCYC; // сохранить значение RUNUPCYC
ELSE

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-27
1.6 Операторское управление, мониторинг и
сообщения
Блоки, за параметрами которых можно наблюдать и которыми можно
управлять с ОС, должны быть подготовлены для соединения с ОС. Этот
процесс включает определение как требуемых параметров, так и самого
блока.

Операторское управление
Если Вы хотите управлять значением параметра исключительно с ОС, то Вам
необходим параметр ввода-вывода или только ввода для управляемого
значения (с системным атрибутом S7_m_c).
Но если Вы хотите иметь возможность получать значение параметра из
другого блока или устанавливать значение на ОС и хотите, чтобы
переключение со связанного значения на значение, задаваемое
пользователем, было безударным, Вам необходимо всего три параметра:
• Параметр ввода для переключения между операторским значением и
связанным значением
• Параметр ввода для связанного значения
• Параметр ввода-вывода для управляемого пользователем значения (с
системным атрибутом S7_m_c ). Этот параметр должен быть параметром
ввода-вывода, так как связанное значение для безударного переключения
из алгоритма блока на задаваемое пользователем значение должно
записываться обратно в течение того времени, которое выбрано
связанное значение.
Все функции операторского ввода должны обрабатываться с помощью
блоков операторского управления библиотеки "PCS 7 Technological Blocks
[Технологические блоки PCS 7]" и соответствующих им методов
операторского ввода на ОС. В них определены все требуемые блокировки и
(безударное) переключение между значением вводимым оператором и
связанным значением (например, для ручного/автоматического
переключения). Вы можете инсталлировать блок операторского управления в
Ваш блок с помощью многоэкземплярной технологии.
В PCS 7, например, может использоваться блок OP_A_LIM (operation analog
limited [ограниченный аналоговый ввод]).
Блок OP_A_LIM накладывает ограничение на операторский ввод. В качестве
альтернативы Вы можете использовать блок OP_A_RJC, который отклоняет
операторский ввод, если таким образом будет нарушена уставка. Если Вам
не требуется проверка значения, то можно использовать блок OP_A.

Примечание:
Блок ПЛК и экранная панель работают асинхронно; другими словами когда
оператор вводит значение на экранной панели, значение записывается в
копию базы данных блока ПЛК и позже обрабатывается блоком ПЛК. Так как
к этому времени уставки могут уже измениться, то значение, введенное
оператором следует проверить как на ПЛК так и на ОС.

Руководство по программированию, создание блоков для PCS 7


1-28 A5E00122559-01
Для двоичного операторского ввода Вы можете использовать блоки OP_D
(FB48), OP_D3 (FB49) и OP_TRIG (FB50) библиотеки PCS 7 "Technological
Blocks [Технологические блоки]" (более подробную информацию Вы можете
найти в интерактивной помощи).
В следующем примере приведено описание операторского ввода:

//**********************************************************************************
// Ввод оператором уставки SP_OP (действительное значение) или связывание уставки SP_EXT
//**********************************************************************************

// Вызов многоэкземплярного OP_A_LIM (значение параметров для OP_A_LIM смотрите в


// интерактивной справке к нему)

OP_A_LIM_1(U := SP_OP, U_HL:= SP_HLM, U_LL:= SP_LLM, OP_EN:= SP_OP_ON, BTRACK:=


SPBUMPON, LINK_ON:= SP_EXTON, LINK_U:= SP_EXT);

OK := OK AND ENO; // Разрешение вывода флага OK блока OP_A_LIM

Q_SP_OP := OP_A_LIM_1.QOP_EN; // 1: разрешение операторского ввода SP


SP_OP := OP_A_LIM_1.U; // Перезапись уставки

QOP_ERR := OP_A_LIM_1.QOP_ERR; // 1: Ошибка оператора


QSP_HLM := OP_A_LIM_1.QVHL; // 1: верхняя граница
QSP_LLM := OP_A_LIM_1.QVLL; // 1: нижняя граница
SP := OP_A_LIM_1.V; // Действующая уставка

Сообщения
Если Вы хотите, чтобы Ваш блок мог посылать на ОС сообщения и/или
события, то Вы можете определить в статических переменных
многоэкземплярный блок аварий [alarm block]. Свойства инсталлированного
блока аварий определяют сообщение, квитированный отклик, а также
передачу вспомогательных значений.
"Standard Library [Стандартная библиотека]" содержит готовые блоки аварий как
SFB.
Они могут быть следующими:

ALARM SFB33 Наблюдение сигнала с 1-10 вспомогательными значениями с


запросом квитирования
ALARM_8 SFB34 Мониторинг до 8 сигналов
ALARM_8P SFB35 Мониторинг до 8 сигналов с 1-10 вспомогательными
значениями
NOTIFY SFB36 Мониторинг сигнала с 1-10 вспомогательными значениями без
запроса квитирования

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-29
Установки в заголовке блока
Чтобы разрешить управление и/или мониторинг на ОС, сначала в списке
системных атрибутов заголовка блока для системного атрибута "S7_m_c"
установите значение 'true [истина]'. Это также касается сообщений. Чтобы
вызвать диалоговое окно сообщений в заголовке блока установите атрибут
S7_alarm_ui := '1' (если Вы установите значение '0', то вызовется STEP 7
совместимое диалоговое окно).

Установки в области объявлений


Чтобы разрешить управление и наблюдение параметров блока на ОС, для
каждого параметра Вашего блока, которым Вы хотите управлять и за которым
Вы хотите наблюдать, установите значение системного атрибута "S7_m_c" в
'true [истина]'.
Если Вы хотите, чтобы Ваш блок мог посылать сообщения и/или события на
ОС, то определите ввод с типом данных DWORD [Двойное слово] (здесь:
EV_ID). В экземплярном DB этому вводу будет присвоен номер сообщения,
автоматически присвоенный системой (сервером сообщений).
Номер сообщения во всем проекте S7 является уникальным, поэтому в
проектах, содержащих несколько ПЛК и операторских станций, коллизий не
будет. Номер отдельного сообщения, требуемый WinCC, образуется от
номера этого сообщения во время передачи данных.
Для такого ввода определите системный атрибут "S7_server" со значением
'alarm_archiv' и системный атрибут "S7_a_type" со значением 'alarm_8p' (в
зависимости от блока сообщений, который Вы инсталлировали).
В целях избежания случайного изменения данных, определенных системой,
этот вход не должен быть видимым в схеме CFC и не должно быть
возможности соединить или присвоить параметры этому входу.

Руководство по программированию, создание блоков для PCS 7


1-30 A5E00122559-01
В следующем фрагменте блока-примера показано использование системных
атрибутов в заголовке блока и для ввода EV_ID, который будет принимать
сообщение.

//**************************************************************************************
// Заголовок блока
//**************************************************************************************

FUNCTION_BLOCK "CONTROL"
TITLE= 'CONTROL'

{ // Список системных атрибутов


S7_tasklist:= 'OB80,OB100'; // Блок вызывается в случае ошибки и теплой перезагрузки
S7_m_c:= 'true'; // Блоком можно управлять и наблюдать за ним
S7_alarm_ui:= '1' // Параметры для диалога сообщений PCS 7 ('0'=стандартный
диалог)
}
AUTHOR: ABC
NAME: CONTROL
VERSION: '0.01'
FAMILY: XYZ
KNOW_HOW_PROTECT

//**************************************************************************************
// Область объявлений: параметры блока
//**************************************************************************************

VAR_INPUT
.... // Параметр EVENT ID для номера сообщения
EV_ID {S7_visible:='false'; // Параметр невидим в CFC
S7_link:='false'; // Параметр нельзя связать в CFC
S7_param :='false'; // Параметр не может быть задан в CFC
S7_server:='alarm_archiv'; // Номер сообщения, определяемый сервером
S7_a_type:='alarm_8p' // Сигналы блок реализованы с помощью ALARM_8P
} :DWORD := 0; // ID сообщения
...
END_VAR

Входы блока ALARM [Аварий], которые не требуются в блоке, могут быть


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

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-31
В следующем примере приведено описание ALARM_8P:

//**************************************************************************************
// Область объявлений: параметры блока
//**************************************************************************************
....
// Свободно определяемые вспомогательные значения ALARM_8P
AUX_PR05 {S7_visible := 'false'} : ANY; // 5 вспомогательное значение
AUX_PR06 {S7_visible := 'false'} : ANY; // 6 вспомогательное значение
AUX_PR07 {S7_visible := 'false'} : ANY; // 7 вспомогательное значение
AUX_PR08 {S7_visible := 'false'} : ANY; // 8 вспомогательное значение
AUX_PR09 {S7_visible := 'false'} : ANY; // 9 вспомогательное значение
AUX_PR10 {S7_visible := 'false'} : ANY; // 10 вспомогательное значение
....
//**************************************************************************************
// Область объявлений: статические переменные
//**************************************************************************************
....
//**************************************************************************************
// Область объявлений множества экземпляров
//**************************************************************************************
OP_A_LIM_1: OP_A_LIM; // Блок операторского управления 1
ALARM_8P_1: ALARM_8P; // Создание максимум 8 сообщений с 10 вспомогат. значениями
...
//**************************************************************************************
// Сообщения ALARM_8P
//**************************************************************************************
// Переменные типа STRING не должны быть связаны с вспомог. значениями ALARM8_P
// и передаются как массив байт
FOR DUMMY := 1 TO 16
DO
sbyBA_NA[DUMMY] := 0; //Удаление массива по умолчанию
END_FOR;

DUMMY := BLKMOV (SRCBLK:= BA_NA,DSTBLK:=sbyBA_NA);


swSTEP_NO := STEP_NO; // Номер шага Batch (в соотв. с в/в вспом. знач. ALARM_8P)
sdBA_ID := BA_ID; // Batch ID (в соотв. с в/в вспом. значений ALARM_8P)

ALARM_8P_1(EN_R := TRUE, // Обновить выход ACK_STATE


ID := 16#EEEE, // Канал данных для сообщений (всегда 16#EEEE)
EV_ID:= EV_ID, // Количество сообщений > 0
SIG_1:= M_SUP_AH AND QH_ALM, // Набл. сигнал 1 -> сообщ. верх. аварийной уставки
SIG_2:= M_SUP_AL AND QL_ALM, // Набл. сигнал 2 -> сообщ. нижн. аварийной уставки
SIG_3:= 0, // Наблюдаемый сигнал 3 -> нет сообщений
SIG_4:= 0, // Наблюдаемый сигнал 4
SIG_5:= 0, // Наблюдаемый сигнал 5
SIG_6:= 0, // Наблюдаемый сигнал 6
SIG_7:= 0, // Наблюдаемый сигнал 7
SIG_8:= 0, // Наблюдаемый сигнал 8
SD_1 := sbyBA_NA, // Вспомогательное значение 1
SD_2 := swSTEP_NO, // Вспомогательное значение 2
SD_3 := sdBA_ID, // Вспомогательное значение 3
SD_4 := PV_IN, // Вспомогательное значение 4
SD_5 := AUX_PR05, // Вспомогательное значение 5
SD_6 := AUX_PR06, // Вспомогательное значение 6
SD_7 := AUX_PR07, // Вспомогательное значение 7
SD_8 := AUX_PR08, // Вспомогательное значение 8
SD_9 := AUX_PR09, // Вспомогательное значение 9
SD_10:= AUX_PR10); // Вспомогательное значение 10

QMSG_ERR := ALARM_8P_1.ERROR; // Параметр состояния ERROR


MSG_STAT := ALARM_8P_1.STATUS; // Параметр состояния STATUS
MSG_ACK := ALARM_8P_1.ACK_STATE; // Текущее состояние подтверждения ОС
....

Руководство по программированию, создание блоков для PCS 7


1-32 A5E00122559-01
1.6.1 Блокировка сообщений во время запуска

Если Вы хотите уменьшить время загрузки в ПЛК при запуске, которое


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

//*************************************************************************************
// Область объявлений: параметры блока
//*************************************************************************************
VAR_INPUT
...
H_ALM {S7_m_c := 'true';
S7_visible:='false';
S7_link := 'false'
} :REAL :=100; // Верхняя аварийная уставка (по умолчанию 100)
L_ALM {S7_m_c := 'true'; // Возможно управление и наблюдение за параметром
S7_visible:='false'; // Параметр невидим
S7_link := 'false' // и не может быть связан
} :REAL := 0; // Нижняя аварийная уставка (по умолчанию 0)
...
RUNUPCYC {S7_visible:='false';
S7_link:='false'} :INT := 3; // Количество циклов исполнения
END_VAR
//************************************************************************************
// Область объявлений: статические переменные
//************************************************************************************
VAR
...
siRUNUPCNT :INT := 0; // Счетчик для исполнения RUNUPCYC
...
END_VAR
//************************************************************************************
// Запуск
//************************************************************************************
// OB100: теплая перезагрузка
100:
...
siRUNUPCNT := RUNUPCYC; // Сохранить значение RUNUPCYC
...
//**********************************************************************************
// Технологическая область
//**********************************************************************************
IF siRUNUPCNT = 0 // Завершен ли цикл RUNUPCYC?
THEN
IF (LMN > H_ALM) THEN // Если знач. регул. переменной превысило верх. авар. уставку
QH_ALM := 1; // Установить выход ошибки
QL_ALM := 0; // Сбросить выход ошибки
ELSIF (LMN < L_ALM) THEN // Если знач. регул. переменной меньше нижн. авар. уставки
QL_ALM := 1; // Установить выход ошибки
QH_ALM := 0; // Сбросить выход ошибки
ELSE
QH_ALM := 0; // Сбросить выходы ошибок
QL_ALM := 0;
END_IF;
ELSE
siRUNUPCNT := siRUNUPCNT - 1;
END_IF;
END_CASE;

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-33
1.6.2 Блокировка отдельных сообщений

Если Вы хотите блокировать отдельные сообщения, которые Вы полагаете


могут быть сгенерированны другим способом, то Вы можете использовать
технологию, приведенную ниже:
В Вашем блоке определите параметр ввода с типом данных BOOL, который
обрабатывается в алгоритме Вашего блока таким образом, что если
сообщение блокировано, то событие не передается на вход SIG блока
ALARM [Аварий].
В следующем примере входы M_SUP_AL и M_SUL_AH используются для
блокирования одиночного сообщения об аварии:

//**************************************************************************************
// Область объявлений: параметры блока
//**************************************************************************************

VAR_INPUT
.....
// Подавление ALARM LOW
M_SUP_AL {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_string_0:= 'Suppress LL=No'; // Операторский текст для значения (M_SUP_AL)= 0
S7_string_1:= 'Suppress LL=Yes' // Операторский текст для значения (M_SUP_AL)= 1
} :BOOL; // Подавление нижнего аварийного значения

// Подавление ALARM HIGH


M_SUP_AH {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_string_0:= 'Suppress HH=No'; // Оператор. текст для значения (M_SUP_AH)= 0
S7_string_1:= 'Suppress HH=Yes' // Оператор. текст для значения (M_SUP_AH)= 1
} :BOOL; // Подавление верхнего аварийного значения
...
END_VAR

//*************************************************************************************
// Сообщения ALARM_8P
//*************************************************************************************
.....
ALARM_8P_1(EN_R := TRUE, // Обновить выход ACK_STATE
ID := 16#EEEE, // Канал данных для сообщений (всегда 16#EEEE)
EV_ID:= EV_ID, // Количество сообщений > 0
SIG_1:= M_SUP_AH AND QH_ALM, // Наблюд. сигнал 1 -> сообщ. верх. авар. уставки
SIG_2:= M_SUP_AL AND QL_ALM, // Наблюд. сигнал 2 -> сообщ. нижн. авар. уставки
SIG_3:= 0, // Наблюдаемый сигнал 3 -> нет сообщений
SIG_4:= 0, // Наблюдаемый сигнал 4
.....
.....

Руководство по программированию, создание блоков для PCS 7


1-34 A5E00122559-01
1.6.3 Компиляция исходного файла

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


помощью компилятора SCL [SCL compiler]. Выберите "File [Файл]> Compile
[Компилировать]" или щелкните по кнопке Compile [Компилировать] на панели
инструментов. После безошибочной компиляции блок FB501 будет в папке
блоков программы S7.
Более подробную информацию можно найти в руководстве "S7-SCL for S7-
300 and S7-400 [S7-SCL для S7-300 и S7-400]".

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-35
1.7 Конфигурирование сообщений

Общие сведения
Если Вы хотите, чтобы Ваш блок мог посылать сообщения на ОС, то в
статических переменных следует определить многоэкземплярный блок
аварийных сообщений.
Блок ALARM_8 / ALARM_8P позволяет следить за 8 сигналами, являющимися
параметрами блока аварийных сообщений. При каждом его вызове блок
записывает текущие состояния сигналов и посылает сообщение на ОС.
Следующий вызов происходит при изменении хотя бы одного из сигналов.

Конфигурирование сообщений в SIMATIC Manager [SIMATIC Менеджере]


В диалоговом окне Edit [Правка]> Special Object Properties [Специальные
свойства объекта]> Message [Сообщение] SIMATIC Менеджера Вы можете
редактировать EV_ID.
Вы можете блокировать отдельные части сообщения (например, текст
сообщения, класс сообщения и т.д.), чтобы предотвратить их изменение;
другими словами, когда Вы инсталлируете Ваш блок в схему CFC, Вы можете
запретить изменение сообщения в экземпляре блока.

Рисунок 1-7 : Конфигурирование сообщений в SIMATIC Manager [SIMATIC Менеджере]

Сначала Вы вводите тексты для всех сообщений данного блока. Отдельные


тексты соответствуют пользовательским блокам в AlarmLogging в WinCC.

Руководство по программированию, создание блоков для PCS 7


1-36 A5E00122559-01
Источник:
Здесь Вы можете определить источник сообщения.
Если Вы определите ключевое слово $$AKZ$$, то при передаче данных путь
папки иерархии, имя схемы и имя блока будут определены и добавлены
конфигурацией соединения ПЛК-ОС к тексту сообщения ОС.
Примечание: Путь PH будет указан, только если соответствующие папки
иерархии включены в имя (свойства технологической папки иерархии или
установки для PH).

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

ID пакета:
Здесь Вы определяете ID пакета для сообщения.
Если Вы введете ID пакета, то при передаче данных конфигурация
соединения ПЛК-ОС введет в колонку "Charge Name [Загружаемые имена]" в
списке сообщений WinCC соответствующий атрибут. Однако это скорее не ID
пакета, а имя пакета. Если Вы хотите, чтобы Ваш блок подходил для
дополнительного пакета S7 BATCH flexible, то Вы должны ввести здесь
@1%s@. Тогда в сообщение в качестве первого вспомогательного значения
будет включен идентификатор пакета BATCH (см. раздел 1.8). Если Вы не
используете BATCH flexible, то не вводите здесь ничего.

Классы сообщений
Вы можете определить класс сообщения для каждого сообщения. Как только
Вы щелкните на строке сообщения в столбце класса сообщения, ячейка
изменится на комбинированное окно, в котором Вы можете выбрать класс
сообщения. Неиспользуемые сообщения должны иметь класс сообщения "<
no message [не сообщение]>". Более подробную информацию об обработке
сообщений смотрите в документации WinCC.
Введите описание причины ошибки в колонку "Event text [Текст события]"
(максимум 40 знаков, включая все вспомогательные значения), в колонке
"Individual acknowledgment [Отдельное квитирование]" отметьте, должно ли
сообщение квитироваться отдельно (если флаговая кнопка активизирована)
или достаточно группового квитирования.
В колонке "Locked [Блокировано]" (зеленый ключевой символ) определите
может ли сообщение быть изменено пользователем блока (флаговая кнопка
не отмечена) или сообщение блокировано (флаговая кнопка отмечена).

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-37
Вспомогательные значения для сообщений
Если Вы хотите, чтобы вместе с сообщением на ОС передавалась какая-то
дополнительная информация (например, измеряемые значения), то Вы
должны использовать блок ALARM [Аварийных сообщений], который
позволяет Вам определять вспомогательные значения (ALARM_8P = 10
вспомогательных значений). Значения, передаваемые с параметрами SD_1
до SD_10 блока ALARM [Аварийных сообщений], могут быть включены в текст
сообщения следующим образом:
@ Номер параметра формат значения @
В примере, приведенном ниже значение параметра SD_4 будет отображаться
в десятичном формате. Оператор формата задается в соответствии с
синтаксисом C.
@4%d@

Языки
Если Вы хотите, чтобы Ваши сообщения отображались на нескольких языках
(в зависимости от выбранного языка в ALARM Logging [Мастере регистрации
аварийных сообщений] в WinCC), то Вам следует сконфигурировать их для
каждого требуемого языка в диалоговом окне "Options [Опции] > Translating
Text [Перевод текста] > User texts [Пользовательские тексты]" в
SIMATIC Менеджере. В представленной таблице введите тексты, которые
Вам необходимы в соответствующих столбцах.

Рисунок 1-8: Перевод текстов сообщений

Руководство по программированию, создание блоков для PCS 7


1-38 A5E00122559-01
1.8 Связь с BATCH flexible
Если Вы хотите использовать Ваш блок с дополнительным пакетом S7
"BATCH flexible", то определите следующие параметры ввода и ввода-
вывода:

Имя параметра Значение Тип Тип данных


параметра
BA_EN BATCH разрешен INPUT [Ввод] BOOL
BA_NA имя пакета BATCH INPUT [Ввод] STRING [16]
BA_ID следующий номер пакета INPUT [Ввод] DWORD
OCCUPIED ID исполняемого BATCH INPUT [Ввод] BOOL
STEP_NO номер этапа BATCH INPUT [Ввод] WORD

Фрагмент блока-примера:

//**************************************************************************************
// Область объявлений: параметры блока
//**************************************************************************************
VAR_INPUT
....
// параметры для BATCH flexible
STEP_NO {S7_visible := 'false';
S7_m_c := 'true'}
:WORD; // Номер шага Batch
BA_ID {S7_visible := 'false';
S7_m_c := 'true'}
:DWORD; // Batch ID
BA_EN {S7_visible := 'false'; // Параметр невидим в схеме CFC
S7_m_c := 'true' // Параметром можно управлять и наблюдать за ним,
// но только
// мониторинг за двоичным изменением
} :BOOL := 0; // Batch разрешен

BA_NA {S7_visible := 'false';


S7_m_c := 'true'}
:STRING[16] := ''; // Имя пакета

OCCUPIED {S7_visible := 'false';


S7_m_c := 'true'}
:BOOL := 0; // Занятый пакет
....
END_VAR

Если Вы хотите создавать сообщения в блоке, так как показано выше, то Вы


должны использовать входы BA_NA, STEP_NO и BA_ID (в этом порядке) как
вспомогательные значения.

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-39
Вспомогательные значения имеют следующие значения:

Связанное Значение
значение
1 имя пакета BATCH BA_NA
2 номер этапа BATCH STEP_NO
3 BATCH: следующий номер пакета BA_ID
от 4 до 7 значения, необходимые для блока, или
используемые пользователем

Руководство по программированию, создание блоков для PCS 7


1-40 A5E00122559-01
1.9 Создание типа блока CFC
В отличие от программирования на SCL, где объявляются переменные и
программирование осуществляется через присвоения, CFC основывается на
соединениях графических объектов. Это означает, что Вы можете создавать
новые блоки, размещая и соединяя существующие. Поэтому оно является
типичным приложением многоэкземплярной техники.
Следующее описание предоставляет обзор и объясняет базовые процедуры.
Более подробное описание создания блоков в CFC можно посмотреть в
руководстве "CFC for S7 [CFC для S7]" или в интерактивной помощи CFC.

1.9.1 Пример: CONTROL2

Существующий образец блока "CONTROL" будет расширен блоком


перемножения. Значение процесса будет формироваться умножением двух
вводимых значений (IN1 и IN2). Расширенный блок будет сгененирован как
CONTROL2 (FB601).

Процедура
• Откройте новую схему CFC и поместите в нее блок CONTROL.
• Из библиотеки CFC \ELEMENTA перетащите в схему блок перемножения
MUL_R (FC63).
• Соедините выход "OUT" блока перемножения MUL_R со значением
процесса (параметр "PV_IN") блока-примера.
• Откройте в схеме просмотр входов/выходов схемы "Chart Inputs/Outputs
[Входы-выходы схемы]" и выберите символ "IN [Вход]" в окне "Interface
[Интерфейс]".
• Соедините входы "IN1" и "IN2" блока перемножения MUL_R с входами-
выходами схемы; перетащите входы-выходы блока во входы-выходы
схемы (правое окно).
• Соедините все входы и выходы блока-примера (кроме значения
процесса, которое уже соединено) с входами-выходами схемы CFC.
• Скомпилируйте схему CFC как блок в диалоговом окне "Chart [Схема]>
Compile [Компилировать]> Chart as Block Type [Схема как тип блока]".
- На вкладке "General [Общие]" введите номер FB (в данном случае
601). Затем введите прочие параметры в соответствующих полях:
Family [Семейство], Author [Автор], Version [Версия]. Имя схемы CFC
уже было введено в поле Name [Имя] (выше).
- На вкладке "Attributes [Атрибуты]" введите атрибуты блока и
системные атрибуты, которые Вам необходимы. Не определяйте
здесь системный атрибут "S7_tasklist" (см. соответствующее правило).
- Начните компиляцию, нажав на кнопку "OK".

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-41
Правила инсталляции:
Тип блока CFC инсталлируется в каждый OB, содержащийся в списке задач
блоков, которые его используют; другими словами, каждый список задач
состоит из списков задач его блоков. Блоки, содержащиеся в типе блока,
сами вызываются только в списке блоков OB, приведенных в их собственных
списках задач. На примере, приведенном здесь, это означает следующее:
Блок-пример CONTROL имеет следующий список задач "S7_tasklist =
'OB80,OB100' ".
Блок перемножения MUL_R не имеет списка задач.
Поэтому тип блока CFC имеет список задач "S7_tasklist = 'OB80,OB100' ".
Однако в OB80 и OB100 вызывается только блок CONTROL, а не блок
перемножения MUL_R.

1.10 Соглашения об именах и числовых диапазонах

Числовой диапазон
Чтобы предотвратить конфликты между блоками управления процессом
PCS 7, поддерживаемыми Siemens, Вам следует нумеровать Ваши блоки с
номера 501. Когда Вы выбираете номер для Вашего блока, Вам следует
помнить о характеристиках типов ЦПУ, поддерживаемых Вашей библиотекой.

Имена
При присвоении имен параметрам Вашего блока Вам следует
придерживаться следующего правила:
Двоичные выходы начинаются с Q, например, QH_ALM или Q_L_ALM

Руководство по программированию, создание блоков для PCS 7


1-42 A5E00122559-01
1.11 Исходный код примеров

//Автор: ABC Дата: 13.08.00 Версия:1.00


//Изменено: Дата: Версия:
//Замена:

//**************************************************************************************
// Заголовок блока
//**************************************************************************************

FUNCTION_BLOCK "CONTROL"
TITLE = 'CONTROL'
{ // Список системных атрибутов
S7_tasklist:= 'OB80,OB100'; // Блок вызывается в случае ошибки или теплой перезагрузки
S7_m_c:= 'true'; // Возможно управление и наблюдение за блоком
S7_alarm_ui:= '1' // Парам. для диалога сообщ. PCS 7 ('0'=станд. диалог сообщений)
}
AUTHOR: ABC
NAME: CONTROL
VERSION: '0.01'
FAMILY: XYZ
KNOW_HOW_PROTECT

//**************************************************************************************
// Область объявлений: параметры блока
//**************************************************************************************

VAR_INPUT
SAMPLE_T {S7_sampletime:= 'true'; // Параметр выборки для блока (цикл задачи)
S7_visible:='false'; // Параметр невидим
S7_link:= 'false' // Параметр нельзя связывать
} :REAL := 1; // Время выборки [с] (по умолчанию 1 сек)

L_ALM {S7_m_c := 'true'; // Возможно управление и наблюдение за параметром


S7_visible:='false'; // Параметр невидим
S7_link := 'false' // и не может быть связан
}
:REAL := 0; // Нижняя аварийная уставка (по умолчанию 0)
H_ALM {S7_m_c := 'true';
S7_visible:='false';
S7_link := 'false'} :REAL :=100; // Верхняя аварийная уставка (по умолчанию 100)

M_SUP_AL {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_string_0:= 'Suppress LL=No'; // Текст оператора для значения (M_SUP_AL)= 0
S7_string_1:= 'Suppress LL=Yes' // Текст оператора для значения (M_SUP_AL)= 1
} :BOOL; // подавление нижней аварийной уставки

M_SUP_AH {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_string_0:= 'Suppress HH=No';
S7_string_1:= 'Suppress HH=Yes'
} :BOOL; // подавление верхней аварийной уставки

SP_OP_ON {S7_visible:='false';
S7_dynamic:='true' // Тест/исполнение CFC: показывает реальное значение в ПЛК)
}
:BOOL := 1; // 1= разрешение оператору ввода уставки

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-43
SPBUMPON {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_string_0:='SP bumpless=Off';
S7_string_1:='SP bumpless=On'
}
:BOOL := 1; // 1= разрешение безударного переключения для уставки
SP_EXTON {S7_visible:='false';
S7_dynamic:='true' // Тест/исполнение CFC: показывает реальное значение в ПЛК)
}
:BOOL := 1; // 1: выбрать SP_EXT

SP_EXT {S7_dynamic:='true'}

:REAL := 0; // Внешняя уставка


SP_HLM {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_shortcut:='SP high limit'; // Текст (макс. 16 символов) для отображения на ОС
S7_unit:=''} // Ед. измерения (макс. 16 символов)
:REAL := 100; // Установить верхнюю уставку

SP_LLM {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_shortcut:='SP low limit';
S7_unit:=''}
:REAL := 0; // Установить нижнюю уставку

GAIN {S7_link:='false';
S7_edit:='para'; // Настройки параметра в Ассистенте импорта/экспорта (IEA)
S7_m_c:='true';
S7_shortcut:='Gain';
S7_unit:=''}
:REAL := 1; // Коэффициент пропорциональности

EV_ID {S7_visible:='false';
S7_link:='false';
S7_param :='false'; // Параметр не может быть установлен в CFC
S7_server:='alarm_archiv'; // Номер сообщения, определяемый сервером
S7_a_type:='alarm_8p' // Сигналы блока с помощью ALARM_8P
} :DWORD := 0; // ID сообщения

// Parameters for BATCH flexible


STEP_NO {S7_visible := 'false';
S7_m_c := 'true'} :WORD; // Номер шага Batch
BA_ID {S7_visible := 'false';
S7_m_c := 'true'} :DWORD; // Batch ID
BA_EN {S7_visible := 'false'; // Параметр невидим в схеме CFC
S7_m_c := 'true' // Возможно управление и наблюдение за параметром
} :BOOL := 0; // разрешен Batch

BA_NA {S7_visible := 'false';


S7_m_c := 'true'} :STRING[16] := ''; // имя пакета Batch

OCCUPIED {S7_visible := 'false';


S7_m_c := 'true'} :BOOL := 0; // занятый Batch

RUNUPCYC {S7_visible:='false';
S7_link:='false'} :INT := 3; // Количество циклов исполнения
SUPPTIME :REAL := 0; // Задержка выборки
SUPP_IN :REAL := 0; // Ввод значения для задержки выборки
END_VAR

Руководство по программированию, создание блоков для PCS 7


1-44 A5E00122559-01
VAR_OUTPUT
LMN {S7_shortcut:='pressure'; // Имя параметра на ОС
S7_unit := 'mbar'; // Ед. измерения параметра
S7_m_c := 'true' // Возможно наблюдение
} :REAL; // Регулируемое значение

QH_ALM :BOOL := false; // 1 = активизировать верхнюю аварийную уставку


QL_ALM :BOOL := false; // 1 = активизировать нижнюю аварийную уставку

QSP_HLM {S7_visible:='false';
S7_dynamic:='true'} : BOOL := 0; // 1=активизировать вывод верхней уставки

QSP_LLM {S7_visible:='false';
S7_dynamic:='true'} : BOOL := 0; // 1=активизировать вывод нижней уставки

Q_SP_OP {S7_visible:='false';
S7_dynamic:='true';
S7_m_c:='true'} : BOOL := 0; // Состояние: 1=оператор может ввести уставку

QOP_ERR {S7_visible:='false';
S7_dynamic:='true'} : BOOL := 0; // 1=ошибка оператора

QMSG_ERR {S7_visible:='false';
S7_dynamic:='true'} : BOOL := 0; // ALARM_8P: выход ошибки

MSG_STAT {S7_visible:='false';
S7_dynamic:='true'} : WORD := 0; // Сообщение: выход STATUS

MSG_ACK {S7_visible:='false';
S7_dynamic:='true'} : WORD := 0; // Сообщение: выход ACK_STATE

SUPP_OUT :REAL := 0; // вывод значения для задержки выборки


SP {S7_dynamic:='true';
S7_m_c:='true'} : REAL := 0; // Активная уставка

END_VAR

VAR_IN_OUT
PV_IN {S7_dynamic:='true';
S7_m_c:='true';
S7_unit:='%'} : REAL := 0; // Значение процесса (AUX_PR04 сообщения)

SP_OP {S7_visible:='false';
S7_link:='false';
S7_m_c:='true';
S7_shortcut:='Setpoint';
S7_unit:=''} : REAL := 0; // Ввод уставки оператором

// Свободно определяемые вспомогательные значения ALARM_8P

AUX_PR05 {S7_visible := 'false'} : ANY; // Вспомогательное значение 5


AUX_PR06 {S7_visible := 'false'} : ANY; // Вспомогательное значение 6
AUX_PR07 {S7_visible := 'false'} : ANY; // Вспомогательное значение 7
AUX_PR08 {S7_visible := 'false'} : ANY; // Вспомогательное значение 8
AUX_PR09 {S7_visible := 'false'} : ANY; // Вспомогательное значение 9
AUX_PR10 {S7_visible := 'false'} : ANY; // Вспомогательное значение 10

END_VAR

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-45
//**************************************************************************************
// Область объявлений: статические переменные
//**************************************************************************************
VAR

sbRESTART :BOOL := TRUE; // Бит памяти для инициализации


siRUNUPCNT :INT := 0; // Счетчик для исполнения RUNUPCYC
sSUPP_IN :REAL := 0; // Старое значение ввода задержки выборки
ACT_TIME :REAL := 0; // Счетчик времени

swSTEP_NO :WORD; // Номер шага Batch


sdBA_ID :DWORD; // Batch ID

sbyBA_NA :ARRAY[1..16] OF BYTE := 16(0);

//**************************************************************************************
// Область объявления множества экземпляров
//**************************************************************************************
OP_A_LIM_1: OP_A_LIM; // Блок операторского управления 1

ALARM_8P_1: ALARM_8P; // Создание макс. 8 сообщений с макс. 10 вспомог. значениями


END_VAR

//**************************************************************************************
// Область объявлений: временные переменные
//**************************************************************************************

VAR_TEMP
// Начальные данные: структура с данными для OB, который просто вызывает блок
TOP_SI: STRUCT
EV_CLASS :BYTE;
EV_NUM :BYTE;
PRIORITY :BYTE;
NUM :BYTE;
TYP2_3 :BYTE;
TYP1 :BYTE;
ZI1 :WORD;
ZI2_3 :DWORD;
END_STRUCT;

// Начальные данные: структура с данными для последнего вызываемого OB запуска


START_UP_SI: STRUCT
EV_CLASS :BYTE;
EV_NUM :BYTE;
PRIORITY :BYTE;
NUM :BYTE;
TYP2_3 :BYTE;
TYP1 :BYTE;
ZI1 :WORD;
ZI2_3 :DWORD;
END_STRUCT;

S7DT :DATE_AND_TIME; // Переменная местного времени


DUMMY :INT; // Вспомогательная переменная
END_VAR

//*************************************************************************************
// Область кода
//*************************************************************************************

Руководство по программированию, создание блоков для PCS 7


1-46 A5E00122559-01
//*************************************************************************************
// Зависимость от вызывающего OB
//*************************************************************************************

// Чтение начальных данных с помощью SFC6 (RD_SINFO)


DUMMY := RD_SINFO (TOP_SI := TOP_SI, START_UP_SI := START_UP_SI);

IF sbRESTART THEN
// Инициализация
TOP_SI.NUM := 100; // Выполнить инициализацию как для теплой перезагрузки
sbRESTART := FALSE; // Сброс переменной инициализации
END_IF;

// В каком OB вызывается блок?

CASE WORD_TO_INT(BYTE_TO_WORD(TOP_SI.NUM)) OF

//************************************************************************************
// OB обработки ошибок
//************************************************************************************
// OB80: ошибка времени
80:
QH_ALM := 0; // Сброс выходов ошибок
QL_ALM := 0;
//************************************************************************************
// Запуск
//************************************************************************************
// OB100: теплая перезагрузка
100:
QH_ALM := 0; // Сброс выходов ошибок
QL_ALM := 0;
siRUNUPCNT := RUNUPCYC; // Сохранить значение RUNUPCYC
ELSE
//**********************************************************************************
// Ввод оператором уставки SP_OP (действительное значение) или связывание уставки SP_EXT
//**********************************************************************************

// Вызов многоэкземплярного OP_A_LIM (значение параметров для OP_A_LIM смотрите в


// интерактивной справке к нему)

OP_A_LIM_1(U := SP_OP, U_HL:= SP_HLM, U_LL:= SP_LLM, OP_EN:= SP_OP_ON, BTRACK:=


SPBUMPON, LINK_ON:= SP_EXTON, LINK_U:= SP_EXT);

OK := OK AND ENO; //Разрешение вывода флага OK блока OP_A_LIM


Q_SP_OP := OP_A_LIM_1.QOP_EN; // 1: разрешение операторского ввода SP
SP_OP := OP_A_LIM_1.U; // Перезапись уставки
QOP_ERR := OP_A_LIM_1.QOP_ERR; // 1: ошибка оператора
QSP_HLM := OP_A_LIM_1.QVHL; // 1: верхняя граница
QSP_LLM := OP_A_LIM_1.QVLL; // 1: нижняя граница
SP := OP_A_LIM_1.V; // Действующая уставка

//**********************************************************************************
// Технологическая область
//**********************************************************************************
IF (SUPP_IN <> sSUPP_IN) THEN
ACT_TIME := SUPPTIME; // Инициализация счетчика времени
sSUPP_IN := SUPP_IN;
END_IF;

IF (ACT_TIME > 0) THEN // Если время ожидания еще не прошло


ACT_TIME := ACT_TIME-SAMPLE_T; // Уменьшить время ожидания
ELSE
SUPP_OUT := SUPP_IN; // Соединить вход с выходом
END_IF;

LMN := GAIN * (SP - PV_IN); // Вычислить регулируемую переменную

IF siRUNUPCNT = 0 // Завершен ли цикл RUNUPCYC ?

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 1-47
THEN
IF (LMN > H_ALM) THEN // Если знач. регул. переменной превысило верх. авар. уставку
QH_ALM := 1; // Установить выход ошибки
QL_ALM := 0; // Сбросить выход ошибки

ELSIF (LMN < L_ALM) THEN // Если знач. регул. переменной меньше нижн. авар. уставки
QL_ALM := 1; // Установить выход ошибки
QH_ALM := 0; // Сбросить выход ошибки
ELSE
QH_ALM := 0; // Сбросить выходы ошибок
QL_ALM := 0;

END_IF;
ELSE
siRUNUPCNT := siRUNUPCNT - 1;
END_IF;
END_CASE;

//**************************************************************************************
// Сообщения ALARM_8P
//**************************************************************************************

// Переменные типа STRING не должны быть связаны с вспомог.значениями ALARM8_P


// и передаются как массив байт

FOR DUMMY := 1 TO 16
DO
sbyBA_NA[DUMMY] := 0; //Удаление массива по умолчанию
END_FOR;

DUMMY := BLKMOV (SRCBLK:= BA_NA,DSTBLK:=sbyBA_NA);


swSTEP_NO := STEP_NO; // Номер шага Batch (в соотв. с в/в вспом. знач. ALARM_8P)
sdBA_ID := BA_ID; // Batch ID (в соотв. с в/в вспом. знач. ALARM_8P)

ALARM_8P_1(EN_R := TRUE, // Обновить выход ACK_STATE


ID := 16#EEEE, // Канал данных для сообщений (всегда 16#EEEE)
EV_ID:= EV_ID, // Количество сообщений > 0
SIG_1:= M_SUP_AH AND QH_ALM, // Набл. сигнал 0 -> сообщ. верх. авар. уставки
SIG_2:= M_SUP_AL AND QL_ALM, // Набл. сигнал 1 -> сообщ. нижн. аварийной уставки
SIG_3:= 0, // Наблюдаемый сигнал 2 -> нет сообщений
SIG_4:= 0, // Наблюдаемый сигнал 3
SIG_5:= 0, // Наблюдаемый сигнал 4
SIG_6:= 0, // Наблюдаемый сигнал 5
SIG_7:= 0, // Наблюдаемый сигнал 6
SIG_8:= 0, // Наблюдаемый сигнал 7
SD_1 := sbyBA_NA, // Вспомогательное значение 1
SD_2 := swSTEP_NO, // Вспомогательное значение 2
SD_3 := sdBA_ID, // Вспомогательное значение 3
SD_4 := PV_IN, // Вспомогательное значение 4
SD_5 := AUX_PR05, // Вспомогательное значение 5
SD_6 := AUX_PR06, // Вспомогательное значение 6
SD_7 := AUX_PR07, // Вспомогательное значение 7
SD_8 := AUX_PR08, // Вспомогательное значение 8
SD_9 := AUX_PR09, // Вспомогательное значение 9
SD_10:= AUX_PR10); // Вспомогательное значение 10

QMSG_ERR := ALARM_8P_1.ERROR; // Параметр состояния ERROR


MSG_STAT := ALARM_8P_1.STATUS; // Параметр состояния STATUS
MSG_ACK := ALARM_8P_1.ACK_STATE; // Текущее состояние подтверждения ОС
END_FUNCTION_BLOCK

Руководство по программированию, создание блоков для PCS 7


1-48 A5E00122559-01
2 Создание экранных панелей [Faceplates]

Требования и необходимые знания


Экранные панели, описываемые здесь, предназначаются для использования
в WinCC. Для создания блоков Вам необходим базовый пакет WinCC с
дополнительными пакетами управления процессом "Basic Process Control
[Базовое управление процессом]" и "Advanced Process Control [Расширенное
управление процессом]".
Предполагается, что Вы прошли следующие курсы:
• SIMATIC WinCC System Course [Системный курс SIMATIC WinCC]
(предлагаемый учебным центром A&D под названием ST-BWINCCS)
• SIMATIC WinCC Openness N
(предлагаемый учебным центром A&D под названием ST-BWINCCN)

2.1 Этапы создания экранной панели


При создании экранной панели рекомендуется придерживаться следующих
этапов:
• Проектирование экранной панели (Раздел 2.1.1)
• Конфигурирование экранной панели (Раздел 2.1.2)
• Тестирование экранной панели (Раздел 2.1.3)

2.1.1 Проектирование экранной панели

Вид
Экранная панель является интерфейсом операторского управления и
мониторинга для блока ПЛК. Экранная панель может отображаться двумя
способами:
• Group display [Групповое изображение]: отображает значения ПЛК в
различных формах и содержит элемент для перехода к объектному
изображению.
• Loop display [Объектное изображение]: содержит элементы всех
групповых изображений.

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 2-1
Системные атрибуты
Параметры ввода, вывода и ввода-вывода которыми можно управлять и за
которыми можно наблюдать, определяют системные атрибуты, выбранные
при создании блока ПЛК. Более подробную информацию о системных
атрибутах можно посмотреть в описании области объявлений в разделе
"Структура блока ПЛК".

Параметры
Параметры выбираются в соответствии со следующими критериями:
• Какие данные необходимы оператору для быстрого и правильного
определения текущего состояния?
• Как эти значения должны отображаться?
• Какие значения оператор может изменить?
Какой уровень авторизации необходим для отдельного операторского
ввода?
Необходимы ли зависимые от процесса блокировки операторского ввода?
• Какое изображение экранной панели будет содержать отдельные
значения? Вам следует сгруппировать отдельные параметры в
соответствии с их функциями. Наиболее важные элементы и особенно те,
которые изменяются постоянно, разместите в "Standard [Стандартном]"
изображении.

Дизайн
После того как Вы определите параметры и изображения для них,
определите дизайн экранной панели; другими словами выберите элементы
кадров, их имена, определите параметры для элементов кадров и их
расположение. Следует всегда использовать имя, которое напрямую
связанно с отображаемым объектом и которое является легким для
произношения.
Пример: Вы хотите отобразить переменную "OCCUPIED [Занят]" в строке
состояния → назовите строку состояния "OCCUPIED [Занят]".
Придерживаясь этого правила, Вы сможете сделать более простыми
документацию к проекту и ведение самого проекта.

2.1.2 Конфигурирование экранной панели

Для конфигурирования экранной панели Вы можете использовать


инструментальное средство "WinCC Graphics Designer [Графический
дизайнер WinCC]". Начав с шаблонов, предоставляемых Дизайнером
экранных панелей [Faceplate Designer], Вы сможете преобразовать Ваш
дизайн кадра в кадры WinCC. Более детальное описание есть в разделе 2.2
"Создание экранных панелей с помощью Дизайнера экранных панелей
[Faceplate Designer]".

Руководство по программированию, создание блоков для PCS 7


2-2 A5E00122559-01
2.1.3 Тестирование экранной панели

Экранная панель тестируется в два этапа:


1. Проверьте свойства кадров, которые Вы создали в проводнике
WinCC [WinCC Explorer]:
- Правильно ли написаны имена параметров?
- Идентичные ли циклы WinCC установлены для параметров, которые
отображаются не один раз? Различные циклы могут привести
оператора к замешательству (например, если значение диаграммы не
совпадает с числовым значением) и повышают нагрузку на систему.
- Правильно ли установлены соединения?
- Все ли скрипты, выполняемые по событию, присутствуют?
2. Проверка в WinCC в режиме исполнения [run time]:
- Открывается ли экранная панель в групповом изображении [group
display], когда Вы щелкаете по пиктограмме блока?
- Правильно ли работает переход к отдельным представлениям от
группового изображения?
- Открывается ли экранная панель в объектном изображении [object
display], когда Вы щелкаете по кнопке "object display [объектное
изображение]"?
- Правильно ли отображаются значения блока ПЛК?
- Корректно ли отображаются сообщения и тренды?
- Корректно ли работает разблокировка управляемых параметров?
- Записываются ли значения, введенные оператором, в блок ПЛК?
- Корректно ли регистрируется операторский ввод?

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 2-3
2.2 Создание экранных панелей с помощью Дизайнера
экранных панелей [Faceplate Designer]
Одним из компонентов дополнительного пакет WinCC "Advanced Process
Control [Расширенное управление процессом]" является Дизайнер экранных
панелей [Faceplate Designer]. Он содержит шаблоны для создания PCS 7-
совместимых экранных панелей.

Совместимость с экранными панелями PCS 7


Экранные панели, поставляемые вместе с PCS 7 (стандарт экранных панелей
.ocx), не могут быть изменены с помощью Дизайнера экранных панелей
[Faceplate Designer]. Однако, существует возможность создания новых
экранных панелей с помощью Дизайнера экранных панелей [Faceplate
Designer], которые будут иметь такие же имена как и стандартные экранные
панели (например, MOTOR, VALVE, MEAS_MON, ...). При использовании
этого метода стандартные экранные панели будут перезаписаны.
"Старые" экранные панели .ocx (с символьным отображением) должны быть
заменены в кадре процесса "новыми" пиктограммами блоков, иначе вызов
экранной панели будет некорректным. Если Вы уже инсталлировали
экранные панели ocx, то они не будут перезаписаны "новыми".
После этого новые экранные панели будут рассматриваться во время
конфигурирования и в режиме исполнения как стандартные экранные панели.
Если в проекте была случайно перезаписана стандартная экранная панель,
то Вы можете скопировать стандартную экранную панель из библиотеки,
запустив Split Screen Wizard [Мастер разделения экрана].

Дополнительная информация
Более подробную информацию о компонентах и функциональных
возможностях Дизайнера экранных панелей [Faceplate Designer] Вы можете
найти в интерактивной помощи WinCC > WinCC Options [Опции WinCC] >
Faceplate Designer [Дизайнер экранных панелей].

Руководство по программированию, создание блоков для PCS 7


2-4 A5E00122559-01
2.2.1 Шаблоны Дизайнера экранных панелей [Faceplate Designer]

Для создания экранных панелей Вы можете использовать следующие


шаблоны, которые предоставляются WinCC:
• Пиктограммы блоков (готовые символы для кадров процесса)
• Шаблонные кадры
• Набор для создания объектов, содержащий готовые объекты для
создания экранных панелей
• Global scripts [Глобальные скрипты]
Полный список файлов Вы можете посмотреть в интерактивной помощи
"WinCC Options [Опции WinCC]> Faceplate Designer [Дизайнер экранных
панелей]> Components of the Faceplate Designer [Компоненты Дизайнера
экранных панелей]> Faceplate Designer File List [Список файлов Дизайнера
экранных панелей]".
2.2.1.1 Block Icons [Пиктограммы блоков]

Пиктограммы блоков можно найти в кадре WinCC "@@PCS7Typicals.PDL",


например, Valve [Клапан], Drive [Двигатель], Measured Value [Измеряемое
значение], Controller [Контроллер] и т.д., который находится в
"Siemens\WinCC\Options\PDL\Base_Data_Pool". После запуска Split Screen
Wizard [Мастера разделения экрана] он также размещается в папке "GraCS"
папки проекта.
• Шаблоны можно редактировать и изменять, Вы можете изменить форму,
цвет, расположение и т.д. и адаптировать их к экранной панели,
созданной для конкретного проекта.
• Для экранных панелей уже включены готовые скрипты и нет
необходимости их конфигурировать.
• С помощью мастера динамики "Connect picture block to tag structure
[Соединить блок кадра со структурой тегов ]" они могут быть быстро и
легко соединены.

Примечание:
Если Вы сделали какие-то изменения, то сохраните кадр под именем
"@PCS7Typicals.PDL".
Механизм поиска в PH ищет сначала это имя. Шаблоны из
"@@PCS7Typicals.PDL" используются только в том случае, если он не
найден.

2.2.1.2 Шаблонные кадры


Кадры и битовые образы хранятся в папке
"WinCC\options\pdl\FaceplateDesigner".

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 2-5
2.2.1.3 Object Construction Kit [Набор для создания объектов]
Кадр WinCC "@PCS7Elements.PDL" содержит набор готовых объектов
(пользовательские объекты) для создания экранных панелей, например, поля
ввода-вывода, тексты и т.д.
Кадр хранится в папке "Siemens\WinCC\Options\PDL\FaceplateDesigner" и
копируется в папку "GraCS" папки проекта при запуске Split Screen Wizard
[Мастера разделения экрана].

2.2.1.4 Global Scripts [Глобальные скрипты]


Вызовы экранных панелей имеют вид глобальных скриптов и хранятся в
папке "WinCC\aplib\FaceplateDesigner".

2.2.2 Шаги конфигурирования

Для создания экранной панели:


• Откройте ОС в SIMATIC Менеджере [SIMATIC Manager].
Откроется Проводник WinCC [WinCC Explorer].
• Запустите Графический дизайнер [Graphics Designer] в проводнике WinCC
[WinCC Explorer].
В данных проекта Вы найдете шаблоны для создания экранной панели.
Необходимые шаблонные кадры хранятся в папке
"Siemens/WinCC/options/pdl/FaceplateDesigner".
• Перед первым использованием кадров запустите Мастера разделения
экрана [Split Screen Wizard] (в Базовых данных [Base Data]), чтобы файлы
скопировались в папку "GraCS" папки проекта.

Примечания к конфигурированию
• Если Вы случайно перезаписали файл шаблона (например,
@PG_%Type%_%View%.PDL), то Вы можете скопировать оригинал из
папки Siemens\WinCC\Options\Pdl\FaceplateDesigner.
• Мы советуем сначала сохранить все Ваши файлы, созданные Вами для
экранных панелей, в папке GraCS текущего проекта. Если Вы не хотите,
чтобы файлы были перезаписаны оригиналами при следующем запуске
Мастера разделения экрана [Split Screen Wizard], то они должны быть
скопированы в папку Siemens\WinCC\Options\Pdl\FaceplateDesigner.
• Если Вы хотите использовать проект на другом компьютере, то Вы
можете создать новую папку с именем "FaceplateDesigner" в папке
проекта \GraCS. Экранные панели, сохраненные в этой папке, копируются
в папку проекта GraCS, когда Вы запускаете Мастер разделения экрана
[Split Screen Wizard]. Файлы с одинаковыми именами перезаписываются.
• Если необходимо, то функции, сконфигурированные в Ваших
собственных экранных панелях, могут быть защищены от просмотра и
изменения в редакторе "Global Script". Дополнительную информацию
можно посмотреть в документации к редактору "Global Script [Глобальный
скрипт]".

Руководство по программированию, создание блоков для PCS 7


2-6 A5E00122559-01
• Динамическими свойствами экранных панелей, созданных с помощью
Дизайнера экранных панелей [Faceplate Designer], можно полностью
управлять во время конфигурирования. Поэтому функциональность
экранной панели во многом зависит от выбора подходящей динамики во
время конфигурирования. В этом отношении оптимизированный,
"сокращенный" интерфейс между функциями ПЛК и ОС особенно важен.
В первую очередь это применимо к пиктограммам блоков.
• В динамике экранных панелей не должно быть C-скриптов с
фиксированными запрограммированными именами экземпляров.
• В кадре, используемом для создания экранной панели, не могут
использоваться различные типы экранных панелей; другими словами, не
допускаются экранные панели, например, содержащие регулятор клапана
и регулятор двигателя.
Дополнительную информацию можно посмотреть в документации WinCC в
"Configuration Notes, Tips and Tricks [Примечания к конфигурированию, советы
и приемы]".

Процедура
В следующем разделе содержится пошаговое описание создания
законченной экранной панели, на примере типа блока MEAS_MON.
Вы создадите экранную панель за четыре последовательных шага.
1. Адаптируете кадр группового изображения к типу экранной панели
(Раздел 2.2.2.1)
2. Адаптируете список просмотра к типу экранной панели (Раздел 2.2.2.2)
3. Редактируете кадр в соответствии с требуемым типом и изображением
(Раздел 2.2.2.3)
4. Настраиваете кадр объектного изображения для типа экранной панели
(Раздел 2.2.2.4)

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 2-7
2.2.2.1 Настройка кадра группового изображения для типа
экранной панели
Кадр "@PG_%Type%.PDL" представляет собой основу для группового
изображения экранной панели. Чтобы адаптировать ее к типу блока
MEAS_MON выполните следующее:
• Откройте шаблонный кадр "@PG_%Type%.PDL" в Графическом
дизайнере [Graphics Designer] в WinCC
• Определите тип экранной панели, выбрав объект "Block Type [Тип блока]"
(%Type%) и открыв диалоговое окно свойств (вкладка "Properties
[Свойства]").
Object properties window [Окно свойств объекта] → Properties [Свойства]→
I/O Field [Поле ввода-вывода]→ Output/Input [Вывод-ввод]→ Output value
[Выходное значение ]→ "%Type%".
Замените "%Type%" на "MEAS_MON"
• Если необходимо, то переключите для группового изображения параметр
"EventState" в состояние invisible [невидимый]:
object properties window [окно свойств объекта]→ Properties [Свойства]→
Miscellaneous [Различные]→ Display [Изображение]→ no [нет]
В примере MEAS_MON это не является необходимым.
• Сохраните кадр под именем типа блока "@PG_MEAS_MON.PDL"

2.2.2.2 Настройка списка просмотра [View List] для типа блока


Кадр "@PG_%Type%_VIEWLIST.PDL" содержит все изображения, которые
могут использоваться для стандартной экранной панели PCS 7 V5.1.

Standard [Стандартное]
Maintenance [Обслуживание]
Messages [Сообщения]
Parameter [Параметры]
Limits [Уставки]
Trend [Тренд]
Batch [Пакет]
StandardS [СтандартноеS]

Руководство по программированию, создание блоков для PCS 7


2-8 A5E00122559-01
Чтобы адаптировать их к типу блока MEAS_MON выполните следующие
шаги:
• Откройте кадр "@PG_%Type%_VIEWLIST.PDL" в Графическом дизайнере
[Graphics Designer] в WinCC
• Удалите изображения, которые Вам не нужны. Для MEAS_MON это -
"Maintenance [Обслуживание]", "Parameters [Параметры]" и "StandardS
[СтандартноеS]" (выберите и удалите).
• Разместите содержимое в требуемом порядке без пробелов между ними,
выбирая элементы в списке и перемещая их с помощью кнопок со
стрелками.
• Изменение рамки и размеров кадра:
- Для размера кадра откройте диалоговое окно свойств [properties] для
объекта кадра "@PG_%Type%_VIEWLIST". С помощью Properties
[Свойства]/Picture Object [Объект кадра]/Geometry [Геометрия] Вы
можете задать необходимые статические параметры (например,
ширина кадра [picture width] 90, высота кадра [picture height] 100).
- Теперь откройте диалоговое окно свойств [properties] для объекта
"Comboframe". Теперь в Properties [Свойства]/Rectangle
[Прямоугольник]/Geometry [Геометрия] Вы можете изменить
параметры для рамки (чтобы соответствовала размерам кадра).
После этого кадр будет выглядеть так, как показано ниже:

Standard [Стандартное]
Messages [Сообщения]
Limits [Уставки]
Trend [Тренд]
Batch [Пакет]

• Сохраните этот кадр под именем типа блока, в нашем примере это
"@PG_MEAS_MON_VIEWLIST.PDL".

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 2-9
2.2.2.3 Редактирование кадра в соответствии с требуемым типом и
изображением
Кадр "@PG_%Type%_%VIEW%.PDL" – это шаблон для представления
экранной панели.
Для представлений аварийных сообщений, трендов и пакетов доступны
кадры "@PCS7_ALARM.PDL", "@PCS7_TREND.PDL" и "@PCS7_BATCH.PDL".
Они идентичны для всех экранных панелей в PCS 7 и требуют только
редактирования в соответствии со специальными требованиями. Измените
заполнитель %VIEW% для других изображений. Изображения должны
соответствовать следующему соглашению об именах:

Назначение Заполнитель Имя


Limits [Уставки] %VIEW% = LIMITS
Parameter %VIEW% = PARAMETERS
[Параметры]
Standard %VIEW% = STANDARD
[Стандартное]
Standard S %VIEW% = STANDARDS
[Стандартное S]
Maintenance %VIEW% = MAINTENANCE
[Обслуживание]

Чтобы настроить его для типа блока MEAS_MON выполните следующее:


• Откройте кадр "@PG_%Type%_%View%.PDL" в Графическом дизайнере
[Graphics Designer] в WinCC
• Сохраните кадр для стандартного представления [standard view] как
"@PG_MEAS_MON_ STANDARD.PDL".
• Откройте кадр "@PG_%Type%_%View%.PDL" в Графическом дизайнере
[Graphics Designer] в WinCC
• Сохраните этот кадр для представления уставок [limits view] как
"@PG_MEAS_MON_LIMITS.PDL".

Изменение размеров кадра


Если Вы изменяете размеры в диалоговом окне Свойства [Properties]
(Properties[Свойства] > Geometry[Геометрия]), то следует помнить о
следующем:
• Кадры будут отображаться в групповом изображении и в объектном
изображении.
• В настоящее время для аварийных сообщений [Alarm], пакетов [Batch] и
трендов [Trend] используются универсальные кадры. Имена см. выше.
• Если Вы изменяете размеры для других изображений, то возможно Вам
также придется изменить и эти универсальные кадры.

Руководство по программированию, создание блоков для PCS 7


2-10 A5E00122559-01
2.2.2.4 Настройка кадра объектного изображения [Loop Display] для
типа блока
Кадр "@PL_%Type%.PDL" представляет собой основу для объектного
изображения экранной панели. Чтобы адаптировать ее для типа блока
MEAS_MON выполните следующие шаги:
• Откройте кадр "@PL_%Type%.PDL" в Графическом дизайнере [Graphics
Designer] в WinCC
• В поле I/O [Ввод-вывод] типа объекта "BlockType" замените текст
"%Type%" на имя типа блока:
Object properties window [Окно свойств объекта]> Properties [Свойства]>
I/O Field [Поле ввода-вывода]> Output/Input [Входы-выходы]> Output Value
[Значение выхода]> "%Type%"
замените "%Type%" на "MEAS_MON"
• Если необходимо, то переключите "EventState" для группового
изображения:
object properties window [окно свойств объекта]> Properties [Свойства]>
Miscellaneous [Разное]> Display [Изображение]> no [нет]
Это не требуется в примере MEAS_MON.
• Введите требуемое изображение в объекте "@VIEWS"

Рисунок 2-1 : Флаговая кнопка "@VIEWS"

• Object properties window [Окно свойств объекта]> Properties [Свойства]>


Check Box [Окошко метки]> Output/Input [Вход-выход]. Двойной щелчок по
"Selected Boxes [Выбранные блоки]".
• Щелкните на первом требуемом изображении (например, "1" для
STANDARD [Стандартные]).
• Щелкните индекс изображения для прочих требуемых изображений,
удерживая кнопку CTRL.
• Подтвердите Ваш выбор, нажав на кнопку OK.
• Проверьте все требуемые изображения, чтобы они отображались как
"selected [выбранный]" (проверьте маркеры в соответствующих окошках
меток).

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 2-11
• Удалите изображения, которые Вам не нужны (для MEAS_MON такими
элементами являются "MAINTENANCE [Содержание]", "PARAMETERS
[Параметры]" и "STANDARDS [СтандартноеS]").
• Разместите элементы в кадре в требуемом порядке и установите
размеры кадров в соответствии с размерами окна кадра.
• Сохраните кадр под именем типа блока "@PL_MEAS_MON.PDL"

2.2.2.5 Конфигурирование представление тренда [Trend View]


До сих пор Вы создавали только кадры характерные для отдельных типов.
Представление тренда требует дополнительного конфигурирования для
специальных тегов . Представление тренда "@PCS7_TREND.PDL", доступное
для всех экранных панелей PCS 7, содержит окно кадра "TrendPicture". Чтобы
включить кадр тренда для тега в этой точке выполните следующее:
• Откройте "Tag Logging [Система архивизации]" в редакторе WinCC.
• С помощью Мастера архива [Archive Wizard] cоздайте архив тегов для
отображения тренда
• Создайте теги для этого архива
Более детальную информацию об этом можно посмотреть в интерактивной
помощи WinCC "Tag Logging [Система архивизации]".
• Откройте кадр "@CONL1_.PDL" в Графическом дизайнере [Graphics
Designer]
• Сконфигурируйте объект TlgOnlineTrend "Control1" в соответствии с
Вашими требованиями, дополнительную информацию Вы можете
посмотреть, нажав на кнопку "Help [Справка]".
• Сохраните кадр как "@CONL1_<tagname>.PDL". <tagname> должно
совпадать с именем тега блока ПЛК. В имени следует заменить символ "/"
на "_", так как Windows не допускает символа "/" в именах файлов.

Пример имени окна для MEAS_MON_1 block:


@CONL1_Measurements_Opinputs_MEAS_MON_1.PDL

Руководство по программированию, создание блоков для PCS 7


2-12 A5E00122559-01
2.2.2.6 Конфигурирование дополнительных представлений
На шаге 3 конфигурирования (Раздел 2.2.2.3) Вы уже создали представления
для типа экранной панели. Теперь элементы кадра вставляются в
приготовленные представления и для них определяются параметры в
соответствии со структурой кадра. Готовые примеры
"@PG_MEAS_MON_STANDARD.PDL" и "@PG_MEAS_MON_LIMITS.PDL" есть
на CD, так что с этой точки зрения необходим только общий план шагов. В
"Object Properties [Свойствах объекта]" Вы можете найти информацию о том,
какие объекты инталлированны в кадре и о свойствах объектов.
Для представления "Limits [Уставки]" для MEAS_MON выполните следующие
шаги:
• Откройте кадр "@PG_MEAS_MON_LIMITS.PDL" в Графическом
дизайнере [Graphics Designer] в WinCC.
• Откройте кадр "@PCS7Elements.PDL" в Графическом дизайнере [Graphics
Designer] в WinCC.
• Расположите кадры следующим образом: Window [Окно]> Tile Vertically
[Расположить вертикально].
• Скопируйте требуемые элементы кадра из "@PCS7Elements.PDL" в
"@PG_MEAS_MON_LIMITS.PDL".
• Добавьте другие объекты WinCC, такие как прямоугольники, в Ваш кадр.
• Определите значимые (описывающие объект) имена.
• Определите расположение отдельных объектов.
• Соедините динамические атрибуты элементов кадра с параметрами типа
блока ПЛК. Для объектов "PCS7_MSG_LOCK" и "PCS7_OCCUPIED"
соединения уже определены.
• Определите "authorization sequences [последовательности авторизации]".
Шаблонные кадры включают в себя объекты "@Level5" и "@Level6". Оба
объекта управляются кадром более высокого уровня
"@PG_MEAS_MON.PDL" или "@PL_MEAS_MON.PDL".
Если пользователь имеет 5-ый уровень авторизации, то для объектов
"@Level5" цвет фона будет "white [белым]" и будет разрешено
операторское управление. Если пользователь не имеет таких прав, то
фон будет "gray [серым]" и операторское управление будет блокировано.
Объекты "@Level6" используются для управления операторским доступом
на 6-ом уровне авторизации. Оба элемента будут "указателями" для
управляемых оператором объектов в Вашем кадре. После событий
"background color [цвет фона]" и "operator authorization [авторизация
оператора]" между элементами устанавливаются непосредственные
соединения. Для двоичных переменных не требуются непосредственные
соединения.
В кадре "@PG_MEAS_MON_LIMITS.PDL" последовательности для
авторизации оператора 6-го уровня следующие:
"Operator authorization [Авторизация оператора]": @Level6 > U_AH >
U_WH > U_WL > U_AL > MO_PVHR > MO_PVLR > M_SUP_AH >
M_SUP_WH > M_SUP_WL > M_SUP_AL

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 2-13
"Background color [Цвет фона]": @Level6 > U_AH > U_WH > U_WL >
U_AL > MO_PVHR > MO_PVLR
• Сохраните кадр.
Шаги для представления "Standard [Стандартное]" для MEAS_MON
аналогичные.

2.2.2.7 Создание Вашего собственного представления для типа


блока
Далее описывается как Вы можете создать новое представление, которое
применимо только к одному типу блока, из представления, которое
использовалось для всех блоков PCS 7. В этом примере мы используем
представление аварийных сообщений [alarm view].
• Сохраните исходный кадр "@PCS7_Alarm" как "@PG_%Type%_Alarm"
(type [тип] = MEAS_MON).
• Скопируйте объекты "@Level5" и "@Level6" в Ваш кадр из существующего
представления, например, из "@PG_ MEAS_MON_Standard.PDL".
Если при копировании Вы потеряли символ "@", то он должен быть
добавлен. Имена двух объектов Level5 и Level6 должны начинаться с
этого символа.
• После C операции для "@Level5" должен быть вставлен следующий
скрипт:
double dToolbarButtons;
if (value)
dToolbarButtons = 62000;
else
dToolbarButtons = 61952;
SetPropDouble(lpszPictureName, "AlarmList",
"ToolbarButtons", dToolbarButtons);
Совет: Просто скопируйте этот текст из документации.
• Откройте кадр "@PG_%Type%_VIEWLIST.PDL" и увеличьте его размер,
чтобы внизу было пространство для вставки нового представления,
содержащего текстовое поле.
• Скопируйте текстовое поле, например, "Standard", вставьте его и дайте
представлению новое имя.
Имя объекта должно совпадать с именем нового представления, в
данном случае "Alarm [Авария]".
• Измените текст, отображаемый в списке просмотра. Текст может
отличаться от имени кадра и может быть введен на нескольких языках
(см. Graphics-Designer [Графический дизайнер]> View [Вид]> Language
menu [Язык]).
• Откройте кадр объектного изображения "@PL_%Type%.PDL" и добавьте
дополнительное поле к существующей флаговой кнопке:

Руководство по программированию, создание блоков для PCS 7


2-14 A5E00122559-01
В свойствах "@Views" для флаговой кнопки выберите "Geometry
[Геометрия]" и увеличьте значение поля на 1 (например, с 8 на 9).
• Это новое поле должно быть названо после нового представления:
Properties [Свойства]> Text [Текст]> Index [Индекс]: введите номер поля,
которое Вы добавили (здесь: 9) и в текстовом поле "Text" введите имя
(здесь: "Alarm").
• Чтобы поле было видимым в режиме исполнения:
Выберите в свойствах "@Views" > Output/Input [Ввод-вывод] и дважды
щелкните по "Selected Fields [Выбранные поля]". В списке выберите
номер "9" и закройте, нажав на кнопку "OK". Примечание: Вы можете
сделать множественный выбор, удерживая кнопку CTRL.
• Вставьте окно кадра для нового представления в кадр объектного
изображения:
Скопируйте объект "picture window [окно кадра]" из существующего
представления (например, STANDARD) и дайте ему новое имя (здесь:
"Alarm").

2.2.3 Подготовка экранных панелей для динамического


отображения [Dynamic Display]

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


1. Расширения необходимых переменных известны.
Откройте свойства объекта для объекта, для которого Вы хотите
определить динамику (например, гистограмму). Дважды щелкните по
значку в виде лампочки для требуемого атрибута в колонке "Dynamics
[Динамика]" окна Properties [Свойства]. Теперь Вы можете ввести
расширение в поле ввода.
2. Тег из списка тегов
Обычный метод, например, для кадров процесса, это использовать
список тегов, так как в нем представлены все теги. В окне свойств
[Properties] правой кнопкой мыши щелкните по значку в виде лампочки и
выберите "Tag [Тег]".
Разместите необходимый тег и дважды щелкните по нему.
Тогда в динамическом отображении будет представлено полное имя тега.
Удалите весь текст до расширения, включая точку (".").

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 2-15
Процедура для динамического отображения
• Откройте представление, для которого Вы хотите определить динамику,
например, "@PG_MEAS_MON_STANDARD.PDL".
• Если отображение сообщения не требуется, то определите его состояние
как невидимое, выбрав объект "EventState" в диалоговом окне свойств.
Измените атрибут "Display [Отображение]" на "No [Нет]", используя
properties [свойства]/group display [групповое отображение]/miscellaneous
[разное].
• Инсталлируйте объекты в кадр и определите для них параметры: для
стандартных экранных панелей необходимые объекты уже подготовлены
и могут быть скопированы в кадр прямо из файла шаблона, например,
скопируйте гистограммы из "@PCS7Elements.PDL" и вставьте их в кадр.
Затем Вы должны установить связи для свойств объектов. Если имена
известны, то Вы можете ввести их вручную. Иначе Вы можете установить
связи с помощью браузера тегов [tag browser]. Помните, что в качестве
имени тега должно быть только расширение, а не полное имя экземпляра
ПЛК. Например, в имени тега "Plant1_Motor2.U_AH" имя экземпляра
"Plant1_Motor2." должно быть удалено (включая "."). Тогда имя будет
"U_AH". При использовании расширений помните, что учитывается
регистр. Для повышения производительности циклы обновления должны
быть по возможности одинаковыми (стандартный = 2 сек.).
• Начиная с объектов "@Level5" и "@Level6" определите цепочку
непосредственных соединений для отдельных уровней авторизации.
Пример: Если Вы хотите защитить несколько полей ввод-вывода [I/O] с
6-ым уровнем авторизации, то свойство "Operator Control Enable
[Разрешение операторского управления]" объекта "@Level6" должно быть
связано со свойством "Operator Control Enable [Разрешение операторского
управления]" первого поля ввода-вывода [I/O].
- Выберите первое поле ввода-вывода [I/O] и откройте диалоговое окно
Свойства объекта [Object Properties]. На вкладке "Event [Событие]" Вы
можете установить непосредственное соединение с объектом
"@Level6".
- Второе поле ввода-вывода [I/O] теперь должно быть соединено с
первым и т.д.
Во время конфигурирования помните, что добавляемые элементы
операторского интерфейса всегда добавляются в конец
последовательности авторизации.
Советуем документировать порядок последовательности авторизации.
Изменение цвета фона для различных прав операторского управления
устанавливается таким же образом.
• Сохраните кадр с соответствующим именем, здесь:
"@PG_MEAS_MON_STANDARD.PDL".

Руководство по программированию, создание блоков для PCS 7


2-16 A5E00122559-01
2.2.4 Изменение языка

Шаблоны Дизайнера экранных панелей [Faceplate Designer] представлены на


трех языках (German [Немецкий]/English [Английский]/French [Французский]).
Это означает, что после изменения Вами языка в WinCC тексты будут
отображаться на выбранном Вами языке. Если Вы добавляете к кадру
текстовый элемент и хотите, чтобы он тоже изменялся при переключении на
другие языки, то не забудьте ввести этот текст в Графический дизайнер
[Graphics Designer] на всех необходимых языках. В Графическом дизайнере
[Graphics Designer] Вы можете переключаться с языка на язык с помощью
команды меню View [Вид]> Language... [Язык..]> Select Language [Выбрать
язык].

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 2-17
Руководство по программированию, создание блоков для PCS 7
2-18 A5E00122559-01
3 Создание интерактивной справки

Требования
Вам будет необходимо следующее:
• ASCII редактор "Notepad [Блокнот]", интегрированный в WINDOWS NT,
или подобный редактор для создания файла реестра.
• Инструмент для определения заголовков справки (например, "RoboHelp").

3.1 Структура файла справки


Если Вы хотите создать для Ваших блоков систему интерактивной справки, то
Вам надо написать файл справки с поддержкой системы заголовков. Вы
можете выбрать для файла любое имя, но рекомендуется использовать имя
Вашей библиотеки (или общее название, которое применимо к Вашим
блокам), например, "MYLIB__B.HLP".
Для каждого из Ваших блоков создайте отдельный раздел. Затем Вы должны
будете определить MAP ID для каждого раздела интерактивной справки и
ввести его в файл реестра (см. также Раздел 3.2). Все MAP ID должны быть
уникальными в пределах системы интерактивной справки.
Если у Вас достаточно большая библиотека, то Вы также можете создать hm
файл, содержащий все используемые ID. Инструмент RoboHelp использует
этот файл для назначения MAP ID.
Содержимое hm файла:

// Заголовочный файл для интерактивной справки по функциональным блокам Mylib


//
#define CONTROL 0x10 // dec. 16
#define CONTROL2 0x11 // dec. 17
#define CONTROL3 0x12 // dec. 18
....

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


информацию:

Заголовок Заголовок раздела справки для этого блока


раздела (обычно совпадает с именем блока)
ID раздела Имя и MAP ID раздела
(так как определено в файле реестра)
Индекс Ключевые слова, по которым пользователь может
перейти в данный раздел из указателя

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 3-1
Справочная система может состоять из двух файлов: файла HLP (разделы
справки) и файла CNT (содержание).
Файл CNT полезен, когда справочная система блоков собирается не как
исключительно контекстно-зависимая справочная система (F1 с выделенным
блоком). Если у Вас есть библиотека с несколькими блоками, то отдельные
разделы могут быть представлены в содержании. Это позволит пользователю
просматривать разделы блоков, которых нет в кадре.
С помощью оператора INCLUDE [Включить] файл CNT также может быть
вставлен в файл CNT другого проекта (например, ":include Mylib__b.cnt").
После этого включенный файл CNT будет отображаться в содержании
другого справочного проекта, если они оба инсталлированы в одной папке.
Если Вы хотите, чтобы Ваша интерактивная справочная система была на
нескольких языках, то Вы должны создать отдельные файлы справки для
каждого требуемого языка. В PCS 7 имя состоит из 8 символов, последний из
которых используется в качестве идентификатора языка:

a German [Немецкий]
b English [Английский]
c French [Французский]
d Spanish [Испанский] На текущий момент не поддерживаются
e Italian [Итальянский] PCS 7

y Не зависят от языка Например, для файла реестра

По реестру (см. также Раздел 3.2) PCS 7 выбирает справку на языке,


выбранном в диалоговом окне "Options [Опции] > Customize [Настроить] >
National Language [Национальный язык]".
И наконец, Вы копируете файл справки (и, если существует, файл CNT) в
подпапку папки STEP 7, в которой инсталлирована Ваша библиотека или
проект с Вашими блоками.

Руководство по программированию, создание блоков для PCS 7


3-2 A5E00122559-01
3.2 Структура файла реестра
С помощью ASCII редактора напишите файл реестра, который внесет
информацию о Ваших блоках в реестр WINDOWS NT. Вы можете выбрать
для Вашего файла реестра любое имя, однако, рекомендуется использовать
имя Вашей библиотеки (или общее название, которое применимо к Вашим
блокам), например, "Mylib_y.reg".
Пример файла реестра для 3 блоков на 5 языках
REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\STEP7\2.0\Applications\s7libs\mylib\ABC]
"Version"="0.1"
"VersionDate"="03.05.2000"
"HelpFileGerman"="S7libs\\mylib\\MYLIB__a.hlp"
"HelpFileEnglish"="S7libs\\mylib\\MYLIB__b.hlp"
"HelpFileFrench"="S7libs\\mylib\\MYLIB__c.hlp"

[HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\STEP7\2.0\Applications\s7libs\mylib\ABC\XYZ]
"CONTROL"=dword:00000010
"CONTROL2"=dword:00000011
"CONTROL3"=dword:00000012

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

Для ключей реестра [registry key] должны быть введены следующие значения:
[HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\STEP7\2.0\Applications\s7libs\Name
OfLibrary\Author]
Здесь имя библиотеки – это имя, которое Вы выбрали для Вашей библиотеки
(здесь: mylib). Оно совпадает с именем подпапки STEP 7, в которой Вы
сохранили Ваш файл справки. Ваша библиотека отображается в редакторе
CFC под этим же именем. Author [Автор] содержит имя, которое Вы
определили для атрибута AUTHOR [Автор] в заголовке блока (здесь: ABC).
Version [Версия]
Содержит номер версии всей библиотеки. Это поле необязательно.
VersionDate [Дата]
Содержится дата создания библиотеки. Это поле необязательно.

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 3-3
Path to the help file [Путь к файлу справки]
Содержится путь соответствующий папке STEP 7 для требуемого файла
справки, например:
"HelpFileEnglish"="S7libs\\mylib\\MYLIB__b.hlp".
Обратите внимание, что используются двойные разделители ( \\ ). Такое
определение позволяет SIMATIC Manager [SIMATIC Менеджеру] вызывать
файл справки, соответствующий выбранному языку.

Примечание:
PCS 7 пока не поддерживает итальянский и испанский языки.

Затем введите следующие ключи:


[HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\STEP7\2.0\Applications\s7libs\Name
OfLibrary \Author\Family]
Здесь Family [Семейство] содержит имя, которое Вы определили для
атрибута FAMILY [Семейство] в заголовке блока (здесь: XYZ).
Далее для каждого блока должно быть введено имя блока с MAP ID для
файла справки, например, "CONTROL"=dword:00000010. MAP ID – это номер
ID раздела.
Если Вы разбили Ваши блоки на несколько семейств, то Вы должны ввести
отдельные ключи в файле реестра для каждого семейства.
После хотя бы одного запуска файла реестра (например, после двойного
щелчка по нему) при выборе блока в схеме CFC или в SIMATIC Manager
[SIMATIC Менеджере] и нажатии кнопки F1 будет выведен соответствующий
файл на выбранном языке и с атрибутами блока AUTHOR [Автор], FAMILY
[Семейство] и FUNCTION_BLOCK [Функциональный блок].

Руководство по программированию, создание блоков для PCS 7


3-4 A5E00122559-01
4 Создание библиотеки и программы
установки

Требования
Для создания распределенной библиотеки, включающей установку, Вам
потребуется программа для создания программ инсталляции, например,
"InstallShield".

4.1 Создание библиотеки


Если Вы хотите объединить Ваши блоки в библиотеке, то выполните
следующие шаги:
1. Создайте новую библиотеку S7 и создайте в ней программу S7.
2. Введите в символьную таблицу библиотеки имена и номера Ваших
блоков, а также соответствующий комментарий.
3. Исходные файлы:
Если Вы также хотите добавить исходные файлы, то скопируйте
исходные файлы из Вашего проекта в папку исходных файлов
библиотеки.
4. Скопируйте Ваши блоки из папки блоков в папку блоков библиотеки
Вашего проекта.
5. Если Вы вызываете в Ваших многоэкземплярных блоках блоки, которые
не являются общедоступными (SFB, SFC), то также скопируйте их в папку
блоков библиотеки.

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 4-1
4.2 Создание программы установки
Если Вы хотите, чтобы Ваша библиотека инсталлировалась на конечный
компьютер с помощью программы установки, то напишите инсталляционный
скрипт с помощью инструмента создания установок, который будет
выполнять следующее:
• Копировать библиотеку блоков в подпапку S7libs папки STEP 7
• Копировать программу S7bin\S7alibxx.exe в папку STEP 7, чтобы новая
библиотека стала известна SIMATIC Manager [SIMATIC Менеджер]
• Копировать файл справки (файлы HLP и CNT) в подпапку папки STEP 7, в
которую была скопирована библиотека блоков (например, подпапка
S7libs\mylib)
• Вызывать файл реестра, относящийся к файлу справки
• Копировать прототипные кадры в любую подпапку папки Options\Pdl в
папке WinCC. Для этой папки рекомендуется использовать такое же имя,
как и у папки в которую копировалась библиотека блоков.
• Копировать скрипты в любую подпапку папки aplib в папке WinCC. Для
этой папки рекомендуется использовать такое же имя как и у папки, в
которую копировалась библиотека блоков. (например, Options\Pdl\mylib).
• Создавать опцию деинсталляции.
Обратите внимание, что библиотека блоков и система интерактивной справки
может быть инсталлирована только на компьютер с установленным STEP 7.
Прототипы кадров могут быть инсталлированы только в подпапку WinCC.
Убедитесь, что во время инсталляции Вы проверяете существование STEP 7
и WinCC, например, запрашивая следующие ключи реестра:
HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\STEP7
для имени STEP7_VERSION должно быть установлено значение "5.1"
и в ключе HKEY_LOCAL_MACHINE\SOFTWARE\Siemens\WinCC\Setup для
имени Version должно быть установлено значение "R 5.1".

Руководство по программированию, создание блоков для PCS 7


4-2 A5E00122559-01
Глоссарий

Автор [AUTHOR]
Атрибут блока [! Block attribute]:
Если используется библиотека блоков, то данное поле содержит имя
библиотеки. Это поле также используется для идентификации файла
помощи, принадлежащего к данной библиотеке.

Авторизация оператора [Operator authorization]


Права, предоставляемые оператору на изменение параметров блоков ПЛК
[! PLC block parameter].

Асинхронные блоки OB
Асинхронные OB (организационные блоки) вызываются операционной
системой ЦПУ в случае возникновения асинхронных событий (например,
ошибок).

Атрибут блока
Атрибуты блока (! FUNCTION_BLOCK [Функциональный блок], ! TITLE
[Заголовок], ! List of system attributes [Список системных атрибутов], !
AUTHOR [Автор], ! NAME [Имя], ! VERSION [Версия], ! FAMILY
[Семейство], ! KNOW_HOW_PROTECT [Защита ноу-хау]) – это поля
диалогового окна "Свойства объекта" для вашего блока.

Библиотека
Программный пакет с блоками ПЛК [! PLC blocks] и/или экранными
панелями [! faceplates], объединенными в группы по особым свойствам.

Блок ПЛК
Объект, принадлежащий библиотеке или структуре блоков. Содержит часть
пользовательской программы S7. Блоки, исполняемые в ЦПУ ПЛК, называют
блоками ПЛК.

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 Глоссарий-1
Версия [VERSION]
Атрибут блока [! Block attribute]:
Содержит номер версии блока

Глобальный сценарий (скрипт)


В ! WinCC глобальный скрипт – это основной термин для функций,
написанных пользователем на языке C, которые могут использоваться в
любом месте проекта.

Графический дизайнер [Graphics Designer]


Графический редактор ! WinCC для создания лицевых панелей.

Заголовок блока
1. Область блока ПЛК, содержащая административную информацию
(атрибуты блока).
2. Верхняя часть блока в графическом представлении CFC, содержащая
имя (тип блока, имя блока), комментарий и определение задач (свойства
исполнения [run-time]).

Заголовок [TITLE]
Атрибут блока [! Block attribute]:
Эта информация не используется в PCS 7, однако, она отображается в
свойствах блока в поле комментария в SIMATIC Manager
[SIMATIC Менеджере].

Защита НОУ_ХАУ [KNOW_HOW_PROTECT]


Атрибут блока [! Block attribute]:
Этот атрибут устанавливается для защиты алгоритма блока от просмотра и
изменения, даже если исходный файл находится в той же программе.

Имя [NAME]
Атрибут блока [! Block attribute]:
Содержит символьное имя блока, идентичное ! FUNCTION_BLOCK. Имя
[NAME] и семейство [! FAMILY] являются частью ключа, определяющего
справочный текст для блока в интерактивной справочной системе.

Инициализация
Первое исполнение блока после его создания. Во время этого первого
исполнения определяются параметры и режимы блока.

Руководство по программированию, создание блоков для PCS 7


Глоссарий-2 A5E00122559-01
Экранная панель [Faceplate]
Графическое представление всех элементов блока ПЛК, предназначенных
для операторского управления и мониторинга ОС.

Мастер разделения экрана [Split Screen Wizard]


Компонент ! WinCC: Инициализирует монитор и определяет параметры
экрана ОС.

Многоэкземплярный блок [Multiple instance block]


Блок, состоящий из нескольких блоков. Его экземпляр (хранилище данных)
содержит экземпляры (хранилища данных) блоков FB, которые в нем
вызываются.

Мониторинг [Monitoring]
Часть функций ОС, которая позволяет визуализировать параметры процесса
и состояние процесса в различных формах (цифровом, графическом).

Область кода
Часть блока, содержащая реализацию алгоритма блока.

Область объявлений
Часть блока, в которой определяется интерфейс блока и внутренние данные.

Операторское управление [Operator control]


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

Пиктограмма блока
Символическое изображение блока ПЛК. При нажатии на пиктограмму блока
открывается соответствующая экранная панель.

Пользовательские типы данных (UDT)


Пользовательские типы данных – это специальные структуры данных,
которые после определения могут использоваться во всей программе ЦПУ.
Они могут использоваться как простые и сложные типы данных при
объявлении переменных логических блоков (FC, FB, OB) или как шаблоны
для создания блоков данных с идентичной структурой.

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 Глоссарий-3
Представление тренда [Trend view]
Представление [! View] экранной панели [! faceplate], в котором наиболее
важные значения соответствующего блока ПЛК [! PLC block]
визуализируются во времени.

Представление [View]
Представление блока, в котором отображаются определенные значения
блока ПЛК (например, представление тренда, представление аварийных
сообщений, стандартное представление и т.д.).

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

Регистрационный файл [Registration file]


ASCII файл (.reg), содержащий всю информацию о путях, MAP ID для
интерактивных справочных систем, предназначен, например для того, чтобы
внести блок в реестр WINDOWS NT. Благодаря использованию
регистрационного файла интерактивная справка запускается в CFC или в
SIMATIC Manager [SIMATIC Менеджере] с учетом языка.

Семейство [FAMILY]
Атрибут блока [! Block attribute]:
При использовании библиотеки блоков он может содержать общее название
некоторой группы блоков. Семейство [FAMILY] и имя [! NAME] образуют
часть ключа для определения местоположения справочного текста к блоку в
интерактивной справочной системе.

Системные атрибуты для блоков


Специальные атрибуты, которые определяют соединение блока ПЛК [! PLC
block] с ОС и имеют значение при инсталляции блока в схему CFC.

Системные атрибуты для параметров


Специальные атрибуты, которые влияют на отображение параметров на
экранной панели [! faceplate] или их обработку в схеме CFC.

Руководство по программированию, создание блоков для PCS 7


Глоссарий-4 A5E00122559-01
Список сообщений [Message list]
В режиме исполнения системы [! WinCC] возможно отображение и
редактирование списка сообщений. Сообщения отображаемые в списке,
относятся только к текущему активному проекту.

Стандартное представление [Standard view]


Представление [! View] экранной панели [! faceplate], в котором
визуализируются наиболее важные значения блока ПЛК [! PLC block].

Стартовая информация [Start info]


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

Файл CNT
Опциональная часть интерактивной справочной системы. В файле CNT
хранится содержание интерактивной справочной системы.

Флаг OK
Флаг OK является внутренней системной переменной. Если во время
исполнения опции произошла ошибка, например переполнение при
выполнении арифметической операции, то система изменяет состояние
флага OK и передает на выход блока ENO.

Функциональный блок (FB)


В соответствии с IEC 1131-3 функциональный блок – это логический блок со
статическими данными. С помощью блоков FB параметры передаются в
пользовательскую программу. Это делает использование функциональных
блоков удобным для программирования часто используемых сложных
функций, таких как контроллеры, выбор режима. С тех пор как у блоков FB
появилась память (экземпляр блока данных) его параметры, например,
выходные значения, можно получить из любой точки пользовательской
программы.

Функциональный блок [FUNCTION_BLOCK]


Атрибут блока [! Block attribute]:
Это поле содержит символьное имя блока. В дальнейшем оно используется
для отображения имени блока в менеджере SIMATIC и схеме CFC.

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 Глоссарий-5
Функция (FC)
Определяется в IEC 1131–3 как программный блок, результатом исполнения
которого может быть одно значение (это может быть структурный тип данных)
и который не имеет памяти для хранения данных. Главным отличием FC от
FB является отсутствие памяти для данных.

BATCH flexible
Программный пакет для создания сложных систем с рецептным управлением
для приложений различных размеров.
CFC
Continuous Function Chart [Схема непрерывных функций]
1. Это функциональная схема, в которой могут размещаться блоки,
устанавливаться соединения и определяться параметры для них. Схема
CFC может содержать от 1 до 26 частей схем, каждая из которых состоит
из 6 страниц.
2. Редактор для технологически-ориентированного графического
конфигурирования задач автоматизации. С помощью редактора CFC из
готовых блоков может быть создана полная программная структура
(схема CFC).

HID
Higher-level identifier [Обозначение более высокого уровня]: оно состоит из
имени папки технологической иерархии, которая была выбрана для
определения части имени, имени схемы CFC и имени блока в схеме CFC.

SCL
Язык высокого уровня для создания решений технологических задач в
SIMATIC S7 (аналогичен PASCAL), соответствует языку ST
(структурированный текст), определенному в IEC 1131–3.

STL
Statement List [Список операторов]: Statement List является текстовым языком
программирования, соответствующим IEC 1131-3, и напоминает машинный
код.

UDT
Пользовательские типы данных [! User-defined data types]

WinCC
Windows Control Center [Центр управления Windows]: программный пакет для
технологически-ориентированной графической разработки экранных панелей [!
faceplates] и для операторского управления и мониторинга за ПЛК.

Руководство по программированию, создание блоков для PCS 7


Глоссарий-6 A5E00122559-01
Предметный указатель

A T
Advanced Process Control ...................... 2-1 Tag Logging............................................ 2-12
ALARM_8................................................1-38 Trend view .............................................. 2-12
ALARM_8P .............................................1-40
V
B View list..................................................... 2-8
Basic Process Control.............................. 2-1
BATCH flexible .......................................1-42 W
C WinCC Graphics Designer ...................... 2-2

CONTROL2 ............................................1-44 А
F Авторизация.......................................... 2-13
Асинхронное событие.......................... 1-26
Faceplate Designer .................................. 2-4
Б
G Базовое управление процессом.......... 2-1
Global scripts ............................................ 2-6 Библиотека.............................................. 4-1
Библиотека S7 ........................................ 4-1
I Блок ПЛК
пользовательский интерфейс .......... 1-7
ID пакета ................................................1-39 структура.............................................. 1-3
InstallShield............................................... 4-1
В
M
Временные переменные ..................... 1-22
MAP ID ...................................................... 3-1 Вспомогательные значения...1-40, 1-42
Входы-выходы схемы .......................... 1-44
O
OB циклических прерываний ..............1-26
Г
OP_A.......................................................1-30 Глобальные скрипты.............................. 2-6
OP_A_LIM ..............................................1-30 Графический дизайнер WinCC............. 2-2
OP_A_RJC .............................................1-30
Д
S
Диаграмма блока CONTROL ................ 1-3
SAMPLE_T .............................................1-24 Дизайнер экранных панелей ................ 2-4
Split Screen Wizard.................................. 2-5 Динамическое отображение............... 2-15
SUPPTIME..............................................1-25
З
Заголовок блока ..................................... 1-8

Руководство по программированию, создание блоков для PCS 7


A5E00122559-01 Предметный указатель-1
И Размеры кадра
изменение .......................................... 2-10
Идентификатор языка ............................3-2 Расширенное управление процессом. 2-1
Инициализация......................................1-23
Инсталляционный скрипт ......................4-2
Интерактивная справка..........................3-1
С
Источник сообщения ............................1-39 Свойства объекта для блока ...... 1-9, 1-10
Исходный код.........................................1-46 Система архивизации .......................... 2-12
Системные атрибуты
К блоки ................................................... 1-11
параметры.......................................... 1-14
Кадр группового изображения ..............2-8 Совместимость с PCS 7 ...................... 2-4
Кадр объектного изображения............2-11 Соглашения об именах........................ 1-45
Кадр процесса .........................................2-4 Сообщения ............................................ 1-31
Класс сообщений ..................................1-39 Список просмотра................................... 2-8
Комментарий .........................................1-14 Статические переменные.................... 1-21
Конфигурирование сообщений...........1-38
Т
Л
Таблица символьных имен ................... 1-7
Локальные переменные.......................1-21 Типы блоков CFC.................................. 1-44
Типы параметров ............................... 1-13
М
Мастер разделения экрана ...................2-5
У
Многоэкземплярный блок....................1-21 Установка ................................................. 4-2

Н Ф
Набор для создания объектов..............2-6 Файл CNT................................................. 3-2
Настройки компилятора SCL ................1-5 Файл HLP ................................................. 3-2
Файл реестра .......................................... 3-3
О Файл справки........................................... 3-1

Область кода .........................................1-22


Область назначения.............................1-39
Ч
Оператор INCLUDE ................................3-2 Числовой диапазон .............................. 1-45
Операторское управление ..................1-30
Операции с временной зависимостью ..1- Ш
24
Шаблонные кадры .................................. 2-6
П Шаблоны .................................................. 2-5

Параметры блока..................................1-13
Параметры ввода..................................1-13
Э
Параметры ввода-вывода ...................1-13 Экранная панель
Параметры вывода...............................1-13 дизайн................................................... 2-1
Пиктограмма блока.................................2-5 конфигурирование.............................. 2-2
Представление тренда ........................2-12 тестирование ....................................... 2-3

Р Я
Раздел ......................................................3-1 Языки........................................... 1-40, 2-17

Руководство по программированию, создание блоков для PCS 7


Предметный указатель-2 A5E00122559-01