
17 SFC для связи с помощью глобальных данных
Системные и стандартные функции для S7-300 и S7-400
17-2 A5E00261410-01
17.1 Передача GD–пакета с помощью SFC60 "GD_SND"
Описание
С помощью SFC 60 ”GD_SND” (global data send [передача глобальных
данных]) данные пакета глобальных данных (GD–пакета) собираются и затем
передаются по маршруту, указанному в GD–пакете. Перед этим GD–пакет
должен быть сконфигурирован с помощью STEP 7.
SFC60 "GD_SND" может быть вызван любом месте программы пользователя.
Вызовы SFC60 не влияют на скорость сканирования, а также сбор и передачу
данных системой в точке контроля цикла.
Возможность прерывания
SFC60 "GD_SND" может прерываться более высокими классами приоритета.
Возможно также, что SFC60 вновь вызывается для того же GD-пакета в более
высоком классе приоритета.
Тогда данные собираются и передаются в более высоком классе приоритета.
Когда программа возвращается в прерванную SFC, последняя немедленно
завершается, а уже собранные данные отбрасываются.
Эта процедура означает, что при обработке самого высокого класса
приоритета передаются консистентные данные (в смысле консистентности,
определенной для глобальных данных).
Консистентность данных в GD
Для обеспечения консистентности данных, собранных из различных областей
памяти, и переданных данных применяются следующие правила.
Консистентными данными могут быть:
• данные простых типов (бит, байт, слово и двойное слово)
•
массив данных типа байт, слово и двойное слово длиной, не
превышающей максимума, зависящего от конкретного CPU.
Обеспечение консистентности для всего GD–пакета
GD-пакет в CPU, передающем данные, имеет структуру, которая не
гарантирует автоматически, что собранные данные будут консистентными.
Это, например, имеет место, когда пакет состоит из массива байтов, и
количество байтов превышает максимальную длину для конкретного CPU.
Если, однако, Вам нужна консистентность для всего GD-пакета, то следуйте в
своей программе процедуре, описанной ниже:
• Заблокируйте или задержите появление более приоритетных прерываний
и асинхронных ошибок, вызвав SFC 39 ”DIS_IRT” или SFC 41 ”DIS_AIRT”.
•
Вызовите SFC60 "GD_SND".
•
Вновь разблокируйте более приоритетные прерывания и асинхронные
ошибки, вызвав SFC 40 ”EN_IRT” или SFC 42 ”EN_AIRT”.