Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программная_инженерия_лекция_11

.pdf
Скачиваний:
95
Добавлен:
15.02.2015
Размер:
377.75 Кб
Скачать

Технология программирования микропроцессорных систем.

© О.А. Кудин. Лицензия CC-BY-NC-ND

ЛЕКЦИЯ 11. Правила работы с данными в среде UNITY Pro

11.1 Типы данных

Тип данных определяет структуру, формат, набор атрибутов и допустимых операций. Все типы данных можно разделить на следующие четыре категории:

EDT (Elementary Data Type) – элементарные типы данных; DDT (Derived Data Type) – производные типы данных;

EFB (Elementary Function Block) – элементарные функциональные блоки; DFB (Derived Function Block) – производные функциональные блоки.

К элементарным типам данных относятся: BOOL, EBOOL, INT, DINT, UINT, UDINT, BYTE, WORD, DWORD, REAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME, STRING, STRING[n]. (Табл.11.1)

Таблица 11.1

1

Технология программирования микропроцессорных систем.

©О.А. Кудин. Лицензия CC-BY-NC-ND

Всреде UNITY PRO есть ряд функций и функциональных блоков, которые работают с типами данных BCD. Формат BCD (Binary Coded Decimal, двоично-десятичный формат) предназначенный для сохранения числовых данных в виде четырехбитных двоичных представлений десятичных цифр (0…9). Например, число 2450 будет представлено в виде 0010_0100_0101_0000. Этот формат используется для хранения даты и времени в типах данных DATE, TIME OF DAY, DATE and TIME (табл. 11.2).

Таблица 11.2

Тип

Назначение

Количество

Диапазон

Формы отображения

бит, формат

значений

констант

 

 

 

 

 

Year

D#<YYYY>-<MM>-<DD>

 

Работа с

 

YYYY – год

 

 

[1990…2099]

DATE (D)

астрономической

32, BCD

MM – месяц

Month[01…12]

 

датой

 

DD – день

 

 

Day[01…31]

 

 

 

D#2013-01-11

 

 

 

 

TIME OF

Работа с

 

Hour [00,23]

TOD#<HH>:<MM>:<SS>

DAY

32, BCD

Minute [00,59]

временем суток

TOD#01:25:05

(TOD)

 

Second [00,59]

 

 

 

 

 

 

Year

 

 

Работа с

 

[1990…2099]

 

DATE

 

Month[01…12]

 

астрономической

 

 

and TIME

64, BCD

Day[01…31]

DT#2013-01-11-01:25:05

датой и

(DT)

 

Hour [00,23]

 

временем

 

 

 

 

Minute [00,59]

 

 

 

 

 

 

 

 

Second [00,59]

 

Производные типы данных (DDT) – это составные типы данных на основе элементарных типов. К производным типам данных относятся массивы и структуры, которые определены в UNITY PRO и доступны через библиотеку, а также массивы и структуры, созданные пользователем. Кроме этого можно использовать структурные типы данных пользователя.

Особыми структурными типами данных являются IODDT (Input Output Derived Data Types, производные типы данных ввода-вывода). С каждым каналом ПЛК связано не только полученное значение, а и дополнительная информация (параметрические данные, состояние и код ошибки и т.д.). Эта информация доступна через специальные ячейки областей памяти %I, %IW, %Q, %QW, %MW и %KW. Их наличие и адреса непосредственно зависят от типа модуля и канала ввода-вывода.

11.2 Переменные

UNITY PRO поддерживает обращение к переменным проекта по имени или по адресу (прямая адресация).

2

Технология программирования микропроцессорных систем.

© О.А. Кудин. Лицензия CC-BY-NC-ND

Переменные создаются в разделе проекта «Variables & FB instances». Все переменные, описанные в этом разделе, являются глобальными и доступны из любой части проекта.

При создании переменной необходимо определить ее имя и тип. Имя должно быть уникальным, содержать только символы латинского алфавита, а также не иметь символов пробела и служебных символов. Тип переменной выбирается из доступных элементарных или производных типов данных.

Переменные имеют много свойств. В табличном редакторе данных (Data Editor) по умолчанию доступны только наиболее важные свойства, другие свойства можно отобразить через контекстное меню редактора при выборе команды Customize Column. В любом случае все свойства переменных доступны через их контекстное меню при выборе команды Data Properties (рис.

11.1).

Рисунок 11.1 Для каждой переменной можно указать начальное значение при ее

инициализации (свойство Value). Значение инициализации записывается в переменную при холодном старте (холодный старт выполняется при включении ПЛК). Если значение не указано – оно будет определяться типом переменной.

3

Технология программирования микропроцессорных систем.

© О.А. Кудин. Лицензия CC-BY-NC-ND

Среди свойств переменной доступен адрес размещения данных (Address). Если при определении переменной в поле свойства Address указать ячейку памяти, то переменная будет локализована. В противном случае переменная будет не локализована. При этом адрес ее размещения не будет известен, и обращаться к ней можно будет только по имени.

Количество и тип выделенных ячеек памяти для переменной зависит от ее типа. Например, переменные типа WORD и INT занимают одно слово (2 байта памяти) и к ним можно привязать по одной ячейке из областей %MW, %IW, %QW, %SW, %KW. Типы данных DWORD, DINT, REAL, TIME занимают два слова и при локализации размещаются в двух смежных ячейках областей %MW или %KW.

Для переменной типа BOOL можно выделить один бит ячейки памяти из областей %MW или %KW. При этом нужно указать номер ячейки и бит. Если бит не указывается, то переменная типа BOOL занимает один байт ячейки памяти.

Массивы (Array) определяются по типу элементов, хранящихся в массиве, а также начального и конечного индексов. Например, определение переменной «Array1 ARRAY[0..1] OF INT» состоит из 2 целых с индексами 0 и 1. Обращение к элементам массива выполняется также как и в других языках программирования. Например, «Array1 [1]» – обращение к первому элементу массива Array1.

Структурные переменные DDT могут включать поля разного типа (в том числе массивы или другие структурные типы). Для обращения к элементу структурной переменной указывают сначала имя переменной, а затем через точку – имя поля структурной переменной.

При локализации структурной переменной, как и для массива, указывают только адрес начальной ячейки, все остальные ячейки привязываются автоматически. Количество занятых ячеек зависит от типа и количесмтва полей переменной.

4