Файл: Микропроцессорная техника систем автоматизации. Лабораторный практикум.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 25.10.2023

Просмотров: 232

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
ЛАБОРАТОРНАЯ РАБОТА № 10
ИЗУЧЕНИЕ СЛОЖНЫХ ТИПОВ ДАННЫХ. МАССИВЫ.
ЦИФРОВОЙ ВВОД ДАННЫХ С ПАНЕЛИ
ЧЕЛОВЕКО-МАШИННОГО ИНТЕРФЕЙСА
Цель работы: изучение сложных типов данных и основ использования и работы с ними в программе ПЛК.
Информация для выполнения лабораторной работы
Тип данных определяет размер элемента данных в памяти, а также то, какие именно данные он может хранить и каким образом этот элемент данных интерпретируется программой. Так, например, тип данных Int имеет размер 16 бит (2 байта).
Переменная типа Int содержит целое число, при этом старший из 16 бит определяет знак числа (“+” – если бит равен 0, и “–” – если 1), а остальные 15 бит – абсолютное значение числа. Таким образом, переменная типа Int может содержать целое число в диапазоне от –
2 15
до 2 15
– 1.
Типы данных в памяти ПЛК могут быть:
- предопределенные (стандартные), т.е. определенные и реализованные разработчиками системы программирования S7;
- пользовательские (User Datatype), размер и структура их данных определяются пользователем в процессе разработки и написания программы.
Так, тип данных Int, очевидно, относится к предопределенным типам данных.
В качестве примера пользовательского типа данных можно привести некий тип данных «Person», содержащий определенную информацию о человеке: фамилию, имя, отчество, пол, возраст, идентификационный номер. Для определения пользовательского типа данных нужно в дереве проекта выбрать ветвь
PLC_1→PLC data types→Add new data type и в появившемся рабочем окне построчно задать нужные поля, указав для каждого из них свой тип данных (табл. 30).

94
Таблица 30
Структура пользовательского типа данных «Person»
Name
(название поля данных)
Data type
(тип данных)
Default value
(значение по умолчанию)
Comment
(комментарий)
Family
String
‘’
Фамилия
Name
String
‘’
Имя
SecondName
String
‘’
Отчество
Sex
Bool
TRUE
Пол: TRUE – муж.,
FALSE – жен.
Age
Byte
0
Возраст
ID
UInt
0
Идентификационный номер
Кроме того, помимо деления на стандартные и пользовательские, по размеру и структуре типы данных могут быть простые и сложные.
К простым относятся стандартные типы данных, размер которых в памяти ПЛК не превышает 4 байт. Соответственно, к сложным относятся стандартные типы данных длиной более 4 байт и все пользовательские типы данных.
Одним из примеров сложного типа данных является описанный на стр. 56 тип DTL (date and time long), имеющий длину 12 байт и используемый для хранения и обработки данных о времени и дате.
Еще одним примером сложного типа данных, которому будет уделено основное внимание в данной лабораторной работе, является массив. Массив, или Array, представляет собой структуру данных, состоящую из некоторого фиксированного числа элементов одного типа.
Свойства типа данных Array приведены в табл. 31.
Таблица 31
Свойства типа данных Array
Длина
Число элементов × длину типа данных
Формат
Array [low limit…high limit] of
Тип данных
элементов массива
Любой, кроме Array


95
Ниже приведены несколько примеров определения массивов:
Array [1..20] of Real – одномерный массив из 20 элементов вещественного типа;
Array [– 5..5] of Int – одномерный массив из 11 элементов целочисленного типа;
Array [1..2,4..6] of Char – двумерный массив из 6 элементов символьного типа.
Обращение к отдельно взятому элементу массива при чтении или записи в него данных выполняется по его номеру (или индексу).
Например, a[3] означает элемент массива a под номером 3.
Создание массивов
Так как массив относится к сложным типам данных, то его нельзя создать в таблице описания переменных ПЛК. В таблице переменных ПЛК можно определять только глобальные переменные ПЛК простых типов данных. Для создания же массива в памяти ПЛК его следует определить либо в отдельно взятом глобальном блоке данных DB, либо внутри одного из остальных кодовых блоков – организационного блока OB, функционально блока FB или функции FC.
В качестве примера определим в памяти ПЛК массив с именем
V беззнаковых целых чисел (типа UInt), содержащий 8 элементов с номерами от 1 до 8. Для этого в дереве проекта следует выбрать ветвь PLC_1→Program blocks→Add new block – добавление нового программного блока. В появившемся диалоговом окне следует выбрать тип добавляемого программного блока – Data block и
Global DB, указать символьное имя блока (или оставить предложенное по умолчанию). Далее внутри созданного блока данных необходимо определить новую переменную – массив, указав его имя (в столбце Name), тип элементов и диапазон их номеров (в столбце Data type). Активировав триггерную кнопку
(поставив «галочку») в столбце Retain, можно обеспечить автоматическое сохранение данного массива в энергонезависимой памяти ПЛК в случае сбоя напряжения питания и непредвиденного отключения ПЛК. При восстановлении питания сохраненные значения элементов массива будут автоматически восстановлены.
Слева от имени массива имеется пиктограмма в виде маленького черного треугольника, направленного вправо. Щелкнув по нему левой кнопкой мыши, можно развернуть полный список элементов массива, для каждого из которых при необходимости можно указать в столбце Start value начальное значение, которое будет иметь этот элемент в начале работы программы ПЛК.

96
Далее в качестве примера работы с массивами рассмотрим задачу нахождения суммы всех элементов созданного массива.
Результат суммирования нужно сохранить в отдельной переменной
VSum типа UInt, которую можно определить как в таблице глобальных переменных ПЛК (в M-области памяти), так и в созданном уже блоке данных, в котором определен сам массив.
Последуем второму варианту и определим переменную VSum в блоке данных.
В простейшем случае программный код для нахождения суммы элементов массива может быть размещен в главном организационном блоке программы Main [OB1] и будет иметь следующий вид.
Код программы нахождения суммы элементов массива "Data_block_1".VSum := 0;
FOR #i := 1 TO 8 DO
// Statement section FOR
"Data_block_1".VSum := "Data_block_1".VSum +
"Data_block_1".V[#i];
END_FOR;
В коде программы использован оператор FOR…TO…DO… для организации цикла, который находится на вкладке
Instructions→Basic instructions→Program control operations.
В качестве альтернативного варианта рассмотрим случай, когда суммирование элементов массива выделено в отдельную пользовательскую функцию, для которой сам массив служит входным параметром. Для добавления функции в проект программы в дереве проекта выберем ветвь добавления нового программного блока PLC_1→Program blocks→Add new block. На этот раз тип блока следует указать как Function, язык программирования – SCL, имя блоку присвоим FindArrraySum.
Входным параметром (Input) данной функции укажем параметр IN типа Array [1..8] of UInt. В качестве выходного (Output) укажем параметр с OUT типа UInt. В числе промежуточных переменных
(Temp) данной функции укажем целочисленную переменную i, которая будем содержать значение индекса элемента массива при обращении к нему. Тогда программный код функции
FindArrraySum будет иметь вид.


97
Код программы функции FindArraySum нахождения суммы элементов массива
#OUT := 0;
FOR #i := 1 TO 8 DO
// Statement section FOR
#OUT := #OUT + #IN[#i];
END_FOR;
В данном случае мы пока что описали лишь прототип функции
FindArraySum, т. е. указали ее входные и выходные параметры, а также действия, которые она производит. Теперь, чтобы вычислить сумму созданного нами массива V, необходимо в главном организационном блоке программы Main [OB1] выполнить вызов функции FindArraySum. Для этого блок FindArraySum нужно из дерева проекта мышью перетащить в нужное место блока
Main [OB1] и далее в качестве параметра IN указать массив "Data_block_1".V, а в качестве параметра OUT – переменную "Data_block_1".VSum.
Код вызова функции FindArraySum в главном блоке программы
Main [OB1]
"FindArraySum"(IN:="Data_block_1".V,
OUT=>"Data_block_1".VSum);
Цифровой ввод данных с панели человеко-машинного
интерфейса
Для отображения и ввода числовых данных с панели человеко- машинного интерфейса предназначен компонент I/O field, расположенный на вкладке Toolbox→Elements в виде пиктограммы
. Основные свойства для настройки данного компонента сгруппированы в окне инспектора свойств объекта Properties на вкладке General. В поле Process→Tag необходимо указать переменную из памяти контроллера либо HMI панели, значение которой будет связано с данным компонентом. Нажав маленькую пиктограмму с тремя точками
, можно указать путь к нужной переменной в появившемся окне задания пути. В поле Type→Mode задается тип элемента: Output – вывод текущего значения на экран,
Input/output – вывод текущего и ввод нового значения переменной

98 вручную, Input – ввод значения переменной. В поле Format можно задать требуемый формат отображения данных – задать число десятичных знаков, число знаком после запятой и др.
Порядок выполнения лабораторной работы
В процессе выполнения лабораторной работы для закрепления полученных сведений об использовании массивов в программе
ПЛК необходимо создать в среде TIA Portal новый проект.
В данном проекте нужно добавить контроллер Simatic S7-1200
(см. стр. 19). В памяти ПЛК нужно определить массив целых чисел типа UInt, состоящий из 8 элементов с номерами от 1 до 8, а также реализовать в виде отдельных пользовательских функций
- вычисление суммы элементов массива,
- нахождение максимального значения его элементов,
- нахождение минимального значения его элементов.
Для хранения результатов суммирования, максимального и минимального значений определить отдельные переменные типа UInt.
Далее необходимо добавить в проект сенсорную панель оператора, на экране которой организовать ввод и отображение значений элементов массива, а также отображение суммы, максимального и минимального значений его элементов.
Использовать для этого графический компонент I/O field.
Содержание отчета
1. Название и цель работы.
2. Формат определенного в памяти ПЛК массива.
3. Программный код функций определения максимального и минимального значений элементов массива.
4. Выводы.
Контрольные вопросы
1. В чем состоит отличие простых и сложных типов данных?
2. Что называется массивом?
3. В каких областях памяти ПЛК может быть определен массив?
4. Каков принцип действия оператора FOR…TO…DO..?


99
ЛАБОРАТОРНАЯ РАБОТА № 11
ИЗУЧЕНИЕ МЕТОДОВ ОТЛАДКИ ПРОГРАММ ПЛК
Цель работы: изучение методов отладки и тестирования программ ПЛК.
Информация для выполнения лабораторной работы
Светодиоды состояния
ЦПУ и модули вода/вывода используют светодиоды для предоставления информации о рабочем состоянии модуля или входов/выходов. У ЦПУ имеются следующие индикаторы состояния:
· STOP/RUN
- Постоянно горящий оранжевый свет указывает на состояние
STOP.
- Постоянно горящий зеленый свет указывает на режим RUN.
- Мигающий (попеременно зеленый и оранжевый) указывает, что ЦПУ находится в состоянии запуска.
· ERROR
- Мигающий красный указывает на ошибку, например, внутреннюю ошибку в ЦПУ, ошибку карты памяти или ошибку конфигурирования (несогласованные модули).
- Постоянно горящий красный указывает на неисправность аппаратуры.
· MAINT (обслуживание) мигает всякий раз, как вы вставляете карту памяти. Затем CPU переходит в состояние STOP. После того как ЦПУ перешел в состояние STOP, выполните одно из следующих действий, чтобы инициировать анализ карты памяти:
- Переведите ЦПУ в режим RUN.
- Выполните полное стирание памяти (MRES).
- Выключите ЦПУ и включите его снова.
ЦПУ предоставляет также два светодиода, которые указывают состояние связи через PROFINET. Откройте нижнюю крышку клеммного блока, чтобы увидеть светодиоды PROFINET.

100
- Link [соединение] (зеленый) включается, чтобы показать, что соединение выполнено успешно.
- Rx/Tx (желтый) включается, чтобы показать активность передачи.
ЦПУ и каждый цифровой сигнальный модуль (SM) имеют по одному светодиоду канала ввода/вывода для каждого из цифровых входов и выходов. Светодиод канала ввода/вывода (зеленый) включается или выключается, чтобы показать состояние отдельного входа или выхода.
Кроме того, каждый цифровой SM имеет светодиод DIAG, который указывает состояние модуля:
- Зеленый указывает, что модуль готов к работе.
- Красный указывает, что модуль неисправен или не готов к работе.
Каждый аналоговый SM имеет по одному светодиоду канала ввода/вывода для каждого из аналоговых входов и выходов.
- Зеленый указывает, что канал сконфигурирован и активен.
- Красный указывает на состояние ошибки отдельного входа или выхода.
Кроме того, каждый аналоговый SM имеет светодиод DIAG, который указывает состояние модуля:
- Зеленый указывает, что модуль готов к работе.
- Красный указывает, что модуль неисправен или не готов к работе.
Таблицы наблюдения для контроля программы пользователя
Таблица наблюдений позволяет осуществлять функции контроля и управления в информационных точках, когда ЦПУ выполняет вашу программу (рис. 24). Этими информационными точками могут быть элементы образа процесса (I или Q), физические входы или выходы (I_:P или Q_:P), M или DB в зависимости от функции контроля и управления.
Функция контроля не изменяет процесс исполнения вашей программы. Она снабжает вас информацией об исполнении программы и данных программы в ЦПУ. Функции управления позволяют пользователю управлять последовательностью исполнения и данными программы. При использовании функций


101 управления следует соблюдать осторожность. Эти функции могут существенно влиять на исполнение пользовательской или системной программы. Этими тремя функциями являются изменение, принудительное задание и разблокирование выходов в состоянии STOP.
С помощью таблицы наблюдения вы можете выполнять следующие онлайновые функции:
- контроль состояния переменных;
- изменение значений отдельных переменных;
- принудительное присваивание переменной определенного значения.
Для создания таблицы наблюдения:
1. Дважды щелкните на "Add new watch table [Добавить новую таблицу наблюдения]", чтобы открыть новую таблицу наблюдения.
2. Введите имя переменной, чтобы добавить переменную в таблицу наблюдения.
Рис. 24. Добавление в проект таблицы наблюдения
Для контроля переменных имеются следующие возможности:
- Monitor all [Контролировать все]: Эта команда запускает контроль видимых переменных в активной таблице наблюдения.
- Monitor now [Контролировать теперь]: Эта команда запускает контроль видимых переменных в активной таблице наблюдения.

102
Таблица наблюдения выполняет контроль переменных немедленно и только один раз.
Для изменения переменных имеются в распоряжении следующие возможности:
- "Modify to 0 [Изменить на 0]" устанавливает значение выбранного адреса в "0".
- "Modify to 1 [Изменить на 1]" устанавливает значение выбранного адреса в "1".
- "Modify now [Изменить сейчас]" немедленно изменяет значение выбранных адресов на время одного цикла.
- "Modify with trigger [Инициирование изменений]" изменяет значение выбранных адресов. Эта функция не обеспечивает обратной связи, чтобы показать, что выбранные адреса были действительно изменены. Если требуется ответная реакция на изменения, используйте функцию "Modify now [Изменить сейчас]".
- "Enable peripheral outputs [Разблокировать периферийные выходы]" деактивизирует команду на блокировку выходов и имеется в распоряжении только тогда, когда ЦПУ находится в состоянии STOP.
Порядок выполнения лабораторной работы
Для закрепления полученных сведений о программных инструментах отладки и тестирования пользовательских программ
ПЛК необходимо выполнить отладку и тестирование программы управления водогрейным котлом, разработанной при выполнении лабораторной работы № 2 (стр. 36–39). Для этого следует открыть сохраненный ранее на диске проект TIA Portal, созданный при выполнении лабораторной работы № 2. В открытом проекте следует добавить таблицу наблюдения, в которую, в свою очередь, необходимо добавить все используемые в проекте переменные.
Загрузить программу в ПЛК, затем установить онлайн соединение с ПЛК и в режиме RUN протестировать правильность исполнения пользовательской программы путем изменения в таблице наблюдения значений всех входных переменных и просмотра значений сигналов на дискретных выходах.