Програмне забезпечення мікропроцесорних систем
Вопросы лекции
Переменные в проекте
Переменные…
Переменная в пользовательской программе…
“Венгерский” язык …
“Венгерский” язык …
“Венгерский” язык …
Пример
Понятие «БЛОК»
Параметры и переменные компонентов
Интерфейс компонентов
Компоненты программ
ПРИМЕР
Пример …
Операторы и функции МЭК
Операторы присваивания
Арифметические операторы
Логические операторы
Операторы сдвига
Операторы сдвига
Операторы выбора
Операторы сравнения
Оператор move и разрешающий вход EN
Оператор вызова
Операторы для работы с числами с плавающей запятой (тип REAL)
Логарифмические операторы
Тригонометрические операторы
Преобразование данных
Выводы по лекции
Литература
Вопросы для обсуждения
494.50K
Category: programmingprogramming

Общие элементы ПО МПС. Переменные и компоненты программ (на примере пакета CoDeSys)

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

Національний технічний університет
«Харківський Політехнічній Інститут»
Факультет Інтегрованих технологій і хімічної техніки
Програмне забезпечення
мікропроцесорних систем
Лекция 5
Общие элементы ПО МПС.
Переменные и компоненты программ
(на примере пакета CoDeSys)
Лысаченко И.Г.
2012
1

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

Переменные проектов
«Венгерская» запись данных в проекте
Компоненты проектов
блоки
Операторы и функции МЭК
2

3. Переменные в проекте

Работа с данными в стандарте МЭК61131
осуществляется через переменные,
которые используют элементы проекта
конфигурация оборудования
ресурсы
блоки
библиотеки
3

4. Переменные…

разделяют по зоне видимости
Глобальные переменные
определяются на уровне ресурсов
проекта (VAR_GLOBAL) и доступны
для всех компонентов проекта
Локальные переменные (VAR)
описываются при объявлении
компонента и доступны только внутри
него
4

5. Переменная в пользовательской программе…

Переменная (variable) – это величина определенного
формата
Константы (Constants) используются для присваивания
переменным фиксированных значений
константа имеет особый префикс в зависимости от типа данных
5

6. “Венгерский” язык …

идея заключается в добавлении к
идентификаторам коротких префиксов,
которые определяют тип и некоторые
другие важные характеристики
переменной
префиксы записывают строчными буквами
имя переменной заглавными буквами
6

7. “Венгерский” язык …

Для базовых типов МЭК можно предложить
следующие префиксы типов
Префикс Тип
Префикс Тип
b
BOOL
r
REAL
by
BYTE, USINT
lr
LREAL
si
SINT
st
STRING
w
WORD, UINT
t
TIME
i
INT
td
TIME_OF_DAY
dw
DWORD, UDINT d
di
DINT
dt
DATE
DATE_AND_TIME
7

8. “Венгерский” язык …

Уточнить назначение переменной можно добавлением еще
одного символа перед префиксом типа
Префикс
Назначение переменной
a
Массив, составной тип
n
Индекс
c
Счетчик
Символ подчеркивания «_» удобно использовать для индикации
способа обращения к переменной
подчеркивание в начале имени указывает - только чтение
идентификаторы переменных, которые отвечают входам
ПЛК, начинаются символом подчеркивания
подчеркивание в конце имени указывает – только запись
идентификаторы выходов заканчиваются символом
подчеркивания
8

9. Пример

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

10. Понятие «БЛОК»

БЛОК – это раздел программы, который
определяется собственной
функциональностью, структурой или
решаемой задачей
базовый элемент проекта
обладает принципом инкапсуляции – т.е. скрывает
процесс реализации
• нужно лишь знать интерфейс - вход и выход
• внутреннее содержание знать необязательно
Компоненты программ (в КоДеСис)
функция
функциональный блок
программа
10

11. Параметры и переменные компонентов

VAR_INPUT
формальный вх. параметр, присваивается другой
переменной, любые изменения внутри компонента не
отображаются на входе
VAR_OUTPUT
формальный вых. параметр, отражает результат компонента
и копируется на выход, вне компонента доступен только для
чтения
VAR_IN_OUT
формальный вх/вых, передается по ссылке только адрес в
памяти данных
VAR
доступны только внутри компонента, вне компонента доступа
11
нет

12. Интерфейс компонентов

Тип
Функция
Функциональный Программа
блок
Синтаксис
FUNCTION
имя: ТИП
FUNCTION_BLOCK PROGRAM
имя
имя
Интерфейс
VAR_INPUT
VAR_INPUT
VAR_INPUT

VAR_OUTPUT
VAR_OUTPUT

VAR_IN_OUT
VAR_IN_OUT
VAR
VAR
Локальные VAR
переменные
12

13. Компоненты программ

Интерфейс компонента образуется вх. и
вых. переменными
интерфейсные вх. переменные называют
формальными параметрами
при использовании компонента его
формальные параметры связываются с
актуальными параметрами
при вызове параметры компонентов
приобретают актуальные или текущие
значения
13

14. ПРИМЕР

14

15. Пример …

ctuTimeMeter.RESET := FALSE;
ctuTimeMeter.PV := 100;
x := ctuTimeMeter.CV;
ctuTimeMeter (RESET := FALSE, CU :=
Inpl, CV => x);
15

16. Операторы и функции МЭК

CoDeSys поддерживает все МЭК операторы
данные операторы и функции не требуют
подключения библиотек
Операторы присваивания
Арифметические операторы
Битовые операторы (логические)
Операторы сдвига
Операторы выборки
Операторы сравнения
Адресные операторы
Оператор вызова
Преобразования типов
Математические функции
16

17. Операторы присваивания

Оператор
CFC
ST
LD / ST
X := A;
LDN / ST
X := NOT(A);
LD / S
IF A THEN
X := TRUE;
END_IF
LD / R
IF A THEN
X := FALSE;
END_IF

18. Арифметические операторы

Выполняют алгебраические операции над целыми числами
(INT, WORD) и числами с плавающей запятой (REAL)
Оператор
CFC
ADD
A1-
SUB
A4-
MUL
AB-
DIV
A8-
ADD
SUB
MUL
DIV
ST
-X
-X
-X
-X
X := A + 1;
X := A - 4;
X := A * B;
X := A / 8;
18

19. Логические операторы

Оператор
FBD
ST
NOT
X := NOT(A);
AND
X := A AND B;
OR
X := A OR B;
XOR
X := A XOR B;

20. Операторы сдвига

SHL, res:=SHL(in,n)
побитный сдвиг операнда in влево на n бит с дополнением
нулями справа
SHR, res:= SHR(in,n)
побитный сдвиг операнда in вправо на n бит с дополнением
нулями слева
ROL, res:=ROL(in,n)
циклический сдвиг операнда in влево на n бит, младшие
биты последовательно заполняются старшими
ROR, res:=ROR(in,n)
циклический сдвиг операнда in вправо на n бит, младшие
биты последовательно заменяют старшие
вх. переменные и результат должны быть типа
BYTE, WORD или DWORD
20

21. Операторы сдвига

SHL (сдвиг влево)
a b c d e f g h
a
SHR (сдвиг вправо)
b c d e f g h 0
a b c d e f g h
0 a b c d e f g
ROL (цикл. сдвиг влево)
h
a b c d e f g h
b c d e f g h a
ROR (цикл. сдвиг вправо)
a b c d e f g h
h a b c d e f g
21

22. Операторы выбора

• Предназначены для ограничения и выбора значений
• Используются с любыми типами данных
Оператор
FBD
MIN
AB-
MAX
A1-
LIMIT
SEL
MUX
-8A5-
A10B-
A010B-
MIN
MAX
LIMIT
ST
-X
-X
-X
X := MIN(A,B);
X := MAX(A,1);
X := LIMIT(-8,A,5);
X = -8 if A < -8
X = 5 if A > 5
SEL
-X
X := SEL(A,10,B);
X = 10 if A is FALSE
X = B if A is TRUE
MUX
-X
X := MUX(A,0,10,B);
X = 0 if A is 0
X = 10 if A is 1
X = B if A is 2
22

23. Операторы сравнения

Используются для работы со всеми типами данных
Оператор
CFC
EQ
AB-
NE
AB-
GE
AB-
GT
AB-
LE
AB-
LT
AB-
EQ
NE
GE
GT
LE
LT
ST
-X
-X
-X
-X
-X
-X
X := (A = B);
X := (A <> B);
X := (A >= B);
X := (A > B);
X := (A <= B);
X := (A < B);
23

24. Оператор move и разрешающий вход EN

Move присваивает значение слева переменной справа.
Используются с любыми типами данных.
При появлении значения TRUE на входе En операция
выполняется, иначе операция игнорируется.
Используется с любыми операторами и POU.
24

25. Оператор вызова

CAL
вызывает функциональный блок или программу
применяется в IL для вызова экземпляра
функционального блока, входные переменные
помещаются в скобках вслед за его именем
Пример
Вызов экземпляра ФБ Inst, где входные
переменные Par1 и Par2 равны 0 и TRUE
соответственно
CAL INST(PAR1 := 0, PAR2 := TRUE)
25

26. Операторы для работы с числами с плавающей запятой (тип REAL)

Математические функции
Операторы для работы с числами
с плавающей запятой (тип REAL)
Оператор
ABS
TRUNC
CFC
ST
X := ABS(A);
( Result = 12 )
( if A = -12.0 )
X := TRUNC(A);
( Result = 4 )
( if A = 4.32 )
EXPT
(
(
X := EXPT(A,3);
Result = 8 )
if A = 2
)
SQRT
(
(
X := SQRT(A);
Result = 5 )
if A = 25
)
26

27. Логарифмические операторы

Математические функции
Логарифмические операторы
• Вычисление логарифмов и экспоненты
Оператор
EXP
LN
LOG
СFС
ST
X := EXP(A);
( Result = 7.389 )
(
if A = 2
)
X := LN(A);
( Result = 2 )
( if A = 7.389 )
X := LOG(A);
( Result = 3 )
( if A = 1000 )
27

28. Тригонометрические операторы

Математические функции
Тригонометрические операторы
Оператор
SIN
ASIN
COS
ACOS
TAN
ATAN
CFC
ST
X := SIN(A);
X := ASIN(A);
X := COS(A);
X := ACOS(A);
X := TAN(A);
X := ATAN(A);
28

29. Преобразование данных

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

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

Рассмотренные основные компоненты
проектов и их функциональное
назначение свидетельствуют о строгой
иерархии внутри проектов
Стандарт строго регламентирует
порядок работы управляющей
программы, которая зависит от
аппаратной конфигурации
управляющей системы
30

31. Литература

1. Стр. 64 – 102
2. Стр. 70 – 84
3. Стр. 124 – 141
31

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

1. Перечислите структурные элементы проектов
2. В чем заключается «венгерская запись» по
отношению к данным проекта
3. Что такое экземпляр блока и где хранятся
параметры для экземпляра
4. Как реализуется многократное
использование ФБ
5. Чем отличается функция от ФБ
6. Когда формальный параметр становится
актуальным
32
English     Русский Rules