Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программное обеспечение для систем автоматизации технологических процессов (лабораторный практикум и конспект лекций) для студентов специальности 2202
.pdf
Лабораторная работа № 6
Тема: СЧЕТЧИКИ ИМПУЛЬСОВ
Цель работы: изучить принцип работы различных типов счетчи-
ков с использованием ручной и автоматической подачей на вход
счетных импульсов.
Используемое оборудование: компьютеры с ОС не ниже Windows 7,
программным пакетом STEP7 V5.5 для программирования контроллеров
серии Siemens Simatic S7-300, симулятором S7-PLCSIM.
Теоретические сведения. Счетчики импульсов применяются для
подсчета количества импульсов, поступающих с датчиков, и пересчета их в требуемые физические единицы измерения путем умножения на заданный множитель, для подсчета суммарной выработки
за какую-либо единицу времени; управления исполнительными механизмами и т.д.
В контроллере Siemens счетчики позволяют использовать его CPU
в вычислительных задачах. Область счета охватывает диапазон от
до 999. Счетчики находятся в системной памяти CPU. Количест-
000
во счетчиков определяется версией CPU [5].
В пакете STEP7 имеются следующие типы счетчиков:
- S_CUD –
- S_CU –
- S_CD –
Они расположены в папке «Counter» в блоке, где пишется программа. Счетчики имеют:
пять входов:
и CD – входы прямого и обратного счета соответственно в
CU
формате BOOL;
и R – входы установки и сброса соответственно в формате
S
BOOL;
вход предустановки, поддерживающий тип данных WORD;
PV–
и три выхода:
CV, CV_BCD –
десятичном представлении соответственно типа WORD;
состояние счетчика в формате данных BOOL.
Q –
счетчик прямого и обратного счета (реверсивный);
счетчик прямого счета (счетчик на сложение);
счетчик обратного счета (счетчик на вычитание).
текущее состояние счета в двоичном и двоично-
41

Когда значение на входе CU меняется с «0» на «1», счетчик увеличивает свое состояние на единицу в случае, если это счетчик прямого счета или реверсивный. При достижения границы 999 счетчик
больше не изменяет своего состояния. Если значение на входе CD
меняется с «0» на «1», счетчик уменьшает свое состояние на единицу
в случае, если это счетчик обратного счета или реверсивный. При
достижения границы 000 данный счетчик больше не изменяет своего
состояния. Импульсы на входе CU и CD можно подавать как в ручном, так и в автоматическом режиме.
Значение предустановки счетчика задается на входе PV в формате
константы С#[значение предустановки], например, С#25.
Если значение на входе S меняется с «0» на «1», счетчик принимает значение, заданное на входе PV. Поданная на входе R логическая «1» сбрасывает счетчик в 0.
Если состояние счетчика CV или CV_BCD больше 0, то на выходе Q будет логическая единица, иначе, если счетчик находится в 0, на
выходе Q также будет 0.
4. Пример
Написать
программу на STEP7, которая реализует работу счетчи-
ка на сложение с коэффициентом счета равным 10, автоматической
подачей на вход тактовых импульсов. Условие: как только счетчик
досчитает 10, он обнуляется на период следования импульсов, а затем вновь запускается и опять считает до 10 и т.д.
Для решения указанной задачи можно применить один из генератор тактовых импульсов, реализованных в лабораторной работе 5,
соединив его выход со входом CU счетчика на сложение. Период
следования импульсов генератора выберем равным 1 с. Двоичный
выход счетчика соединен со входом установки таймера Т3 задержки
включения на 10 с. Выход этого таймера соединен со входом установки расширенного импульсного таймера Т2, сбрасывающего счетчик в 0 на 1 с. Реализация счетчика на сложение в STEP7 показана на
рис. 6.1. Наблюдать за результатами исполнения программы можно
непосредственно в ОВ1, запустив CPU в режим RUN и нажав на
кнопку «Monitor» в ОВ1.
42

Рис. 6.1. Программная реализация счетчика импульсов с автоматической подачей
на вход тактовых импульсов
5. Задание
Реализовать
в проекте Simatic Manager в соответствии со своим
вариантом задания программу для контроллера, к которому подключены два датчика и 3 входа, сигнализирующих о неисправности, по
следующему алгоритму работы: при наличии неисправности хотя бы
на одном из входов и равенстве сигналов с датчиков счетчик автома-
43

тически считает в прямом направлении. Если величины с датчиков
не совпадают и неисправностей нет, счетчик производит обратный
отчет. Если неисправность касается сразу трех входов, счетчик принимает состояние предустановки. Номер варианта задания определяется номером записи фамилии студента в журнале преподавателя.
Параметры генератора импульсов Т
, tги взять в табл. 6.1 лаборатор-
ги
ной работы 5. Значение для предустановки счетчика выбрать произвольно.
6. Домашнее задание
Ознакомиться
с основными теоретическими сведениями.
Подготовиться по контрольным вопросам к защите лабораторной
работы.
7. Содержание отчета
• Титульный лист.
•
Наименование и цель работы.
Краткие теоретические сведения.
•
Исходные данные индивидуального задания.
•
Таблицы конфигурации аппаратуры, таблица символов.
•
Схема программируемого счетчика, реализованного в пакете
•
STEP7.
Выводы.
•
8. Контрольные вопросы
1. Назовите основные типы счетчиков, используемых при про-
граммировании ПЛК Siemens.
2.
Как можно организовать на счетчике генератор ступенчато из-
меняющегося напряжения?
3.
Можно ли организовать счетчик импульсов на таймерах?
4.
Что происходит со счетчиком при переполнении?
Назовите способы сброса счетчика в нулевое состояние?
5.
44

Лабораторная работа № 7
Тема: СЛОЖНЫЕ ТИПЫ ДАННЫХ
1. Цель работы: научиться создавать блоки данных со структурой и массивами, производить адресацию переменных этих блоков и
операции над ними.
2. Используемое оборудование: компьютеры с ОС не ниже Win-
dows 7,
троллеров серии Siemens Simatic S7-300, симулятором S7-PLCSIM.
сложные типы данных [5]:
DATE_AND_TIME
01
тер. При объявлении строки в квадратных скобках указывается ее
длина STRING[длина]. Пример, STRING[5]. Если не определять длину строки, опустив квадратные скобки со значением длины строки,
то редактор будет использовать максимальную длину (254 байта).
Переменная типа STRING занимает памяти на два байта больше, чем
объявленная максимальная длина строки. Значение строки указывается в одинарных кавычках, например, 'Motor'.
вают одномерные и многомерные. Наибольшая размерность массива
равна 6.
во ARRAY[1..N], где N – максимальное количество элементов в массиве, например ARRAY[1..5]. Значение элементов массива указывается через запятую: 0.1, 0.2, 4.55, 8.1, 10.21. Если некоторые элементы массива повторяются, то можно перед круглыми скобками указать число повторения, а в скобках повторяющуюся последовательность: 0.1, 0.2, 3(4.55).
разделяются запятыми: ARRAY[1..5,1..2]. Его значения в этом случае
также разделяются запятыми. При этом данные считываются сле-
программным пакетом STEP7 V5.5 для программирования кон-
3. Теоретические сведения. STEP7 поддерживает следующие
1)
дата и время;
2)
строка;
3)
массив;
4)
структура.
Дата и время объявляется в программе как тип данных
или DT. Например, дату 08.04.2014 и время 15 ч
мин 45 сек 500 мс представляют как DT#2014-4-8-15:01:45.500.
Строка представляет строку символов, содержащую до 254 ли-
Массив – это тип данных, имеющих одно имя и тип. Массивы бы-
При объявлении одномерного массива указывается ключевое сло-
Если массив многомерный, то элементы каждого «измерения»
45

дующим образом. Например, если элементам массива присвоены значения 0.1, 0.2, 4.55, 8.1, 10.21, 11.0, 11.02, 1.0, 5.5, 5.7, то 1-й элемент
ARRAY[1,1]=0.1, 24-
й – ARRAY[2,2]=8.1, 5-й – ARRAY[3,1]=10.21, 6-й – ARRAY[3,2]=11.0,
7-
й –ARRAY[4,1]=11.02, 8-й – ARRAY[4,2]=1.0, 9-й – ARRAY[5,1]=5.5,
10-
й – ARRAY[5,2]=5.7. При объявлении массива необходимо ука-
й – ARRAY[1,2]=0.2, 3-й – ARRAY[2,1]=4.55,
зывать тип элементов массива.
Структура представляет собой фиксированное число элементов
разного типа. Объявляется ключевым словом STRUCT.
Все рассмотренные выше типы данных объявляются в экземплярном блоке данных (Instanse Block), назначенном функциональному
блоку, или общем блоке данных (Shared Block). Если данные объявляются в Instanse Block, то следует предварительно их объявить в
таблице деклараций функционального блока. Пример объявления
сложных типов данных в функциональном блоке и назначенном ему
блоке данных показаны на рис. 7.1, рис. 7.2 соответственно.
Рис. 7.1. Пример объявления сложных типов данных в функциональном блоке
Рис. 7.2. Объявления сложных типов данных в экземплярном блоке данных
46

В таблице блока данных (см. рис. 7.2) можно увидеть адреса, занимаемые отдельными элементами массива и структуры, а также
начальные Initial value и текущие Actual value значения всех переменных.
Если в таблице деклараций (см. рис. 7.1) щелкнуть на слове
STRUCT,
(
рис. 7.3).
то появится новое окно, где задаются элементы структуры
Рис. 7.3. Состав структуры данных STRUCT
Сложные типы данных объявляются также в составе одной структуры, которая начинается словом STRUCT и заканчивается словами
END_STRUCT.
Для этого нужно создать Shared Block. В этом же
блоке можно объявлять и простые типы данных. При этом под словом ARRAY при объявлении массива обязательно нужно писать тип
данных, которые поддерживают элементы массива. Пример показан
на рис. 7.4. В поле Address отображаются адреса младшего бита, с
которого начинаются данные, а под объявлением массива тип данных элемента массива. Знак *2 означает, что каждый элемент массива занимает 2 байта информации.
Рис. 7.4. Объявление структуры в Shared Block
47

Обращение к сложному типу данным осуществляется через ANYуказатель. Например, если данные хранятся в блоке DB1, то доступ к
ним можно получить следующим образом:
DB1.DBX x.y –
DB1.DBB x –
DB1.DBW x –
бит данных в блоке данных DB1;
байт данных х в блоке данных DB1;
слово данных в блоке данных DB1, х – адрес млад-
шего байта;
DB1.DBD x –
двойное слово данных в блоке данных DB1, х – адрес
младшего байта.
Для таблицы на рис. 7.4 обращение к переменной DB_VAR записывается как DB1.DBW 0.
Доступ к элементам массива или структуры, вложенной в блок
данных, можно получить аналогичным образом. Например, обращение
к первому элементу массива ARRAY1[1] блока на рис. 7.2 будет иметь
вид DB1.DBD 256, к элементу массива ARRAY2[2,2] – DB1.DBW 298.
Доступ ко второму элементу структуры STRUCT1.OUT2 (рис. 7.2) будет выглядеть как DB1.DBX 285.0 в соответствии с распределением
адресов в таблице блока.
Если включить симулятор PLCSIM и в блоке данных Shared Block
(
рис. 7.4), где расположена структура, щелкнуть на значок , то
можно увидеть подробную адресацию всех переменных структуры,
включая каждый элемент массива (рис. 7.5). Исходя из этого, можно
легко написать указатели на соответствующие элементы.
Рис. 7.5. Адресация всех переменных блока Shared Block
4. Пример
Найдем
сумму элементов массива ARRAY1 из структуры на
рис. 4. Результат умножим на переменную DB_VAR и запишем в
элемент массива ARRAY2[3].
Так как переменные массива ARRAY1 и DB_VAR имеют формат
данных целого числа INT, то используем блоки сложения ADD_I и
умножения MUL_I. Результат следует преобразовать в WORD, так
48

как он будет записываться в элемент массива ARRAY2[3], который
имеет такой же формат (см. рис. 7.5).
1-
й элемент массива ARRAY1 имеет адрес DB1.DBW 2,
й – DB1.DBW 4. Переменная DB_VAR адресуется как DB1.DBW 0.
23-
й элемент массива ARRAY2, куда будет помещен результат вычисления, имеет адрес DB1.DBW 10. Результата составления блоксхемы в программе STEP7 представлен на рис. 7.6.
Рис. 7.6. Блок-схема для выполнения математических операций
над переменными структуры в STEP7
Чтобы посмотреть результат исполнения программы, необходимо в симуляторе PLCSIM нажать три раза CTRL+F2 в соответствии с количеством переменных, загрузить таблицу символов в
S7-PLCSIM,
DB1.DBW 2, DB1.DBW 4, DB1.DBW 0,
в появившихся заголовках ввести адреса переменных
задать формат данных Integer,
а DB1.DBW 10 –BCD. Пример результата арифметической операции
в симуляторе (21+7)·2=56 показан на рис. 7.7.
Рис. 7.7. Результат выполнения математических операций
над элементами структуры
49

В блоке данных Shared Block структуры (см. рис. 7.4), щелкнув на
значок «Monitor», можно увидеть изменение переменных структуры, участвующих в операции, включая каждый элемент массива
(
рис. 7.8).
Рис. 7.8. Адресация всех переменных блока Shared Block
в режиме выполнения операций
5. Задание
Создать в
(
табл. 7.1).
№ Имя Тип данных Примечание
1 A Бит 2 B Байт 3 C Целое 4 D Двойное целое 5 E Слово 6 F Двойное слово 7 G Вещественное число с плавающей точкой 8 ARRAY1 Бит Массив [1×4]
9 ARRAY2 Байт Массив [1×2]
10 ARRAY3 Целое Массив [2×3]
11 ARRAY4 Двойное целое Массив [2×2]
12 ARRAY5 Слово Массив [2×5]
13 ARRAY6 Двойное слово Массив [2×4]
14 ARRAY7 Вещественное число с плавающей точкой Массив [3×3]
блоке данных Shared Block структуру следующего типа
Таблица 7.1
Структура данных для выполнения лабораторной работы
Присвоить любые начальные и текущие значения переменным и
выполнить операции над элементами структуры, исходя из своего
варианта задания (табл. 7.2).
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
