Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
STEP7_V53_Programming_r.pdf
Скачиваний:
2
Добавлен:
29.05.2025
Размер:
5.18 Mб
Скачать

Приложение

Network 14

Управление сливным вентилем

A

"Drain_open"

A

#Enable_Valve

=

#Open_Drain

A(

 

 

O

"Drain_closed"

ON

#Enable_Valve

)

 

 

=

#Close_Drain

CALL "Valve_block"

Open

:=#Open_Drain

Close

:=#Close_Drain

Dsp_Open

:="Drain_open_disp"

Dsp_Closed

:="Drain_closed_disp"

Valve

:="Drain"

Network 15

Отображение уровня резервуара

AN "Tank_below_max"

="Tank_max_disp"

AN "Tank_above_min"

="Tank_min_disp"

AN "Tank_not_empty"

="Tank_empty_disp"

A.5.3 Пример обработки прерываний по времени

A.5.3.1 Пример обработки прерываний по времени

Структура пользовательской программы "Прерывания по времени " FC12

OB10

OB1 и OB80

 

Программирование с помощью STEP 7 v5.3

A-86

A5E00261405-01

Приложение

A.5.3.2 Структура программы пользователя "Прерывания по времени дня"

Задача

Выход Q 4.0 должен быть установлен в период с 5.00 утра в понедельник до 8.00 пополудни в пятницу. В период с 8.00 пополудни в пятницу до 5.00 утра в понедельник выход Q 4.0 должен быть сброшен.

Преобразование в программу пользователя

Следующая таблица показывает подзадачи используемых блоков.

Блок

Подзадача

OB1

Вызывает функцию FC12

FC12

В зависимости от состояния выхода Q 4.0, состояния прерывания по

 

времени и входов I 0.0 и I 0.1

 

Определить время запуска

 

• Установить прерывание по времени

 

• Активизировать прерывание по времени

 

CAN_TINT

OB10

В зависимости от текущего дня недели

 

Определить время запуска

 

• Установить или сбросить выход Q 4.0

 

• Установить следующее прерывание по времени

 

• Активизировать следующее прерывание по времени

OB80

Установить выход Q 4.1

 

Сохранить информацию о событии запуска OB80 в области

 

меркеров

Используемые адреса

Следующая таблица показывает используемые общедоступные адреса. Временные локальные переменные описываются в разделе описаний соответствующего блока.

Адрес

Значение

I0.0

Вход для разблокировки действий "установка прерывания по

 

времени" и "запуск прерывание по времени"

I0.1

Вход для отмены прерывания по времени

Q4.0

Выход, устанавливаемый/сбрасываемый прерыванием по времени

 

OB (OB10)

Q4.1

Выход, устанавливаемый ошибкой времени (OB80)

MW16

STATUS [состояние] прерывания по времени (SFC31 "QRY_TINT")

с MB100 по

Память для информации о событии запуска OB10 (только время

MB107

суток)

с MB110 по

Память для информации о событии запуска OB80 (ошибка

MB129

времени)

MW200

RET_VAL в SFC28 "SET_TINT"

MB202

Буфер двоичного результата (бит состояния BR) для SFC

MW204

RET_VAL в SFC30 "ACT_TINT"

MW208

RET_VAL в SFC31 "QRY_TINT"

Программирование с помощью STEP 7 v5.3

 

A5E00261405-01

A-87

Приложение

Системные функции и используемые функции

В примере программирования используются следующие системные функции:

SFC28 "SET_TINT"

:

Установка прерывания по времени

SFC29 "CAN_TINT"

:

Отмена прерывания по времени

SFC30 "ACT_TINT"

:

Запуск прерывания по времени

SFC31 "QRY_TINT"

:

Запрос прерывания по времени

FC3 "D_TOD_DT"

:

Объединение DATE и TIME_OF_DAY в DT

A.5.3.3 FC12

Раздел описаний

В разделе описаний FC12 описываются следующие временные локальные переменные:

Имя переменной

Тип данных

Описание

Комментарий

IN_TIME

TIME_OF_DAY

TEMP

Время запуска

IN_DATE

DATE

TEMP

Дата запуска

OUT_TIME_DATE

DATE_AND_TIME

TEMP

Дата/время запуска

 

 

 

преобразованные

OK_MEMORY

BOOL

TEMP

Разблокировка установки

 

 

 

прерывания по времени

Раздел кода STL

Введите в раздел кода FC12 следующую программу пользователя на STL:

 

STL (FC12)

 

 

Объяснение

 

Network 1

 

 

 

 

 

CALL SFC 31

 

SFC QRY_TINT

 

 

OB_NO := 10

 

Запрос STATUS [состояния] прерываний по

 

 

RET_VAL:= MW 208

времени

 

 

STATUS := MW 16

 

 

 

Network 2:

 

 

 

 

 

AN

Q

4.0

 

 

 

JC

mond

 

Задать время запуска в зависимости от

 

 

L

D#1995–1–27

Q 4.0 (в переменной

 

 

T

#IN_DATE

#IN_DATE и #IN_TIME)

 

 

L

TOD#20:0:0.0

Дата запуска – пятница

 

 

T

#IN_TIME

 

 

 

 

JU

cnvrt

 

 

 

mond:

L

D#1995–1–23

 

 

 

T

#IN_DATE

 

 

 

L

TOD#5:0:0.0

Дата запуска – понедельник

 

 

T

#IN_TIME

 

 

 

cnvrt:

NOP

0

 

 

 

STL (FC12)

 

 

Объяснение

 

 

 

 

Network 3:

 

 

 

 

 

 

 

 

Программирование с помощью STEP 7 v5.3

A-88

 

 

 

A5E00261405-01

Приложение

 

CALL FC 3

 

IN1

:= #IN_DATE

 

IN2

:= #IN_TIME

 

RET_VAL := #OUT_TIME_DATE

Network 4:

 

 

A

I 0.0

 

AN

M 17.2

 

A

M 17.4

 

=

#OK_MEMORY

Network 5:

 

 

A

#OK_MEMORY

 

JNB

m001

 

CALL SFC 28

 

OB_NO := 10

 

SDT

:= #OUT_TIME_DATE

 

PERIOD := W#16#1201

 

RET_VAL := MW 200

m001

A

BR

 

=

M 202.3

Network 6:

 

 

A

#OK_MEMORY

 

JNB

m002

 

CALL SFC 30

 

OB_NO := 10

 

RET_VAL := MW 204

m002

A

BR

 

=

M 202.4

Network 7:

 

 

A

I 0.1

 

JNB

m003

 

CALL SFC 29

 

OB_NO := 10

 

RET_VAL := MW 210

m003

A

BR

 

=

M 202.5

Преобразовать форматы DATE и TIME_OF_DAY в формат DATE_AND_TIME (для установки прерывания по времени)

Все требования для установки прерывания по времени удовлетворены? (вход разблокировки установлен, и прерывание по времени не активно и OB прерывания по времени загружен)

Если да, то установить прерывание по времени ...

...и запустить прерывание по времени.

Если установлен вход отмены прерываний по времени, то отменить прерывание по времени.

Программирование с помощью STEP 7 v5.3

 

A5E00261405-01

A-89

Приложение

A.5.3.4 OB10

Раздел описаний

В отличие от раздела описаний OB10, заданного по умолчанию, описываются следующие временные локальные переменные:

Структура для всей информации о событии запуска (STARTINFO)

Структура для времени (T_STMP) внутри структуры STARTINFO

Другие временные локальные переменные WDAY, IN_DATE, IN_TIME и OUT_TIME_DATE

Имя переменной

Тип данных

Описание

Комментарий

STARTINFO

STRUCT

TEMP

Вся информация о событии

 

 

 

запуска OB10, описанная как

 

 

 

структура

E_ID

WORD

TEMP

Идентификатор события:

PR_CLASS

BYTE

TEMP

Класс приоритета

OB_NO

BYTE

TEMP

Номер OB

RESERVED_1

BYTE

TEMP

Зарезервировано

RESERVED_2

BYTE

TEMP

Зарезервировано

PERIOD

WORD

TEMP

Периодичность прерывания по

 

 

 

времени

RESERVED_3

DWORD

TEMP

Зарезервировано

T_STMP

STRUCT

TEMP

Структура для элементов

 

 

 

времени суток

YEAR

BYTE

TEMP

 

MONTH

BYTE

TEMP

 

DAY

BYTE

TEMP

 

HOUR

BYTE

TEMP

 

MINUTES

BYTE

TEMP

 

SECONDS

BYTE

TEMP

 

MSEC_WDAY

WORD

TEMP

 

 

END_STRUCT

TEMP

 

 

END_STRUCT

TEMP

 

WDAY

INT

TEMP

День недели

IN_DATE

DATE

TEMP

Входная переменная FC3

 

 

 

(преобразования формата

 

 

 

времени)

IN_TIME

TIME_OF_DAY

TEMP

Входная переменная FC3

 

 

 

(преобразования формата

 

 

 

времени)

OUT_TIME_DATE

DATE_AND_TIME

TEMP

Выходная переменная FC3 и

 

 

 

входная переменная SFC28

 

Программирование с помощью STEP 7 v5.3

A-90

A5E00261405-01

Приложение

Раздел кода STL

Введите в раздел кода OB10 следующую программу пользователя на STL:

STL (OB10)

 

Объяснение

Network 1

 

 

L

#STARTINFO.T_STMP.MSEC_WDAY

Выбрать день недели

L

W#16#F

 

AW

 

 

T

#WDAY

и сохранить.

Network 2:

 

 

L

#WDAY

Если день недели не понедельник, то задать

L

2

понедельник 5.00 утра как следующий момент

<>I

 

запуска и сбросить выход Q 4.0.

JC

mond

 

Network 3:

 

В противном случае, если день недели

L

D#1995–1–27

понедельник, то задать пятницу 8.00

T

#IN_DATE

пополудни (20.00) как следующий момент

L

TOD#20:0:0.0

запуска и установить Q 4.0.

T

#IN_TIME

 

SET

 

 

=

Q 4.0

 

JU

cnvrt

 

mond: L

D#1995–1–23

 

T

#IN_DATE

 

L

TOD#5:0:0.0

 

T

#IN_TIME

Время запуска задано.

CLR

 

=

Q 4.0

Преобразовать заданное время запуска в

 

 

формат DATE_AND_TIME (для SFC28).

cnvrt: NOP

0

Network 4:

 

CALL

FC 3

IN1

:= #IN_DATE

IN2

:= #IN_TIME

RET_VAL := #OUT_TIME_DATE Network 5:

CALL SFC 28

OB_NO := 10

SDT

:= #OUT_TIME_DATE

PERIOD := W#16#1201

RET_VAL := MW 200

A

BR

=

M 202.1

Network 6:

CALL SFC 30

OB_NO := 10

RET_VAL := MW 204

A

BR

=

M 202.2

Network 7:

 

CALL SFC 20

SRCBLK := #STARTINFO.T_STMP RET_VAL := MW 206

DSTBLK := P#M 100.0 BYTE 8

Установить прерывание по времени.

Запустить прерывание по времени.

Пересылка блоков: сохранить время суток из информации о событии запуска OB10 в области памяти с MB100 по MB107.

Программирование с помощью STEP 7 v5.3

 

A5E00261405-01

A-91

Приложение

A.5.3.5 OB1 и OB80

Поскольку в этом примере информация о событии запуска OB1 (OB для циклической программы) не оценивается, то отображается только информация о событии запуска OB80.

Раздел кода OB1

Введите в раздел кода OB1 следующую программу пользователя на STL:

STL (OB1)

Объяснение

CALL FC 12

Вызвать функцию FC12

Раздел описаний OB80

В отличие от заданного по умолчанию раздела описаний, в OB80 описываются следующие временные локальные переменные:

Структура для всей информации о событии запуска (STARTINFO)

Структура для времени (T_STMP) внутри структуры STARTINFO)

Имя переменной

Тип данных

Описание

Комментарий

STARTINFO

STRUCT

TEMP

Вся информация о событии запуска

 

 

 

OB80, объявленная как структура

E_ID

WORD

TEMP

Идентификатор события:

PR_CLASS

BYTE

TEMP

Класс приоритета

OB_NO

BYTE

TEMP

Номер OB

RESERVED_1

BYTE

TEMP

Зарезервировано

RESERVED_2

BYTE

TEMP

Зарезервировано

A1_INFO

WORD

TEMP

Дополнительная информация о

 

 

 

событии, вызвавшем ошибку

A2_INFO

DWORD

TEMP

Дополнительная информация об

 

 

 

идентификаторе события, классе

 

 

 

приоритета и номере OB ошибки

T_STMP

STRUCT

TEMP

Структура для элементов времени

 

 

 

суток

YEAR

BYTE

TEMP

 

MONTH

BYTE

TEMP

 

DAY

BYTE

TEMP

 

HOUR

BYTE

TEMP

 

MINUTES

BYTE

TEMP

 

SECONDS

BYTE

TEMP

 

MSEC_WDAY

WORD

TEMP

 

 

END_STRUCT

TEMP

 

 

END_STRUCT

TEMP

 

 

Программирование с помощью STEP 7 v5.3

A-92

A5E00261405-01