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

Содержание

Слайд 2

Вопросы лекции Представление данных адресация входов/выходов, ячеек памяти и т.д.

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

Представление данных
адресация входов/выходов, ячеек памяти и т.д.
Типы данных

(константы и переменные)
элементарные (базовые)
составные
данные пользователя
Слайд 3

ДАННЫЕ - основной элемент обработки в ПЛК, являющийся общим элементом

ДАННЫЕ - основной элемент обработки в ПЛК, являющийся общим элементом языков

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

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

Слайд 4

Языки МЭК используют идеологию строгой проверки типов данных любая переменная

Языки МЭК используют идеологию строгой проверки типов данных
любая переменная может использоваться

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

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

Слайд 5

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

Методы объявления переменных:

Локальные (для 1 ФБ) или Глобальные (для всех ФБ)

текстовый,

табличный и автоматический

Сохраняемые и Постоянные переменные

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

Соотношение типов переменных:

Сохраняемость переменных:

Слайд 6

Синтаксис идентификаторов (символьная адресация) буквы и цифры (до 24) может

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

буквы и цифры (до 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»
Объявление переменной без префикса «АТ» физически означает выделение ей памяти в области ОЗУ

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

Слайд 9

Распределение области памяти… Образование прямых адресов зависит от размера адресуемых

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

Образование прямых адресов зависит от размера адресуемых данных
адрес

%MD48 адресует в области памяти двойное слово 48
или байты 192, 193, 194 и 195 (48 * 4 = 192)
Слайд 10

Типы данных… элементарные элементарные или базовые типы являются основой для

Типы данных…

элементарные
элементарные или базовые типы являются основой для построения

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

допускает стандарт
МЭК61131

Слайд 11

Целые числа могут быть представлены в двоичной восьмеричной десятичной шестнадцатеричной

Целые числа могут быть представлены в
двоичной
восьмеричной
десятичной
шестнадцатеричной системах

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

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

Слайд 12

INT - ЦЕЛОЕ ЧИСЛО префикс - указывает на размер числа

INT - ЦЕЛОЕ ЧИСЛО
префикс - указывает на размер числа относительно

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

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

Слайд 13

имеют различный диапазон сохраняемых данных зависит от размера выделяемой памяти

имеют различный диапазон сохраняемых данных
зависит от размера выделяемой памяти
бывают


any_bit – bit/byte, word, dword, lword
1, 2, 4 и 8 байт
sign (знаковый тип) – sint, int, dint, lint
unsign (беззнаковый тип) – usint, uint, udint, ulint

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

Слайд 14

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

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

Слайд 15

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

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

Слайд 16

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

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

Слайд 17

BOOL – логический тип данных – один бит, принимающий значение

BOOL – логический тип данных – один бит, принимающий значение FALSE или

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

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

Слайд 18

Битовые типы данных… Данные типов BYTE, WORD, DWORD, LWORD относятся

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

Данные типов
BYTE, WORD, DWORD, LWORD
относятся

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

VAR wVar0, wVar1: WORD; (*две переменных типа WORD*) byVar3: BYTE;

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; (*ошибка*)

Пример…

Слайд 20

Битовые типы данных… Особые формы этих типов данных двоично-десятичные числа

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

Особые формы этих типов данных
двоично-десятичные числа (BCD-числа) и

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

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

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

Слайд 22

Элементарные типы данных… REAL – вещественное число с плавающей запятой,

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

REAL – вещественное число с плавающей запятой, представляется 32-битами

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

Стандарт IEEE 754… F – десятичное число S – бит

Стандарт IEEE 754…

F – десятичное число
S – бит знака (31-й бит)


E – смещение экспоненты (30–23 биты)
M – остаток от мантиссы (22–0 биты)
Слайд 24

TIME - отображает интервалы времени занимает объем памяти, равный DWORD

TIME - отображает интервалы времени
занимает объем памяти, равный DWORD
интервал не

ограничен макс. значением 24 часа (~49 суток) и может иметь отрицательное значение
числа, выражающие часовой интервал, должны начинаться с ключевого слова Тime# или Т#
в общем случае представление времени состоит из полей: дни (d), часы (h), минуты (т), секунды (s) и миллисекунды (ms)
поля допускается разделять символом «_»

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

TIME1 := t#1m65s (*ошибка*)
TIME1 := t#125s (*правильно*)
TIME2 := t#1.2s (*правильно, равно T#1s200ms *)

Слайд 25

Элементарные типы данных… типы переменных «время» и «дата» описываются стандартом

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

типы переменных «время» и «дата» описываются стандартом ISO

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

Переменная типа DATE хранится как число с фиксированной точкой без

Переменная типа DATE хранится как число с фиксированной точкой без знака
содержимое

переменной соответствует количеству дней, начиная с 01.01.1970
ее представление показывает год, месяц и день, разделенные дефисом

Пример: DATE#2011-09-23

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

Слайд 27

Переменная типа данных TIME_OF_DAY содержит количество миллисекунд с начала суток

Переменная типа данных TIME_OF_DAY
содержит количество миллисекунд с начала суток (со времени

00:00) – до 23ч59м59с999мс в виде числа с фиксированной точкой без знака

Пример:
TIME_OF_DAY#00:00:00
TOD#23:59:59.999

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

Слайд 28

Тип данных DATE_AND_TIME представляет формат времени, состоящий из даты и

Тип данных DATE_AND_TIME представляет формат времени, состоящий из даты и времени

суток
допускается использование аббревиатуры DT вместо полного названия типа DATE_AND_TIME
отдельные компоненты DT-переменной закодированы в формате ASCII

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

Пример: DT#2013-09-23-00:00:00

Слайд 29

Данные типа STRING относятся к строковому типу и содержат текстовую

Данные типа STRING относятся к строковому типу и содержат текстовую информацию


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

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

Слайд 30

Объявление строковой переменной str1 длиной до 20 символов и str2

Объявление строковой переменной str1 длиной до 20 символов и str2

до 60 символов
VAR
strl: STRING(20);
str2: STRING(60) := ‘АВАРИЯ';
END_VAR

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

Слайд 31

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

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

Слайд 32

Данные пользователя … Описание предназначенных для пользователя типов данных (кроме

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

Описание предназначенных для пользователя типов данных (кроме массивов) должно

выполняться на уровне проекта
объявление типа всегда начинается с ключевого слова TYPE и заканчивается строкой END_TYPE
Слайд 33

МАССИВ - множество однотипных элементов с произвольным доступом одномерный многомерный

МАССИВ - множество однотипных элементов с произвольным доступом
одномерный
многомерный
СТРУКТУРА - создает

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

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

Слайд 34

Преобразование типов данных… Неявное преобразование данных из 'большего' типа в

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

Неявное преобразование данных из 'большего' типа в 'меньший' запрещено

стандартом
если подобное преобразование действительно необходимо, оно должно быть выражено явно
явные преобразования работают практически для всех базовых типов данных
Синтаксис _TO_
преобразования в строку …_TO_STRING используют выравнивание влево
Слайд 35

Особенности преобразования типов данных… siVAR: SINT:=200; в HEX – C8

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

siVAR: SINT:=200; в HEX – C8
iVAR: INT:=2000; в

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

VAR bVar1: BOOL :=TRUE; wVar2: WORD; END_VAR при преобразовании значения

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*)

Пример …

Слайд 37

Пример… Если bStop: BOOL bySet: BYTE wSize UINT тогда bStop

Пример…

Если
bStop: BOOL
bySet: BYTE
wSize UINT
тогда
bStop := wSize * 2;

ошибочное выражение
bStop := wSize > 2; допустимое выражение
Слайд 38

Выводы по лекции… Все данные, присутствующие в программах, ориентированы на

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

Все данные, присутствующие в программах, ориентированы на любые

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

Вопросы для обсуждения… 1. Дайте определение “данные”. 2. Чем определяется

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

1. Дайте определение “данные”.
2. Чем определяется размер типа данных?
3.

Что понимают под термином «неявное преобразование типа данных»?
4. Какие преобразования типов данных запрещены в МЭК?
Имя файла: Програмне-забезпечення-мікропроцесорних-систем.pptx
Количество просмотров: 77
Количество скачиваний: 0