“Програмне забезпечення мікропроцесорних систем”
Вопросы лекции
Данные в проекте…
Представление данных в CoDeSys…
Синтаксис идентификаторов (символьная адресация)
Синтаксис идентификаторов (абсолютная адресация)
Прямая адресация…
Распределение области памяти…
Типы данных…
Элементарные типы данных…
Элементарные типы данных…
Целочисленные типы …
Целочисленные типы …
Битовые типы данных…
Особенности представления целых чисел…
Логические типы данных…
Битовые типы данных…
Пример…
Битовые типы данных…
Таблица ASCII-кодов…
Элементарные типы данных…
Стандарт IEEE 754…
Элементарные типы данных…
Элементарные типы данных…
Элементарные типы данных…
Элементарные типы данных…
Элементарные типы данных…
Строковые типы данных…
Строковые типы данных…
Иерархия элементарных типов…
Данные пользователя …
Составной тип данных …
Преобразование типов данных…
Особенности преобразования типов данных…
Пример …
Пример…
Выводы по лекции…
Вопросы для обсуждения…
Литература….

Програмне забезпечення мікропроцесорних систем

1. “Програмне забезпечення мікропроцесорних систем”

Національний технічний університет
«Харківський Політехнічній Інститут»
Факультет Інтегрованих технологій
і хімічної техніки
Кафедра автоматизації хіміко-технологічних
систем та екологічного моніторингу
“Програмне забезпечення
мікропроцесорних систем”
Лекция 3
Общие элементы СПО МПС.
Обзор типов данных в проектах
(на примере пакета CoDeSys 2.3)
Разработал доц. Лысаченко И.Г.
ІХ сем., осень, 2016

2. Вопросы лекции

Представление данных
адресация входов/выходов, ячеек памяти и
т.д.
Типы данных (константы и переменные)
элементарные (базовые)
составные
данные пользователя
2

3. Данные в проекте…

ДАННЫЕ - основной элемент обработки
в ПЛК, являющийся общим элементом
языков и служащий для связи
программных компонентов в одном
проекте
с данными способен работать стандартный
ПЛК (IEC_61131-3)
единый формат представления
единые общие приемы работы с данными
3

4.

Данные в проекте…
Языки МЭК используют идеологию строгой
проверки типов данных
любая переменная может использоваться
-только после ее объявления
присваивать значение одной переменной
другой можно - только если они обе одного
типа
неявные преобразования типов данных с потерей
информации запрещены
Тип данных определяет
род информации и ее содержимое
объем памяти и диапазон представления
список допустимых операций
4

5. Представление данных в CoDeSys…

Методы объявления переменных:
текстовый, табличный и автоматический
Соотношение типов переменных:
Локальные (для 1 ФБ) или Глобальные (для всех ФБ)
Сохраняемость переменных:
Сохраняемые и Постоянные переменные

6. Синтаксис идентификаторов (символьная адресация)

буквы и цифры (до 24)
может начинаться с буквы
или символа «_»
только одинарные
подчеркивания
без пробелов
нельзя использовать
зарезервированные слова
МЭК и операторы
регистр не различается
Примеры
Otto, otto, OTTO
Valve1
a_long_name
123
OTTO_?

7. Синтаксис идентификаторов (абсолютная адресация)

Прямой (абсолютный) адрес
обозначается символом «%»
Область памяти определяется
префиксом
I вход
Q
M
выход
меркер (флаг)
Тип данных → размер памяти
для хранения
X или none
бит
Bбайт
(8 бит)
W
слово (16 бит)
D
двойное слово (32 бит)
Примеры
%IW215
%QX1.1
%MD48
%IW215.1
%QX15 или %QX1.9
%MD4.8

8. Прямая адресация…

в прямом адресе указывается номер элемента
если прямой адрес определяет байт → №байта
если слово → № слова → адресует два подряд байта
если дв. слово → № дв. слова → адресует 4 подряд
байта
Если необходимо поместить переменную по определенному
адресу, то нужно объявить ее с ключевым словом «AT»
Объявление переменной без префикса «АТ» физически означает
выделение ей памяти в области ОЗУ
8

9. Распределение области памяти…

%ID0
%IX0.0
%IX0.1
%IB0:
%IW0
%IW1
%IB0
%IB1
%IB2
%IB3
Входы
Входные
драйверы
Выходы
Физические
входы
Выходные
драйверы
Физические
выходы
%IX0.2
.....
%IX0.7
%IX0.8
Маркированная память
%IX0.9
%IB1:
...
...
%IX0.15
Образование прямых адресов зависит от размера адресуемых данных
адрес %MD48 адресует в области памяти двойное слово 48
или байты 192, 193, 194 и 195 (48 * 4 = 192)
9

10. Типы данных…

элементарные
элементарные или базовые типы являются
основой для построения составных типов
резервируется бит, байт, слово или дв. слово
составные
перечисления (списки)
массивы
структуры
массивы структур и т.д.
данные пользователя
(UDT)
параметрические данные
допускает
стандарт
МЭК61131
10

11. Элементарные типы данных…

Целые числа могут быть представлены в
двоичной
восьмеричной
десятичной
шестнадцатеричной системах исчисления
Для числовых констант, за исключением
десятичных, нужно указывать систему
исчисления перед знаком «#»
Пример: 2#0100_1110, 8#116, 45, 16#4Е
Символ «_» не влияет на значение и используется
только для улучшения зрительного восприятия числа
11

12. Элементарные типы данных…

INT - ЦЕЛОЕ ЧИСЛО
префикс - указывает на размер числа
относительно простого слова (16 бит)
S (short *1/2W)
- короткое
D (double *2W) - двойное
L (long *4W)
- длинное ( в CDS – не поддержан)
U (unsigned) - указывает на отсутствие знака “-”
При начальной инициализации целочисленные
переменные получают всегда нулевые значения
Если необходимо задать другие начальные
значения, это можно сделать непосредственно при
объявлении переменной
12

13. Целочисленные типы …

имеют различный диапазон
сохраняемых данных
зависит от размера выделяемой памяти
бывают
any_bit
– bit/byte, word, dword, lword
1, 2, 4 и 8 байт
sign (знаковый тип) – sint, int, dint, lint
unsign (беззнаковый тип) – usint, uint, udint,
ulint
13

14. Целочисленные типы …

Тип
Нижний
предел
Верхний
предел
Размер памяти,
байт / бит
SINT
-128
127
1/8
USINT
0
255
1/8
INT
-32768
32767
2 / 16
UINT
0
65535
2 / 16
DINT
-231
231 - 1
4 / 32
UDINT
0
232 - 1
4 / 32
LINT
-263
263 - 1
8 / 64
ULINT
0
264 - 1
8 / 64
14

15. Битовые типы данных…

15

16. Особенности представления целых чисел…

16

17. Логические типы данных…

BOOL – логический тип данных – один
бит, принимающий значение FALSE или
TRUE («0» или «1»)
при инициализации по умолчанию FALSE («0»)
при
автоматическом
распределении
памяти
транслятором под битовую переменную выделяется,
как правило, 1 байт памяти (исключение –
аппаратные дискретные входы\выходы)
Переменные
типа
BOOL,
связанные
с
дискретными входами-выходами или объявленные с
прямым
битовым
адресом,
физически
представляются одним битом
17

18. Битовые типы данных…

Данные типов
BYTE, WORD, DWORD, LWORD
относятся к стандартному битовому
типу ANY_BIT
к ним можно обращаться побитно (через
точку, VAR_1.5 для типа BYTE) или в целом
диапазон значений для этих переменных
отсутствует
это слова длиной 8, 16, 32 и 64 бит
18

19. Пример…

VAR
wVar0, wVar1: WORD; (*две переменных типа
WORD*)
byVar3: BYTE; (*тип BYTE начальное значение 0*)
byVar2: BYTE :=16#55;
(*тип BYTE начальное
значение 55h*)
END_VAR
byVar2:= 2#1_0_0_0_1_0_0_0;
(*равносильно2#1000_1000*)
byVar3:= 2#1_0_0_0__1_0_0_0; (*ошибка*)
19

20. Битовые типы данных…

Особые формы этих типов данных
двоично-десятичные числа (BCD-числа) и
значения счетчика (count), используемые
совместно с функциями счетчика
BCD не имеют специального идентификатора
BCD-число имеет тип данных 16# и использует только цифры от
0 до 9 (без A, B, C, D, E, F)
тип данных CHAR, который представляет ASCIIсимвол (литера) ( в CDS – не поддержан)
20

21. Таблица ASCII-кодов…

21

22. Элементарные типы данных…

REAL – вещественное число с плавающей запятой,
представляется 32-битами (LREAL в CDS – не
поддержан)
Формат REAL представляет числа в диапазоне ±10±38
мантисса занимает 23 бита
точность представления - 6-7 десятичных чисел
Числа с плавающей запятой записываются
в формате с точкой
в экспоненциальной форме
14.0, -120.2, 0.33
-1.2Е10, 3.1Е7
22

23. Стандарт IEEE 754…

F – десятичное число
S – бит знака (31-й бит)
E – смещение экспоненты (30–23 биты)
M – остаток от мантиссы (22–0 биты)
23

24. Элементарные типы данных…

TIME - отображает интервалы времени
занимает объем памяти, равный DWORD
интервал не ограничен макс. значением 24 часа
(~49 суток) и может иметь отрицательное значение
числа, выражающие часовой интервал, должны
начинаться с ключевого слова Тime# или Т#
в общем случае представление времени состоит из
полей: дни (d), часы (h), минуты (т), секунды (s) и
миллисекунды (ms)
• поля допускается разделять символом «_»
TIME1 := t#1m65s (*ошибка*)
TIME1 := t#125s
(*правильно*)
TIME2 := t#1.2s
(*правильно, равно T#1s200ms *)
24

25. Элементарные типы данных…

типы переменных «время» и «дата»
описываются стандартом ISO 8601 – занимают 4
байта памяти (DWORD)
дата
время суток
дата и время
использование дефиса между элементами даты и двоеточия
между часами, минутами и секундами
25

26. Элементарные типы данных…

Переменная типа DATE хранится как
число с фиксированной точкой без
знака
содержимое переменной соответствует
количеству дней, начиная с 01.01.1970
ее представление показывает год, месяц и
день, разделенные дефисом
Пример: DATE#2011-09-23
26

27. Элементарные типы данных…

Переменная типа данных TIME_OF_DAY
содержит количество миллисекунд с начала
суток (со времени 00:00) – до
23ч59м59с999мс в виде числа с
фиксированной точкой без знака
Пример:
TIME_OF_DAY#00:00:00
TOD#23:59:59.999
27

28. Элементарные типы данных…

Тип данных DATE_AND_TIME
представляет формат времени,
состоящий из даты и времени суток
допускается использование аббревиатуры
DT вместо полного названия типа
DATE_AND_TIME
отдельные компоненты DT-переменной
закодированы в формате ASCII
Пример: DT#2013-09-23-00:00:00
28

29. Строковые типы данных…

Данные типа STRING относятся к
строковому типу и содержат текстовую
информацию
каждый символ занимает 1 байт (для WSTRING
– 2 байта, в CDS – не поддержан )
выделяются одинарными кавычками ‘STOP’
длина определяется при объявлении и
составляет от 1 до 255 символов (80 – по
умолчанию), возможен пропуск ‘ ’
в случае, когда начальное значение не задано,
то при инициализации будет создана пустая
строка длиной 80 байт
29

30. Строковые типы данных…

Объявление строковой
переменной str1 длиной
до 20 символов и str2 до
60 символов
VAR
strl: STRING(20);
str2: STRING(60) :=
‘АВАРИЯ';
END_VAR
30

31. Иерархия элементарных типов…

31

32. Данные пользователя …

Описание предназначенных для
пользователя типов данных (кроме
массивов) должно выполняться на
уровне проекта
объявление типа всегда начинается с
ключевого слова TYPE и заканчивается
строкой END_TYPE
32

33. Составной тип данных …

МАССИВ - множество однотипных элементов с
произвольным доступом
одномерный
многомерный
СТРУКТУРА - создает новые типы данных на
основе элементов разных базовых типов
ПЕРЕЧИСЛЕНИЕ (СПИСОК) - определяет
несколько последовательных значений
переменной и присваивает им наименования
это новый тип данных, определение которого
выполняется на уровне проекта
33

34. Преобразование типов данных…

Неявное преобразование данных из
'большего' типа в 'меньший' запрещено
стандартом
если подобное преобразование
действительно необходимо, оно должно
быть выражено явно
явные преобразования работают
практически для всех базовых типов данных
Синтаксис <elem.Typ1>_TO_<elem.Typ2>
преобразования в строку …_TO_STRING
используют выравнивание влево
34

35. Особенности преобразования типов данных…

siVAR: SINT:=200;
iVAR: INT:=2000;
в HEX – C8
в HEX – 07D0
iVAR:= siVAR; (*допустимая операция*)
siVAR:= iVAR; (*недопустимая операция*)
Необходимо использовать оператор явного
преобразования «исх.тип»_TO_«тип.результата»
siVAR:=INT_TO_SINT( iVAR);
Результат присвоения – D0h или 208
35

36. Пример …

VAR
bVar1: BOOL :=TRUE;
wVar2: WORD;
END_VAR
при преобразовании значения лог. переменной в целую FALSE
дает → «0», a TRUE→ «1»
wVar2 := BOOL_TO_WORD(bVar1); (*результат 1*)
при обратном преобразовании любого целого в лог. переменную
«истина» образует любое ненулевое значение
wVar2 := 0;
bVar1 := WORD_TO_BOOL(wVar2); (*результат
FALSE*)
результаты операций, которые дают результат логической
операции, можно присваивать переменным типа BOOL
bVar1 := wVar2 > 5000; (*результат FALSE*)
36

37. Пример…

Если
bStop:
BOOL
bySet:
BYTE
wSize
UINT
тогда
bStop := wSize * 2; ошибочное выражение
bStop := wSize > 2; допустимое выражение
37

38. Выводы по лекции…

Все данные, присутствующие в программах,
ориентированы на любые операции
арифметические
логические
преобразование и т.д.
Данные допускают изменение типа, но с
некоторыми особенностями и без потери
значений
МЭК расширяет возможности по
программированию контроллеров в составе
АСУ ТП за счет новых типов данных
использование «псевдонимов»
использование ограничения диапазона
38

39. Вопросы для обсуждения…

1. Дайте определение “данные”.
2. Чем определяется размер типа
данных?
3. Что понимают под термином «неявное
преобразование типа данных»?
4. Какие преобразования типов данных
запрещены в МЭК?
39

40. Литература….

[1] - Стр. 50 – 78
Тема следующей лекции….
Общие элементы СПО МПС.
Переменные и компоненты программ
40
English     Русский Правила