Пособие_программирование ред_v5


МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное образовательное
учреждение высшего образования
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
___________________________________________________________
Ю.С. Захаревич, О.М. Руденко, П.А. Стрижак
КОНФИГУРИРОВАНИЕ И ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ КОНТРОЛЛЕРОВ
Издательство
«АлКом»
2017
УДК 004.384(075.8)
ББК 32.971.322.5я73
З-38
Захаревич Ю.С.
Конфигурирование и программирование микропроцессорных контроллеров / Ю.С. Захаревич, О.М. Руденко, П.А. Стрижак; Томский политехнический университет. – Томск: Изд-во АлКом, 2017. – 106 с.
Пособие предназначено для студентов и магистрантов, обучающихся по направлению «Теплоэнергетика и теплотехника». Содержит описание основных этапов обучения дисциплине «Микропроцессорные контроллеры», преподаваемой в Национальном исследовательском Томском политехническом университете. Приведены типичные задания для индивидуальной работы и вопросы для самоконтроля.
УДК 004.384(075.8)
ББК 32.971.322.5я73
Рецензенты
Доктор технических наук,
профессор ТГУ
Шидловский С.В.
Доктор технических наук,
профессор ТПУ
Шилин А.А.
© ФГАОУ ВО НИ ТПУ, 2017
© Ю.С. Захаревич, О.М. Руденко, П.А. Стрижак 2017
© Издательство АлКом, 2017
ОГЛАВЛЕНИЕ
TOC \o "1-2" 1.ОСНОВЫ КОНФИГУРИРОВАНИЯ И ПРОГРАММИРОВАНИЯ КОНТРОЛЛЕРОВ PAGEREF _Toc492760028 \h 4
1.1. Элементы проекта в SIMATIC MANAGER PAGEREF _Toc492760029 \h 6
1.2. Создание проекта в SIMATIC MANAGER PAGEREF _Toc492760030 \h 10
1.3. Конфигурирование аппаратных средств PAGEREF _Toc492760031 \h 14
1.4. Редактирование блоков PAGEREF _Toc492760032 \h 23
1.5. Символьные переменные PAGEREF _Toc492760033 \h 26
1.6. Симулятор контроллера PLCSIM PAGEREF _Toc492760034 \h 30
1.7. Пример создания проекта PAGEREF _Toc492760035 \h 33
2. ВИЗУАЛИЗАЦИЯ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ В SCADA-ПАКЕТЕ PAGEREF _Toc492760036 \h 46
2.1. Общие сведения PAGEREF _Toc492760037 \h 46
2.2. Состав SCADA Infinity PAGEREF _Toc492760038 \h 47
2.3. Работа с программным комплексом «SCADA Infinity» PAGEREF _Toc492760039 \h 52
3. ЛАБОРАТОРНЫЙ ПРАКТИКУМ PAGEREF _Toc492760040 \h 70
3.1. Лабораторная работа № 1. Знакомство со средой программирования Step 7. Изучение языка программирования STL PAGEREF _Toc492760041 \h 70
3.2. Лабораторная работа № 2. Изучение операций сравнения и работы с функциональными блоками на базе языка STL PAGEREF _Toc492760042 \h 75
3.3.Лабораторная работа № 3. Изучение языка программирования LAD PAGEREF _Toc492760043 \h 78
3.4. Лабораторная работа № 4. Изучение языка программирования FBD. Этап 1 PAGEREF _Toc492760044 \h 83
3.5. Лабораторная работа № 5. Изучение языка программирования FBD. Этап 2 PAGEREF _Toc492760045 \h 88
4.ЗАДАНИЯ ДЛЯ РУБЕЖНОГО КОНТРОЛЯ PAGEREF _Toc492760046 \h 91


ОСНОВЫ КОНФИГУРИРОВАНИЯ И ПРОГРАММИРОВАНИЯ КОНТРОЛЛЕРОВПрограммное обеспечение «STEP 7» – инструментальный программный комплекс для разработки, тестирования и документирования программ.
Основными утилитами пакета «STEP 7» являются:
SIMATIC Manager;
LAD, STL, FBD – Programming S7;
Memory Card Parameter Assignment;
NetPro – Configuring Networks;
PID Control Parameter Assignment;
S7 SCL – Programming S7 Blocks;
S7-GRAPH – Programming Sequential Control System;
S7-PDIAG – Configuring Process Diagnostic;
S7-PLCSIM Simulating Modules;
Setting the PG-PC Interface;
Configure SIMATIC Workspace.
Основным элементом «STEP 7» является «SIMATIC Manager», который позволяет проводить основные операции с проектом, такие как: создание, сохранение, открытие, а также управление работой проекта, запуск различных утилит, связывание их между собой и т. д.
Программа «LAD, STL, FBD – Programming S7» – редактор, позволяющий программировать блоки, основываясь на одном из трех представлений языка программирования.
Язык «LAD» – «Ladder Diagram» (контактный план) – использует представление программы в виде коммутационной схемы, состоящей из переключателей, линий связи, ключей и т. п.
Язык «STL» – «Statement List» (список операторов) – язык, подобный ассемблеру.
Язык «FBD» – «Function Block Diagram» – функциональная схема, основанная на логических элементах, триггерах и т. п.
Утилита «Memory Card Parameter Assignment» позволяет сохранять пользовательскую программу в память «EPROM» (электрически программируемая постоянная память), используя программатор или, в случае персональной ЭВМ, на внешнее устройство.
Утилита «NetPro – Configuring Networks» позволяет конфигурировать промышленные сети, такие как: MPI, PROFIBUS или Industrial Ethernet.
Утилита «PID Control Parameter Assignment» позволяет автоматизировать процедуру расчета и настройки параметров ПИД-регуляторов, используемых в системах управления.
С базовым пакетом обычно поставляются специальные утилиты, позволяющие проводить создание программ различными способами, такими как: написание программ на языке программирования высокого уровня SCL (похож на паскаль) с помощью программы «S7 SCL»; графическая разработка программ в виде последовательности шагов и переходов между ними посредством утилиты «S7-GRAPH». Могут также поставляться дополнительные пакеты.
«S7-PDIAG – Configuring Process Diagnostic» – это программа, используемая для диагностики проектов.
Утилита «S7-PLCSIM Simulating Modules» предназначена для программной имитации работы контроллера, что позволяет разрабатывать проекты, проверять и отлаживать работу программ без подключения реального оборудования.
Программа «Setting the PG-PC Interface» применяется для установки параметров локальных станций, подключенных к многоточечному интерфейсу MPI.
«Configure SIMATIC Workspace» позволяет конфигурировать проекты, создаваемые с использованием нескольких терминалов.

1.1. Элементы проекта в SIMATIC MANAGER«SIMATIC Manager» – это графический интерфейс для редактирования объектов S7 (проектов, файлов пользовательских программ, блоков, оборудования станций и инструментов). Основное окно утилиты показано на рис. 1.1.

Рис. 1.1. Основное окно SIMATIC ManagerОсновными элементами панели главного меню программы «SIMATIC Manager» являются разделы «File», «PLC», «View», «Options», «Window» и «Help», содержание которых зависит от текущего окна. На панели инструментов вынесены наиболее часто используемые кнопки.
Вначале рассмотрим структуру проекта в «SIMATIC Manager», которая показа на рис. 1.2.

Рис. 1.2. Структура проекта в SIMATIC ManagerДанные хранятся в проекте в виде объектов. Объекты в проекте размещаются по древовидной структуре, которая показана в левой части рис. 1.2. Она подобна структуре, используемой в «Windows Explorer». Различаются только иконки объектов.
Содержимое правой части окна «SIMATIC Manager» зависит от выбранного в левой части объекта.
На самом верхнем уровне (см. рис. 1.2), который называется «S7_Pro1», расположен сам проект. Каждый проект представляет базу, в которой хранятся все относящиеся к нему данные. Элементами проекта являются сети и их элементы – станции и другие узлы. В данном примере проект «S7_Pro1» содержит многоточечный интерфейс MPI(1), к которому подключена одна станция «SIMATIC 300 Station».
На втором уровне (рис. 1.3) находятся станции, которые являются исходными объектами для конфигурирования аппаратуры. Здесь хранится информация о конфигурации аппаратуры и параметрах модулей. На рис. 1.3 уровень станций содержит один элемент – «SIMATIC 300 Station», который в свою очередь содержит контроллер CPU312(1). Другое оборудование можно просматривать утилитой Hardware.

Рис. 1.3. Второй уровень проекта S7_Pro1
В свою очередь процессор CPU312(1) содержит пользовательские программы, в данном случае «S7 Program(1)», которые могут быть написаны в виде блоков «Blocks» или исходных кодов «Sources». Последующие уровни зависят от содержимого предыдущих.
На рис. 1.4 показан один из примеров уровня «Blocks».

Рис. 1.4. Пример уровня «Blocks»
Основными блоками, которые используются в STEP 7, являются:
организационный блок, например OB1, который является основной циклически исполняемой программой;
функция, например FC1, применяемая для замены типовых или часто повторяющихся блоков;
функциональный блок, например FB1, в отличие от функции имеет отдельную память в глобальном пространстве, называемую блоком данных, за счет чего функциональный блок может сохранять свои переменные в общем адресном пространстве;
блоки данных, например DB1, наличие которых обусловлено гарвардской архитектурой контроллеров.

1.2. Создание проекта в SIMATIC MANAGERРассмотрим основные этапы создания проекта с помощью мастера «New Project Wizard», который находится в разделе «File» главного меню утилиты «Simatic Manager».
Создание проекта состоит из четырех шагов, которые демонстрируются на рис. 1.5–1.8.

Рис. 1.5. Первый шаг создания проекта
В первом окне, показанном на рис. 1.5, пользователю предлагается выбрать структуру проекта по умолчанию, показанную в двух окнах, нажав кнопку «Finish», или продолжить пошаговое создание проекта, нажав кнопку «Next». При выборе пошагового режима появляется второе окно (рис. 1.6), в котором предлагается выбрать тип процессора (процессоров) из списка и установить его MPI-адрес – адрес подключения к многоточечному интерфейсу (Multi Point Interface).

Рис. 1.6. Второй шаг создания проекта
Нажав кнопку «Next», можно перейти к третьему шагу (рис. 1.7).

Рис. 1.7. Третий шаг создания проекта
На третьем этапе можно выбрать тип организационных блоков, которые планируется использовать в программе, например:
блок OB1 «Cycle Execution» – означает циклически исполняемую программу;
блок OB10 «Time of Day Interrupt» – означает прерывание, вызываемое по времени суток;
блок OB20 «Time Delay Interrupt» – означает прерывание, вызываемое по истечении заданного временного интервала;
блок OB30 «Cycle Interrupt» – это циклически вызываемое прерывание;
блок OB40 «Hardware Interrupt» – программа, выполняемая по приходу прерывания от внешней аппаратуры;
блок OB60 «Multicomputing Interrupt» – предназначен для прерываний, вызываемых различными способами.
Кроме того, существует ряд блоков, предназначенных для обработки ошибок, таких как: ошибка таймера (OB80 «Cycle Time Fault»), ошибка системы питания (OB81 «Power Supply Fault»), ошибка ввода-вывода (OB82 «I/O Point Fault»), ошибка процессора (OB84 «CPU Fault»), ошибка загрузки организационного блока (OB85 «OB Not Loaded Fault»), отсутствие контакта в соединительном разъеме (OB86 «Loss of Rack Fault»), ошибка соединения (OB87 «Communication Fault»). Также существует три блока для перезапуска: полный перезапуск (OB100 «Complete Restart»); обычный перезапуск (OB101 «Restart»); холодный перезапуск (OB102 «Cold Restart»).
Последние два блока – ошибка программирования контроллера (OB121 «Programming Error») и ошибка доступа к блоку (OB122 «Module Access Error»).
Кроме того в окне, показанном на рис. 1.7, имеется возможность установить язык программирования, наиболее удобный для пользователя – STL (список операторов), LAD (контактный план) или FBD (функциональный оператор).
В последнем окне (рис. 1.8) предлагается задать имя проекта.

Рис. 1.8. Четвертый шаг создания проекта
Результатом работы «New Project Wizard» является созданный проект, который появляется после нажатия кнопки «Finish» в последнем диалоговом окне.
Добавление новых элементов в проект осуществляется через меню «Insert».
Сохранение проекта, копирование блоков происходит стандартным способом через буфер или с помощью манипулятора.

1.3. Конфигурирование аппаратных средствКонфигурирование аппаратных средств проекта осуществляется посредством утилиты «Hardware Configuration». Чтобы запустить указанную программу, необходимо перейти на уровень станций, который показан на рис. 1.3, и двойным щелчком нажать кнопку «Hardware». В результате появится окно, представленное на рис. 1.9.

Рис. 1.9. Окно конфигурации аппаратной части
Рабочее поле утилиты «Hardware Configuration» разбито на три основные части. В левой верхней части показаны стойки с отдельными слотами. Они расположены на шинах.
В левой нижней части находится таблица с адресами входов-выходов, различных блоков и контроллеров. В правой части окна расположена библиотека элементов, из которых можно собирать стойки.
Создание аппаратной части начинается с добавления стойки «Rack», которая находится в соответствующем каталоге. Например, при создании станции SIMATIC 300 необходимо открыть каталог элементов SIMATIC 300 и из папки «Rack-300» добавить элемент «Rail». Добавление можно выполнить либо двойным щелчком, либо перетаскиванием по технологии «drag & drop».
Если требуется установить блок питания, то необходимо вставлять его в слот 1 стойки. Соответствующий модуль станции SIMATIC 300 находится в группе PS-300. CPU контроллера можно найти в каталоге CPU-300, он вставляется в слот 2.
S7-300 cлот 3 зарезервирован для интерфейсного модуля IM, необходимого для многоуровневых конфигураций, поэтому на рис. 1.9 этот слот пустой.
Если эта позиция должна быть резервирована для последующей фактической установки интерфейсного модуля, то необходимо вставить в фактическую конфигурацию холостой модуль «DM370 DUMMY» из каталога «SM-300\Special-300». Начиная с четвертого слота, можно вставлять сигнальные модули. Можно добавить на выбор до 8 сигнальных блоков (SM), коммуникационных процессоров (CP) или функциональных модулей (FM). Необходимо искать нужный модуль в папке и вставлять его, выбирая слот в стойке.
В стандартной конфигурации в стойку может входить процессор, блок питания и модули ввода и вывода, которые бывают аналоговые или дискретные.
Чтобы просмотреть адресное пространство, образованное модулями стойки, необходимо войти в меню «View»->«Address Overview», в результате чего появится окно, показанное на рис. 1.10.

Рис. 1.10. Окно адресного пространства
В данном окне отражаются те блоки, которые имеют входы или выходы, в данном случае модуль дискретного ввода «DI32xDC24V» и блок дискретного вывода «DI4xNAMUR».
В первом столбце «Type» указывается тип адресного пространства: I – для входов, Q – для выходов.
Во втором и третьем столбцах «Addr. from» и «Addr. to» указывается диапазон адресов в байтах, который занимает данное устройство. В данном случае модуль дискретного ввода «DI32xDC24V» имеет 32 входа, поэтому он занимает 4 байта с номерами от 0 до 3. Следующий байт с номером 4 занимает блок дискретного вывода «DI4xNAMUR».
В следующих двух столбцах указываются названия блоков и организационный блок, который осуществляет опрос входов и назначение выходов. В данном случае оба модуля принадлежат одному блоку OB1.
Столбец «R» отображает номер стойки, а столбец «S» – слота для модуля. В данном случае модуль «DI32xDC24V» занимает слот 4, а модуль «DI4xNAMUR» – слот 5.
Столбец «DP» используется для системы распределенных выходов, а «IF» в тех случаях, когда используется специальный интерфейсный модуль при программировании системы на C++.
Чтобы получить доступ к свойствам блока достаточно открыть его пиктограмму с помощью двойного щелчка мыши. Основные параметры сосредоточены в контроллере, поэтому рассмотрим его свойства.
Свойства контроллера отображаются в окне, которое содержит девять раскрывающихся вкладок. Вкладка «General», показанная на рис. 1.11, содержит информацию о типе модуля, его название и, если он программируемый, MPI адрес. Чтобы назначить адрес многоточечного интерфейса, например, в случае создания многоконтроллерной конфигурации, достаточно нажать кнопку «Properties, в которой имеется возможность задать параметр «Adress».

Рис. 1.11. Общие параметры контроллера
На рис. 1.12 показана вкладка «Startup», которая позволяет задавать характеристики запуска. Для S7-300 единственным возможным типом запуска является «Warm restart». Некоторые варианты имеют вариант «Cold restart».

Рис. 1.12. Параметры запуска контроллера
Параметр «Finished Message by Modules (ms)» означает максимальное время на получение сигнала готовности модулей. Если модули не подтверждают приема параметров в пределах установленного времени, то реальная конфигурация не соответствует проектной.
Параметр «Transfer of Parameters to Modules» – максимальное время для передачи параметров в настраиваемые модули, после того как получен сигнал готовности.
Параметр «Startup when expected/actual configuration differ» позволяет для контроллеров со встроенным интерфейсом распределенных входов-выходов DP и для S7-400 запретить или разрешить запуск, если реальная конфигурация оборудования отличается от проектной. Остальные контроллеры запускаются в любом случае.
Также для контроллеров S7-400 можно задать сброс выходов при горячем перезапуске – «Reset outputs at hot restart» и запрет перезапуска от другой станции или оператора.
Закладка «Retentive Memory» (сохраняемая память) используется для определения областей памяти, которые должны сохраняться после пропадания питания или переходе процессора из режима «STOP» в «RUN». В обоих случаях в S7-300 выполняется полный перезапуск, при котором блоки (OB, FC, FB, DB), хранимые в памяти с батарейной подпиткой, а также меркеры, таймеры и счетчики, определенные как сохраняемые, не изменяются. Не сохраняемые меркеры, таймеры и счетчики сбрасываются при запуске CPU.
На рис. 1.13 показана вкладка «Cycle/Clock Memory» – временные параметры контроллеров.

Рис. 1.13. Временные параметры контроллера
Закладка «Cycle/Clock Memory» позволяет с помощью параметра «Scan Cycle Monitoring Time (ms)» задавать время контроля цикла. Если это время превышено, то контроллер переходит в режим «STOP». Возможными причинами превышения времени могут быть коммуникационные процессы, часто от событий прерываний, ошибки в программе.
Параметр «Cycle Load from Communication (%)» задает время связи, например, время передачи данных в другой контроллер через многоточечный интерфейс. Это время ограничивается значением, выраженным в процентах от текущего времени цикла. Например, ограничение связи до 20 % приведет к тому, что для времени цикла сканирования 100 мс максимальное время для связи составит 20 мс.
Для синхронизации работы программы используется синхробайт «Clock Memory», который является байтом из области меркеров. Его биты периодически изменяют свое значение, причем каждый бит в синхробайте связан с конкретной частотой.
Во вкладке «Protection», показанной на рис. 1.14, можно изменять параметры защиты.

Рис. 1.14. Параметры защиты контроллера
Вкладка «Protection» позволяет задать три уровня защиты. На первом уровне «Keyswitch setting» можно работать без ограничений. Если назначен пароль, то он определяет следующие ограничения: для уровня 1 – в режиме останова («STOP») возможен полный доступ, а в режиме работы («RUN») только чтение; для уровня защиты 2 – существует доступ только для чтения, а для уровня 3 – невозможно ни чтение, ни запись независимо от режима работы. Чтобы ввести пароль, необходимо либо задать уровень 2 или 3, либо выбрать режим «Removable with password» на первом уровне.
Вкладка «Diagnostic/Clock», показанная на рис. 1.15, позволяет с помощью флага «Report cause of stop» обнаруживать причину останова, а также синхронизировать часы нескольких контроллеров (раздел «Synchronization») и вводить коррекцию для часов (раздел «Correction factor»). Например, если часы отстают на 5 с в сутки, то можно ввести параметр «Correction factor» +5000 ms.

Рис. 1.15. Диагностика останова контроллера
Кроме перечисленных, также имеются вкладки, определяющие параметры прерываний «Interrupts», «Cyclic Interrupts», «Time-of-Day Interrupts».
Вкладка «Interrupts» показана на рис. 1.16. Приоритеты программ задаются по возрастанию, т. е. чем выше номер, тем более высокий приоритет. Для циклических прерываний имеется возможность указать интервал выполнения через параметр «Execution», а для прерываний, вызываемых по времени суток, указываются параметры «Start Date» и «Time of Day».

Рис. 1.16. Окно параметров прерываний
Чтобы сохранить конфигурацию, нужно войти в меню «Station» и выбрать вкладку «Save». При выборе вкладки «Save and Compile» конфигурация загружается в блоки данных DB проекта. Чтобы проверить правильность конфигурации, можно воспользоваться меню «Station» => «Consistency Check». Загрузка конфигурации в контроллер или его эмулятор возможна через меню «PLC» => «Download», при этом контроллер должен находиться в режиме «STOP».
Для входных и выходных модулей можно задавать их адреса, однако необходимо помнить, что после перезапуска контроллера снова применяется адресация по умолчанию.

1.4. Редактирование блоковПри программировании блоков в STEP 7 можно применять три языка программирования: LAD (контактный план), STL (список операторов), FBD (функциональный план).
Отличия языков поясняется на рис. 1.17, где показана реализация логической функции «И». Язык LAD удобен для инженеров-электриков, STL – для программистов, а FBD – для инженеров-схемотехников. Отметим, что переход от одного языка к другому в «SIMATIC Manager» может осуществляться автоматически.

Рис. 1.17. Функция «И» в Step 7
Чтобы начать редактировать существующий блок, необходимо перейти на уровень блоков и в окне, показанном на рис. 1.4, дважды щелкнуть мышью нужный блок. При создании нового блока в том же окне нужно войти в меню «Insert» -> «S7 Block» и выбрать соответствующий организационный блок. При этом на экране появится окно редактора LAD/STL/FBD (рис. 1.18).

Рис. 1.18. Окно редактора LAD/STL/FBD
Основными элементами редактора являются: таблица деклараций, раздел кода и элементы.
Таблица деклараций – часть программного блока. Она используется для объявления переменных и параметров блока.
Раздел кода содержит саму программу, разделенную, если это необходимо, на отдельные сегменты, называемые «Networks».
Содержимое окна элементов зависит от выбранного языка программирования. Элементы представляют собой функции, функциональные блоки или библиотеки, как часто используемые, так и специальные. Чтобы добавить элемент в программу, можно дважды щелкнуть на него или перетащить его указателем.
Выбор языка программирования осуществляется через меню «View» окна на рис. 1.18. В этом меню можно выбрать одно из трех представлений программы: LAD, STL или FBD. Замена языка программирования возможна для синтаксически законченной программы.
Можно писать программы или сегменты на LAD или FBD и затем автоматически преобразовывать сегменты программы в STL. Однако результат этого преобразования не всегда является наиболее эффективным решением для STL (программа, созданная непосредственно на STL, может быть короче).
Обратное преобразование из STL в LAD или FBD не всегда возможно. Сегменты программы, которые не могут быть преобразованы, остаются в STL. При преобразованиях никакие сегменты программы не теряются.
При редактировании блоков в FBD или LAD часто используемые элементы представлены кнопками в панели инструментов. Можно щелкать на них мышью, чтобы установить эти элементы на выбранную в программе позицию. Другие элементы можно вставить в программу из списка в любую позицию перетаскиванием или в выделенную позицию – дважды щелкнув на элементе из списка. Соединять элементы можно посредством мыши, захватывая выход и перетаскивая его к нужному входу.
Для добавления нового сегмента достаточно нажать на кнопку «New Network» в панели инструментов, после текущего сегмента добавляется новый сегмент.
При программировании на STL нужно знать инструкции для записи программы.
Можно получить информацию о синтаксисе и функциональном назначении через подсказку: «Help» -> «Help on STL». В справке доступна следующая информация: «Statement List Instructions» – описывает все инструкции, которые имеются в этом языке программирования; «Working with Statement List» (работа со списком команд) – описывает список команд и основы синтаксиса, ввод и наблюдение констант, типы блоков, контакты и состояния сигнала.
При программировании на STL окно элементов содержит только список существующих блоков, которые могут быть вызваны из текущего блока. Сегменты вставляются в программу так же, как в редакторе LAD/FBD.
После редактирования блока его необходимо сохранить, что возможно только в случае отсутствия синтаксических ошибок.
Часто удобно писать программы в виде отдельных функций. В этом случае основная программа, например блок OB1, будет содержать список вызовов.
Чтобы загрузить блоки в контроллер, нужно выделить их в окне на рис. 1.4 и воспользоваться меню «PLC» -> «Download». При этом нужно, чтобы был предварительно подключен контроллер или его программный эмулятор.
1.5. Символьные переменныеПри написании программ в STEP 7 можно применять прямую адресацию.
Таблицу символов можно вызвать либо из окна «SIMATIC Manager», находясь на уровне программ и выбрав значок «Symbols», либо непосредственно из редактора LAD/STL/FBD, воспользовавшись меню «Options» -> «Symbol Table». При этом появляется окно, показанное на рис. 1.19.

Рис. 1.19. Таблица символов
Каждое символическое имя занимает одну строку в таблице. Пустая строка автоматически добавляется в конце таблицы для ввода нового символа. Символьная таблица является общей базой данных и может быть использована различными утилитами.
В меню «Edit» окна (см. рис. 1.19) для поиска и замены текста доступны такие элементы, как: «Search For» – ввод текста для поиска; «Replace With» – ввод текста для замены; «Search Only» – поиск и выделение указанного текста; «From Cursor Down» – поиск вниз от курсора до последней строки символьной таблицы; «From Cursor Up» – поиск вверх от курсора до первой строки символьной таблицы; «Match Case» – поиск только указанного текста с анализом строчных и прописных букв; «Whole Word Only» – поиск указанного текста, как отдельного слова; «All» – поиск по всей таблице, начиная с текущей позиции курсора; «Selection» – поиск текста только для выделенных строк таблицы.
При поиске адресов необходимо вводить звездочку «*» после идентификатора адреса, иначе адрес не будет найден.
Полезной функцией меню «View» окна таблицы символов является вкладка «Filter», показанная на рис. 1.20. С помощью нее отображаются только символы, отвечающие критерию, указанному в фильтре «Symbol properties».

Рис. 1.20. Окно FilterМожно применить различные критерии одновременно. Критерии, указанные в фильтре, объединяются. Также можно выбрать различные фильтры и объединить их согласно следующим свойствам: Name (имя), Address (адрес), Data type (тип данных), Comment (комментарий), Operator control and monitoring (управление и просмотр операторов), Communication (связь), Message (сообщение).
Допустимы сокращения символов: «*» и «?».
Например, если задать имя «M*», то в таблице символов будут отображаться только те имена, которые начинаются с «M» и содержат любое число любых последующих символов.
Если задать имя «SENSOR_?», то в таблице символов будут отображаться только те имена, которые начинаются с «SENSOR_» и содержат один любой символ в конце.
Метки «Valid» и «Invalid» позволяют отображать только уникальные или повторяющиеся символы. Если таблица символов длинная, то можно найти неоднозначные символы или адреса более быстро воспользовавшись меню «View» -> «Filter» и установив атрибут «Invalid».
С помощью меню «View» -> «Sort» можно расположить данные в символьной таблице в алфавитном порядке. При этом можно задавать возрастание или убывание, как по именам, так и по адресам.
Команда меню «Symbol Table» -> «Export» позволяет преобразовать символьную таблицу в другой файловый формат, чтобы можно было работать с ней в других программах. Можно задавать следующие файловые форматы:
ASCII Format (*.ASC) – текстовый формат для Notepad и Word;
Data Interchange Format (*.DIF) – формат электронных таблиц для EXCEL;
System Data Format (*.SDF) – формат баз данных для ACCESS;
Assignment List (*.SEQ) – формат для STEP 5.
Аналогично с помощью команды меню «Symbol Table» -> «Import» можно импортировать символьные таблицы, подготовленные в других программах. Для этого необходимо выбрать меню «Symbol Table» -> «Import», затем выбрать файловый формат в диалоговом окне «Import», задать маршрут к директории в списке «Find in», ввести имя файла в поле «File Name» и нажать «OK».
С помощью команды меню «Options» -> «Edit Symbols» или щелчком правой кнопки мыши на адресе с последующим выбором пункта выпадающего меню «Edit Symbol» можно назначать символические имена для абсолютных адресов непосредственно при редактировании программы. Имена автоматически вводятся в символьную таблицу. Имена, которые уже есть в символьной таблице, отображаются другим цветом. Они не могут снова быть использованы в таблице.
При необходимости изменить присвоения в символьной таблице уже существующей программы нужно выбрать что важнее – абсолютный или символический адрес. Чтобы сделать выбор в «SIMATIC Manager» нужно выбрать правой кнопкой мыши папку «Blocks», а затем выбрать пункт меню «Properties» и закладку «Blocks». Здесь можно выбрать «Absolute Value» (абсолютное значение) или «Symbol» (имя) в поле «Priority» (приоритет).
Пусть, например, старая запись в таблице символов была On = I 0.1, а новая On = I 1.0.
Если выбран приоритет адреса, то при изменении в символьной таблице абсолютный адрес операнда в программе не изменяется. В примере абсолютное имя I 0.0 было изменено на абсолютное имя I 1.0 в таблице символов. С установленным приоритетом по абсолютному значению программа продолжает использовать вход I 0.0.
Если задан приоритет имени, то при смене абсолютного адреса операнда в символьной таблице он изменяется во всей программе.
В примере выше выход I 0.0 (имя символа «On») изменен на выход I 1.0 в символьной таблице. С установкой приоритета по имени адрес I 0.0 изменяется на I 1.0 во всей программе. Измененный адрес также сохраняется в символьной таблице. Таким способом можно изменять абсолютные адреса в программе пользователя, использующей символьные имена.

1.6. Симулятор контроллера PLCSIMПроверку программной части без подключения реального оборудования можно проводить с помощью дополнительного пакета «S7-PLCSIM». После того как проект готов, симулятор можно вызвать из главного окна «SIMATIC Manager». Для этого в меню «Options» необходимо выбрать пункт «Simulate Modules», что приведет к запуску «S7-PLCSIM», основное окно которого показано на рис. 1.21.

Рис. 1.21. Окно симулятора S7- PLCSIM
С помощью значков, расположенных на панели инструментов симулятора S7- PLCSIM, можно добавлять для просмотра различные блоки и элементы контроллера:
IB – входная переменная;
QB – выходная переменная;
MB – биты памяти;
T – таймер;
C – счетчик;
Variable – переменная;
Stacks – стек логических операций;
ACCUs – аккумуляторы и слово состояния;
Block Regs – блок регистров.
В блоках IB0, QB0, MB0, T0, C0, Variable можно вводить свои адреса (например, I0.0, MW10, Q2.1, C1 и т.д.). Для того чтобы можно было использовать символьную адресацию, нужно войти в меню «Tools» -> «Options» -> «Attach Symbols», в результате появится окно, показанное на рис. 1.22.

Рис. 1.22. Окно выбора таблицы символов проекта
В этом окне нужно в разделе «Entry Point» указать вид блока (например, проект или библиотека), имя проекта. В проекте выйти на уровень S7 Program и выбрать значок с именем «Symbols».
После загрузки в эмулятор контроллера таблицы символов все переменные отображаются со своими именами как на рис. 1.23.

Рис. 1.23. Окно симулятора с загруженной таблицей символов
Прежде чем проверять работу программы ее необходимо загрузить в контроллер.
Это можно сделать либо из основного окна SIMATIC Manager, либо из редактора LAD/STL/FBD. В первом случае нужно выделить необходимые блоки, выбрать пункт меню «PLC» -> «Download». Во втором случае также используется меню «PLC» -> «Download», но загружается только текущий открытый блок. После этого нужно перейти в окно S7-PLCSIM и убедиться, что в его меню «PLC» установлен флаг «Power on». При загрузке блоком процессор симулятора должен находиться в режиме «STOP».
Для того чтобы запустить выполнение программы, достаточно установить флажок «RUN» (циклическое выполнение) или «RUN-P» (однократное выполнение). При этом можно мышкой менять входы и наблюдать изменение выходов, отлаживая программу, записанную в контроллер.

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

Рис. 1.24. Последовательность действий при составлении проекта
Последовательность действий создания проекта:
Деление процесса на задачи и области. Процесс автоматизации состоит из ряда отдельных задач. Путем выделения групп связанных задач внутри процесса и последующего разбиения этих групп на более мелкие задачи может быть определен даже самый сложный процесс.
Определение областей процесса. После определения процесса, подлежащего управлению, разделите процесс на связанные группы областей. Так как каждая группа разделена на более мелкие задачи, то задачи, необходимые для управления этой частью процесса, становятся менее сложными.
Описание отдельных функциональных областей. Описание каждой области и задачи внутри процесса позволяет определять не только функционирование каждой области, но и различные элементы, управляющие этой областью. Они включают в себя:
электрические, механические и логические входы и выходы для каждой задачи;
блокировки и зависимости между отдельными задачами.
Сделав физическое описание каждого устройства, подлежащего управлению, нарисуйте диаграммы входов и выходов для каждого устройства или группы задач.
Определение требований безопасности. Определите, какие дополнительные элементы необходимы для обеспечения безопасности процесса – на основе юридических требований и корпоративной политики в области охраны здоровья и безопасности. В свое описание Вам следует также включить все воздействия, которые элементы безопасности оказывают на области Вашего процесса.
Описание требуемых для оператора устройств отображения и управления. Каждый процесс требует интерфейса с оператором, который обеспечивает вмешательство человека в процесс. Часть спецификации проекта включает в себя проект пульта оператора. Необходимо принять решение относительно типа управляющего оборудования, требующегося для проекта.
Составление конфигурационной диаграммы. Принимая решение о том, какие модули Вы хотите использовать, Вы также определяете структуру программируемого контроллера. Составьте конфигурационную диаграмму, определяющую следующие аспекты:
тип CPU;
количество и тип модулей ввода/вывода;
конфигурация физических входов и выходов.
После выполнения всех выше изложенных этапов приступают к составлению программы в среде программирования.
Рассмотрим пример создания проекта, реализующий функцию, представленную на рис. 1.25 в среде программирования.


Рис. 1.25. Вид устройства, реализующего функцию, подлежащую программированию
Последовательность действий можно представить в следующем виде:
В основном окне SIMATIC Manager, показанном на рис. 1.26, входим в меню «File» -> «New Project Wizard».

Рис. 1.26. Вкладка «New Project Wizard»
Нажимаем кнопку «Next».
Выбираем из списка: процессор CPU314, устанавливаем MPI адрес равный 2 (рис. 1.27) и нажимаем «Next».

Рис. 1.27. Выбор процессора
Устанавливаем язык программирования STL, задаем тип организационного блока OB1 и нажимаем «Next» (рис. 1.28).

Рис. 1.28. Выбор блока и языка программирования
Вводим имя проекта и нажимаем кнопку «Finish» (рис.1.29).

Рис. 1.29. Окно ввода имени проекта
Переходим на уровень SIMATIC 300 STATION (рис. 1.30) и запускаем программу «Hardware» двойным щелчком мыши.

Рис. 1.30. Уровень «SIMATIC 300 STATION»
В появившемся окне в стойке будет один процессор CPU314. Открываем справа библиотеку SIMATIC 300 и помещаем в стойку следующие элементы: блок питания PS 307 2A из папки PS-300; модуль цифрового ввода DI32xDC24V из папки SM-300\DI-300; модуль цифрового вывода DO32xDC24V/05A из папки SM-300\\DO300 (рис. 1.31).

Рис. 1.31. Окно программы «Hardware»
Входим в меню «Station» –> «Save and Compile». При отсутствии ошибок в папке блоков появляется объект «System Data».
Возвращаемся в SIMATIC Manager и переходим на уровень S7 Program(1) (рис. 1.32), запускаем редактор символов двойным щелчком на значок «Symbols».

Рис. 1.32. Уровень «S7 Program(1)»
В окне «Symbol Editor» (рис. 1.33) вносим в таблицу переменные, показанные на рис. 1. 34. Сохраняем таблицу.

Рис. 1.33. Окно «Symbol Editor»

Рис. 1.34. Таблица переменных
Переходим в окно SIMATIC Manager на уровень «Blocks» и через меню «Insert» – > «S7 Block» -> «Function» добавляем функцию с именем FC1 в список блоков, установив язык STL и нажав «OK» в появившемся окне на рис. 1.35.

Рис. 1.35. Окно добавления FunctionПереходим в окно SIMATIC Manager на уровень «Blocks» (рис. 1.36) и двойным щелчком на OB 1 запускаем редактор LAD/STL/FBD.

Рис. 1.36. Окно SIMATIC Manager на уровне «Blocks»
Набираем программу CALL FC 1 и сохраняем ее (рис. 1.37).

Рис. 1.37. Редактор LAD/STL/FBD блока OB1
Переходим в окно SIMATIC Manager на уровень «Blocks» и двойным щелчком на FC1 открываем ее в редакторе LAD/STL/FBD.
Набираем в редакторе программу, реализующую функцию (X1 ИЛИ X2) И (X3 ИСКЛЮЧАЮЩЕЕ ИЛИ X4) и сохраняем ее (рис. 1.38):
A(«X1» «X2») A(X «X3» X «X4») = «Y»

Рис. 1.38. Окно программирования блока FC1
Отметим, что логические операции обозначаются следующим образом: A – И; O –ИЛИ; X – ИСКЛЮЧАЮЩЕЕ ИЛИ, NOT – инверсия. Можно комбинировать логические операции с инверсией, например AN – И-НЕ.
Запускаем симулятор S7-PLCSIM. Для этого в меню «Options» основного окна SIMATIC Manager выбираем пункт «Simulate Modules», что приводит к запуску S7-PLCSIM.
В основном окне SIMATIC Manager выделяем блоки OB1 и FC1 и выбираем пункт меню «PLC» вкладку «Download» (рис. 1.39).

Рис. 1.39. Загрузка блоков OB1 и FC1 в контроллер
В окне утилиты «Hadware» входим в меню «PLC» -> «Download» и загружаем текущую конфигурацию в симулятор.
Переходим в окно S7-PLCSIM в меню «PLC» устанавливаем флаг «Power on». Загружаем таблицу символов в S7-PLCSIM, выбрав меню «Tools–>Options–>Attach Symbols». В появившемся окне нужно выбрать свой проект, перейти на уровень «Program», выбрать «Symbols» и нажать «OK» (рис. 1.40).

Рис. 1.40. Загрузка символьной таблицы в симулятор
В окне S7-PLCSIM добавляем пять окон: четыре входа и один выход. В редактируемых заголовках указываем имена переменных: X1, X2, X3, X4, Y или их абсолютные адреса. Во втором случае символьные имена добавятся автоматически (рис. 1.41).
Если таблица символов не загружена, то процессор будет работать с той лишь разницей, что символьные адреса не будут отображаться.

Рис. 1.41. Окно симулятора с добавленными окнами входов и выходов
Запускам программу, записанную в симулятор, на выполнение, установив флажок CPU в положение «RUN». Это означает, что наша программа будет выполняться циклически (рис. 1.42).

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

2. ВИЗУАЛИЗАЦИЯ ТЕХНОЛОГИЧЕСКИХ ПРОЦЕССОВ В SCADA-ПАКЕТЕ2.1. Общие сведенияПО «SCADA Infinity» предназначено для разработки, настройки и эксплуатации систем управления технологическими процессами. Системы на базе «SCADA Infinity» обеспечивают эффективность и безопасность производства, хранение и обработку исторических данных, анализ и контроль технологических процессов. Гибкая конфигурация «SCADA Infinity» позволяет оптимально с точки зрения функциональных возможностей соответствовать технологическим особенностям объекта автоматизации.
Благодаря унификации архитектурных решений и поддержке общепринятых промышленных стандартов и спецификаций, как в части телекоммуникационных протоколов, так и в части межсистемного взаимодействия, такие системы легко могут быть интегрированы с системами еще большего масштаба, в том числе, с созданными на базе решений других производителей.ПО «SCADA Infinity» позволяет хранить и обеспечивать работу с данными технологического процесса, отображать оперативную и историческую информацию в текстовом, графическом и схематическом виде, автоматизировать формирование отчетов.

2.2. Состав SCADA InfinityВ составе ПО «SCADA Infinity» доступна группа компонентов (рис. 2.1).
Серверные компоненты:
«Infinity Client Security» – предназначен для разграничения прав доступа пользователей к функциям клиентских приложений ПК SCADA Infinity;
«Infinity Server» – предназначен для автоматизированного сбора, хранения и обработки технологических данных с систем автоматики и телемеханики;
«Infinity History Server» – предназначен для управления историческими технологическими данными и реализации сбора и сохранения исторических данных от любых источников, поддерживающих интерфейсы OPC DA и OPC AE. Предоставляет данные по интерфейсам OPC HDA (Historical Data Access) и HAE (Historical Alarms & Events). Основан на специализированном хранилище, оптимизированном для хранения исторической информации, и обеспечивает производительность операций записи/чтения.

Рис. 2.1. Компоненты «SCADA Infinity»
«Infinity History Server» состоит из трех частей:
Сервер – предназначен для хранения данных технологического процесса.
Коллектор – предназначен для сбора данных технологического процесса от источников.
Конфигуратор – предназначен для конфигурирования системы управления историческими данными.
«Infinity Reports» – предназначен для подготовки сводок и отчетов разного уровня сложности, для контроля и анализа данных реального времени и оперативной производственной информации.
«Infinity Reports» состоит из следующих частей:
Сервер – предназначен для генерации отчетов, управления репозиторием объектов системы формирования отчетов.
Клиент – предназначен для создания и редактирования шаблонов отчетов, формирования заданий на генерацию отчетов и просмотра готовых отчетов.
Навигатор – предназначен для просмотра и генерации отчетов.
COM API – предназначен для взаимодействия с сервером отчетов при помощи сторонних компонентов.
«Infinity ETL» – предназначен для сбора, обработки и передачи информации с возможностью визуального описания процесса импорта/экспорта данных.
«Infinity ETL» состоит из двух частей:
Сервер – серверная часть компонента, предназначенная для выполнения сценариев, управления репозиторием объектов системы импорта-экспорта данных.
Клиент – клиентская часть компонента, предназначенная для создания и редактирования сценариев, настройки расписания выполнения сценария и просмотра истории выполнения процессов импорта/экспорта данных.
«Infinity Web Router» – предназначен для транспорта оперативных и исторических технологических данных, файлов и SQL-запросов к технологическим серверам.
«Infinity Web Router» состоит из трех частей:
Сервер – предназначен для подключения к источникам данных.
Клиент – предназначен для предоставления доступа к источникам данных серверов Web Router.
Конфигуратор – предназначен для создания и редактирования конфигурации транспортной сети передачи данных.
«Infinity Monitoring» – предназначен для сбора и обработки информации о значении диагностических параметров состояния объекта.
«Infinity OPCUA Gateway» – предназначен для передачи OPC UA-клиентам данных от OPC и HAE-серверов.
«Infinity OPCUA Gateway» состоит из двух частей:
Сервер – предназначен для предоставления OPC UA-клиентам данных от OPC и HAE-серверов.
Клиент – предназначен для предоставления OPC-клиентам данных от OPC UA-серверов.
«InfinityIEC61850» – предназначен для интеграции устройств, работающих по протоколу МЭК 61850.
«InfinityIEC61850» состоит из трех частей:
Сервер – серверная часть компонента.
Клиент – клиентская часть компонента.
Конфигуратор – конфигуратор InfinityIEC61850.
«Infinity Sender» – предназначен для рассылки SMS и E-mail уведомлений по событиям OPC AE-сервера.
Клиентские компоненты:
«Infinity Alarms» – предназначен для отображения сообщений о событиях и авариях в оперативном и/или историческом режиме.
«Infinity History Player» – предназначен для проигрывания истории изменения параметров технологического процесса.
«Infinity HMI» – предназначен для отображения технологического процесса на графических схемах в реальном времени.
«Infinity Trends» – предназначен для отображения изменения параметров технологического процесса в виде графиков и таблиц в историческом и оперативном режиме.
«Infinity Web HMI» – тонкий клиент, предназначенный для отображения технологического процесса в реальном времени.
Документация – содержит компонент «Infinity Documentation», предназначенный для доступа к документам, разработанным на компоненты «SCADA Infinity».
Утилиты:
«Infinity OLEDB Provider» – предназначена для доступа к «Infinity History Server» с помощью SQL.
«Infinity Tools» – предназначена для администрирования компонентов и осуществления удаленного доступа к источникам данных «SCADA Infinity».
Источники данных:
«Infinity OPCDA Dual Source» – предназначен для объединения адресного пространства различных OPC DA-серверов в единое адресное пространство.
«Infinity OPCAE Dual Source» – предназначен для объединения адресного пространства различных OPC AE-серверов в единое адресное пространство.
«Infinity OPCHDA Dual Source» – предназначен для объединения адресного пространства различных OPC HDA-серверов в единое адресное пространство.
«Infinity HAE Dual Source» – предназначен для объединения адресного пространства различных HAE-серверов в единое адресное пространство.
Конфигураторы:
Конфигуратор приложений – предназначен для конфигурирования приложений «SCADA Infinity».
Конфигуратор сервера – предназначен для конфигурирования сервера ввода/вывода.
Конфигуратор системы – предназначен для конфигурирования параметров операционной системы.
Утилиты:
Обновление лицензий – предназначена для удаленного обновления лицензий, хранящихся в памяти ключей аппаратной защиты Sentinel HL Time и Sentinel HL Net.
Тестовый OPC клиент – предназначен для отладки и диагностики проектов автоматизации, использующих OPC DA-серверы.
Журнал приложений – предназначен для просмотра системных событий.
Просмотр журналов – предназначен для просмотра журналов работы устройств и компонентов «SCADA Infinity».
Управляющий – предназначен для удаленного управления серверами ввода/вывода и серверами истории.
Статистика – предназначена для отображения диагностических параметров компонентов «SCADA Infinity».
SQL Консоль – предназначена для работы с базой данных «FireBird».
Сторонние компоненты – содержат следующий список ПО стороннего производства, необходимого для корректной работы компонентов «SCADA Infinity»:Adobe Reader XI.
FireBird Server 2.5.4.
Sentinel Runtime.
MSXML 6.0 Parser.
Microsoft Visual C++ 2008.
Microsoft.NET Framework 1.1.
Microsoft.NET Framework 3.5 SP1.
OPC Core Component 2.00 Redistributable.
OPC Core Components Redistributable (x86) 105.1.

2.3. Работа с программным комплексом «SCADA Infinity»2.3.1. Запуск сервера ввода/вывода
Для запуска сервера ввода/вывода необходимо выполнить следующие действия:
Запустить Управляющий с помощью команды меню Windows: [Группа Infinity] → Infinity Tools → Управляющий.
В открывшемся окне «Управление Infinity – RDP1» включить сервер ввода/вывода, нажав на закладке Управление кнопку «Включить» (рис. 2.2) и подтвердить выполняемую операцию. Сервер перейдет в режим «РАБОТА».

Рис. 2.2. Окно управляющего
Сигналы создаются в программе «Конфигуратор сервера ввода/вывода».
Для создания сигнала необходимо выполнить следующие действия:
Запустить «Конфигуратор сервера ввода/вывода», нажав кнопку «Управляющий», расположенную на закладке «Управление» под именем сервера ввода/вывода.
В открывшемся окне «Конфигуратор сервера на компьютере…» при помощи команд контекстного меню области «Дерево сигналов» создать папку с именем набора сигналов (рис. 2.3).

Рис. 2.3. Конфигуратор сервера ввода/вывода
Добавить модуль вычислений в конфигурацию сервера ввода/вывода. Для этого необходимо в области «Модули» нажать кнопку «Добавить модуль…» (рис. 2.3). В открывшемся окне «Добавление модуля» (рис. 2.4) в списке выбрать «Computation Module». Нажать кнопку «Добавить».

Рис. 2.4. Окно добавления модуля
В области «Дерево сигналов» в папке создать сигналы телеуправления с именами необходимого типа (Boolean, Word, Float и т. д.)
Создать сигналы телесигнализации типа Boolean.
Для каждого из сигналов телеуправления задать формулу изменения значений. Для этого необходимо в области «Дерево сигналов» выделить сигнал TU_On. Перейти на закладку «Формулы» (рис. 2.5). В области «Процедура по изменению» ввести необходимую формулу изменения. Нажать кнопку «Применить». Аналогичные действия проделать для оставшихся сигналов.

Рис. 2.5. Окно ввода формулы изменения
Активировать модуль «Computation Module». Для этого в области «Модули» (рис. 2.3) выделить строку «Computation Module». Нажать клавишу [Space]. Включенное состояние «Computation Module» отображается синим цветом (рис. 2.5).
2.3.2. Разработка технологической мнемосхемы (компонент «Infinity HMI»)
Программа «Infinity HMI» предназначена для отображения технологических схем объектов в реальном времени. Программа «Infinity HMI» реализует следующие функции:
навигация по административным и технологическим объектам;
поддержка сценариев обработки действий пользователей;
отображение текстом и графическими эффектами технологических объектов;
поддержка графической библиотеки для создания и изменения схем.
Приложение «Infinity HMI» запускается с помощью команды меню Windows:
[Группа Infinity] → Infinity HMI → Infinity HMI.Внешний вид главного окна программы с основными компонентами (основная панель инструментов, инструменты редактирования текста, таблицы, стили и заливки, набор инструментов рисования, работы с динамическими объектами) представлен на рис. 2.6.

Рис. 2.6. Главное окно «Infinity HMI»
Для работы с программой используются клавиатура и манипулятор типа «мышь» (далее – «мышь»).
«Мышь» используется для перемещения, выбора объектов, выполнения различных действий над объектами. Указатель «мыши» в зависимости от выполняемых действий может принимать различный вид.
Описание функций, выполняемых с помощью «мыши», приведено на рис. 2.7.

Рис. 2.7. Описание функций, выполняемых с помощью «мыши»
Рабочая область занимает основную часть главного окна (рис. 2.6) и предназначена для создания и просмотра экранных форм, форматирования, редактирования и просмотра объектов экранной формы. Видимая часть рабочей области называется областью отображения. Просмотр остальных частей рабочей области выполняется при помощи горизонтальной и вертикальной полос прокрутки. Кроме того, различные части рабочей области можно просматривать путем использования команд «Масштаб» или «Весь документ» в меню «Вид». После сохранения экранной формы информация о размерах области отображения сохраняется вместе с экранной формой. При загрузке данной экранной формы размеры области отображения восстанавливаются.
Размер экрана определяет границы экранной формы в абсолютных координатных единицах. Размеры окна состоят из совокупности параметров, определяющих высоту, ширину и положение главного окна программы на экране монитора.
Основным видом называется область отображения, имеющая размер, который был установлен при последнем сохранении экранной формы.
Масштаб 100 % является масштабом, при котором логическая единица координат экранной формы равна одному пикселю.
Вертикальная и горизонтальная полосы прокрутки появляются на границах области отображения, если размеры рабочей области не допускают полное воспроизведение экранной формы.
Контекстное меню отображается при нажатии правой кнопки «мыши» в рабочей области главного окна. Команды контекстного меню частично дублируют команды главного меню и панелей инструментов.
2.3.2.1 Пример создания объекта в «Infinity HMI» (лампочка)
Для создания объекта «Лампочка» необходимо выполнить следующие действия:
Нарисовать объект «Лампочка» при помощи инструментов рисования графических объектов, расположенных в левой части окна «Infinity HMI» (рис. 2.8).
В окне «Свойства объекта …» (рис. 2.8) задать необходимые параметры отображения. Окно вызывается при выборе команды «Свойства объекта…» контекстного меню.
В окне «Свойства объекта …» нажать кнопку «Сохранить».

Рис. 2.8. Окно свойства объекта
На объекте «Лампочка» выделить малый эллипс.
В меню «Динамика» выбрать команду «Действия» → «Цвет». Изменение цвета будет отображать состояние лампочки.
Вызвать контекстное меню для малого эллипса. Выбрать команду «Свойства объекта…». В открывшемся окне «Свойства объекта Эллипс» перейти на закладку «Цвет» и выполнить следующие действия:
в области «Динамический цвет»: нажать кнопку «Добавить»;
в открывшемся окне «Добавить источник данных» (рис. 2.9) ввести значение (адрес сигнала из конфигуратора сервера ввода/вывода) например: «{{Infinity.OPCServer\Lamp.TS_Off}}». Нажать кнопку «Сохранить».

Рис. 2.9. Добавление источника данных
в группе «Изменять» установить флаг «Цвет» заливки. В качестве цвета заливки в выпадающем списке выбрать серый цвет (рис. 2.10);
установить переключатель «Режим» в положение «Выполнять», если «True»;
нажать кнопку «Сохранить».

Рис. 2.10. Свойства цвета объекта
2.3.2.2 Включение и выключение лампочки
Изменение состояния лампочки проводится при подаче команд управления. Для реализации подачи команд управления необходимо выполнить следующие действия:
Добавить объект «Кнопка». Для этого следует выбрать инструмент «Динамический объект Кнопка», расположенный на нижней панели инструментов окна «Infinity HMI». Поместить указатель «мыши» в область отображения и нажать левую кнопку «мыши».
В открывшемся окне в поле «Введите текст» ввести название создаваемой кнопки: «Выключить» (рис. 2.11). Нажать кнопку «Сохранить».

Рис. 2.11. Ввод названия объекта «Кнопка»
Вызвать контекстное меню для созданного объекта «Кнопка» и выбрать команду «Свойства объекта». Откроется окно «Свойства объекта Кнопка» (рис. 2.12).

Рис. 2.12. Свойства объекта «Кнопка»
Перейти на закладку «Действие» (рис. 2.12) и выполнить следующее:
В области «Источник» задать в качестве источника значение из дерева сигналов сервера ввода/вывода, например:
«{{Infinity.OPCServer\Lamp.TU_Off}}».
В выпадающем списке «Действие»: выбрать значение «Передать значение».
В поле «Значение», если отпущено: задать значение сигнала, которое будет передано серверу. Например, «1».
Нажать кнопку «Сохранить».
Создать объект «Кнопка» с названием «Включить» (см. пункты 1–3).
В окне «Свойства объекта Кнопка», вызванного для созданного объекта «Кнопка» с названием «Включить», перейти на закладку «Действие» (рис. 2.12) и выполнить следующее:в области «Источник» задать в качестве источника значение из дерева сигналов сервера ввода/вывода, например:
«{{Infinity.OPCServer\Lamp.TU_On}}».
В выпадающем списке «Действие» выбрать значение «Передать значение».
В поле «Значение», если отпущено, задать значение сигнала, которое будет передано серверу. Например, «1».
Нажать кнопку «Сохранить».
Сохранить выполненные изменения в файле, выбрав команду меню «Файл» → «Сохранить».
2.3.2.3 Запуск экранной формы в режиме исполнения
Для отображения значения сигнала и работы лампочки необходимо перейти в режим исполнения, выбрав команду меню «Режим» → «Исполнение». После нажатия кнопки «Включить» лампочка на мнемосхеме «включается». Счетчик начинает отображать количество времени, которое работает лампочка. После нажатия кнопки «Выключить» лампочка меняет свое состояние, т. е. «выключается», а счетчик, отображающий количество времени, останавливается. На рис. 2.13 изображено состояние лампочки после нажатия кнопки «Выключить».

Рис. 2.13. Проект в режиме исполнения
2.3.3. Визуализация аварий и событий (компонент «Infinity Alarms»)
Приложение для оповещения об авариях и событиях «Infinity Alarms» используется для просмотра оперативных и исторических сообщений.
Запуск приложения происходит с помощью команды меню Windows:
[Группа Infinity] → Infinity Alarms → Infinity Alarms.
2.3.3.1 Настройка доступа к источнику данных в оперативном режиме
Для настройки доступа к источнику данных в оперативном режиме необходимо выполнить следующие действия:
В главном окне программы «Infinity Alarms [Исторические события]» выбрать команду меню «Настройки» → «Параметры…».
В открывшемся окне «Параметры» нажать кнопку «Расширенные настройки», расположенную в нижнем левом углу (рис. 2.14).

Рис. 2.14. Окно параметров «Infinity Alarms»
В окне «Ввод пароля» ввести пароль «sdku». Нажать кнопку «ОК».
На закладке «Подключение – Оперативный режим» из выпадающего списка «Источник» выбрать значение «OPC AE Server» (рис. 2.15).

Рис. 2.15. Настройка оперативного режима
Установить флаг «Доступно для выбора подключения» для возможности выбора подключения пользователем.
Перейти на закладку «Оперативный режим» (рис. 2.16).
Из выпадающего списка «Использовать в качестве источника» выбрать значение «OPC AE Server». Нажать кнопку «Сохранить».
Для вступления в силу выполненных настроек перезапустить программу.

Рис. 2.16. Окно параметров «Infinity Alarms»
2.3.3.2 Просмотр оперативных сообщений
Для просмотра оперативных сообщений в приложении «Infinity Alarms» следует перейти в оперативный режим. Для этого необходимо в главном окне программы «Infinity Alarms» выбрать команду меню «Закладки» → «Оперативные события».
Оперативные сообщения поступают в приложение после выключения или включения лампочки. На рис. 2.17 представлен вид окна, содержащего сообщения о состоянии объекта.

Рис. 2.17. «Infinity Alarms» в режиме исполнения
2.3.4. Построение графика изменения технологического параметра (компонент «Infinity Trends»)
Приложение «Infinity Trends» предоставляет возможность просмотра истории изменения значений сигналов.
Запуск программы выполняется с помощью команды меню Windows:
[Группа Infinity] → Infinity Trends → Infinity Trends.2.3.4.1. Просмотр истории изменения значений сигналов в оперативном режиме
Настройка доступа к источнику данных в оперативном режиме
Для настройки доступа к источнику данных в оперативном режиме необходимо выполнить следующие действия:
В главном окне программы «Infinity Trends» выбрать команду меню «Настройки» → «Параметры…».
В открывшемся окне «Настройки» нажать кнопку «Расширенные настройки», расположенную в нижнем левом углу.
В окне «Ввод пароля» ввести пароль «sdku». Нажать кнопку «ОК».
На закладке «Подключение – Оперативный режим» из выпадающего списка «Подключение» выбрать значение «OPCDA Server» (рис. 2.18).

Рис. 2.18. Окно настроек «Infinity Trends»
Установить флаг «Доступно для выбора подключения» для возможности выбора подключения пользователем.
В группе «Параметры источника» в выпадающем списке «Имя сервера»: выбрать значение «Infinity.OPCServer». Нажать кнопку «Применить».
Перейти на закладку «Оперативный режим» (рис. 2.19).
Из выпадающего списка «Использовать в качестве источника» выбрать значение «OPCDAServer». Нажать кнопку «Сохранить».

Рис. 2.19. Настройка оперативного режима «Infinity Trends»
Добавление сигналов для просмотра
Для просмотра графика значений отдельных сигналов необходимо добавить эти сигналы в список сигналов для просмотра. Для этого следует:
Перейти в оперативный режим. В главном окне программы «Infinity Trends» выбрать команду меню «Функции» → «Запустить показ оперативных данных».
Выбрать команду меню «Сигналы» → «Добавить сигнал…».
В открывшемся окне «Выбор сигналов для просмотра» (рис. 2.20) в области «Полный список сигналов» выбрать сигнал (например: TS_Off) и нажать кнопку «Добавить в список выбранных сигналов».Аналогичные действия проделать с остальными сигналами. Нажать кнопку «Сохранить».

Рис. 2.20. Выбор сигналов для просмотра в «Infinity Trends»
Для просмотра истории изменения значений сигналов в оперативном режиме в приложении «Infinity Trends» следует запустить показ оперативных данных. Для этого необходимо в главном окне программы «Infinity Trends» выбрать команду меню «Функции» → «Запустить показ оперативных данных».
После изменения значений сигналов в сервере ввода/вывода, значения этих сигналов поступают в оперативном режиме в подписавшийся на них клиент «Infinity Trends».
На рис. 2.21 представлен вид окна, содержащего график изменений значений сигналов о состоянии объекта в оперативном режиме.

Рис. 2.21. «Infinity Trends» в режиме исполнения
2.3.5. Система формирования отчетов «Infinity Reports» (компонент «Infinity Reports»)
Система формирования отчетов «Infinity Reports» предназначена для подготовки сводок и отчетов разного уровня сложности, необходимых специалистам различного уровня управления для контроля и анализа данных реального времени и оперативной производственной информации.
Настройка доступа к источнику данных и добавлению сигналов компоненты «Infinity Reports» аналогична компоненте «Infinity Trends».

3. ЛАБОРАТОРНЫЙ ПРАКТИКУМ3.1. Лабораторная работа № 1. Знакомство со средой программирования Step 7. Изучение языка программирования STL3.1.1. Теоретические сведения
Рассмотрим последовательность действий, которая приведет к созданию следующей программы: (X1 И X2) = У.

Рис. 3.1. Вид устройства, реализующего функцию, подлежащую программированию
Рассмотрим пример создания проекта реализующий функцию, представленную на рис. 3.1 в среде программирования. Последовательность действий можно представить в следующем виде:
В основном окне SIMATIC Manager входим в меню «File» → «New Project Wizard».
Нажимаем кнопку «Next».
Выбираем из списка: процессор CPU314, устанавливаем MPI адрес, равный 2, и нажимаем «Next».
Устанавливаем язык программирования STL, задаем тип организационного блока OB1 и нажимаем «Next».
Вводим произвольное имя проекта и нажимаем кнопку «Finish».
Переходим на уровень SIMATIC 300 STATION и запускаем программу «Hardware» двойным щелчком мыши.
В появившемся окне в стойке будет один процессор CPU314. Открываем справа библиотеку SIMATIC 300 и помещаем в стойку следующие элементы:
блок питания PS 307 2A из папки PS-300;
модуль цифрового ввода DI32xDC24V из папки SM-300\DI-300;
модуль цифрового вывода DO32xDC24V/05A из папки SM-300\\DO300.
Входим в меню «Station» → «Save and Compile». При отсутствии ошибок в папке блоков появляется объект «System Data».
Возвращаемся в SIMATIC Manager и переходим на уровень S7 Program (1) и запускаем редактор символов двойным щелчком на значок «Symbols».
В окне «Symbol Editor» вносим в таблицу переменные (табл. 3.1). Сохраняем таблицу.
Таблица 3.1
Переменные программы
SymbolAddressData TypeCommentCycleExecutionOB 1 OB 1 X1 I 0.0 BOOL X2 I 0.1 BOOL Y Q 0.0 BOOL Переходим в окно SIMATIC Manager на уровень «Blocks» и двойным щелчком на OB 1 запускаем редактор LAD/STL/FBD.
Набираем в редакторе программу, реализующую функцию (X1 И X2):
= У: A
«X1»
A=«X2»
=«Y
сохраняем ее.
Здесь «A» обозначает функцию логического умножения «И». Можно комбинировать логические операции с инверсией, например «AN» – «И-НЕ». Более подробную информацию об остальных логических операторах языка STL Вы можете получить из файла «Памятка».
Запускаем симулятор S7-PLCSIM. Для этого в меню «Options» основного окна SIMATIC Manager выбираем пункт «Simulate Modules», что приводит к запуску S7-PLCSIM.
В основном окне SIMATIC Manager выделяем блок OB1 и выбираем пункт меню «PLC» вкладку «Download».
В окне утилиты «Hadware» входим в меню «PLC» → «Download» и загружаем текущую конфигурацию в симулятор.
Переходим в окно S7-PLCSIM в меню «PLC» устанавливаем флаг «Power on». Загружаем таблицу символов в S7-PLCSIM, выбрав меню «Tools» → «Options» → «Attach Symbols». В появившемся окне нужно выбрать свой проект, перейти на уровень «Program», выбрать «Symbols» и нажать «OK».
В окне S7-PLCSIM добавляем три окна: два входа и один выход. В редактируемых заголовках указываем имена переменных «Х1», «Х2», «Y» или их абсолютные адреса. Во втором случае символьные имена добавляются автоматически. Если таблица символов не загружена, то процессор будет работать с той лишь разницей, что символьные адреса не будут отображаться.
Запускаем программу, записанную в симулятор, на выполнение, установив флажок CPU в положение «RUN». Это означает, что наша программа будет выполняться циклически.
Изменяя значения входов, измеряем значения выхода и проверяем выполнение логики работы устройства.
3.1.2. Задания для самостоятельной работы
Реализуйте программу на языке STL, соответствующую указанной схеме. При помощи симулятора PLC убедитесь в правильности работы программы и покажите её функционирование преподавателю.
Примечание: для описания многоуровневых вложенных функций используйте круглые скобки.
Вариант 1

Вариант 2

Вариант 3

Вариант 4

Вариант 5

Вариант 6

Вариант 7

Вариант 8


3.2. Лабораторная работа № 2. Изучение операций сравнения и работы с функциональными блоками на базе языка STL3.2.1. Пример создания программыОпираясь на опыт, полученный при выполнении предыдущей практической работы, опишите переменные, указанные в таблице 3.2 и создайте программу, показанную на рис. 3.2.
Таблица 3.2
Переменные программы
SymbolAddressData TypeIn1 IB0 BYTE
Out1 Q 0.0 BOOL

Рис. 3.2. Код программы
Загрузите программу в симулятор ПЛК и проверьте правильность её функционирования. В симуляторе помимо окон состояния входных и выходных переменных можно добавить окно состояния таймера.

3.2.2 Задания для самостоятельной работыВариант 1
Модифицируйте созданную программу таким образом, чтобы для запуска таймера «Т1» понадобилось соблюдение условия «In1=6», а по спаду выходного сигнала таймера «Т1» запускался бы таймер задержки выключения с памятью (время работы 9 секунд).
Вариант 2
Модифицируйте созданную программу таким образом, чтобы для запуска таймера «Т1» понадобилось соблюдение условия «In1=30», а по спаду выходного сигнала таймера «Т1» запускался бы таймер задержки включения (время работы 7 секунд).
Вариант 3
Модифицируйте созданную программу таким образом, чтобы для запуска таймера «Т1» понадобилось соблюдение условия «In1>22», а по спаду выходного сигнала таймера «Т1» запускался бы удлиненный импульс (время работы 5 секунд).
Вариант 4
Модифицируйте созданную программу таким образом, чтобы для запуска таймера «Т1» понадобилось соблюдение условия «In2<In1», а по спаду выходного сигнала таймера «Т1» запускался бы таймер задержки выключения (время работы 6 секунд).
Вариант 5
Модифицируйте созданную программу таким образом, чтобы для запуска таймера «Т1» понадобилось соблюдение условия «In1=18», а по спаду выходного сигнала таймера «Т1» запускался бы таймер «Т2» (время работы 8 секунд).
Вариант 6
Модифицируйте созданную программу таким образом, чтобы для запуска таймера «Т1» понадобилось соблюдение условия «In1>10», а по спаду выходного сигнала таймера «Т1» запускался бы таймер задержки включения (время работы 7 секунд).
Вариант 7
Модифицируйте созданную программу таким образом, чтобы для запуска таймера «Т1» понадобилось соблюдение условия «In2>In1», а по спаду выходного сигнала таймера «Т1» запускался бы таймер задержки включения с памятью (время работы 13 секунд).
Вариант 8
Модифицируйте созданную программу таким образом, чтобы для запуска таймера «Т1» понадобилось соблюдение условия «In2<In1», а по спаду выходного сигнала таймера «Т1» запускался бы удлиненный импульс (время работы 12 секунд).

Лабораторная работа № 3. Изучение языка программирования LAD
Теоретические сведения
Язык LAD является графическим языком программирования.

Рис. 3.3. Пример программы на языке LAD
Программа, представленная на рис. 3.3, эквивалентна следующему выражению:

Программа контроллера на языке LAD разделяется на блоки (Network), которые выполняются последовательно сверху вниз. Каждый блок начинается от вертикальной линии. Принято, что на этой линии всегда высокий уровень сигнала (логическая единица). Чтобы запрограммировать логическое выражение достаточно использовать 2 вида контактов (нормально разомкнутый и нормально замкнутый) и катушку (см. рис. 3.3).
Каждый контакт связан со своей переменной типа Bool. Значение этой переменной определяет состояние контакта. Нормальное состояние контакта – это состояние, когда его переменная равна логическому нулю. Когда переменная контакта равна логической единице, состояние контакта противоположно нормальному. Катушка одним выводом подключается к контактной схеме, а другим – к «земле», т. е. точке с нулевым потенциалом. В зависимости от состояния контактов на катушке может оказаться высокое или низкое напряжение. Соответственно переменной катушки (тоже типа Bool) будет присвоено значение логической единицы или логического нуля.
При составлении схемы удобно использовать кнопки, расположенные в верхней части экрана рабочей среды STEP 7 (рис. 3.4). Обратите внимание на кнопки «Branch Open» и «Branch Closed». С их помощью можно создавать параллельные ветви схемы. Для удаления какой-либо части схемы её необходимо выделить с помощью мыши и нажать «Delete».

Рис. 3.4. Кнопки для составления лестничной схемы
Для вставки нового блока Network используйте команду «Insert Network», которую можно запустить из меню, появляющегося при щелчке правой кнопкой мыши. Чтобы удалить весь блок Network выделите слово «Network» щелчком мыши и нажмите «Delete».
Пример создания программы
В новом проекте создайте «Organization Block» на языке LAD. Откройте созданный OB и активируйте панель «Overviews», нажав на пункт главного меню «View» → «Overviews». Данная панель содержит все элементы, используемые в программах LAD.
Создайте программу, показанную на рис. 3.5.
Контакты и катушки, используемые в программе, можно найти в папке «Bit logic» панели «Overviews». Оператор «JMP» и окно метки «La1» находятся в папке «Jumps». Оператор «RETURN» расположен в папке «Program control», таймер «S_PULSE» в папке «Timers», блок сложения в папке «Integer functions».
Загрузите программу в симулятор ПЛК и проверьте правильность её функционирования. При подаче единицы на вход «I0.0» или «I0.2» переменная «MW1» должна увеличиваться на единицу. Для дальнейшего накопления переменной «MW1» необходимо подавать единицу на входы снова.

Рис. 3.5. Код программы
Задания для самостоятельной работы
Программа, только что написанная Вами, крайне нерациональна. Максимально упростите программу, применив инкрементный счетчик «S_CU» (см. описание ниже). Также необходимо заменить первую часть схемы (рис. 3.6) в соответствии с заданным вариантом. Обратите внимание, что функциональность программы при этом не должна измениться.

Рис. 3.6. Часть кода программы
Счётчик – программный элемент, предназначенный для подсчёта событий при выполнении программы и запуска необходимых действий, когда произойдет заданное число этих событий. Адрес счётчика записывается в виде буквы «C» с номером (0…255), например, «С10», «С12» и т. д. На рис. 3.7 показан вид элемента «2S_CU» («возрастающий счётчик») с пояснением назначений входов и выходов, а также типов данных на входах и выходах. Все виды счётчиков находятся в папке «Counter» библиотеки элементов.
139700405765Текущее значение (BCD)
Текущее значение (Word)
Выход (Bool)
Счётный вход (Bool)
Вход установки (Bool)
Вход предустановленного значения (Word)
Вход сброса (Bool)
00Текущее значение (BCD)
Текущее значение (Word)
Выход (Bool)
Счётный вход (Bool)
Вход установки (Bool)
Вход предустановленного значения (Word)
Вход сброса (Bool)

Рис. 3.7. Элемент «инкрементный счётчик»
Предустановленное значение задаётся с помощью переменной типа «Word» (в которую предварительно записывается необходимое значение) или с помощью константы (например, «C#20» – значение «20», «C#1» – значение «1»). Если на входе «S» будет положительный фронт сигнала (установка счётчика), и при этом на входе «CU» сигнал «0», то текущее значение счётчика становится равным предустановленному значению. Если при установке счётчика на входе «CU» сигнал «1», то текущее значение счётчика становится равным предустановленному значению плюс единица.
При каждом положительном фронте сигнала на входе «CU» текущее значение счётчика «CV» увеличивается на единицу (текущее значение не может возрастать более 999). Если текущее значение счётчика больше нуля, то на выходе «Q» будет сигнал «1», а если текущее значение счётчика равно нулю, то на выходе «Q» будет сигнал «0».
Вариант 1
Уравнение для программы:
.
Вариант 2
Уравнение для программы:
.
Вариант 3
Уравнение для программы:
.
Вариант 4
Уравнение для программы:
.
Вариант 5
Уравнение для программы:
.
Вариант 6
Уравнение для программы:
.

3.4. Лабораторная работа № 4. Изучение языка программирования FBD. Этап 13.4.1. Теоретические сведенияЯзык FBD, также как и язык LAD, является графическим языком программирования. В данном языке не используются контакты или катушки, как в редакторе LAD, но имеются эквивалентные функциональные блоки. Пример программы, реализованной на языке FBD, представлен на рис. 3.8.

Рис. 3.8. Пример программы на языке FBD
FBD не использует понятия левой и правой токовой шины, поэтому понятие «поток сигнала» выражает аналогичное понятие потока управления через логические блоки FBD.
По этой причине путь состояния «1» через элементы FBD называется «потоком сигнала». Происхождение потока сигнала и место назначения его выхода ставятся в соответствие непосредственно операнду. Логика программы вытекает из связей между функциональными блоками, обозначающими команды. Т. е. выход одной команды (например, блок логического «И» («AND»)) может быть использован для разблокирования другой команды (например, таймера), формируя необходимую логику управления. Эта концепция позволяет решать широкий спектр задач управления.
Так же как и в LAD, в FBD блоки помещаются в поле «Network» из панели «Overviews», однако в одну сеть «Network» нельзя поместить более 3-х блоков.
Особенности редактора FBD:
графическое представление функционального плана хорошо отражает процесс выполнения программы;
редактор FBD можно использовать и с системой команд SIMATIC, и с системой команд МЭК 1131-3;
для отображения программы, созданной при помощи редактора SIMATIC FBD, всегда можно использовать редактор STL.
3.4.2. Пример создания программы
В новом проекте создайте «Organization Block» на языке FBD.
Создайте программу, показанную на рис. 3.9. Блок «SR», чаще называемый «SR-триггером, можно найти в папке «Bit logic» панели «Overviews».

Рис. 3.9. Код программы
Загрузите программу в симулятор ПЛК и проверьте правильность её функционирования. При подаче единицы на вход «S» («Set») триггера, его выход становится равным «1». При сбросе входа «S» триггера выход продолжает оставаться равным «1» до тех пор, пока на вход «R» («Reset») не будет подана «1». При одновременной подаче сигналов на входы «R» и «S» выход триггера будет равен «0», так как вход «R» имеет больший приоритет, чем вход «S». Выходной переменной триггера является переменная, указанная в его названии, то есть «Q0.0».
В таблице 3.3 представлено состояния входов и выходов SR-триггера.
Таблица 3.3
Состояние входов и выходов SR-триггера
Вход «S» Вход «R» Выход «Q»
0 0 0
1 0 1
после переключения
из 1 в 0 0 1
0 1 0
1 1 0

3.4.3. Задания для самостоятельной работыИспользуя блоки логического умножения и SR-триггер, создайте новую сеть «Network 1» из трех элементов, чтобы она удовлетворяла следующим ключевым строкам таблицы состояний.
Вариант 1
«I0.0» «I0.2» «I0.3» «I0.4» «Q0.0»
1 0 0 0 0
1 1 0 0 0
1 1 1 0 1
1 1 0 1 0
1 1 1 1 0
1 0 1 0 0
1 0 1 1 0
1 0 0 1 0
0 1 0 0 0
0 1 1 0 0
0 1 0 1 0
0 1 1 1 0
0 0 1 0 0
0 0 1 1 0
0 0 0 1 0
0 0 0 0 0
Вариант 2
«I0.0» «I0.2» «I0.3» «I0.4» «Q0.0»
1 0 0 0 0
1 1 0 0 1
1 1 1 0 1
1 1 0 1 1
1 1 1 1 0
1 0 1 0 0
1 0 1 1 0
1 0 0 1 0
0 1 0 0 0
0 1 1 0 0
0 1 0 1 0
0 1 1 1 0
0 0 1 0 0
0 0 1 1 0
0 0 0 1 0
0 0 0 0 0
Вариант 3
«I0.0» «I0.2» «I0.3» «I0.4» «Q0.0»
1 0 0 0 0
1 1 0 0 0
1 1 1 0 0
1 1 0 1 0
1 1 1 1 0
1 0 1 0 1
1 0 1 1 0
1 0 0 1 0
0 1 0 0 0
0 1 1 0 1
0 1 0 1 0
0 1 1 1 0
0 0 1 0 1
0 0 1 1 0
0 0 0 1 0
0 0 0 0 0
Вариант 4
«I0.0» «I0.2» «I0.3» «I0.4» «Q0.0»
1 0 0 0 1
1 1 0 0 1
1 1 1 0 1
1 1 0 1 1
1 1 1 1 0
1 0 1 0 1
1 0 1 1 1
1 0 0 1 1
0 1 0 0 0
0 1 1 0 0
0 1 0 1 0
0 1 1 1 0
0 0 1 0 0
0 0 1 1 0
0 0 0 1 0
0 0 0 0 0

Вариант 5
«I0.0» «I0.2» «I0.3» «I0.4» «Q0.0»
1 0 0 0 1
1 1 0 0 0
1 1 1 0 0
1 1 0 1 0
1 1 1 1 0
1 0 1 0 1
1 0 1 1 0
1 0 0 1 1
0 1 0 0 1
0 1 1 0 1
0 1 0 1 1
0 1 1 1 0
0 0 1 0 1
0 0 1 1 0
0 0 0 1 1
0 0 0 0 1
Вариант 6
«I0.0» «I0.2» «I0.3» «I0.4» «Q0.0»
1 0 0 0 1
1 1 0 0 1
1 1 1 0 0
1 1 0 1 1
1 1 1 1 1
1 0 1 0 1
1 0 1 1 1
1 0 0 1 1
0 1 0 0 0
0 1 1 0 0
0 1 0 1 0
0 1 1 1 0
0 0 1 0 0
0 0 1 1 0
0 0 0 1 0
0 0 0 0 0

3.5. Лабораторная работа № 5. Изучение языка программирования FBD. Этап 23.5.1. Теоретические сведенияРеализовать систему ручного управления количеством жидкости в емкости (рис.3.10), а именно, набором в емкость и откачкой из емкости.

Рис. 3.10. Пример технологического объекта
Применимо к рис. 3.11, вход «I0.0» в программе является командой на включение насоса набора жидкости в емкость. Вход «I0.1 является командой отключения работающего насоса. Выход «Q0.0» управляет питанием насоса набора.

Рис. 3.11. Реализация кнопки включения насоса набора
Допустим, электродвигатели насосов настолько мощны, что энергосистема предприятия не рассчитана на одновременную работу обоих насосов. Поэтому программа, представленная на рис. 3.11, исключает одновременную работу двух насосов. Переключение между насосами происходит только через команду отключения «I0.1».
3.5.2. Задания для самостоятельной работы:
Дополните программу, представленную на рис. 3.11, таким образом, чтобы оператор, управляющий насосами, мог контролировать текущий уровень в емкости. Необходимо реализовать кнопку включения насоса откачки жидкости и управление насосом откачки.
Уровень должен вычисляться по алгоритму, который выбирается в соответствии с вариантом.
Для создания программы Вам, возможно, понадобятся следующие блоки:
S_CUD (смешанный (инкрементный +декрементный) счетчик) для подсчета импульсов,
блоки логического умножения и SR-тригеры для кнопок;
таймеры S_PULSE для генерации импульсов;
стандартные логические функции NOT, OR, XOR, AND и т. д.
Примечание: на двух соединенных между собой таймерах S_PULSE с инвертированными входами «S» можно реализовать автогенератор импульсов, формирующий поочередно положительный и отрицательный сигналы импульсов с заданным временем.
Вариант 1
одна секунда работы насоса набора увеличивает уровень на две единицы;
две секунды работы насоса откачки снижают уровень на одну единицу.
Вариант 2
две секунды работы насоса набора увеличивают уровень на три единицы;
одна секунда работы насоса откачки снижает уровень на четыре единицы.
Вариант 3
четыре секунды работы насоса набора увеличивают уровень на одну единицу;
пять секунд работы насоса откачки снижают уровень на одну единицу.
Вариант 4
четыре секунды работы насоса набора увеличивают уровень на пять единиц;
пять секунд работы насоса откачки снижают уровень на шесть единиц.
Вариант 5
две секунды работы насоса набора увеличивают уровень на одну единицу;
три секунды работы насоса откачки снижают уровень на одну единицу.
Вариант 6
две секунды работы насоса набора увеличивают уровень на пять единиц;
две секунды работы насоса откачки снижают уровень на одну единицу.

ЗАДАНИЯ ДЛЯ РУБЕЖНОГО КОНТРОЛЯБилет 1
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «7». Используйте начальные биты памяти для переменных: 10, 15, 25, 30.

Написать программу на языке SCL при условиях:
Входные переменные: две типа WORD («A1», «A2»), две типа INTEGER («B1», «B2»), две типа BOOL («K12, «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1–A2*B1+B2 при положительном сигнале на «K1» и «K2».
Билет 2
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «md20» стала равной «9,4». Используйте начальные биты памяти для переменных: 10, 15, 25, 30.

Написать программу на языке SCL при условиях:
Входные переменные: три типа WORD («A1», «A2», «A3»), одна типа INTEGER («B12), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1+A2*B1–A3 при положительном сигнале на «K2» и отрицательном «K1».
Билет 3
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «md5» стала равной «21». Используйте начальные биты памяти для переменных: 10, 15.

Написать программу на языке SCL при условиях:
Входные переменные: две типа WORD («A1», «A2»), две типа INTEGER («B1», «B2»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1*B2+A2*B1 при положительном сигнале на «K1» и отрицательном сигнале на «K2».
Билет 4
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «6». Используйте начальные биты памяти для переменных: 10, 15, 20, 30.

Написать программу на языке SCL при условиях:
Входные переменные: одна типа WORD («A1»), три типа INTEGER («B1», «B2», «B3»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1+B2–B3+B1 при отрицательном сигнале на «K1».
Билет 5
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «md5» стала равной «3». Используйте начальные биты памяти для переменных: 10, 15, 20, 30.

Написать программу на языке SCL при условиях:
Входные переменные: две типа WORD («A1», «A2»), две типа INTEGER («B1», «B2»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A2–B2–A1*B1 при положительном сигнале на «K2» и «K1».
Билет 6
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «md5» стала равной «5,5». Используйте начальные биты памяти для переменных: 10, 15, 20, 30.

Написать программу на языке SCL при условиях:
Входные переменные: три типа WORD («A1», «A2», «A3»), две типа INTEGER («B1», «В2»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1*B1*A3+A2 при отрицательном сигнале на «K2» и «K1».
Билет 7
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «md5» стала равной «2,4». Используйте начальные биты памяти для переменных: 10, 15.

Написать программу на языке SCL при условиях:
Входные переменные: четыре типа WORD («A1», «A2», «A3», «A4»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1*A3+A4*A2 при отрицательном сигнале на «K1».
Билет 8
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «9». Используйте начальные биты памяти для переменных: 10, 15, 20, 30.

Написать программу на языке SCL при условиях:
Входные переменные: одна типа WORD («A1»), три типа INTEGER («B1», «B2», «B3»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1+B1+B3*B2 при отрицательном сигнале на «K1» и положительном «K2».
Билет 9
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «5». Используйте начальные биты памяти для переменных: 10, 15.

Написать программу на языке SCL при условиях:
Входные переменные: две типа WORD («A1», «A2»), две типа INTEGER («B1», «B2»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A2–B2–A1*B1+A2*A1*B2 при положительном сигнале на «K2».
Билет 10
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «8». Используйте начальные биты памяти для переменных: 10, 15, 20, 25.

Написать программу на языке SCL при условиях:
Входные переменные: две типа WORD («A1», «A2»), две типа INTEGER («B1», «B2»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = B1*B2*A2–B1–A1*B1 при положительном сигнале на «K2» и отрицательном «K1».
Билет 11
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «3». Используйте начальные биты памяти для переменных: 10, 15, 20, 25.

Написать программу на языке SCL при условиях:
Входные переменные: две типа WORD («A1», «A2»), две типа INTEGER («B1», «B2»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1–A2*B2+B1 при положительном сигнале на «K2» и «K1».
Билет 12
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «3,5». Используйте начальные биты памяти для переменных: 10, 15, 30, 25.

Написать программу на языке SCL при условиях:
Входные переменные: три типа WORD («A1», «A2», «A3»), одна типа INTEGER («B1»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A2+A1*B1–A3 при положительном сигнале на «K1» и отрицательном «K2».
Билет 13
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «md5» стала равной «11». Используйте начальные биты памяти для переменных: 10, 15.

Написать программу на языке SCL при условиях:
Входные переменные: две типа WORD («A1», «A2»), две типа INTEGER («B1», «B2»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A2*B2–A1*B1 при положительном сигнале на «K2» и отрицательном сигнале на «K1».
Билет 14
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «md5» стала равной «4,7». Используйте начальные биты памяти для переменных: 20, 25.

Написать программу на языке SCL при условиях:
Входные переменные: одна типа WORD («A1»), три типа INTEGER («B1», «B2», «B3»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = B2–B1+B3–A1 при положительном сигнале на «K1».
Билет 15
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «3,1». Используйте начальные биты памяти для переменных: 10, 15, 30, 35.

Написать программу на языке SCL при условиях:
Входные переменные: две типа WORD («A1», «A2»), две типа INTEGER («B1», «B2»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1–B1–A2*B2 при отрицательном сигнале на «K2» и «K1».
Билет 16
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «md5» стала равной «2,7». Используйте начальные биты памяти для переменных: 10, 15, 20, 25.

Написать программу на языке SCL при условиях:
Входные переменные: три типа WORD («A1», «A2», «A3»), две типа INTEGER («B1», «В2»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A2*B1*A3+A1 при положительном сигнале на «K2» и «K1».
Билет 17
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «17». Используйте начальные биты памяти для переменных: 10, 15, 30, 35.

Написать программу на языке SCL при условиях:
Входные переменные: четыре типа WORD («A1», «A2», «A3», «A4»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A2*A3+A4*A1 при отрицательном сигнале на «K2».
Билет 18
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной «9». Используйте начальные биты памяти для переменных: 10, 20, 30, 40.

Написать программу на языке SCL при условиях:
Входные переменные: одна типа WORD («A1»), три типа INTEGER («B1», «B2», «B3»), две типа BOOL («K1», «K2»).
Выходная переменная: одна типа WORD («X»).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1*B1–B3+B2 при отрицательном сигнале на «K2» и положительном «K1».
Билет 19
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной 5. Используйте начальные биты памяти для переменных: 15, 25.

Написать программу на языке SCL при условиях:
Входные переменные: 2 типа WORD (A1,A2), 2 типа INTEGER (B1,B2), 2 типа BOOL (K1,K2).
Выходная переменная: 1 типа WORD (X).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1–B2–A2*B1+A1*A2*B1 при положительном сигнале на K1.
Билет 20
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной 5. Используйте начальные биты памяти для переменных: 15, 25.

Написать программу на языке SCL при условиях:
Входные переменные: 2 типа WORD (A1,A2), 2 типа INTEGER (B1,B2), 2 типа BOOL (K1,K2).
Выходная переменная: 1 типа WORD (X).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = B1*B2*A1–B2–A2*B2 при положительном сигнале на K1 и отрицательном K2.
Билет 21
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной 3. Используйте начальные биты памяти для переменных: 10, 20.

Написать программу на языке SCL при условиях:
Входные переменные: 2 типа WORD (A1,A2,A3), 2 типа INTEGER (B1), 2 типа BOOL (K1,K2).
Выходная переменная: 1 типа WORD (X).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1*A3+A1*A2+A1*B1–A2*B1–A3*B1 при положительном сигнале на K2 и K1 не равным K2.
Билет 22
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «mw5» стала равной 15. Используйте начальные биты памяти для переменных: 10, 20, 30, 40.

Написать программу на языке SCL при условиях:
Входные переменные: 2 типа WORD (A1,A2,A3), 2 типа INTEGER (B1), 2 типа BOOL (K1,K2).
Выходная переменная: 1 типа WORD (X).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1*A3*B1- A1*A2+B1-A3 при положительном сигнале на K1 и K2 не равным K1.
Билет 23
Укажите переменные соответствующих типов данных и их значения, чтобы переменная «md5» стала равной 16. Используйте начальные биты памяти для переменных: 10, 20, 30, 40.

Написать программу на языке SCL при условиях:
Входные переменные: 2 типа WORD (A1,A2,A3), 2 типа INTEGER (B1), 2 типа BOOL (K1,K2).
Выходная переменная: 1 типа WORD (X).
Задание:
Учитывая пункты 1 и 2, реализовать условие:
X = A1*(A2-A3*B1+A2*A3) при K1 не равным K2.

Учебное издание
Захаревич Юлия Сергеевна
Руденко Олег Максимович
Стрижак Павел Александрович
КОНФИГУРИРОВАНИЕ И ПРОГРАММИРОВАНИЕ МИКРОПРОЦЕССОРНЫХ КОНТРОЛЛЕРОВ
Учебное пособие
Издано в авторской редакции
Подписано к печати 03.06.2017. Формат 60х84/16. Бумага «Снегурочка».
Печать XEROX. Заказ № 125. Тираж 100 экз.

Приложенные файлы

  • docx 23670137
    Размер файла: 3 MB Загрузок: 0

Добавить комментарий