Автоматизация измерений, контроля и испытаний. Лабораторный практикум. Учебное пособие
.pdf8.Компилируем проект (во вкладке ПРОЕКТ выбираем действие «Компилировать все»).
9.Проводим эмуляцию проекта. Для этого во вкладке ONLINE выполняем «Подключение» и пошагово (нажатием
сочетания |
клавиш Ctrl+F5) |
следим |
за |
изменением |
пользовательской переменной. |
|
|
|
|
Содержание отчета
1.Задание.
2.Цель работы.
3.Порядок выполнения со скриншотами результатов.
4.Выводы.
Контрольные вопросы
1.Как создается проект?
2.Что такое программный компонент?
3.Какие существуют виды программных компонентов и в чем их различия?
4.Программный компонент PLC_PRG.
Лабораторная работа № 2.
ТИПЫ ДАННЫХ В СРЕДЕ ПРОГРАММИРОВАНИЯ
CoDeSys
Цель |
работы: |
овладение |
приемами |
и |
навыками |
формирования данных различных типов для проектов в среде |
|||||
программирования CoDeSys, а именно: создание |
переменных |
||||
элементарных типов данных, а также пользовательских типов данных.
Теоретические сведения
Тип данных определяет род информации и методы ее
обработки |
и |
хранения, количество |
выделяемой |
памяти. |
|
Программист |
|
может |
непосредственно |
использов |
|
11
элементарные (базовые) типы данных или создавать собственные (пользовательские) типы на их основе.
Элементарные типы данных
1.Логические (BOOL). BOOL логический тип данных. Переменная может принимать 2 значения ИСТИНА (TRUE) или ЛОЖЬ (FALSE). Занимает 8 бит памяти, если не задан прямой битовый адрес.
2.Целочисленные. BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT и UDINT - все это целочисленные типы. Они
отличаются различным диапазоном сохраняемых данных, и естественно, различными требованиями к памяти. Подробно данные характеристики представлены в следующей табл. 1.
|
|
|
Таблица 1 |
Тип |
Нижний предел |
Верхний предел |
Размер памяти |
BYTE |
0 |
255 |
8 Бит |
WORD |
0 |
65535 |
16 Бит |
DWORD |
0 |
4294967295 |
32 Бит |
SINT |
-128 |
127 |
8 Бит |
USINT |
0 |
255 |
8 Бит |
INT |
-32768 |
32757 |
16 Бит |
UINT |
0 |
65535 |
16 Бит |
DINT |
-2147483648 |
2147483647 |
32 Бит |
UDINT |
0 |
4294967295 |
32 Бит |
Очевидно, |
присвоение |
данных |
большего |
типа |
переменной |
||
меньшего типа может приводить к потере информации. |
|
|
|||||
3. Рациональные. REAL и LREAL данные |
в формате |
с |
|||||
плавающей запятой, используются для сохранения рациональных |
|
||||||
чисел. Для типа REAL необходимо |
32 бита памяти и 64 для |
|
|||||
LREAL. |
Диапазон значений REAL |
от: 1,175494351e-38F до |
|
||||
3,402823466e+38F. |
Диапазон |
значений LREAL |
от: |
|
|||
2,2250738585072014e-308 до 1,7976931348623158e+308. |
|
|
|||||
4. Строки. Строковый тип STRING представляет |
строки |
||||||
символов. Максимальный размер строки определяет количество |
|||||||
резервируемой |
памяти |
и |
указывается |
при |
объявлени |
||
переменной. Размер задается в круглых или квадратных скобках. |
|
||||||
Если размер не указан, принимается размер по умолчанию– 80 символов. Длина строки не ограничена вCoDeSys, но строковые
12
функции |
способны |
обращаться |
со строками от |
1 до 255 |
символов! |
дата. TIME |
|
|
|
5. |
Время и |
представляет |
длительность |
|
интервалов времени в миллисекундах. Максимальное значение
для типа TIME: |
49d17h2m47s295ms (4194967295 ms). TOD |
содержит время |
суток, начиная с 0 часов. Диапазон значений |
TOD от 00:00:00 до 23:59:59.999. DATE содержит календарную |
|
дату, начиная с 1 января 1970 года. Диапазон значений от: 1970- 00-00 до 2106-02-06. DT содержит время в секундах, начиная с 0 часов 1 января 1970 года. Диапазон значений от: 1970-00-00- 00:00:00 до 2106-02-06-06:28:15. Типы TIME, TIME_OF_DAY (сокр. TOD), DATE и DATE_AND_TIME (сокр. DT) сохраняются физически как DWORD.
Пользовательские типы данных
1. Массивы. Элементарные типы данных могут образовывать одно-, двух-, и трехмерные массивы. Массивы могут быть объявлены в разделе объявленийPOU или в списке глобальных переменных. Путем вложения массивов можно получить многомерные массивы, но не более 9 мерных
("ARRAY[0..2] OF ARRAY[0..3] OF …" ).
Синтаксис: <Имя_массива>:ARRAY
[<ll1>..<ul1>,<ll2>..<ul2>,<ll3>..<ul3>] OF <базовый тип>;
где ll1, ll2, ll3 указывают нижний предел индексов; ul1, ul2 и ul3 указывают верхние пределы.
Индексы должны быть целого типа. Нельзя использовать
отрицательные индексы. |
|
Пример: |
|
Card_game: ARRAY [1..13, 1..4] OF INT; |
|
Пример инициализации простых массивов: |
|
arr1 : ARRAY [1..5] OF INT := 1,2,3,4,5; |
|
arr2 : ARRAY [1..2,3..4] OF INT := 1,3(7); |
(* сокращение |
для 3 по 7: 1,7,7,7 *) |
|
arr3 : ARRAY [1..2,2..3,3..4] OF INT |
:= 2(0),4(4),2,3; |
(*сокращение для 0,0,4,4,4,4,2,3 *) |
|
13
Пример инициализации массива структур: TYPE STRUCT1
STRUCT p1:int; p2:int; p3:dword;
END_STRUCT
ARRAY[1..3] OF STRUCT1:= (p1:=1,p2:=10,p3:=4723),(p1:=2,p2:=0,p3:=299),
(p1:=14,p2:=5,p3:=112);
Графически данный массив структур можно представить в виде следующей табл. 2.
|
|
|
|
|
Таблица 2 |
Элементы массива |
|
Элементы структуры |
|
||
|
|
|
|
|
|
|
P1 |
|
P2 |
|
P3 |
1 |
1 |
|
10 |
|
4723 |
2 |
2 |
|
0 |
|
299 |
3 |
14 |
|
5 |
|
112 |
2. Структуры. Структуры создаются на вкладке типы
данных (Data types) «Организатора Объектов» |
(Object |
Organizer). Объявление должно начинаться с |
ключевых слов |
TYPE и STRUCT и заканчиваться строками |
|
END_STRUCT и END_TYPE. |
|
Синтаксис: |
|
TYPE <Имя _структуры>: |
|
STRUCT |
|
<Объявление переменной 1> |
|
. |
|
. |
|
<Объявление переменной n> |
|
END_STRUCT |
|
END_TYPE |
|
14
<Имя _структуры> образует новый тип данных, который может быть использован в любой части проекта наряду с базовыми типами.
Вложенные структуры допускаются. Единственное ограничение заключается в запрете размещения элементов структуры по прямым адресам (AT объявления недопустимы!).
Пример объявления структуры по имени Polygonline: TYPE Polygonline:
STRUCT
Start:ARRAY [1..2] OF INT;
Point1:ARRAY [1..2] OF INT;
Point2:ARRAY [1..2] OF INT;
Point3:ARRAY [1..2] OF INT;
Point4:ARRAY [1..2] OF INT; End:ARRAY [1..2] OF INT; END_STRUCT
END_TYPE
Пример инициализации структуры:
Poly_1:polygonline := ( Start:=3,3, Point1 =5,2, Point2:=7,3, Point3:=8,5,
Point4:=5,7, End := 3,5);
Для доступа к элементам структуры используется следующий синтаксис:
<Имя_структуры>.<Имя_компонента>
Например, структура "Week" содержит компонент "Monday", обращение к которому будет выглядеть так:
Week.Monday
15
Задания
1.Сформировать логическую переменную.
2.Сформировать целочисленную переменную.
3.Сформировать рациональную переменную.
4.Сформировать пользовательский тип данных со следующей структурой (табл. 3).
|
|
Таблица 3 |
Элемент структуры №1 |
Элемент структуры №2 |
Элемент структуры № 3 |
|
|
|
|
|
|
5. Сформировать массив из трех элементов пользовательского типа данных.
Порядок выполнения работы
1.Создаем проект нажатием кнопки«Создать» на панели основного меню главного окна.
2.В диалоговом окне«Настройки целевой платформы» выбираем тип промышленного контроллера, для которого будет
написана |
управляющая |
программа. Затем |
подтверждаем |
настройки целевой платформы. |
|
|
|
3.В диалоговом окне«Новый программный компонент (POU)» выбираем язык реализацииFBD. Подтверждаются настройки основного программного компонента.
4.В области переменных основногоPOU сочетанием клавиш Shift+F2 вызываем диалоговое окно«Объявление переменной». В данном диалоговом окне указываем уникальное имя переменной, выбираем тип переменнойBOOL. Таким образом, подтвердив настройки переменной, создаем новую пользовательскую переменную.
5.Последовательно выполняем пункты задания 2 и 3 для других типов переменных.
6.Создаем пользовательский тип данных. Для этого в «Организаторе объектов» выбираем вкладку «Типы данных». Нажатием правой клавиши мыши вызываем ниспадающее меню,
вкотором выбираем вкладку«Добавить объект». Вводим название нового пользовательского типа данных и в появившейся
16
структуре |
объявляем |
элементы, |
которые |
в |
неё |
будут |
входить |
|
(объявляем имя данного и его тип). |
|
|
|
|
||||
7. |
В |
основном POU |
объявляем |
массив |
данных |
|||
пользовательского типа, состоящий из трех элементов. |
|
|||||||
8. |
Формируем |
программу |
для , |
ПЛКв |
которой |
|||
последовательно |
|
присваиваем |
|
значения |
объявленным |
|||
переменным и всем элементам массива. |
|
|
|
|
||||
9.Компилируем проект (во вкладке ПРОЕКТ выбираем действие «Компилировать все»).
10.Проводим эмуляцию проекта. Для этого во вкладке ONLINE выполняем «Подключение», проводим один цикл программы (нажатием сочетания клавишCtrl+F5) и следим за изменением пользовательских переменных.
Содержание отчета
1.Задание.
2.Цель работы.
3.Порядок выполнения (со скриншотами результатов при работе с CoDeSys).
4.Выводы.
Контрольные вопросы
1.Виды данных элементарных типов.
2.Виды данных пользовательских типов.
3.Чем отличаются структура и массив?
4. Какие отличия в различных типах целочисленных данных?
5. Как выделяется память под строковый тип данных?
Лабораторная работа № 3.
КОНФИГУРИРОВАНИЕ ВХОДОВ И ВЫХОДОВ КОНТРОЛЛЕРА ПЛК63-РРРРУУ В СРЕДЕ ПРОГРАММИРОВАНИЯ CoDeSys
Цель работы: овладение приемами и навыками создания конфигурационных переменных для проектов в сред программирования CoDeSys.
17
|
Теоретические сведения |
|
|
|||
Конфигурационные переменные |
|
|
|
|||
Конфигурационные переменные связаны с конфигурацией |
|
|||||
контроллера, а именно с количеством каналов и их техническими |
|
|||||
характеристиками, поэтому каждая имеет свой тип данных и их |
|
|||||
число ограничено. |
|
|
|
|
|
|
DInputs (модуль дискретных входов) |
|
|
|
|||
Модуль |
дискретных |
входов(«DInputs») отображает |
|
|||
значения, характеризующие состояния дискретных входов ПЛК. |
|
|||||
Модуль имеет один восьмибитовый канал, каждый бит которого |
|
|||||
соответствует состоянию одного дискретного входа. |
|
|
||||
Параметры канала: |
|
|
|
|
|
|
− «Состояние дискретных |
входов» («Сост.Дискр.Вх.») – |
|
||||
отображает |
текущее |
состояние |
дискретных |
входов. |
ПЛК |
|
Оперативный параметр;
− «Логика |
дискретных |
входов» («Логика |
Дискр.Вх») – |
||||
диапазон |
значений от0 |
до |
255, значение |
по |
умолчанию0. |
||
Параметр задает |
логику |
инвертирования |
дискретных |
сигналов. |
|||
По |
умолчанию |
в |
параметре |
|
задано |
«0»,значение |
|
соответствующее в битовом формате «00000000». Для изменения |
|||||||
логики необходимо выставить «1» в разряде, соответствующему |
|||||||
номеру |
дискретного входа, где замыкание сухого контакта |
||||||
должно |
восприниматься |
прибором как неактивное состояние |
|||||
(= False). В каждом разряде значение может быть выставлено или
18
«0» или «1». Например, если |
необходимо |
изменить логику |
||
инвертирования первого, второго |
и шестого входов, то в |
|||
параметре «Логика дискретных |
входов» надо |
задать |
значение |
|
«11000100»; |
|
|
|
|
− «Постоянная фильтрации |
дребезга» – |
задает |
период |
|
опроса состояния одного дискретного входа, задается в единицах миллисекунд (1 ед. = 1 мс); диапазон значений от 0 до 255, значение по умолчанию 10.
Outputs (модуль выходных устройств)
Модуль выходных устройств(Outputs) отображает значения выходов ПЛК. Модуль имеет шесть каналов типа Real.
В каждый канал из пользовательской программы записывается состояние выхода в диапазоне от0,0 до 1,0. В зависимости от исполнения ПЛК может быть оснащен следующими выходными устройствами: э/м реле (Р) или транзисторными ключами(К), симисторными ключами (С), выходами для управления твердотельными реле (Т), ЦАП «параметр-напряжение 0..10В» (У), ЦАП «параметр-ток 4…20мА» (И).
При работе с ВУ типа ЦАП значение канала N, (где N – номер выхода от 2 до 6, так как 1-е ВУ всегда «Р»), преобразуется в пропорциональный ему ток или напряжение. Аналоговое управление осуществляется по прямо-пропорциональному закону (т.е. 4 мА или 0 В соответствует входному сигналу, равному 0, 20 мА или 10 В соответствует входному сигналу, равному 1).
Параметры каналов:
-«Сост.ВУ{N}» – отображает текущее состояние выходных устройств. Диапазон изменения значения 0,0от до 1,0. Оперативный параметр, равняющийся значению, записанному в канал с номером N;
-«Период ШИМ ВУ{N}» – для каждого канала ({N} – номер канала) задает период выходного ШИМ-сигнала в миллисекундах. Диапазон значений от2 до 65000, значение по
умолчанию |
1000. |
Уменьшение |
параметра |
|
позволяет |
|||
осуществлять |
управление |
ИМ |
более ,точноувеличение |
– |
|
|||
позволяет |
|
исключить |
частые |
переключения |
ВУ |
с |
целью |
|
снижения |
уровня |
помех |
в сети |
и снижения |
износа |
силовых |
||
контактов реле вследствие слишком частых переключений;
19
-«Мин.имп.ШИМ ВУ{N}» – для каждого канала ({N} – номер канала) задает ограничение на минимальную длительность единичного импульса ШИМ-сигнала(длительность состояния включения). Параметр задается в миллисекундах. Диапазон значений от 1 до 5000, значение по умолчанию 50;
-«Безоп.сост.{N}» – для каждого канала({N} – номер канала) определяет состояния выходных элементов в момент, когда основная программа контроллера не выполняется. Значения
–от 0 до 1, значение по умолчанию «0» (тип REAL).
AInputs |
(модуль аналоговых входов) |
|
|
||
Модуль |
|
предназначен |
для |
приведения |
результатов |
измерения |
к |
значениям физической величины, измеряемой |
|||
датчиком. Приведенное значение физической величины может |
|||||
быть считано |
в программу |
ПЛК из |
каналов модуля. Модуль |
||
имеет по два канала на каждый аналоговый вход. В первом канале содержится результат измерений в преобразованном виде, во втором канале – циклическое время измерения.
Для температурных датчиков(ТП и ТС) в первом канале выдается значение измеренной температуры. Для резистивных датчиков, датчиков тока и напряжения в канале выдается значение от 0 до 100 (в процентах).
Время измерения – это время, которое точно соответствует |
|
|||||||||||
времени проведения измерения в данном канале. Оно измеряется |
|
|||||||||||
в тактах |
внутреннего |
времени |
прибора (1 такт составляет |
|
||||||||
0,01 секунды). Отсчет |
времени |
измерения |
начинается |
при |
||||||||
включении прибора и каждые65 536 |
тактов (656.36 |
с) |
время |
|
||||||||
обнуляется, отсчет начинается сначала. |
|
|
|
|
|
|
||||||
Параметры каналов: |
|
|
|
|
|
|
|
|
|
|||
− «Значение на входе {N}» («Вход {N}») показывает |
|
|||||||||||
измеренное |
входом |
значение |
|
с |
учетом |
|
всех . |
поправок |
||||
Оперативный параметр, {N} – номер канала, тип REAL; |
|
|
||||||||||
− |
«Тип датчика {N}» |
задается |
тип |
датчика, |
показания |
|
||||||
которого будут обрабатываться каналом аналогового входа. Тип |
|
|||||||||||
датчика выбирается из раскрывающегося списка; |
|
|
|
|
||||||||
− |
«Полоса |
Фильтра{N}», |
тип REAL |
– |
величина |
|
||||||
предельного отклонения результатов двух соседних измерений; |
|
|||||||||||
задается |
|
индивидуально |
для |
|
всех |
датчиков |
в |
единицах |
||||
20
