Similar presentations:
Общие элементы ПО МПС. Переменные и компоненты программ (на примере пакета 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. ПРИМЕР
1415. Пример …
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 – 1022. Стр. 70 – 84
3. Стр. 124 – 141
31
32. Вопросы для обсуждения
1. Перечислите структурные элементы проектов2. В чем заключается «венгерская запись» по
отношению к данным проекта
3. Что такое экземпляр блока и где хранятся
параметры для экземпляра
4. Как реализуется многократное
использование ФБ
5. Чем отличается функция от ФБ
6. Когда формальный параметр становится
актуальным
32