Чтение записи данных с помощью SFC59 "RD_REC" в CPU S7-300
Следующее описание SFC59 "RD_REC" применимо к CPU, перечисленным ниже:
CPU | Заказной номер |
---|---|
CPU 312 IFM | 6ES7312-5AC00-0AB0 |
CPU 313 | 6ES7313-1AD00-0AB0 |
CPU 314 | 6ES7314-1AE01-0AB0 |
CPU 314 IFM | 6ES7314-5AE00-0AB0 |
CPU 315 | 6ES7315-1AF00-0AB0 |
CPU 315-2DP | 6ES7315-2AF00-0AB0 |
CPU 614 | 6ES7614-1AH00-0AB3 |
С помощью SFC59 "RD_REC" (read data record [читать запись данных]) Вы считываете запись данных с номером RECNUM из адресуемого модуля. Считываемая запись данных вводится в область назначения, указанную параметром RECORD, если передача данных была свободна от ошибок.
Параметр | Описание | Тип данных | Область памяти | Характеристика |
---|---|---|---|---|
REQ | INPUT | BOOL | I, Q, M, D, L, константа |
REQ = 1: запрос на чтение |
IOID | INPUT | BYTE | I, Q, M, D, L, константа |
Идентификатор (ID) адресной области: B#16#54 = Периферийный вход (PI) B#16#55 = Периферийный выход (PQ) Если модуль смешанный, то задайте ID области с наименьшим адресом. Если адреса одинаковые, то задайте B#16#54. |
LADDR | INPUT | WORD | I, Q, M, D, L, константа |
Логический адрес модуля. В случае смешанных модулей задайте меньший из двух адресов. |
RECNUM | INPUT | BYTE | I, Q, M, D, L, константа | Номер записи данных (разрешенные значения от 0 до 240). |
RECORD | INPUT | ANY | I, Q, M, D, L | Область назначения для считываемой записи данных. В случае асинхронного выполнения SFC59 убедитесь, что фактические параметры RECORD имеют одинаковую информацию о длине во всех вызовах. Разрешен только тип данных BYTE |
RET_VAL | OUTPUT | INT | I, Q, M, D, L | Если во время выполнения функции происходит ошибка, то возвращаемое значение содержит код ошибки. |
BUSY | OUTPUT | BOOL | I, Q, M, D, L | BUSY = 1: Чтение еще не закончилось |
RECORD
Информация о длине в выходном параметре RECORD интерпретируется следующим образом:
Длина данных, которые нужно считывать из выбранной записи данных. Это означает,
что информация о длине в RECORD должна быть не больше, чем фактическая длина
записи данных. Целесообразно выбирать длину для RECORD точно такую же, как фактическая
длина записи данных.
Принцип передачи данных
В случае задания на чтение CPU информирует адресованный модуль о длине параметра RECORD. Следующие пункты зависят от того, принадлежит ли модуль станции DP или нет:
- Модуль находится в центральной стойке или стойке расширения
Если длина, заданная посредством RECORD, короче фактической длины требуемой записи данных, то CPU считывает столько байтов от начала записи данных, сколько задано в информации о длине RECORD, и вводит их в RECORD. RET_VAL имеет значение 0
Если длина в RECORD больше фактической длины требуемой записи данных, то CPU вводит в RET_VAL код ошибки
Если информация о длине в RECORD такая же, как фактическая длина требуемой записи данных, то CPU считывает требуемую запись данных и вводит ее в RECORD. В RET_VAL вводится значение 0 - Модуль находится в slave-устройстве DP S7
Коммуникационный процессор ведомые DP-устройства S7 проверяет информацию о длине, полученную от CPU.
Если длина в RECORD меньше длины требуемой записи данных, то ведомое DP-устройство S7-300 возвращает в CPU требуемую часть выбранной записи данных.
Если длина в RECORD больше длины требуемой записи данных, то ведомое DP-устройство S7-300 возвращает в CPU информацию об ошибке. CPU проверяет информацию об ошибках или информацию о длине, принятую от ведомого DP-устройства S7:- Если ведомое DP-устройство S7 предоставляет данные об ошибке, то соответствующий код ошибки вводится в RET_VAL
- Если ведомое DP-устройство S7 возвращает длину прочитанных данных, то эта длина сравнивается с информацией о длине в RECORD. В зависимости от результата сравнения в выходных параметрах RET_VAL и RECORD делается запись. (Реакция такая же, как в случае, когда модуль расположен в центральной стойке или стойке расширения.)
В случае асинхронной обработки SFC59 убедитесь, что фактические параметры RECORD имеют одинаковую информацию о длине во всех вызовах.
Информация об ошибках
Код ошибки (W#16#...) |
Объяснение | Ограничение |
---|---|---|
7000 | Первый вызов с REQ=0: Передача данных не активна; BUSY имеет значение 0 | |
7001 | Первый вызов с REQ=1: Передача данных не активна; BUSY имеет значение 1 | Децентрализованная периферия |
7002 | Промежуточный вызов (REQ не имеет значения): Передача данных уже активна; BUSY имеет значение 1 | Децентрализованная периферия |
8090 | Задан недействительный логический базовый адрес: Нет назначения в SDB1/SDB2x или нет базового адреса | |
8093 | Этот SFC не разрешен для модуля, определяемого LADDR и IOID (разрешены следующие модули: модули S7-300 и модули S7-300 DP) | |
80A0 | Отрицательное подтверждение при чтении из модуля (модуль был снят во время задания на чтение чтения или неисправен) | |
80A2 | Ошибка протокола DP на уровне 2 | Децентрализованная периферия |
80A3 | Ошибка протокола DP в случае пользовательского интерфейса пользователя | Децентрализованная периферия |
80A4 | Ошибка связи в коммуникационной шине | Ошибка происходит между CPU и внешним интерфейсным модулем DP |
80B0 | SFC недопустима для типа модуля. Модуль не распознает запись данных. Номер записи данных ≥ 241 не разрешен | |
80B1 | В параметре RECORD задана неправильная длина | Длина > длины записи |
80B2 | Сконфигурированный слот не занят | |
80B3 | Фактический тип модуля не соответствует типу модуля, требуемому в SDB1 | |
80C0 | Модуль имеет запись данных, но все еще нет данных, которые нужно считывать | |
80C2 | Модуль в настоящее время обрабатывает максимально возможное для CPU количество заданий | |
80C3 | Требуемые ресурсы (память и т.д.) в настоящее время заняты | |
80C4 | Внутренняя нерегулярная ошибка. Функция не может быть выполнена. Повторите запуск задачи. При частом повторении ошибки проверьте Вашу систему на предмет электрических помех |
|
80C5 | Децентрализованная периферия недоступна | Децентрализованная периферия |
80C6 | Передача записи данных была остановлена вследствие прерывания класса приоритета (горячий рестарт или фоновый режим) | Децентрализованная периферия |
У S7-400 SFC 55.59 могут возвращать также информацию об ошибке W#16#80Fx. Это значит, что произошла ошибка, которую невозможно было локализовать. В этом случае обращайтесь в отдел обслуживания
<-- Предыдущая статья | Следующая статья --> |