МУ_Проектирование распределенных систем управления 04.09.2023
.pdfЛабораторная работа № 5. Конфигурирование входных и выходных данных контроллера
Цель работы: ознакомление с принципом работы входных и выходных модулей.
Содержание работы
1.Использование области ввода и вывода, запись переменных и блоков
втаблицу символов.
2.Программирование блока OB1 на языке SCL.
3.Загрузка аппаратной конфигурации в PLC. Подтверждение отсутствия ошибок на PLC и модуле расширения.
Общие сведения Два способа создания программ
ВStep7 существует два способа создания программ: с помощью исходных файлов и добавлением блоков.
Вслучае создания программы путем написания исходных файлов ("source-oriented") Вы должны создать одну или несколько исходных программ и сохранить их в виде файлов в каталоге Source Files (Исходные файлы). Исходные программы - это текстовые файлы формата ASCII,
которые содержат операторы программы для одного или нескольких блоков, возможно даже целиком всю программу. Вы должны скомпилировать исходные программы; скомпилированные блоки программы помещаются в каталог Blocks (Блоки). Скомпилированные блоки содержат код MC7 и выполняются в S7 CPU.
Вслучае создания программы "инкрементным" путем ("incremental"),
-методом добавления - Вы вводите программу блок за блоком. Вводимые блоки немедленно проверяются на наличие синтаксических ошибок. При поступлении команды на сохранение блок сначала компилируется, затем сохраняется в каталоге Blocks (Блоки). При создании программы данным методом Вы можете также редактировать блоки в интерактивном (online) режиме в CPU, даже во время рабочего режима.
81
В данной работе будет использоваться способ создания программ с помощью исходных файлов.
Блоки
Организационные блоки OB (Organization blocks). Этот тип блоков служит своеобразным интерфейсом между операционной системой и пользовательской программой. Операционная система CPU вызывает организационные блоки при возникновении особого события, например, аппаратного прерывания или прерывания времени суток. Главная программа находится в организационном блоке OB 1. Остальные организационные блоки имеют постоянные назначенные номера, основанные на событиях, для обработки которых они вызываются. Например, блок OB1 имеет самый низкий приоритет, и в нем исполняется основная программа, а блок OB33 служит для аппаратного прерывания раз в 500 мс.
Функции FC (Functions)
Функции используются для программирования часто повторяющихся или сложных функций автоматики (automation functions). Функциям могут назначаться параметры. Функции могут возвращать значение (значение вызванной функции) в вызывающий блок. Причем значение функции - необязательный параметр. Кроме функционального значения
функция может иметь другие выходные параметры. Функции не сохраняют информацию и не имеют назначенных блоков данных.
Блоки данных DB (Data blocks)
Эти блоки содержат данные Вашей программы. Программируя блоки данных, Вы определяете, в какой форме данные будут сохраняться (в котором блоке, в каком порядке и с каким типом данных). Существует два способа использования блоков данных: как блоки глобальных данных (global data blocks) и как экземплярные блоки данных (instance data blocks). Блоки глобальных данных в пользовательской программе
являются, как говорится, "свободными" ("free") блоками данных и не назначаются кодовому блоку. Экземплярные блоки данных, однако, назначаются функциональному блоку и сохраняют часть локальных данных этого функционального блока.
Максимальное число для каждого типа блоков и размер этих блоков определяются типом CPU. Число организационных блоков и их номера фиксированы; они назначаются операционной системой CPU. Блокам других типов Вы можете самостоятельно назначать номера внутри определенных пределов. Также Вы можете выбрать для каждого блока имя (символ) в таблице символов, с тем, чтобы ссылаться на блок по символьному имени.
Язык SCL
82
Язык SCL оптимизирован для программирования программируемых контроллеров (PLC). SCL содержит в себе элементы языка Паскаль (Paskal) наряду с типичными для PLC элементами, такими, например, как "вход" ("input") и "выход" ("output").
SCL особенно подходит для программирования сложных алгоритмов или для задач, относящихся к области управления данными. Язык SCL поддерживает характерную для STEP 7 блочную структуру, а также позволяет создавать S7-программы, включающие в себя фрагменты на базовых языках программирования STL, LAD и FBD.
Таблица символов
В управляющей программе Вы имеете дело с адресами, т.е. с входами, с выходами, таймерами и блоками. Вы можете назначать абсолютные адреса (например, I1.0) или символьные адреса (например, Start signal [сигнал запуска]). При символьной адресации используются символьные имена. Это делает программу легко читаемой.
При использовании символьной адресации различаются локальные (local) и глобальные (global) символы (символьные имена). Локальный (local) символ распознается только в блоке, в котором они определены (в структурах VAR … END_VAR). Поэтому при необходимости Вы можете использовать одинаковые локальные символьные имена в различных целях в разных блоках. Глобальный символ распознается в любом месте программы и имеет одинаковое значение во всех блоках программы. Вы должны определить глобальный символ в таблице символов (объект Symbols в каталоге S7 Program). Глобальный символ начинается с символа алфавита и может иметь в длину до 24 символов. В таблице символов Вы можете назначать имена следующим адресам и объектам:
•Входам I, выходам Q, периферийным входам PI и выходам PQ
•Меркерам M, таймерам T и счетчикам C
•Блокам кодов OB, FB, FC, SFC, SFB и блокам данных DB
•Типам данных, определенным пользователем, UDT
•Таблице переменных VAT
Например, чтобы обозначить символически дискретные входы в проекте на рис 3.3, HWConfiguration, нужно использовать байты 0 и 1 области входов.
Таблица 3.1
83
Symbol |
Address |
Data Type |
Comment |
|
|
|
|
Input_DI1 |
I0.0 |
BOOL |
Дискретный вход 1 |
|
|
|
|
Input_DI2 |
I0.1 |
BOOL |
Дискретный вход 2 |
|
|
|
|
Input_DI16 |
I1.7 |
BOOL |
Дискретный вход 16 |
|
|
|
|
Output_AO1 |
QW 512 |
WORD |
Аналоговый выход 1 |
|
|
|
|
Output_AO2 |
QW 514 |
WORD |
Аналоговый выход 2 |
|
|
|
|
Рис. 3.3. Области ввода-вывода При создании блоков программы также удобнее назначать символьные
адреса. Ниже приведен пример назначения символьных имен. Таблица 3.2
Symbol |
Address |
Data Type |
Comment |
|
|
|
|
|
|
||
DGI |
DB 1 |
DB 1 |
Блок входных дискретных данных |
||
|
|
|
|
||
ANI |
DB 2 |
DB 2 |
Блок входных аналоговых данных |
||
|
|
|
|
||
Minim_val |
FC 11 |
FC 11 |
Функция сравнения двух величин |
||
|
|
|
|
|
|
Read_AI |
FB 20 |
FB 20 |
Функциональный блок |
для |
чтения |
|
|
|
аналоговой величины |
|
|
|
|
|
|
|
|
Reading_AI |
FB 100 |
FB 100 |
Функциональный блок |
для |
вызова |
|
|
|
блока FB 20 |
|
|
|
|
|
|
||
Reading_AI_DB |
DB 10 |
FB 100 |
Связанный с FB100 блок данных для |
||
|
|
|
хранения данных |
|
|
|
|
|
|
|
|
Создание программы
Выделите раздел Sources [Исходные программы] и затем выберите опции меню: Insert -> SCL Source (Вставка -> Исходная программа SCL) (такая опция меню будет доступна для использования, только в том случае, если Вы установили SCL в своей системе). Теперь Вы можете переименовать вставленный объект SCL Source(1). Дважды щелкнув кнопкой мыши на этом
84
объекте, вызовите редактор SCL-программ, который отобразит при открытии на экране монитора "пустой" исходный SCL-файл. Теперь Вы можете вводить SCL-программу.
Рис. 3.4. Создание программы с использованием редактора SСL Program
Editor.
Простой способ создания нового блока возможен при использовании опций меню: Insert -> Block Template -> OB (Вставка -> Шаблон блока -> OB), а также Вы можете вставить готовые программные структуры в исходный программный файл в позиции курсора.
Организационные блоки
Организационные блоки обрабатываются циклически. Период и приоритет обработки определяется номером организационного блока. Главная программа располагается в организационном блоке ОВ1, он
используется практически во всех пользовательских программах. После завершения выполнения ОВ1, что соответствует окончанию выполнения программы, CPU возвращает управление в операционную систему и после
85
вызова различных функций операционной системы, таких как обновление отображений процесса, вновь вызывает для выполнения ОВ 1.
Компиляция
Программирование на SCL ориентировано на создание исходных блоков программы в папке Blocks после компиляции файлов в папке Sources.
Для компиляции необходимо нажать на иконку
в редакторе SCL или нажмите Ctrl+B.
Порядок выполнения работы
1.Конфигурирование проекта
(См. предыдущую работу)
2.Создание таблицы символов
В таблице символов уже имеются алгоритмические имена из предыдущей работы.
Требуется добавить в таблицу 4 блока данных для хранения дискретных и аналоговых, входных и выходных данных. В дальнейшем в нее добавляются новые создаваемые блоки и осуществляется связь между алгоритмическими именами и адресами.
3.Создание блоков данных
Создать блоки данных для считывания входных и записи выходных сигналов, дискретных и аналоговых. Для этого
a.Создать файл SCL в Simatic Manager - > S7 Program -> Sources ->
правой кнопкой мыши создать новый SCL файл, назвать его содержательным именем и открыть двойным щелчком (открыть редактор SCL).
b.Вызвать шаблон блока через строку меню Insert -> Block Template -> DB
c.Дать имя блокам, заменить DBxxx на символьные имена, заданные в таблице символов для блоков. Теперь для заполнения тела блоков нужно создать простой конфигуратор Excel.
Откройте файл excel, в нем надо создать 4 листа для каждого типа сигнала. Определить назначение и функционал каждого столбца (номер сигнала, алгоритмическое имя (для использования в программе), тип данных (bool или word), Название переменной.
86
Добавить столбцы для автоматической записи переменных в блок данных в формате
«Алгоритмическкое_имя»_: тип_данных; // Название переменной, комментарий.
Создать автоматическое заполнение для каждой ячейки, скопировать результат в блоки между Struct и End_Struct. Скомпилировать блоки, убедиться в отсутствии ошибок.
4.Создание программы чтения данных по условию «Читать данные»
Необходимо создать программу чтения данных по условию «Читать данные».
a.Дать имя функции FC в таблице символов.
b.Вызвать шаблон функции в редакторе SCL, переименовать ее заданным именем.
c.Создать переменную для условия и блок данных для нее (например, разрешение чтения, «Read_perm»).
Чтобы записать переменную transmit в переменную receive, хранящиеся в той же программе (объявленные в var), нужно записать:
Receive := transmit;
Чтобы обратиться к переменной, хранящейся в другом блоке, например, в блоке данных, надо записать имя блока, затем точка, затем имя переменной. Например,
Data.volume1 – обращение к переменной volume1, хранящейся в блоке DB с именем Data.
d.Разработать программу чтения входных данных из области I в блоки данных входных сигналов, дискретных и аналоговых, по условию: если есть разрешение, осуществить чтение данных, иначе ничего не делать. Отсутствие разрешения на чтение позволяет в дальнейшем использовать программы-симуляторы датчиков и оборудования для тестирования логики программы управления технологическим процессом.
Для этого использовать следующий формат условного оператора
IF:
IF <условие выполнения> then
87
<действия для IF>; Else // не обязательно
<действия для else>; End_if;
Скомпилировать блок, убедиться в отсутствии ошибок.
5.Создание программы запись данных по условию «Писать данные»
a.Дать имя функции FC в таблице символов.
b.Вызвать шаблон функции в редакторе SCL, переименовать ее заданным именем.
c.Создать переменную для условия и блок данных для нее (например, разрешение чтения, «Write_perm»).
d.Разработать программу записи выходных данных (команд) в область Q из блоков данных выходных сигналов, дискретных и аналоговых, по условию: если есть разрешение, осуществить запись данных, иначе обнулить команды (отключить механизмы). Отсутствие разрешения на запись позволяет в
дальнейшем проводить безопасно пуско-наладочные работы. Скомпилировать блок, убедиться в отсутствии ошибок.
6. Создание программы в OB1
Создайте SCL-файл (см. «Создание программы»), осуществите в нем вызов блока OB1. Для этого в шаблоне организационного блока необходимо символы xxx заменить на 1. Получится запись
«ORGANIZATION_BLOCK OB1».
Далее необходимо осуществить запись параметра аналогового выход а из Вашего списка по варианту (выбрать любой из пяти) в зоне « Statement» (любое значение типа word):
88
Создайте организационный блок данных и осуществите вызов созданных функций в нем по формату:
«Имя_функции»(); Затем необходимо скомпилировать программу и убедиться в
отсутствии ошибок.
4.Проверка правильности работы
Теперь нужно загрузить программу в контроллер или симулятор
PLCSIM.
В отсутствии проекта визуализации проверку рационально проводить с помощью VAT-таблицы. Она создается в папке Blocks. После открытия таблицы необходимо заполнить ее необходимыми переменными в поле Symbol (символьные имена).
Для мониторинга переменных нужно нажать на кнопку |
. |
|
Для записи значений переменных в поле Modify Value (изменить |
||
значение) вводится необходимое значение, затем записывается кнопкой |
. |
|
Подключите блоки данных онлайн к контроллеру аналогично тому, как сделано в VAT.
Проверьте значения переменных в блоках данных при различных условиях.
89
Чтение из области входов I
Разрешение |
0 |
|
Область I |
0 |
Любое значение |
DB |
||
|
|
|
|
|
||||
чтения |
|
|
Н1 включен |
|
|
|
Н1 включен |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
Любое значение |
|
|
|
|
1 |
|
|
0 |
0 |
|
|
|
|
|
Область I |
|
DB |
|||
|
|
|
|
|
|
|||
|
|
|
|
Н1 включен |
|
|
|
Н1 включен |
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
Запись в область выходов Q
Разрешение |
0 |
|
|
|
0 |
0 |
|
|
|
|
|
|||||
DB |
|
|
|
Q |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
записи |
|
|
|
|
|
Включить Н1 |
|
|
|
|
|
|
Включить Н1 |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
||
|
|
|
1 |
|
|
|
|
0 |
0 |
|
|
|
|
|
||
|
|
|
|
|
DB |
|
|
|
|
Q |
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
Включить Н1 |
|
|
|
|
|
|
Включить Н1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
1 |
|
|
|
|
|
|
5.Вывод
Сделать вывод о корректности работы программы и причине и необходимости промежуточного чтения и записи данных из областей ввода и вывода в блоки данных.
Лабораторная работа №6. Разработка программы преобразования аналогового сигнала
Цель работы: получение навыков разработки программного блока
FB.
90
