Приложение: косвенный доступ к параметрам FC и FB презентация

Содержание

Слайд 2

Вызов функции с параметрами комплексного типа

Пример: Передача массива (ARRAY) в функцию

FC21

Назначение параметров cложного

типа возможно только символически

Network 1: Meas_Val объявлен как array в FC21
CALL FC 21
Meas_Val:="Temperature".sequence

DB5 "Temperature"

Слайд 3

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

OB1

Function FC10

Выполнение
программы

CALL FC10
On := “Value”.Field Off := Q8.0

in On ARRAY[1..10] INT out Off BOOL
...

...
L #On[8]
...
= #Off ...

OB1

BLD 1 = L 20.0
L 5
T LW 21
L P#DBX0.0
T LD23
UC FC 10
P#L 21
P#Q 8.0
BLD 2

L-Stack (OB1)

Field ARRAY[1..10] INT

LB 21

...

1

2

Комплексный фактич. парам. в:
L-стеке
Блоке данных

DB-No: 5
межзонный
указатель

DB5: “values”

установка
"POINTER" в L-Stack

Слайд 4

Косвенный доступ к сложным типам данных

Address Declaration Name Type Start value Comment
0.0 in Meas_Val ARRAY[1..8]
*4.0 REAL
32.0 out Sum REAL
36.0 out Mean_Val REAL
in_out
0.0 temp DB_Num WORD

Network 1: Определение номера DB и начального

адреса
L P## Meas_Val // Загрузите адрес POINTER в ACCU1,
LAR1 // и оттуда загрузите в AR1;
L W [AR1,P#0.0] // Определите номер DB
T #DB_Num // и загрузите его во временную переменную;
OPN DB[DB_Num] // Oткрыть DB
L D [AR1,P#2.0] // Определите указатель на область
LAR1 // и загрузите его в AR1;
Network 2: Вычисление суммы
L 0.000000e+000 // 0 в ACCU1 (sum =0.0)
L 8 // Счетчик в ACCU1; Sum=0 в ACCU2
BEGN: TAK // сумма в ACCU1, счетчик в ACCU2
ENT // счетчик в ACCU3
L D[AR1,P#0.0] // элемент массива в ACCU1
+R // сумма в ACCU1, счетчик в ACCU2
+AR1 P#4.0; // Увеличение AR1 на 4 байта
TAK // Счетчик цикла в ACCU1, сумма в ACCU2
LOOP BEGN; // Уменьшить на 1 счетчик цикла и переход, если
// необходимо
T #Sum // Запись суммы в #Sum

Слайд 5

BLD 1 = L 20.0
L W#16#1005
T LW 21
L 10
T LW 23
L 0
T LW25
L P#I0.0
T LD27
L P#DBX0.0
T LD23
AC FC 10
P#L 21
P#Q 8.0
BLD 2

Передача параметра типа POINTER

OB1

Function FC10

Выполнение
программы

CALL FC10
On := P#I0.0 10 INT Off := Q8.0

in On ANY out Off BOOL
...

...
L P##On
...
=

#Off ...

OB1

L-Stack (OB1)

LB 21

...

1

2

Параметры типа "POINTER" и "ANY"

10H Тип данных: 05
Коэфф.повтор.: 10
Номер DB: 0
межзонный указательr: P#I0.0

...

Установка
указателя "ANY" в L-стек

Слайд 6

Передача параметров параметрического типа

OB1

Function FC10

Выполнение
программы

CALL FC10
On := DB35 Off := A8.0

in On BLOCK_DB out Off BOOL
...

...
OPN #ON
...
= #Off ...

BLD 1 = L 20.0
AC FC 10
P#4.3
P#A 8.0
BLD 2

Блоковые параметры:
TIMER, COUNTER
BLOCK_x

OB1

Слайд 7

in On_1 BOOL in On_2 BOOL out Off BOOl
...

CALL FC10
On_1 := I0.1 On_2 := DB5.DBX2.2 Off := DB6.DBX2.6

BLD 1 = L 20.0
OPN DB 5
A DBX 2.2
= L 20.1
AC FC 10
P#I 0.1
P#L 20.1
P#L 20.2
A L 20.2
OPN DB 5
= DBX 2.6
BLD 2

Специальные возможности для элементарных фактических

параметров в DB и константах

OB1

Функция FC10

Выполнение
программы

...
A #On_1
A #On_2
= #Off ...

OB1

L-Stack (OB1)

DB5

LB 20

...

...

1

2

3

DBB2

Элементарные
фактические параметры в:
Константах
Блоках данных

Слайд 8

Упражнение A.1: Оценка параметров типа DATE_АND_TIME в FC

FC51

EN

ENO

IN_DT

Sec

QB13

Min

QB12

OB1_DATE_TIME

Hour

QB8

Слайд 9

Вызов FB с параметрами сложных типов

Пример: Передача массивов в функциональный блок

FB17

Назначение сложных параметров
возможно

только символически

Network 1:
CALL FB 17, DB 30
Meas_1 :="Temperature".Cylinder Sum_1 :=MD20
Sum_2 :=MD30
Meas_2 :="Temperature".Shaft

DB2 "Temperature"

Слайд 10

Косвенная адресация входных и выходных параметров

Address Declaration Name Type Start value Comment
0.0 in Meas_1 ARRAY[1..10]
*4.0 REAL
40.0 out Sum_1 REAL 0.000000e+000
44.0 out Sum_2 REAL 0.000000e+000
48.0 in_out Meas_2 ARRAY[1..15]
*4.0 in_out REAL
54.0 stat DB_Num INT 0

Network 1: Определение стартового адреса Meas_1
LAR1 P##Meas_1 //

Загрузите межзонный указатель на параметр без
// смещения адреса (мультиэкземпляр)в AR1
TAR2 // Загрузить смещение адреса в ACCU1
+AR1 // Добавить смещение адреса к AR1;
// AR1 теперь указывает на параметр в экземпляре DB
// экземпляр DB уже открыт
Network 2: Доступ к Meas_1
L 0.000000e+000 // 0 в ACCU1 (сумма =0.0)
L 10 // Счетчик в ACCU1; сумма =0 в ACCU2
BEGN: TAK // Сумма в ACCU1, счетчик в ACCU2
ENT // Счетчик в ACCU3
L D[AR1,P#0.0] // Компонент массива в ACCU1
+R // Сумма в ACCU1, счетчик в ACCU2
+AR1 P#4.0; // Увеличение AR1 на 4 байта
TAK // Счетчик цикла в ACCU1, сумма в ACCU2
LOOP BEGN; // Уменьшить счетчик цикла на 1 и переход, если это
// необходимо
T #Sum_1 // Запись суммы в #Sum_1

Слайд 11

Косвенная адресация in_out - параметров

Address Declaration Name Type Start value Comment
0.0 in Meas_1 ARRAY[1..10]
*4.0 REAL
40.0 out Sum_1 REAL 0.000000e+000
44.0 out Sum_2 REAL 0.000000e+000
48.0 in_out Meas_2 ARRAY[1..15]
*4.0 in_out REAL
54.0 stat DB_Num INT 0

Network 3: Определение начального адреса Meas_2
LAR1 P##Meas_2 // Загрузка

межзонного указателя на POINTER
TAR2 // Загрузка смещения адреса в ACCU1, прибавление к AR1;
+AR1 // AR1-новый указатель на POINTER в экземпляр DB
L W [AR1,P#0.0] // Загрузка номера DB из POINTER в ACCU1
T #DB_Num // Запись номера DB (или 0)в статическую переменную
OPN DB [#DB_Num] // Открытие DB
L D [AR1,P#2.0] // Загрузка межзонного указателя на параметр LAR1 // Загрузка указателя в AR1, AR1 указатель на параметр
Network 4: Доступ к Meas_2
L 0.000000e+000 // 0 в ACCU1 (сумма =0.0)
L 15 // Счетчик в ACCU1; сумма=0 в ACCU2
BEGN: TAK // Сумма в ACCU1, счетчик в ACCU2
ENT // Счетчик в ACCU3
L D[AR1,P#0.0] // Элемент массива в ACCU1
+R // Сумма в ACCU1, счетчик в ACCU2
... // ...

Слайд 12

Передача параметров

Глубина вложения:
S7-300: max. 8 S7-400: max. 16 . . .
Передача зависит

от блока, типа данных и вида параметра:

E: Элементарный тип данных
C: Комплексный тип данных
P: Параметрический тип (Timer, Counter, Block_x)

FB

FB

FC

OB

Слайд 13

Упражнение A.2: Оценка параметра типа DАTE_AND_TIME в FB

FB63

EN

ENO

IN_DT

Sec

QB13

Min

QB12

OB1_DATE_TIME

Hour

QB8

FB83

IN_DT

0.0 in IN_DT DATE_AND_TIME DT#90-1-1-0:0:0.0 out
in_out
8.0 stat DUMMY ARRAY[1..100]
*2.0 stat INT
208.0 stat FB63_DT FB63

Слайд 14

Упражнение A.3: Оценка In_Out параметров в FB

FB64

EN

ENO

IO_DT

Sec

QB13

Min

QB12

OB1_DATE_TIME

Hour

QB8

FB84

IN_DT

0.0 in IN_DT DATE_AND_TIME DT#90-1-1-0:0:0.0 out
in_out
8.0 stat DUMMY ARRAY[1..100]
*2.0 stat INT
208.0 stat FB64_DT FB64
...

Слайд 15

Решение к упражнению A.1: Доступ к DT параметрам в FC

Слайд 16

Решение к упражнению A.2: Доступ к DT параметрам в FB

Слайд 17

Решение к упражнению A.3: Доступ к I/O параметрам в FB (Part 1)

Имя файла: Приложение:-косвенный-доступ-к-параметрам-FC-и-FB.pptx
Количество просмотров: 69
Количество скачиваний: 0