«Автоматизация посредством STEP 7 с использованием STL и SCL и программируемых контроллеров SIMATIC S7-300/400 (Automating with STEP 7 in STL and SCL by Hans Berger) Перевод по изданию 2-му, исправленному 2001 SIMATIC ...»
• Группа 8 используется для организации "эквидистантных" сигналов, при этом блокируется ее использование для ведомых (slave) DPустройств. Вы не сможете сконфигурировать свойства постоянства циклов ("эквидистантности") сигналов, если Вы имеете уже сконфигурированные ведомые (slave) DP-устройства для группы 8.
Конфигурирование прямого обмена данными (lateral communication дополнительные" коммуникации) Ведущее (master) DP-устройство в системе ведущего (master) DPустройства имеет исключительные функции управления назначенными (соответствующим образом оснащенных) станций (ведущих [master] или ведомых [slave] устройств, обозначаемых как "приемник" ["receiver"]) возможно отслеживать в подсети PROFIBUS, какие именно входные данные отдельное ведомое (slave) DP-устройство ("передатчик" ["sender"]) посылает "своему" ведущему (master) устройству. Такой прямой обмен данными называется также "lateral communication" ("дополнительные коммуникации"). В принципе все ведомые (slave) DP-устройства (соответствующим образом оснащенные) могут функционировать как "передатчик" ("sender") в прямом обмене данными.
После того как все станции будут подключены в подсети PROFIBUS Вы можете сконфигурировать прямой обмен данными с помощью утилиты конфигурирования оборудования Hardware Configuration в окне cвойств "Properties" ведомого (slave) DP-устройства ("receiver" - "приемника").
Откройте станцию-"приемник" и выберите DP-интерфейс, а затем выберите опции меню: Edit -> Object Properties (Правка -> Свойства объекта). Вкладка "Configuration" ("Конфигурация") содержит интерфейс передачи между ведомым (slave) DP-устройством и ведущим (master) DPустройством. Здесь в столбце "Mode" ("Режим") установите рабочий режим DX (Direct Data Exchange - Прямой обмен данными). Далее выберите устройство-"sender" ("передатчик"), чьи сигналы должны отслеживаться в "PROFIBUS DP partner" ("партнер по PROFIBUS") в столбце "Address" ("Адрес").
Кроме того, Вы можете использовать прямой обмен данными между двумя системами ведущих (master) DP-устройств в одной подсети PROFIBUS. Например, ведущее устройство в системе ведущего DPустройства 1 может отслеживать данные ведомого (slave) DP-устройства в системе ведущего (master) DP-устройства 2 таким же путем.
20. Основная программа 20.4.3 Системные функции для распределенной периферии (I/O) распределенной периферии (I/O):
Системная функция для инициации прерывания процесса;
Системная функция для посылки SYNC/FREEZE-команд;
Системная функция для активации/деактивации ведомого (slave) DPустройства;
стандартного ведомого (slave) DP-устройства;
Системная функция для чтения пользовательских данных из ведомого Системная функция для записи пользовательских данных в ведомое Таблица 20.7 Параметры для системных функций для распределенной периферии AL_INFO INPUT DWORD Interrupt ID (ID прерывания - передача LADDR INPUT WORD Сконфигурированный диагностический Автоматизация посредством STEP с использованием STL и SCL Таблица 20.7 Параметры для системных функций для распределенной периферии LADDR INPUT WORD Сконфигурированный диагностический 14 LADDR INPUT WORD Сконфигурированный начальный адрес 15 LADDR INPUT WORD Сконфигурированный начальный адрес SFC 7 DP_PRAL Инициация прерывания процесса С помощью системной функции SFC 7 DP_PRAL Вы можете инициировать прерывание процесса в ведущем (master) DP-устройстве, связанном с интеллектуальным ведомым (slave) DP-устройством, из пользовательской программы этого ведомого DP-устройства.
В параметре AL_INFO передается идентификатор ID прерывания, определенный пользователем, то есть передается в стартовую информацию организационного блока ОВ обработки прерывания, вызываемого в ведущем (master) DP-устройстве (переменная OBxx_POINT_ADDR). Запрос на прерывание инициируется при REQ = "1";
параметры RET_VAL и BUSY отображают состояние выполнения задания.
Задание завершено, когда завершено выполнение ОВ обработки 20. Основная программа "Память для передачи" ("transfer memory") между ведущим (master) DPустройством и ведомым (slave) DP-устройством может быть разделена на несколько отдельных адресных областей, которые с точки зрения CPU ведущего (master) устройства рассматриваются как отдельные модули.
Самый младший адрес отдельного адресного пространства является начальным (базовым) адресом модуля ("module starting address"). Вы можете инициировать прерывание процесса в ведущем (master) DPустройстве для каждой из этих адресных областей ("виртуальных" Адресная область определяется в функции SFC 7 с помощью параметров IOID и LADDR с точки зрения CPU ведомого (slave) устройства (идентификатор I/O (ID) и начальный адрес ведомого модуля). При этом стартовая информация OB обработки прерывания будет содержать адрес "модуля", для которого инициируется прерывание, с точки зрения CPU ведущего (master) устройства.
SFC 11 DPSYN_FR Посылка SYNC/FREEZE-команд С помощью системной функции SFC 11 DPSYN_FR Вы можете посылать команды SYNC, UNSYNC, FREEZE и UNFREEZE в SYNC/FREEZE-группы, которые Вы сконфигурировали при помощи утилиты конфигурирования оборудования Hardware Configuration. Операция посылки команды (SEND) инициализируется при значении параметра REQ = "1" и завершается при В параметре GROUP знак каждой группы занимает один бит (при этом бит 0 соответствует группе 1, бит 7 соответствует группе 8). Команды в параметре MODE также организованы побитно:
Таким образом, режимы SYNC и FREEZE для ведомых (slave) DPустройств сначала выключаются (согласно очередности битов). Входы ведомых (slave) DP-устройств сканируются последовательно ведущим (master) DP-устройством, а выходы ведомых (slave) DP-устройств модифицируются; ведомые (slave) DP-устройства немедленно передают принятые выходные сигналы на выходные оконечные устройства Если необходимо "заморозить" ("freeze") входные сигналы нескольких ведомых (slave) DP-устройств в определенное время, Вы можете послать команду FREEZE для соответствующей группы. При этом ведущее (master) DP-устройство будет последовательно считывать входные сигналы, имеющие те состояния, которые были на входах в момент прихода команды FREEZE (то есть в момент их "замораживания"). Эти входные сигналы сохраняют свое значение до того момента, когда пользователь пошлет новую команду FREEZE, в соответствии с которой ведомые (slave) DP-устройства вновь считают и будут удерживать считанные значения сигналов (новые текущие значения) или до того момента, когда пользователь вновь переключит ведомые (slave) DPустройства в "нормальный" режим командой UNFREEZE.
Автоматизация посредством STEP с использованием STL и SCL Если необходимо выдавать выходные сигналы нескольких ведомых (slave) DP-устройств синхронно в определенное время, то сначала Вы должны послать команду SYNC для соответствующей группы. При этом адресованные ведомые (slave) DP-устройства зафиксируют выходные сигналы на выходных оконечных устройствах ("терминалах"). Теперь Вы можете переслать требуемые состояния сигналов для ведомых (slave) DP-устройств. Вслед за передачей этих сигналов Вы вновь должны послать команду SYNC, что приведет к тому, что ведомые DP-устройства одновременно передадут принятые выходные сигналы на выходные оконечные устройства. Эти выходные сигналы будут сохранены ведомыми (slave) DP-устройствами до того момента, когда пользователь пошлет новую команду SYNC, или до того момента, когда пользователь вновь переключит ведомые (slave) DP-устройства в "нормальный" режим SFC 12 D_ACT_DP Активация и деактивация ведомого (slave) DP-устройства С помощью системной функции SFC 12 D_ACT_DP Вы можете деактивировать сконфигурированное (и существующее) ведомое (slave) DP-устройство так, что это устройство будет более недоступно для ведущего (master) DP-устройства. Выходные оконечные устройства ("терминалы") такого деактивированного ведомого (slave) DP-устройства после этого будут иметь "нулевые" состояния сигналов (=0) или "значения подстановки" (или "значения замены" - "substitute value").
Деактивированное ведомое (slave) DP-устройство может быть демонтировано из шины, что не повлечет за собой выдачи сообщения об ошибке; при этом не будет ни сообщения об отказе, ни сообщения об отсутствии модуля. Вызовы организационных блоков обработки асинхронных ошибок ОВ 85 (ошибки выполнения программы при размещении пользовательских данных деактивированного ведомого [slave] DP-устройства в области автоматически обновляемого образа процесса) и ОВ 86 (отказ станции) блокируются. После деактивации ведомого (slave) DP-устройства пользователь в дальнейшем времени не должен пытаться получить доступ к этому ведомому устройству, иначе возникнут ошибки ввода/вывода ("I/O access errors").
С помощью системной функции SFC 12 D_ACT_DP Вы можете вновь активировать ранее деактивированное ведомое (slave) DP-устройство.
Ведомое (slave) DP-устройство конфигурируется и параметризируется ведущим (master) DP-устройством таким же путем, как при восстановлении ("restore") станции. При активировании ранее деактивированного ведомого (slave) DP-устройства организационные блоки обработки ошибок ОВ 85 и ОВ 86 не запускаются. Если параметр BUSY имеет состояние сигнала "0" после активации ведомого (slave) DPустройства, то это устройство может быть доступно из пользовательской SFC 13 DPNRM_DG Считывание диагностических данных С помощью системной функции SFC 13 DPNRM_DG Вы можете считывать диагностические данные из ведомого (slave) DP-устройства. Процедура считывания инициируется, когда параметр запроса REQ = "1", а завершается при возврате параметра BUSY = "0".
20. Основная программа Значение функции RET_VAL при этом содержит число считанных байтов.
В зависимости от ведомого (slave) DP-устройства диагностические данные могут содержать от 6 до 240 байтов. Если объем диагностических данных превышает 240 байтов, то первые 240 байтов пересылаются при считывании и при этом устанавливается соответствующий бит переполнения в диагностических данных.
В параметре RECORD указывается область, в которой сохраняются считанные данные. В качестве фактических параметров допускаются переменные типов ARRAY и STRUCT или указатели ANY типа BYTE (например, P#DBzDBXy.x BYTE nnn).
SFC 14 DPRD_DAT Считывание пользовательских данных С помощью системной функции SFC 14 DPRD_DAT Вы можете считывать пользовательские данные из ведомого (slave) DP-устройства с гарантией консистентности для объемов данных, составляющих 3 байта или больше 4-х байтов. При задании параметров ведомого (slave) DP-устройства Вы должны определить объем консистентных данных.
В параметре LADDR содержится начальный адрес модуля ведомого (slave) DP-устройства (область входов).
В параметре RECORD указывается область, в которой сохраняются считанные данные. В качестве фактических параметров допускаются переменные типов ARRAY и STRUCT или указатели ANY типа BYTE (например, P#DBzDBXy.x BYTE nnn).
SFC 15 DPWR_DAT Запись пользовательских данных С помощью системной функции SFC 15 DPWR_DAT Вы можете записывать пользовательские данные в ведомое (slave) DP-устройство с гарантией консистентности для объемов данных, составляющих 3 байта или больше 4-х байтов. При задании параметров ведомого (slave) DPустройства Вы должны определить объем консистентных данных.
В параметре LADDR содержится начальный адрес модуля ведомого (slave) DP-устройства (область входов).
В параметре RECORD указывается исходная область, в которой хранятся считываемые данные. В качестве фактических параметров допускаются переменные типов ARRAY и STRUCT или указатели ANY типа BYTE (например, P#DBzDBXy.x BYTE nnn).
20.5 Коммуникации посредством глобальных данных 20.5.1 Основы Коммуникации посредством глобальных данных (GD-коммуникации) - это особая система связи (коммуникационная служба), встроенная в операционную систему CPU, которая используется для обмена Автоматизация посредством STEP с использованием STL и SCL использованием MPI-шины. К данным, которые могут переноситься с Для использования GD-коммуникаций необходимо обеспечение ряда требований: все CPU должны быть включены в сеть посредством MPIинтерфейса или подключены к К-шине как в монтажной стойке S7-400, все Для коммуникаций посредством глобальных данных не обязательно использовать операционную систему: существуют системные функции Циклическая передача данных (Cyclic Transfer)
CPU CPU
Подсеть Передача, обусловленная событиями (Event-driven Transfer)CPU CPU
SFC SFC
Подсеть Рис. 20.12 Коммуникации посредством глобальных данных 20. Основная программа Необходимо отметить, что CPU-приемник не подтверждает факт приема глобальных данных. Следовательно, CPU-передатчик не получает никакого ответного сообщения, из которого следовало бы, что "приемник" получил данные, и если получил, то какие именно. Тем не менее, Вы имеете возможность мониторинга состояния связи между двумя CPU, так Посылка и прием глобальных данных зависят от параметра, известного как "частота сканирования" ("scan rate"). Этот параметр определяется количеством циклов сканирования пользовательской программы, после выполнения которого CPU осуществляет передачу или прием данных.Каждый раз процессы передачи данных и их приема между "передатчиком" и "приемником" происходят синхронно в определенной точке цикла, то есть в некоторый момент по окончании сканирования циклически выполняемой программы и перед новым циклом ее выполнения (как, например, при обновлении образа процесса).
Обмен данными происходит в форме пересылки пакетов данных (GD packet) между CPU, сгруппированными в GD-группы (GD circle).
GD-группа (GD circle) CPU, которые обмениваются общими (shared) GD-пакетами, формируют GD-группы (GD circles). GD-группы могут быть следующих видов:
• Одностороннее соединение CPU, который посылает GD-пакеты данных в адрес нескольких других CPU, которые принимают эти • Двустороннее соединение между двумя CPU, при котором каждый из этих двух CPU может посылать GD-пакет данных другому.
• Двустороннее соединение между тремя CPU, при котором каждый из этих трех CPU может послать один GD-пакет данных двум другим CPU В одной GD-группе могут обмениваться данными друг с другом до единиц CPU. Один CPU может при этом принадлежать к нескольким GDгруппам.
В таблице 20.8 Вы можете получить информацию об исходных данных для GD-коммуникаций для отдельных типов CPU.
GD-пакет (GD packet) GD-пакет (GD packet) включает в себя заголовок (header) пакета и один или несколько элементов глобальных данных (GD-элементов):
• Пользовательские данные 1-го GD-элемента (х байтов).
• Пользовательские данные 2-го GD-элемента (х байтов).
Автоматизация посредством STEP с использованием STL и SCL
CPU CPU CPU CPU CPU
GD-группа Рис. 20.13 Пример организации GD-групп Каждый GD-элемент состоит из 2 байтов описания и данных, передаваемых по сети (actual net data). 3 байта требуются для передачи байта данных (байта меркеров), 4 байта требуются для передачи слова данных (слова меркеров), 6 байт требуются для передачи двойного слова данных (двойного слова меркеров). Булева переменная занимает 1 байт данных, передаваемых по сети (net data); следовательно, она занимает такой же объем как и переменная длиной один байт. Значения таймеров и счетчиков, имеющие размер 2 байта каждый, в GD-пакете занимают по GD-элемент может также включать в себя даные из адресной области.Например, запись MB 0:15 означает область байтов от MB 0 до MB 15, а DB20.DBW14:8 представляет область данных, размещенных в блоке DB20, которая начинается со слова данных DBW14 и содержит 8 слов Максимальный размер GD-пакета составляет 32 байта для S7-300 и байта для S7-400. Максимальное число байтов данных, передаваемых по сети посредством GD-пакета, составляет до 22 байтов для S7-300 и до Консистентность данных Консистентность данных обеспечивается для одного GD-элемента. В таблице 20.8 приведены области, определенные для отдельных CPU для 20. Основная программа случая, когда GD-элемент соответствует переменной данного CPU.
Если GD-элемент больше, чем объем данных, для которого гарантируется консистентность, то консистентные данные соответствующего размера располагаются, начиная с первого байта.
Таблица 20.8 Ресурсы CPU для связи посредством глобальных данных GD-ресурсы максимальное число:
принимаемых GD-пакетов на 1 CPU принимаемых GD-пакетов на 1 GD-группу посылаемых GD-пакетов на 1 CPU посылаемых GD-пакетов на 1 GD-группу GD-пакета консистентных данных 20.5.2 Конфигурирование GD-коммуникаций Требования Для того, чтобы использовать возможности GD-коммуникаций у Вас должен быть создан проект, в котором должна быть доступна подсеть MPI и должны быть сконфигурированы S7-станции. В каждой станции должен быть по крайней мере один CPU. Используя кнопку "Properties" ("Свойства") в MPI-интерфейсе на вкладке "General" ("Общие") окна свойств CPU (можно открыть, дважды щелкнув на строке CPU в окне конфигурации оборудования или в строке, содержащей субмодуль MPIинтерфейса), Вы можете установить MPI-адрес и выбрать подсеть MPI Таблица глобальных данных (Global data table) Конфигурирование GD-коммуникаций производится путем заполнения таблицы. Вы можете вызвать пустую таблицу посредством выбора значка подсети MPI в Simatic Manager или при конфигурировании сети (Network Configuration) с помощью опций меню: Options -> Define Global Data (Опции -> Определить глобальные данные). Выберите в таблице столбец, а затем опции меню: Edit -> CPU (Правка -> CPU). В левой половине открывшегося окна для выбора проекта выберите станцию, затем в правой половине окна выберите CPU. Выбор CPU для таблицы глобальных данных подтверждается нажатием клавиши "ОК".
Автоматизация посредством STEP с использованием STL и SCL Выполните те же действия в отношении остальных CPU, участвующих в обмене посредством глобальных данных. Таблица глобальных данных может содержать до 15 столбцов CPU.
Для конфигурирования обмена данными между CPU посредством GDкоммуникаций выберите первую строку под CPU-передатчиком и задайте адрес, значение которого должно передаваться (завершить действие С помощью опций меню: Edit -> Sender (Правка -> Передающий CPU) Вы определяете данное значение, как значение, которое должно быть передано, обозначаемое символом-префиксом ">" и выделяемое тенью. В той же строке под CPU-приемником Вы определяете адрес, в который должно быть принято данное значение (свойство "Receiver" ["Приемник"] устанавливается по умолчанию). Функции таймера и счетчика Вы можете использовать только как "передатчики"; "приемником" данных и от функции таймера, и от функции счетчика должен служить адрес области, Строка может содержать несколько "приемников", но при этом может иметь только один "передатчик" (см. таблицу 20.9). После заполнения такой таблицы Вы должны ее скомпилировать. Для этого выберите опции меню: GD Table -> Compile (GD-таблица -> Компилировать).
Таблица 20.9 Пример GD-таблицы (GD Table) с указанием состояния (Status) и частоты сканирования (Scan Rates) Станция 417 \ Станция 417 \ Станция 416 \ Станция 315 Станция 314CP\ GD-иденCPU 417 (3) CPU 414 (4) CPU 416 (5) ведомая (slave)\ CPU 314 (10) тификатор GD 2.1.1 >Z10:10 DB3.DBW20: После компиляции (фаза 1) созданных системных данных достаточно для обеспечения обмена посредством глобальных данных. Если Вы также конфигурируете состояние GD-коммуникаций (GD-status) и частоту 20. Основная программа компилирование GD-таблицы.
Идентификатор глобальных данных (GD ID) После выполнения без ошибок процесса компилирования GD-таблицы STEP 7 заполняет столбец "GD ID". Этот столбец показывает пользователю структуру передаваемых данных в GD-группах, GD-пакетах и GD-элементах. Например, GD ID "GD 2.1.3" соответствует GD-группе 2, GD-пакету 1 и GD-элементу 3. В GD-таблице в столбце каждого CPU Вы можете также найти назначенные ресурсы (число GD-групп) для Состояние GD-коммуникаций (GD status) После выполнения процесса компилирования GD-таблицы Вы можете задать адреса для формирования состояния (статуса) GD-коммуникаций.
Это выполняется с помощью опций меню: View -> GD Status (Вид -> состояние GD-коммуникаций). Параметр общего состояния (статуса) (GST) определяет все коммуникационные соединения в таблице.
коммуникационных соединений для передачи GD-пакетов. В каждом случае параметр использует двойное слово данных.
Частота сканирования (Scan rate) Осуществление функций связи посредством глобальных данных требует значительной доли времени на выполнение соответствующих операций в общем объеме работы операционной системы CPU, а также требует определенных затрат времени на передачу по MPI-шине. Для того, чтобы свести такие затраты времени ("коммуникационная нагрузка") к минимуму, можно соответствующим образом настраивать параметр "Scan rate" ("Частота сканирования"). Этот параметр определяет количество циклов сканирования пользовательской программы, после выполнения которых CPU осуществляет передачу или прием данных в форме GD-пакета (GDpacket).
Так как с учетом применения параметра "Scan rate" ("Частота сканирования") обновление данных происходит не в каждом цикле сканирования программы, пользователю рекомендуется избегать использования GD-коммуникаций для пересылки данных, критичных ко После первого выполнения процесса компилирования GD-таблицы (если не произошло ошибок) Вы можете самостоятельно определить параметры "Scan rate" ("SR" - "частота сканирования") для каждого GD-пакета и для каждого CPU. Это выполняется с помощью опций меню: View -> Scan Rates (Вид -> Частота сканирования). Стандартно параметр "Scan rate" ("Частота сканирования") устанавливается таким, что при "пустом" (без пользовательской программы) CPU посылка и прием GD-пакета осуществляется приблизительно каждые 10 миллисекунд. Если после этого загрузить в CPU пользовательскую программу, интервал можду соседними посылками или приемами GD-пакета возрастает.
сканирования") в диапазоне от 1 до 255.
Необходимо отметить, что при уменьшении значения "Scan rate" ("Частота Автоматизация посредством STEP с использованием STL и SCL сканирования") "коммуникационная нагрузка" CPU возрастает.
Для того, чтобы поддерживать коммуникационную нагрузку CPU в приемлемых рамках, необходимо устанавливать такие значения параметра "Scan rate" ("Частота сканирования") для CPU-передатчика, чтобы произведение этого значения на величину времени сканирования для S7-300 было больше 60 мс, а для S7-400 было больше 10 мс.
Соответственно для CPU-приемника необходимо устанавливать такие частоты сканирования, чтобы произведение их значений на величину времени сканирования для S7-300 было меньше 60 мс, а для S7-400 было меньше 10 мс. Выполнение указанных рекомендаций позволяет избежать потерь отдельных GD-пакетов.
Установив нулевое ("0") значение параметра "Scan rate" ("Частота сканирования"), Вы можете выключть обмен данными посредством соответствующего GD-пакета, если необходимо использовать только обусловленный событиями обмен данными с использованием SFCфункций.
После конфигурирования параметров состояния (статуса) GD и параметров "Scan rate" ("Частота сканирования") Вы должны снова (во второй раз) скомпилировать GD-таблицу. Затем STEP 7 введет скомпилированные данные в объект System data (системные данные).
Функции связи посредством глобальных данных становятся доступными после того, как GD-таблица пересылается в подключенные CPU с помощью опций меню: PLC -> Download (PLC -> Загрузить).
GD-коммуникации становятся доступными также после того, как будет переслан объект System data (системные данные), который содержит все установки для оборудования и установки для параметров.
20.5.3 Системные функции для GD-коммуникаций В системах S7-400 Вы можете из программы пользователя управлять обменом данными посредством GD-коммуникаций. В дополнение к циклической передаче глобальных данных или вместо циклической передачи глобальных данных Вы можете организовать передачу или прием GD-пакета посредством следующих системных функций:
Список параметров для этих системных функций представлен в таблице 20.10. Необходимым условием для использования этих системных функций является наличие сконфигурированной таблицы глобальных данных. После компилирования этой таблицы STEP 7 в столбце "GD Identifier" (Идентификатор GD-коммуникаций) показывает пользователю структуру передаваемых данных - номера GD-групп и GD-пакетов, которые необходимо учитывать при назначении параметров функций.
Функция пересылки GD-пакета SFC 60 GD_SND вводит GD-пакет в системную память CPU и инициализирует его пересылку; функция приема 20. Основная программа GD-пакета SFC 61 GD_RCV позволяет выбрать GD-пакет из системной памяти CPU. Если параметр "Scan rate" ("Частота сканирования") имеет ненулевое (больше, чем "0") значение в GD-таблице, то циклическая передача данного GD-пакета данных также имеет место.
Если необходимо обеспечивать консистентность данных для GD-пакета в целом при пересылке с использованием системных функций SFC 60 и SFC 61, то пользователь должен заблокировать (disable) или отложить на время (delay) выполнение прерываний с высоким приоритетом, как и обработку асинхронных ошибок, как на "передающей" (Send) так и на "принимающей" (Receive) стороне, во время выполнения функций SFC Системные функции SFC 60 и SFC 61 не обязательно вызывать парами; и "смешанные" операции также возможны. Например, Вы можете использовать функцию SFC 60 GD_SND для обеспечения пересылки GDпакетов, обусловленной событиями с последующим циклическим их Таблица 20.10 Параметры для SFC для GD-коммуникаций.
20.6 SFC-коммуникации 20.6.1 Внутристанционные (Station-Internal) SFC-коммуникации Основы При использовании "внутристанционных" (Station-Internal) SFCкоммуникаций Вы можете организовать обмен данными между программируемыми модулями внутри SIMATIC-станции. В этом случае в качестве коммуникационных функций используются SFC-функции операционной системы CPU. Если это необходимо, данные SFC-функции могут устанавливать коммуникационные соединения самостоятельно.
Поэтому такие "внутристанционные" соединения не конфигурируются в таблице соединений ("Communication via non-configured connections", basic communication - "Функции связи посредством несконфигурированных соединений", базовые функции связи).
Внутристанционные (Station-Internal) SFC-коммуникации могут использоваться параллельно с циклическим, обусловленным событиями, обменом данными посредством PROFIBUS-DP между ведущим (master) CPU и ведомым (slave) CPU (см. рис. 20.14).
Автоматизация посредством STEP с использованием STL и SCL Одностороннее соединение (One-way connection) Подсеть
PROFIBUS
Рис. 20.14 Внутристанционные (Station-Internal) SFC-коммуникации Адресация узлов, соединений Идентификация узла определяется его I/O-адресом: в параметре LADDR Вы задаете начальный адрес модуля, а в параметре IOID определяете, Рассматриваемые системные функции устанавливают требуемые коммуникационные соединения динамически. Они разрывают вновь соединение после окончания выполнения коммуникационного задания (в соответствии с программой). Если соединение не может быть установлено из-за отсутствия требуемых ресурсов в устройстве, передающем данные, или в устройстве, принимающем данные, поступает сигнал в виде сообщения: "Temporary lack of resources" ("Временная нехватка ресурсов"). В этом случае попытка выполнить передачу данных должна быть предпринята некоторое время спустя. При этом в каждом направлении может быть установлено только одно соединение между Вы можете использовать одну системную функцию для разных коммуникационных соединений, изменяя параметры блока во время выполнения программы. Любая SFC не может вызвать прерывание самой себя. Отдельные части программы, в которых вызывается одна из рассматриваемых функций, могут быть изменены только в режиме STOP;Пользовательские данные, консистентность данных SFC-функции для обмена данными между программируемыми модулями внутри SIMATIC-станции могут использоваться для передачи до 76 байтов пользовательских данных. Независимо от направления передачи операционная система CPU разбивает пользовательские данные на блоки, которые обладают свойством внутренней консистентности ("consistent within themselves"). В S7-300 эти блоки имеют длину 8 байтов;
20. Основная программа в CPU 412/413 эти блоки имеют длину 16 байтов; в CPU 414/416 эти блоки имеют длину 32 байта. При обмене данными между двумя CPU размер блока, характерный для "пассивного" CPU, имеет решающее значение с точки зрения консистентности передаваемых данных.
Конфигурирование "внутристанционных" (Station-Internal) SFC-коммуникаций Внутристанционные (Station-Internal) SFC-коммуникации являются особым видом связи, для которой не требуется конфигурирования, так как соединения для передачи данных устанавливаются динамически. Вы можете либо использовать существующую подсеть PROFIBUS, либо создать новую в SIMATIC Manager (для этого выберите объект Proect, после чего выберите опции меню: Insert -> Subnetwork -> PROFIBUS [Вставка -> Подсеть -> PROFIBUS]) или при помощи утилиты конфигурирования сети Network Configuration (см. раздел 2. "Конфигурирование сети").
Пример: допустим у Вас есть сконфигурированная распределенная периферия (I/O) с CPU 315-2DP в качестве ведущего (master) устройства и Вы используете другой CPU 315-2DP в качестве интеллектуального ведомого (slave) устройства. В данной ситуации Вы можете использовать внутристанционные (Station-Internal) SFC-коммуникации для обоих контроллеров как для чтения, так и для записи данных.
20.6.2 Системные функции для обмена данными внутри станции Для обмена данными между двумя CPU внутри одной станции используются следующие системные функции:
функция для считывания данных (Read data), функция для разрыва соединения (Disconnect).
Список параметров для данных системных функций представлен в SFC 72 I_GET Cчитывание данных (Read data) Выполнение данной функции начинается при следующих значениях параметров REQ и BUSY: REQ = "1" и BUSY = "0" (при первом вызове).
Пока функция выполняется, параметр BUSY установлен (BUSY = "1"). При этом любые изменения параметра REQ не влияют на процесс выполнения задания. Как только выполнение функции завершается, параметр BUSY сбрасывается (BUSY = "0"). Если при этом параметр REQ все еще установлен (REQ = "1"), то сразу же вновь начинает выполняться Автоматизация посредством STEP с использованием STL и SCL Если запущена процедура считывания данных, операционная система в CPU партнера собирает и посылает запрашиваемые данные. При вызове SFC принятые данные пересылаются в область назначения. Параметр RET_VAL при этом содержит число переданных байтов.
Если параметр CONT сброшен (CONT = "0"), то коммуникационное соединение разорвано, если параметр CONT установлен (CONT = "1"), то коммуникационное соединение создано. Данные также могут быть считаны, когда коммуникационный партнер находится в режиме STOP.
Параметры RD и VAR_ADDR описывают область, из которой пересылаемые данные должны быть считаны, или в которую параметрами функции могут быть адреса, переменные или области данных, адресованные указателем ANY. Передаваемые и принимаемые данные при этом не проверяются на корректность (на соответствие типу Таблица 20.11 Параметры для SFC для GD-коммуникаций.
SFC 73 I_PUT Запись данных (Write data) Выполнение данной функции начинается при следующих значениях параметров REQ и BUSY: REQ = "1" и BUSY = "0" (при первом вызове).
Пока функция выполняется, параметр BUSY установлен (BUSY = "1"). При этом любые изменения параметра REQ не влияют на процесс выполнения задания. Как только выполнение функции завершается, параметр BUSY сбрасывается (BUSY = "0"). Если при этом параметр REQ 20. Основная программа все еще установлен (REQ = "1"), то сразу же вновь начинает выполняться Если запущена процедура записывания данных, операционная система при первом вызове передает все данные из области CPU-источника во внутренний буфер и посылает их коммуникационному партнеру. CPUприемник записывает принятые данные в область VAR_ADDR. После этого параметр BUSY сбрасывается (BUSY = "0"). Данные также могут быть записаны, когда коммуникационный партнер находится в режиме Параметры SD и VAR_ADDR описывают область, из которой пересылаемые данные должны быть считаны, или в которую параметрами функции могут быть адреса, переменные или области данных, адресованные указателем ANY. Передаваемые и принимаемые данные при этом не проверяются на корректность (на соответствие типу SFC 74 I_ABORT Разрыв соединения (Disconnect) Выполнение данной функции инициируется при значении параметра REQ, равном "1", - при этом происходит разрывание связи с определенным коммуникационным партнером. С помощью системной функции SFC 74 I_ABORT Вы можете разорвать только те связи, которые установлены в рассматриваемой станции с помощью системных функций SFC 72 I_GET и SFC 73 I_PUT. Пока функция выполняется, параметр BUSY установлен (BUSY = "1"). При этом любые изменения параметра REQ не влияют на процесс выполнения функции. Как только выполнение функции завершается, параметр BUSY сбрасывается (BUSY = "0"). Если при этом параметр REQ все еще установлен (REQ = "1"), то сразу же вновь начинает выполняться данная функция.
20.6.3 Внестанционные (Station-External) SFC-коммуникации Основы При использовании "внестанционных" (Station-External) SFCкоммуникаций Вы можете организовать обусловленный событиями обмен данными между разными SIMATIC-станциями. Станции должны быть связаны друг с другом посредством MPI-подсети. В этом случае в качестве коммуникационных функций используются SFC-функции операционной системы CPU. Если это необходимо, данные SFC-функции могут устанавливать коммуникационные соединения самостоятельно.
Поэтому такие "внестанционные" соединения не конфигурируются в таблице соединений ("Communication via non-configured connections", basic communication - "Функции связи посредством несконфигурированных соединений", базовые функции связи).
Внестанционные (Station-External) SFC-коммуникации позволяют осуществлять обусловленный событиями обмен данными параллельно, например, с циклическим обменом посредством глобальных данных (см.
Автоматизация посредством STEP с использованием STL и SCL Двустороннее соединение (Two-way connection)
CPU CPU
SFC SFC
Подсеть Одностороннее соединение (One-way connection)CPU CPU
Подсеть Рис. 20.15 Внестанционные (Station-External) SFC-коммуникации Адресация узлов, соединений Рассматриваемые системные функции обеспечивают связь между узлами, адреса которых принадлежат одной MPI-подсети. Идентификация узла определяется его MPI-адресом (параметр DEST_ID).SFC-функции для обмена данными между разными SIMATIC-станциями одной MPI-подсети устанавливают требуемые коммуникационные связи динамически и, если требуется, они могут разорвать связь после окончания выполнения коммуникационного задания. Если соединение не может быть установлено из-за отсутствия требуемых ресурсов в устройстве, передающем данные, или в устройстве, принимающем данные, то поступает сигнал в виде сообщения: "Temporary lack of resources" ("Временная нехватка ресурсов"). В этом случае попытка выполнить передачу данных должна быть предпринята некоторое время 20. Основная программа спустя. При этом в каждом направлении может быть установлено только одно соединение между двумя коммуникационными партнерами.
При переходе системы из режима RUN в режим STOP все активные соединения (все системные функции, кроме X_RECV) разрываются.
Вы можете использовать любую из этих системных функций для разных коммуникационных соединений, изменяя параметры блока во время выполнения программы. Любая SFC не может вызвать прерывание самой себя. Отдельные части программы, в которых вызывается одна из рассматриваемых функций, могут быть изменены только в режиме STOP;
после этого выполняется полный перезапуск.
Пользовательские данные, консистентность данных SFC-функции для обмена данными между разными SIMATIC-станциями могут использоваться для передачи до 76 (максимум) байтов пользовательских данных. Независимо от направления передачи операционная система CPU разбивает пользовательские данные на блоки, которые обладают свойством внутренней консистентности ("consistent within themselves"). В S7-300 эти блоки имеют длину 8 байтов;
в CPU 412/413 эти блоки имеют длину 16 байтов; в CPU 414/416 эти блоки При обмене данными между двумя CPU с помощью функций X_GET или X_PUT размер блока, характерный для "пассивного" CPU, имеет решающее значение с точки зрения консистентности передаваемых данных. При обмене данными с помощью SEND/RECEIVE обеспечивается консистентность всех данных.
Конфигурирование "внестанционных" (Station-External) SFC-коммуникаций Внестанционные (Station-External) SFC-коммуникации являются особым видом связи, для которой не требуется конфигурирования, так как соединения для передачи данных устанавливаются динамически. Вы можете либо использовать существующую подсеть MPI, либо создать Пример: допустим у Вас есть секционированная монтажная стойка S7-400, в которой в каждой секции установлен один CPU 416; кроме того к одной из секций S7-400 с помощью MPI-кабеля подключена станция S7-300 с CPU 314. Все три CPU сконфигурированы с помощью утилиты конфигурирования оборудования Hardware Configuration, например, как устройства, связанные подсетью MPI. В данной ситуации Вы можете использовать внестанционные (Station-External) SFC-коммуникации для всех трех контроллеров для обмена данными.
станциями ("внестанционные" SFC) Для обмена данными между устройствами-партнерами в разных станциях одной подсети используются следующие системные функции:
Автоматизация посредством STEP с использованием STL и SCL Список параметров для данных системных функций представлен в Таблица 20.12 Параметры для SFC для обмена данными между станциями.
20. Основная программа SFC 65 X_SEND Пересылка данных (Send data) Выполнение данной функции начинается при следующих значениях параметров REQ и BUSY: REQ = "1" и BUSY = "0" (при первом вызове).
Пока функция выполняется, параметр BUSY находится в установленном состоянии (BUSY = "1"). При этом любые изменения параметра REQ не влияют на процесс выполнения задания. Как только выполнение функции завершается, параметр BUSY сбрасывается (BUSY = "0"). Если при этом параметр REQ все еще установлен (REQ = "1"), то сразу же вновь начинает выполняться данная функция.
При первом вызове операционная система пересылает все данные из области источника во внутренний буфер, а затем пересылает эти данные Пока выполняется функция пересылки данных, параметр BUSY находится в установленном состоянии (BUSY = "1"). Если устройство-партнер сигнализирует о получении данных, параметр BUSY сбрасывается в "0" и выполнение функции пересылки данных завершается.
Если параметр CONT сброшен (CONT = "0"), то коммуникационное соединение разорвано, и ресурсы соответствующего CPU доступны для установления других коммуникационных связей. Если параметр CONT установлен (CONT = "1"), то коммуникационное соединение создано.
Параметр REQ_ID позволяет назначить посылаемым данным идентификатор ID, который в дальнейшем может быть проверен с Параметры SD описывает область, из которой пересылаемые данные должны быть считаны. Фактическими параметрами функции могут быть адреса, переменные или области данных, адресованные указателем ANY.
Передаваемые и принимаемые данные при этом не проверяются на корректность (на соответствие типу данных).
SFC 66 X_RCV Прием данных (Receive data) При выполнении функции принимаемые данные помещаются во внутренний буфер. Несколько пакетов данных могут быть помещены в очередь в хронологическом порядке - в порядке их поступления.
Для проверки факта принятия данных используется параметр EN_DT со значением "0". Если EN_DT = "0", параметр NDA = "1", а в параметре RET_VAL содержится число принятых байтов данных. При этом параметр REQ_ID содержит такое же значение, как и соответствующий параметр функции SFC 65 X_SEND. Если параметр EN_DT = "1", то рассматриваемая функция SFC 66 X_RCV передает самый первый пакет данных (поступивший первым) в область назначения; при этом параметр NDA = "1", а в параметре RET_VAL содержится число переданных байтов данных. Если параметр EN_DT = "1", а в очереди при этом отсутствуют При полном перезапуске все пакеты данных в очереди отбрасываются. В случае разрыва соединения или при перезапуске сохраняется только первый пакет данных в очереди (поступивший первым), при условии, что он уже был запрошен посредством параметра EN_DT = "0", в противоположном случае он также будет отброшен, как и остальные Автоматизация посредством STEP с использованием STL и SCL Параметр RD описывает область, в которую принимаемые данные должны быть записаны. Фактическими параметрами функции могут быть адреса, переменные или области данных, адресованные указателем ANY.
Передаваемые и принимаемые данные при этом не проверяются на корректность (на соответствие типу данных). Если принимаемые данные не имеют значения для Вас, то в качестве параметра RD функции SFC X_RCV допустимо использовать "пустой" указатель ANY (NIL указатель).
SFC 67 X_GET Cчитывание данных (Read data) Выполнение данной функции начинается при следующих значениях параметров REQ и BUSY: REQ = "1" и BUSY = "0" (при первом вызове).
Пока функция выполняется, параметр BUSY остается установленным (BUSY = "1"). При этом любые изменения параметра REQ не влияют на процесс выполнения задания.
Как только выполнение функции завершается, параметр BUSY сбрасывается (BUSY = "0"). Если параметр REQ все еще установлен (REQ = "1"), то сразу же вновь начинает выполняться данная функция.
Если запущена процедура считывания данных, операционная система в CPU партнера собирает и посылает данные, запрашиваемые в параметре VAR_ADDR. При вызове SFC принятые данные пересылаются в область назначения, определенную в параметре RD. Параметр RET_VAL при этом содержит число переданных байтов.
Если параметр CONT сброшен (CONT = "0"), то коммуникационное соединение разорвано, если параметр CONT установлен (CONT = "1"), то коммуникационное соединение установлено. Данные также могут быть считаны, когда коммуникационный партнер находится в режиме STOP.
Параметры RD и VAR_ADDR описывают область, из которой пересылаемые данные должны быть считаны, или в которую параметрами функции могут быть адреса, переменные или области данных, адресованные указателем ANY. Передаваемые и принимаемые данные при этом не проверяются на корректность (на соответствие типу SFC 68 X_PUT Запись данных (Write data) Выполнение данной функции начинается при следующих значениях параметров REQ и BUSY: REQ = "1" и BUSY = "0" (при первом вызове).
Пока функция выполняется, параметр BUSY установлен (BUSY = "1"). При этом любые изменения параметра REQ не влияют на процесс Как только выполнение функции завершается, параметр BUSY сбрасывается (BUSY = "0"). Если параметр REQ все еще установлен (REQ = "1"), то сразу же вновь начинает выполняться данная функция.
20. Основная программа Если запущена процедура записывания данных, операционная система при первом вызове передает все данные из области источника, определенной в параметре SD, во внутренний буфер при первом вызове, а затем посылает их коммуникационному партнеру. Операционная система CPU партнера записывает принятые данные в область, определенную в параметре VAR_ADDR. После этого параметр BUSY Данные также могут быть записаны, когда коммуникационный партнер Параметры RD и VAR_ADDR описывают область, из которой пересылаемые данные должны быть считаны, или в которую параметрами функции могут быть адреса, переменные или области данных, адресованные указателем ANY. Передаваемые и принимаемые данные при этом не проверяются на корректность (на соответствие типу SFC 69 X_ABORT Рассоединение связи (Disconnect) Выполнение данной функции инициируется при значении параметра REQ, равном "1" - при этом происходит разрывание связи с определенным коммуникационным партнером. С помощью системной функции SFC 69 X_ABORT Вы можете разорвать только те связи, которые установлены в рассматриваемой станции с помощью системных функций SFC X_SEND, X_GET и X_PUT. Пока функция выполняется, параметр BUSY установлен (BUSY = "1"). При этом любые изменения параметра REQ не влияют на процесс выполнения функции. Как только выполнение функции завершается, параметр BUSY сбрасывается (BUSY = "0"). Если параметр REQ все еще установлен (REQ = "1"), то сразу же вновь начинает выполняться данная функция.
20.7 SFB-коммуникации 20.7.1 Основы При использовании SFB-коммуникаций (коммуникаций посредством системных функциональных блоков) Вы можете организовать обмен данными большого объема между разными SIMATIC-станциями. При этом станции должны быть связаны друг с другом посредством подсети; это может быть подсеть MPI, PROFIBUS или Ethernet. В данном случае коммуникационные соединения будут иметь статический характер.
Поэтому эти соединения должны конфигурироваться в таблице соединений ("Communication via configured connections", extended communication - "Функции связи посредством сконфигурированных соединений", дополнительные функции связи).
Коммуникационные функции являются системными функциональными блоками, встроенными в операционную систему S7-400 CPU. Связанные экземплярные блоки при этом размещаются в памяти пользователя.
Автоматизация посредством STEP с использованием STL и SCL Двустороннее соединение (Two-way connection)
CPU CPU
SFB SFB
Подсеть MPI, PROFIBUS или Ethernet Одностороннее соединение (One-way connection)CPU CPU
Подсеть MPI, PROFIBUS или Ethernet Если Вам необходимо использовать SFB-коммуникации, то скопируйте описание интерфейса SFB из стандартной библиотеки Standard Library из раздела System Function Blocks (Системные функциональные блоки) в каталог Blocks (Блоки), создайте экземплярные блоки данных для каждого 20. Основная программа вызова SFB со связанным экземплярным блоком данных. В случае инкрементного программирования Вы можете также выбирать SFB из каталога программных элементов (program element catalog) и получить автоматически созданный экземплярный блок данных.Конфигурирование SFB-коммуникаций Предпосылкой для осуществления коммуникаций посредством системных функциональных блоков является наличие сконфигурированной таблицы соединений (Connection table), в которой должны быть определены коммуникационные соединения.
Коммуникационные соединения специфицируются идентификаторами (ID соединения) для каждого коммуникационного партнера. STEP 7 назначает ID соединения при компилировании таблицы соединений (Connection table). При этом различаются "local ID" ("локальные ID") для инициализации SFB в локальном (или "собственном" - "own") модуле и "remote ID" ("удаленные ID") для инициализации SFB в модуле коммуникационного партнера.
Одни и те же логические соединения могут быть использованы для различных запросов функций передачи/приема (Send/Receive). Чтобы различать подобные случаи, Вы должны дополнительно использовать идентификатор задания (job ID) вместе с ID соединения (connection ID), чтобы определить связи между передающим (Send) блоком и принимающим (Receive) блоком.
Инициализация Для установления связи с коммуникационным партнером при перезапуске необходимо инициализировать SFB-коммуникации. Инициализация имеет место в CPU, имеющем атрибут "Active connection buildup = Yes" ("Установление активного соединения = Да") в таблице соединений. Вы должны в цикле вызывать используемые коммуникационные SFB в OB перезапуска и инициализировать доступные параметры, как показано • ID = ID локального соединения из таблицы соединений (connection • PI_NAME = переменной с содержанием 'P_PROGRAM' в кодировке Функциональные блоки должны продолжать вызываться в программном цикле, пока параметр DONE не получит значение "1". Параметры ERROR и STATUS предоставляют информацию, касающуюся ошибок, которые были обнаружены, и о состоянии (статусе) задания. Вам не нужно переключать области данных при перезапуске (это касается параметров В программном цикле должны "абсолютно" вызываться функциональные блоки SFB, и при этом управление обменом данными может осуществляться с помощью параметров REQ и EN_R.
Автоматизация посредством STEP с использованием STL и SCL 20.7.2 Двусторонний обмен данными (Two-way Data Exchange) При использовании двустороннего обмена данными (Two-way Data Exchange) Вам необходимо организовать вызов одного передающего (SEND) блока и одного принимающего (Receive) блока на соответствующих концах коммуникационного соединения. Оба блока должны иметь идентификаторы соединения (connection ID), которые находятся в таблице соединений в одной и той же строке. Вы можете также использовать несколько пар блоков, которые должны при этом отличаться идентификаторами задания (job ID).
используются следующие SFB:
функциональный блок для некоординированной передачи пакета данных, размер которого определяется CPU (Uncoordinated sending of функциональный блок для некоординированного приема пакета данных, размер которого определяется CPU (Uncoordinated receiving of функциональный блок для передачи блока данных размером до кбайтов (Block-oriented sending of data), функциональный блок для приема блока данных размером до кбайтов (Block-oriented sending of data).
Список параметров для этих SFB представлен в таблице 20.13.
SFB 8 USEND и SFB 9 URCV Некоординированная передача и прием пакета данных (Uncoordinated sending/receiving of data packet) В рассматриваемых системных функциональных блоках параметры SD_x и RD_x используются для определения переменной или области, предназначенной для передачи данных. Область пересылаемых данных SD_x должна соответствовать области принимаемых данных RD_x. Эти параметры должны задавать область данных без каких-либо пропусков Не требуется определять значения для неиспользуемых параметров (так как и в FB; не все параметры SFB требуют присвоения значений).
При первом вызове SFB 9 создается "приемный почтовый ящик" (Receive mailbox); при всех последующих вызовах прием данных производится в данный "почтовый ящик".
Положительный фронт сигнала, поступающего в параметр REQ (request запрос") запускает процедуру обмена данными, положительный же фронт сигнала, поступающего в параметр R (reset - "сброс") прекращает процедуру обмена. Значение "1" в параметре EN_R (enable receive прием разрешен) сигнализирует о том, что коммуникационный партнер 20. Основная программа Таблица 20.13 Параметры для SFB для передачи и приема данных.
В параметре ID инициализируются идентификаторы соединения (connection ID), которые вводятся системой STEP 7 в таблицу соединений (connection table) и для локального модуля, и для модуля партнера (эти два идентификатора соединения могут различаться). Параметр R_ID позволяет задать определяющий и уникальный идентификатор задания (job ID), который должен быть идентичен для передаваемого (Send) и получаемого (Receive) блоков данных. Такой подход позволяет для нескольких пар передаваемых (Send) и получаемых (Receive) блоков использовать единое логическое соединение (так как каждая пара имеет уникальный идентификатор).
При первом вызове блок передает фактические значения параметров ID и R_ID в соответствующий экземплярный блок. При первом вызове устанавливается коммуникационная связь (для данного экземпляра) до момента следующего полного перезапуска.
Автоматизация посредством STEP с использованием STL и SCL Значениями параметра DONE и параметра NDR, равными "1", блок сигнализирует о том, что задание выполнено без ошибок. Если в процессе выполнения задания обнаруживается ошибка, то для индикации этого используется параметр ERROR. Если значение параметра STATUS отлично от нуля и при этом ERROR = "0", то это соответствует сигналу предупреждения, а если при этом ERROR = "1", то это соответствует сигналу об ошибке (о сбое). Пользователь должен обеспечить проверку параметров DONE, NDR, STATUS и ERROR после каждого вызова блока.
SFB 12 BSEND и SFB 13 BRCV Передача и прием блока данных (Block-oriented sending/receiving of data) В рассматриваемых системных функциональных блоках параметры SD_x и RD_x используются для указания на первый байт области данных (при этом длина области не проверяется); число байтов пересылаемых или принимаемых данных должна быть задана область в параметре LEN.
Указанные функции позволяют передавать до 64 кбайтов данных; при этом данные передаются в блоках (иногда называемых фреймами [frames]). Такая передача данных сама по себе является асинхронной по отношению к процессу сканирования пользовательской программы.
Положительный фронт сигнала, поступающего в параметр REQ (request запрос") запускает процедуру обмена данными, тогда как положительный фронт сигнала, поступающего в параметр R (reset - "сброс") прекращает процедуру обмена. Значение "1" в параметре EN_R (enable receive прием разрешен) сигнализирует о том, что коммуникационный партнер идентификаторы соединения (connection ID), которые вводятся системой STEP 7 в таблицу соединений (connection table) и для локального модуля, и для модуля партнера (эти два идентификатора соединения могут Параметр R_ID позволяет задать определяющий и уникальный идентификатор задания (job ID), который должен быть идентичен для передаваемого (Send) и получаемого (Receive) блоков данных. Такой подход позволяет для нескольких пар передаваемых (Send) и получаемых (Receive) блоков использовать единое логическое соединение (так как каждая пара имеет уникальный идентификатор).
При первом вызове блок передает фактические значения параметров ID и R_ID в соответствующий экземплярный блок. При первом вызове устанавливается коммуникационная связь (для данного экземпляра) до момента следующего полного перезапуска.
Значениями параметра DONE и параметра NDR, равными "1", блок сигнализирует о том, что задание выполнено без ошибок. Если в процессе выполнения задания обнаруживается ошибка, то для индикации этого используется параметр ERROR. Если значение параметра STATUS отлично от нуля и при этом ERROR = "0", то это соответствует сигналу предупреждения, а если при этом ERROR = "1", то это соответствует сигналу об ошибке (о сбое). Пользователь должен обеспечить проверку параметров DONE, NDR, STATUS и ERROR после каждого вызова блока.
20. Основная программа 20.7.3 Односторонний обмен данными (One-way Data Exchange) При одностороннем обмене данными (One-way Data Exchange) Вам необходимо организовать вызов одного коммуникационного блока SFB только в одном из CPU. Операционная система CPU коммуникационного партнера самостоятельно выполнит необходимые коммуникационные используются следующие SFB:
функциональный блок для считывания данных, максимальный размер функциональный блок для записывания данных, максимальный размер Список параметров для функциональных блоков SFB представлен в Операционная система CPU коммуникационного партнера собирает данные, считанные с помощью системного функционального блока SFB 14; операционная система CPU коммуникационного партнера функционального блока SFB 15. В данных случаях пользователю не приходится создавать программы для CPU коммуникационного партнера для пересылки или приема данных.
Положительный фронт сигнала, поступающего в параметр REQ (request запрос") запускает процедуру обмена данными.
В параметре ID инициализируется идентификатор соединения (connection ID), который вводится системой STEP 7 в таблицу соединений (connection Значениями параметра DONE и параметра NDR, равными "1", блок сигнализирует о том, что задание выполнено без ошибок. Если в процессе выполнения задания обнаруживается ошибка (любая), то при этом Если значение параметра STATUS отлично от нуля и при этом ERROR = "0", то это соответствует сигналу предупреждения, а если при этом ERROR = "1", то это соответствует сигналу об ошибке (о сбое).
Пользователь должен обеспечить проверку параметров DONE, NDR, STATUS и ERROR после каждого вызова блока.
С помощью параметра ADDR_n определяется переменная или область в CPU коммуникационного партнера, из которой необходимо считать или в которую необходимо записать данные. Области, определенные в ADDR_n, должны совпадать с областями, определенными в параметрах SD_x или RD_x. Эти параметры должны задавать область данных без каких-либо пропусков (пробелов), начиная с 1.
Не требуется определять значения для неиспользуемых параметров (так как и в FB: не все параметры SFB требуют присвоения значений).
Автоматизация посредством STEP с использованием STL и SCL Таблица 20.14 Параметры для SFB для чтения и записи данных.
20.7.4 Передача данных на принтер (Print Data) Функциональный блок SFB 16 PRINT позволяет организовать передачу данных на печатающее устройство вместе со спецификацией формата этих данных с использованием коммуникационного процессора CP 441.
Список параметров для функционального блока SFB 14 GET представлен Положительный фронт сигнала, поступающего в параметр REQ (request запрос") запускает процедуру обмена данными с принтером в соответствии с параметрами ID и PRN_NR. В параметре ID инициализируется идентификатор соединения (connection ID), в параметре PRN_NR инициализируется номер принтера (prnter number).
Значением параметра DONE, равным "1", блок сигнализирует о том, что задание выполнено без ошибок. Если в процессе выполнения задания 20. Основная программа обнаруживается ошибка (любая), то при этом ERROR = "1".
Если значение параметра STATUS отлично от нуля и при этом ERROR = "0", то это соответствует сигналу предупреждения, а если при этом ERROR = "1", то это соответствует сигналу об ошибке (о сбое).
Пользователь должен обеспечить проверку параметров DONE, STATUS и ERROR после каждого вызова блока.
Символы для печати необходимо ввести в формате STRING в параметр FORMAT. Вы можете задать до 4 описаний форматов для переменных, определенных в параметрах SD_1…SD_4. Эти параметры должны задаваться без каких-либо пропусков (пробелов), начиная с 1. Не требуется определять значения для неиспользуемых параметров.
На один запрос задания для принтера Вы можете передавать до байтов данных (суммарно для формата и всех переменных).
Таблица 20.15 Параметры для SFB 16 PRINT 20.7.5 Функции управления (Control Functions) Для управления коммуникационным партнером используются следующие функциональный блок для инициации "полного" (complete) перезапуска контроллера коммуникационного партнера, функциональный блок для выполнения переключения контроллера коммуникационного партнера в режим STOP, функциональный блок для инициации "теплого" (warm) перезапуска контроллера коммуникационного партнера.
Автоматизация посредством STEP с использованием STL и SCL Данные функциональные блоки предназначены для одностороннего обмена данными; пользователю не приходится создавать программы для контроллера коммуникационного партнера, чтобы обрабатывать рассматриваемые функциональные блоки.
Список параметров для функциональных блоков SFB представлен в Таблица 20.16 Параметры для SFB для управления контроллером коммуникационного партнера.
Положительный фронт сигнала, поступающего в параметр REQ (request запрос") запускает процедуру обмена данными. В параметре ID инициализируется идентификатор соединения (connection ID), который вводится системой STEP 7 в таблицу соединений (connection table).
Значением параметра DONE, равным "1", блок сигнализирует о том, что задание выполнено без ошибок. Если в процессе выполнения задания обнаруживается ошибка (любая), то при этом ERROR = "1".
Если значение параметра STATUS отлично от нуля и при этом ERROR = "0", то это соответствует сигналу предупреждения, а если при этом ERROR = "1", то это соответствует сигналу об ошибке (о сбое).
Пользователь должен обеспечить проверку параметров DONE, STATUS и ERROR после каждого вызова блока.
С помощью параметра PI_NAME определяется массив символов, содержащий имя программы "P_PROGRAM" (ARRAY [1...9] OF CHAR).
Параметры ARG и IO_STATE в настоящее время не определены и не Функциональный блок SFB 19 START позволяет выполнить "полный" (complete) перезапуск CPU коммуникационного партнера. Необходимые условия для выполнения "полного" перезапуска: CPU коммуникационного партнера должен находиться в режиме STOP, а переключатель режимов должен находиться в положении RUN или RUN_P.
Функциональный блок SFB 20 STOP позволяет перевести CPU коммуникационного партнера в режим STOP. Необходимым условием для корректного выполнения задания: CPU партнера не должен находиться в режиме STOP в момент прихода запроса на выполнение задания.
20. Основная программа Функциональный блок SFB 21 RESUME позволяет выполнить "теплый" (warm) перезапуск CPU коммуникационного партнера. Необходимые условия для выполнения "теплого" перезапуска: CPU коммуникационного партнера должен находиться в режиме STOP, переключатель режимов должен находиться в положении RUN или RUN_P и в момент прихода запроса на выполнение задания должно допускаться выполнение 20.7.6 Функции мониторинга (Monitoring Functions) Для осуществления мониторинга используются следующие системные функциональный блок для проверки состояния коммуникационного функциональный блок для приема от коммуникационного партнера информации о его состоянии ("status" - статус), функциональный блок для проверки состояния ("status" - статус) Список параметров для системных функциональных блоков SFB 22 и SFB 23 представлен в таблице 20.17, список параметров для системной функции SFC 62 представлен в таблице 20. Таблица 20.17 Параметры для функциональных блоков SFB 22 и SFB Автоматизация посредством STEP с использованием STL и SCL Таблица 20.18 Параметры для системной функции SFC 62 CONTROL
EN_R INPUT BOOL
I_DB INPUT BLOCK_DB Экземплярный блок данных OFFSET INPUT WORD Номер локального экземпляра I_STATE OUTPUT BYTE Идентификатор текущего состояния (status)I_CONN OUTPUT BOOL
I_STATUS OUTPUT WORD
Общая информация, касающаяся рассматриваемых системных блоков:Если в процессе выполнения задания обнаруживается ошибка (любая), то при этом ERROR = "1". Если значение параметра STATUS отлично от нуля и при этом ERROR = "0", то это соответствует сигналу предупреждения, а если при этом ERROR = "1", то это соответствует SFB 22 STATUS Проверка состояния коммуникационного партнера Функциональный блок SFB 22 STATUS предназначен для считывания состояния CPU коммуникационного партнера и отображения его в параметрах PHYS (физическое состояние), LOG (логическое состояние) и LOCAL (рабочее состояние, если коммуникационным партнером является Положительный фронт сигнала, поступающего в параметр REQ (request запрос") инициирует запрос на выполнение процедуры. В параметре ID инициализируется идентификатор соединения (connection ID), который вводится системой STEP 7 в таблицу соединений (connection table).
Значением параметра NDR, равным "1", блок сигнализирует о том, что задание выполнено без ошибок. Пользователь должен обеспечить проверку параметров NDR, STATUS и ERROR после каждого вызова SFB 23 USTATUS Прием от коммуникационного партнера информации о его состоянии Функциональный блок SFB 23 USTATUS предназначен для приема от коммуникационного партнера информации о его состоянии, которую он посылает в связи с произошедшими изменениями и без дополнительного 20. Основная программа запроса от локального модуля. Состояние устройства отображается в Если параметр EN_R (enable receive - "прием разрешен") содержит единичное значение (EN_R = "1"), это означает готовность к приему данных. В параметре ID инициализируется идентификатор соединения (connection ID), который вводится системой STEP 7 в таблицу соединений Значением параметра NDR, равным "1", блок сигнализирует о том, что задание выполнено без ошибок. Пользователь должен обеспечить проверку параметров NDR, STATUS и ERROR после каждого вызова SFC 62 CONTROL Проверка состояния экземпляра SFB Системная функция SFC 62 CONTROL позволяет определить состояние экземпляра SFB и связанного (associated) соединения в локальном контроллере. В параметре I_DB необходимо задать экземплярный блок данных. Если SFB вызывается как локальный экземпляр, определите номер локального экземпляра в параметре OFFSET (0 - если нет локального экземпляра, 1 - для первого локального экземпляра, 2 - для второго локального экземпляра, и т.д.).
Если параметр EN_R (enable receive - "прием разрешен") содержит единичное значение (EN_R = "1"), это означает готовность к приему данных. В параметре ID инициализируется идентификатор соединения (connection ID), который вводится системой STEP 7 в таблицу соединений Значением параметра NDR, равным "1", блок сигнализирует о том, что задание выполнено без ошибок. Пользователь должен обеспечить проверку параметров NDR, STATUS и ERROR после каждого вызова Параметры I_TIP, I_STATE, I_CONN и I_STATUS содержат информацию, касающуюся состояния локального экземпляра SFB.
Автоматизация посредством STEP с использованием STL и SCL 20 - 80 Automating with STEP 7 in STL and SCL Автоматизация посредством STEP 21 Обработка прерываний Обработка прерываний всегда обусловлена событиями. Когда операционная система получает сигнал о том, что произошло некоторое событие, она прекращает сканирование основной программы и вызывает определенную программу, соответствующую этому конкретному событию.
После выполнения этой программы операционная система продолжает сканирование основной программы с точки прерывания. Такие прерывания обработки программы могут иметь место после каждой Упомянутыми событиями могут быть как собственно "прерывания" (interrupts) так и ошибки. Порядок, в котором обрабатываются фактически одновременно происходящие прерывания, регулируется планом приоритетов. Каждое событие имеет свой приоритет обработки.
Отдельные прерывания могут быть объединены в классы приоритетов (priority class - "приоритетный" класс).
Каждая программа, связанная с событием-прерыванием, должна быть записана в организационном блоке, из которого могут быть вызваны также и другие блоки. Событие с более высоким приоритетом прерывает выполняемую программу в организационном блоке с более низким приоритетом. Пользователь может вызывать прерывание процесса выполнения программы событиями с высоким приоритетом, используя 21.1 Общие замечания SIMATIC S7 предоставляет пользователю следующие типы прерываний:
• аппаратные прерывания (hardware interrupts) прерывания, вызываемые модулем (посредством входного сигнала от процесса, или посредством сигнала, сгенерированного собственно в • таймерные прерывания (watchdog interrupts) прерывания, генерируемые операционной системой с заданным • временные (по времени суток) прерывания (time-of-day interrupts) прерывания, генерируемые операционной системой в заданное время суток (однократные или периодические);
• прерывания c задержкой обработки (time-delay interrupts) прерывания, генерируемые по истечении заданного периода времени (при этом в системной функции можно определять момент начала • прерывания мультипроцессорного режима (multiprocessor interrupts) прерывания, генерируемые другими CPU в подсети, при Автоматизация посредством STEP с использованием STL и SCL Другие прерывания вызываются такими событиями, как синхронные ошибки, которые могут происходить при сканировании программы, и асинхронные ошибки, которыми могут являться, например, диагностические прерывания. Обработка этих событий обсуждается в главе 23 "Обработка ошибок".
Приоритеты Событие с более высоким приоритетом прерывает выполняемую программу обработки некоторого события с более низким приоритетом.
Основная программа (main program) имеет самый низкий приоритет (она относится к приоритетному классу 1), асинхронные ошибки имеют самый высокий приоритет (относятся к приоритетному классу 26), не учитывая программу запуска (start-up routine). Все остальные события относятся к приоритетным классам, занимающим промежуточное положение в ряду приоритетов. В системах S7-300 приоритеты фиксированы; в системах S7Вы можете самостоятельно изменять приоритеты при Обзор всех приоритетных классов, а также организационные блоки, по умолчанию назначенные для каждого из них, рассматриваются в разделе 3.1.2 "Классы приоритетов".
Блокировка прерываний Выполнение организационных блоков, запускаемых для обработки отдельных событий при сканировании программы, может быть заблокировано (disable) или, наоборот, разрешено (enable) с помощью системных функций SFC 39 DIS_IRT и SFC 40 EN_IRT соответственно, а может также быть заблокировано на время (т.е., отложено), а затем вновь разблокировано с помощью системных функций SFC 41 DIS_AIRT и SFC 42 EN_AIRT соответственно (см. раздел 21.7 "Обработка прерываний").
Текущие состояния сигналов Нужно учитывать, что при выполнении программы обработки прерываний Вы должны иметь дело с текущими состояниями сигналов от I/O модулей (а не с состояниями сигналов входов, которые обновляются в начале выполнения основной программы), и должны записывать состояния выбранных сигналов непосредственно в I/O (не дожидаясь, пока таблица выходов образа процесса будет обновлена по окончании обработки основной программы).
В случае использования нескольких входов и выходов I/O модулей при выполнении программы, обрабатывающей прерывание, для доступа к I/O модулям достаточно использовать операции загрузки (load) и передачи (transfer). В таком случае рекомендуется установить строгое разграничение между главной программой и программой обработки прерывания в отношении I/O сигналов.
Если необходимо обрабатывать множество входных и выходных сигналов в программе обработки прерывания, то решением для систем S7- может быть использование нескольких образов подпроцессов (subprocess image). При назначении адресов Вы можете назначить каждому модулю отдельный образ подпроцесса. С помощью системных функций SFC 21. Обработка прерываний UPDAT_PI и SFC 27 UPDAT_PO Вы можете управлять отображениями подпроцессов из пользовательской программы (см. также раздел 20.2. "Обновление образа процесса").
В S7-400 CPU новых образцов Вы можете назначать образы входов и выходов подпроцесса для каждого организационного блока (для каждого приоритетного класса) и таким путем организовать автоматическое обновление образа процесса при каждом прерывании.
Стартовая информация, временные локальные данные В таблице 21.1 представлен обзор стартовой информации для запускаемых событиями организационных блоков. В системах S7- временные локальные данные имеют фиксированную длину - 256 байтов.
В системах S7-400 Вы можете сами определять размер области этих параметризации CPU (параметр "локальные данные" [local data] блока), при этом в каждом случае нельзя превышать некоторый максимальный размер, определяемый типом CPU.
Необходимо отметить, что для временных локальных данных для каждого используемого приоритетного класса должно отводиться определенное минимальное число байтов, а именно 20 байтов, для размещения стартовой информации. Для неиспользуемых приоритетных классов Вы должны определить нулевое значение.
Таблица 21.1 Стартовая информация в организационных блоках для обработки прерываний "Стартовое" "Стартовое" "Стартовое" "Стартовое" "Стартовое" Приоритетный Приоритетный Приоритетный Приоритетный Приоритетный 12.. Автоматизация посредством STEP с использованием STL и SCL 21.2 Аппаратные прерывания (Hardware Interrupts) Аппаратные прерывания (hardware interrupts) используются для немедленного обнаружения из пользовательской программы событий, происходящих в управляемом процессе, что дает возможность выполнить программу обработки прерывания в качестве реакции на конкретное событие. STEP 7 предоставляет организационные блоки с ОВ 40 по ОВ для обслуживания аппаратных прерываний. Тем не менее, то, какие из данных восьми организационных блоков доступны, зависит от типа CPU.
Обработка аппаратных прерываний может быть запрограммирована при конфигурировании оборудования (в данных конфигурирования оборудования). С помощью системных функций SFC 55 WR_PARM, SFC 56 WR_DPARM и SFC 57 PARM_MOD Вы можете задавать (изменять) параметры модулей даже в рабочем режиме RUN, используя возможности аппаратных прерываний.
21.2.1 Генерация аппаратных прерываний Аппаратные прерывания генерируются в модулях, в которых заложена такая возможность. Это может быть, например, дискретный входной модуль, который обнаруживает сигнал, поступающий от процесса, или функциональный модуль, который генерирует аппаратное прерывание, причиной которого являются процессы, происходящие в модуле.
В установках по умолчанию аппаратные прерывания заблокированы. Для разрешения генерации аппаратного прерывания используется параметр, являющийся статическим; Вы можете также определить, будет ли генерироваться прерывание при приходящем событии, при уходящем событии или и при том, и при другом варианте (динамический параметр).
Динамические параметры - это такие параметры, которые Вы можете изменять во время выполнения программы, используя системные В интеллектуальных ведомых (slave) DP-устройствах, в которых предусмотрена такая возможность, Вы можете инициировать прерывание процесса в CPU ведущего (master) DP-устройства с помощью SFC Аппаратное прерывание подтверждается в модуле, когда заканчивается выполнение соответствующего организационного блока с программой обслуживания прерывания.
Прерывания в S7- Если во время выполнения организационного блока с программой обработки аппаратного прерывания происходит событие, которое инициирует генерацию такого же аппаратного прерывания, то данное аппаратное прерывание будет потеряно, если событие, вызывающее это аппаратное прерывание, не будет больше иметь место после того, как придет подтверждение завершения обработки предыдущего прерывания.
Не имеет значения, в каком модуле происходит данное событие - в 21. Обработка прерываний модуле, генерировавшем аппаратное прерывание, которое в текущий момент было обработано, или в другом модуле.
Во время обработки аппаратного прерывания может возникнуть диагностическое прерывание. Если в том же канале в промежутке времени между моментом, когда было создано первое аппаратное прерывание, и моментом, когда оно было квитировано, возникает другое аппаратное прерывание, то это второе прерывание будет потеряно, что подтвердит диагностическое прерывание, которое будет сгенерировано диагностическими средствами системы.
Прерывания в S7- Если во время выполнения организационного блока с программой обработки аппаратного прерывания в том же канале в том же модуле происходит событие, которое инициирует генерацию такого же аппаратного прерывания, то это новое аппаратное прерывание будет потеряно. Если событие происходит в том же модуле, но в другом канале, или же в другом модуле, то операционная система перезапустит организационный блок для обработки второго прерывания, как только будет завершена обработка первого прерывания.
21.2.2 Обслуживание аппаратных прерываний Запрос информации прерывания Начальный адрес модуля, который инициировал аппаратное прерывание, находится в байтах 6 и 7 области стартовой информации организационного блока, обрабатывающего данное прерывание. Если этот адрес является входным, то байт 5 области стартовой информации содержит B#16#54, в противоположном случае он содержит B#16#55.
Если модуль, указанный в запросе, является дискретным входным модулем, то байты с 8 по 11 содержать информацию о состоянии входов;
для всех других типов модулей в этих байтах содержится информация о состоянии (статусе) прерывания в модуле.
Обработка прерывания в программе запуска (start-up program) При выполнении программы запуска (start-up program), модули не инициируют аппаратных прерываний. Обработка прерываний начинается с переходом к рабочему режиму RUN. Любые аппаратные прерывания, возникающие во время такого перехода теряются.
Обработка ошибок Если инициировано аппаратное прерывание, для которого в пользовательской программе нет организационного блока, операционная система вызывает OB 85 (организационный блок обработки ошибок, возникающих при выполнении программы).
Автоматизация посредством STEP с использованием STL и SCL Аппаратное прерывание квитируется (подтверждается). Если OB 85 не запрограммирован, CPU переходит в режим STOP.
Блокировка (disabling), задержка во времени (delaying) и разблокировка (enabling) Вызов организационных блоков обработки аппаратных прерываний может быть заблокирован (disable) и разблокирован (enable) с помощью системных функций SFC 39 DIS_IRT и SFC 40 EN_IRT соответственно, а также задержан на время (delay) и разблокирован (enable) с помощью системных функций SFC 41 DIS_AIRT и SFC 42 EN_AIRT соответственно.
21.2.3 Конфигурирование аппаратных прерываний с помощью Обработка аппаратных прерываний может быть запрограммирована при конфигурировании оборудования (в данных конфигурирования оборудования). Выберите CPU, откройте объект с помощью опций: Edit -> Object Properties (Правка -> Свойства объекта) и в диалоговом окне выберите вкладку "Interrupts" ("Прерывания").
Для систем S7-300 для блока OB 40 установленный по умолчанию приоритет 16 не может быть изменен. Для систем S7-400 для всех возможных организационных блоков (в соответствии со спецификациями CPU) Вы можете устанавливать приоритет в диапазоне от 2 до 24; при этом при установлении для блока приоритета с нулевым значением (0) блок перестанет выполняться. Никогда не назначайте один и тот же приоритет дважды, так как при этом могут быть потеряны прерывания в случае, если больше, чем 12 прерываний с одинаковым приоритетом будут инициированы одновременно.
Вы должны также разблокировать (enable) запуск аппаратных прерываний при использовании соответствующих модулей. Для этого эти модули параметризируются точно также как CPU.
При сохранении результатов конфигурирования оборудования STEP записывает скомпилированные данные в System data (Системные данные) в пользовательской папке Blocks (Блоки), откуда Вы сможете выгрузить данные параметризации в CPU, пока CPU находится в состоянии режима STOP. Данные параметризации для CPU вступают в силу немедленно после загрузки; назначения параметров для модулей вступают в силу после последующего перезапуска.
21.3 Таймерные прерывания (watchdog Interrupts) Таймерное прерывание (watchdog interrupt) - это такое прерывание, которое генерируется через периодический временной интервал и инициирует запуск организационного блока обработки данного 21. Обработка прерываний Таймерные прерывания позволяют Вам организовывать периодический запуск отдельной программы, независимо от времени обработки циклической (основной) программы.
В STEP 7 предусмотрены организационные блоки с ОВ 30 по ОВ специально для обслуживания таймерных прерываний. Тем не менее, то, какие из данных девяти организационных блоков доступны, зависит от Обработка таймерных прерываний может быть запрограммирована при конфигурировании оборудования (в данных конфигурирования оборудования) при параметризации CPU.
21.3.1 Обработка таймерных прерываний (watchdog Interrupts) Запуск таймерных прерываний в S7- В S7-300 для обработки таймерного прерывания служит организационный блок OB 35, имеющий приоритет 12. При параметризации CPU Вы можете задать значение интервала времени для таймерного прерывания в диапазоне от 1 миллисекунды до 1 минуты с шагом, равным Запуск таймерных прерываний в S7- При параметризации CPU Вы можете задать параметры таймерного прерывания. Таймерное прерывание имеет три параметра: интервал, фазовое смещение и приоритет. Вы можете определить все три параметра. Значения, которые Вы можете задать для первых двух из указанных параметров, лежат в диапазоне времени от 1 миллисекунды до 1 минуты с шагом, равным 1 миллисекунде. Значения для приоритета выбираются из диапазона значений от 2 до 24, а также возможно нулевое значение (0), в зависимости от CPU. Если приоритет приравнивается нулю, то таймерное прерывание не будет активно.
В STEP 7 предусмотрены организационные блоки, указанные в таблице 21.2 с их предельными значениями для конфигурации.
Таблица 21.2 Значения параметров, принимаемые по умолчанию для Автоматизация посредством STEP с использованием STL и SCL Параметр "Фазовое смещение" (Phase Offset) Параметр "Фазовое смещение" (Phase Offset) может быть использован для обеспечения сдвига запуска подпрограмм, запускаемых таймерными прерываниями, вне зависимости от того факта, что для этих программ в качестве параметров задано множество одинаковых временных периодов.
Использование фазового смещения позволяет уточнить процесс периодического запуска прерываний.
Параметры "время старта" (start time) и "фазовое смещение" (phase offset) определяют момент перехода от режима запуска (STARTUP) в режим выполнения (RUN) организационного блока. Момент вызова OB таймерного прерывания находится как сумма временного интервала (time interval) и фазового смещения (phase offset). На рис. 21.1 показан пример, иллюстрирующий вышесказанное.
Рис. 21.1 Пример, иллюстрирующий применение параметра "фазовое Как видно из рисунка, для временного интервала 1 параметр "фазовое смещение" не устанавливается (или равен 0); временной интервал имеет в два раза большую величину, чем временной интервал 1. Так как временной интервал 2 имеет ненулевое фазовое смещение, то организационные блоки для временного интервала 2 и организационные блоки для временного интервала 1 не могут быть вызваны одновременно.
Следовательно, ОВ с более низким приоритетом не будет принужден ожидать, пока выполнится ОВ с более высоким приоритетом, и будет обрабатываться в свой срок, точно выдерживая заданный временной Обработка прерывания в программе запуска (start-up program) Таймерные прерывания не могут быть обработаны в ОВ запуска (start-up).
21. Обработка прерываний Генерация прерываний с заданными временными интервалами не начнется, пока не будет включен рабочий режим (RUN).
Обработка ошибок Если вновь генерируется то же самое таймерное прерывание, для соответствующий организационный блок, то операционная система вызывает OB 80 (организационный блок обработки временных ошибок [timing error]). Если OB 80 не запрограммирован, CPU переходит в режим Операционная система сохраняет таймерное прерывание, которое не было обработано, чтобы обработать его позднее. При этом на каждый приоритетный класс может быть сохранено только одно необработанное таймерное прерывание независимо от того, как много накоплено необработанных таймерных прерываний.
Таймерное прерывание, которое поступило, но не было обработано из-за того, что выполнялась параметризация CPU, не может быть обработано, даже если доступен соответствующий организационный блок. В этом Блокировка (disabling), задержка во времени (delaying) и разблокировка (enabling) Вызов организационных блоков обработки таймерных прерываний может быть заблокирован (disable) и разблокирован (enable) с помощью системных функций SFC 39 DIS_IRT и SFC 40 EN_IRT соответственно, а также задержан на время (delay) и разблокирован (enable) с помощью системных функций SFC 41 DIS_AIRT и SFC 42 EN_AIRT соответственно.
Interrupts) с помощью STEP Обработка таймерных прерываний может быть запрограммирована при оборудования). Выберите CPU, откройте объект с помощью опций: Edit -> Object Properties (Правка -> Свойства объекта) и в диалоговом окне выберите вкладку "Cyclic Interrupts" ("Циклические прерывания").
Для контроллеров S7-300 установленный для блока обработки по умолчанию приоритет 12 не может быть изменен. Для систем S7-400 для всех возможных организационных блоков (в соответствии со спецификациями CPU) Вы можете устанавливать приоритет в диапазоне от 2 до 24; при этом при установлении для блока приоритета с нулевым значением (0) блок перестанет выполняться. Никогда не назначайте один и тот же приоритет дважды, так как при этом могут быть потеряны прерывания в случае, если больше, чем 12 прерываний с одинаковым приоритетом будут инициированы одновременно.
Автоматизация посредством STEP с использованием STL и SCL Интервалы для каждого организационного блока выбираются в разделе "Execution" ("Выполнение"), а моменты отложенного запуска (т.е., величины временной задержки) - выбираются в разделе "Phase Offset" ("Фазовое смещение").
При сохранении результатов конфигурирования оборудования STEP записывает скомпилированные данные в System data (Системные данные) в пользовательской папке Blocks (Блоки), откуда Вы сможете выгрузить данные параметризации в CPU, пока CPU находится в состоянии режима STOP. Эти данные вступают в силу немедленно после 21.4 Прерывания по времени суток (time-of-day interrupts) Прерывания по времени суток (time-of-day interrupts) - это такое прерывание, которое используется, когда нужно выполнять программу в заданное время суток однократно или периодически, например, ежедневно. В STEP 7 предусмотрены организационные блоки с ОВ 10 по ОВ 17 специально для обслуживания прерывания по времени суток (timeof-day interrupts). Тем не менее, то, какие из данных восьми организационных блоков доступны, зависит от типа CPU.
Обработка прерываний по времени суток может быть запрограммирована при конфигурировании оборудования (в данных конфигурирования оборудования) или же может быть выполнена посредством использования системных функций во время рабочего режима RUN.
Предпосылкой правильного выполнения обработки прерываний по времени суток является корректная установка часов реального времени 21.4.1 Обработка прерываний по времени суток (time-of-day Общие замечания Для запуска прерывания по времени суток Вы должны сначала установить время запуска (start time), а затем активировать прерывание. Вы можете инициировать прерывания по времени суток (time-of-day interrupts) отдельно посредством конфигурирования оборудования или посредством использования системных функций. Необходимо отметить, что при активации посредством конфигурирования оборудования прерывание запускается автоматически после параметризации CPU.
Вы можете запустить прерывание по времени суток (time-of-day interrupts) • однократный запуск: соответствующий организационный блок вызывается один раз в заданное время;
• периодический запуск: в зависимости от значений параметров OB вызывается каждую минуту, ежечасно, ежедневно, еженедельно, ежемесячно или ежегодно.
21. Обработка прерываний После однократного запуска ОВ прерывания по времени суток данное прерывание отменяется. Вы также можете отменить прерывание по времени суток, используя системную функцию SFC 29 CAN_TINT.
Если Вы вновь хотите возобновить отмененное прерывание по времени суток, то Вы должны будете вновь установить параметр "время запуска" (start time), а затем вновь активировать прерывание.
Вы также можете запросить о состоянии прерывания по времени суток, используя системную функцию SFC 31 QRY_TINT.
Прерывания по времени суток во время запуска Во время "холодного" (cold) перезапуска или полного (complete) перезапуска операционная система стирает все установки, сделанные конфигурирования оборудования сохраняются. При "теплом" (warm) перезапуске CPU продолжает обработку прерываний по времени суток в первом завершенном (complete) цикле сканирования основной Вы можете запросить о состоянии прерываний по времени суток, вызывая системную функцию SFC 31 QRY_TINT в ОВ запуска, и последовательно отменяя или вновь инициализируя и вновь активируя прерывания.
Прерывания по времени суток обрабатываются только в рабочем режиме Прерывания по времени суток и ситуации сбоя (ошибки) Если вызывается OB обработки прерывания по времени суток (time-of-day interrupts), но данный OB не запрограммирован, то операционная система вызывает OB 85 (организационный блок обработки ошибок, возникающих при выполнении программы). Если OB 85 не запрограммирован, CPU Прерывание по времени суток, которое поступило, но не было обработано из-за того, что выполнялась параметризация CPU, не может быть обработано, даже если доступен соответствующий организационный блок. В этом случае CPU переходит в режим STOP.
Если Вы активировали прерывание по времени суток в режиме однократного вызова, и если при этом заданное стартовое время (start time) уже прошло на текущий момент (по часам реального времени системы), то операционная система вызовет OB 80 (организационный блок обработки временных ошибок [timing error]). Если OB 80 недоступен, Если Вы активировали прерывание по времени суток в режиме периодического вызова, и если при этом заданное стартовое время (start time) уже прошло на текущий момент (по часам реального времени системы), то операционная система сгенерирует прерывание по времени суток в следующем периоде в заданный момент времени (согласно заданным временным параметрам).
Если Вы перевели часы реального времени вперед с целью коррекции их показаний или для синхронизации так, что при этом проскочили заданное стартовое время (start time) прерывания по времени суток, то Автоматизация посредством STEP с использованием STL и SCL операционная система вызовет OB 80 (организационный блок обработки временных ошибок [timing error]). После этого OB обработки прерывания по времени суток (time-of-day interrupts) будет вызван только один раз.
Если Вы перевели часы реального времени назад с целью коррекции их показаний или для синхронизации, то активированный OB обработки прерывания по времени суток (time-of-day interrupts) не будет в дальнейшем повторно выполняться в моменты времени, которые ранее уже были пройдены до перевода часов назад.
Если вызывается OB обработки прерывания по времени суток (time-of-day interrupts), для которого в пользовательской программе уже выполняется соответствующий организационный блок (режим периодического запуска), то операционная система вызывает OB 80 (организационный блок обработки временных ошибок [timing error]). Когда OB 80 и OB обработки прерывания по времени суток будут выполнены, OB обработки прерывания по времени суток будет перезапущен.
Блокировка (disabling), задержка во времени (delaying) и разблокировка (enabling) Вызов организационных блоков обработки прерываний по времени суток может быть заблокирован (disable) и разблокирован (enable) с помощью системных функций SFC 39 DIS_IRT и SFC 40 EN_IRT соответственно, а также задержан на время (delay) и разблокирован (enable) с помощью системных функций SFC 41 DIS_AIRT и SFC 42 EN_AIRT соответственно.
21.4.2 Конфигурирование прерываний по времени суток (time-ofday interrupts) с помощью STEP Обработка прерываний по времени суток может быть запрограммирована при конфигурировании оборудования (в данных конфигурирования оборудования). Выберите CPU, откройте объект с помощью опций: Edit -> Object Properties (Правка -> Свойства объекта) и в диалоговом окне выберите вкладку "Time-of-Day" ("Время суток").
Для контроллеров S7-300 для блока обработки установлен по умолчанию фиксированный приоритет 2. Для систем S7-400 для всех возможных организационных блоков (в соответствии со спецификациями CPU) Вы можете устанавливать значение приоритета из диапазона от 2 до 24 или равное 0; при этом при установлении для блока приоритета со значением 0 блок перестанет выполняться. Никогда не назначайте один и тот же приоритет дважды, так как при этом могут быть потеряны прерывания в случае, если больше, чем 12 прерываний с одинаковым приоритетом будут инициированы одновременно.
Опция "Active" ("Активировано") автоматически включает запуск прерывания по времени суток (time-of-day interrupts). Опция "Execution" ("Выполнение") включает отображение списка, который позволит Вам выбрать вариант выполнения прерывания по времени суток - в режиме однократного вызова или в режиме периодического вызова. Последний параметр определяет время выполнения прерывания по времени суток Automating with STEP 7 in STL and SCL 21. Обработка прерываний в нем задается "стартовое время" или время запуска прерывания (дата и При сохранении результатов конфигурирования оборудования STEP записывает скомпилированные данные в System data (Системные данные) в автономной пользовательской программе Blocks (Блоки), откуда Вы сможете выгрузить данные параметризации в CPU, пока CPU находится в состоянии режима STOP. Эти данные вступают в силу 21.4.3 Системные функции для прерываний по времени суток (time-of-day interrupts) Для управления прерываниями по времени суток (time-of-day interrupts) предусмотрены следующие системные функции:
функция для установки прерывания по времени суток (time-of-day функция для отмены прерывания по времени суток (time-of-day функция для активации прерывания по времени суток (time-of-day функция для запроса о состоянии прерывания по времени суток (timeof-day interrupt).
Параметры для вышеуказанных системных функций представлены в SFC 28 SET_TINT Установка прерывания по времени суток (time-of-day interrupt) Вы можете определить стартовое время (время запуска) для прерывания по времени суток, вызвав системную функцию SFC 28 SET_TINT. Функция SFC 28 SET_TINT позволяет только задать параметр "стартовое время" ("start time"); для того чтобы запустить прерывание по времени суток, Вы должны будете еще и активировать это прерывание, вызвав системную функцию SFC 30 ACT_TINT. "Стартовое время" определяется в параметре SDT в формате DATE_AND_TIME, например, DT#1997-06-30Операционная система игнорирует секунды и миллисекунды и устанавливает для них нулевые значения. При установке стартового времени для прерывания по времени суток старое значение, если оно было задано, переписывается новым значением.