Руководство по программированию 6 profinet 7 Двухточечная связь (PointtoPoint, PtP) 8
Скачать 3.76 Mb.
|
8.6.5 Команда SEND_PTP Команда SEND_PTP (передать данные через двухточечное соединение) инициирует передачу данных. SEND_PTP передает указанный буфер в CM. Программа CPU продолжает исполняться, пока CM передает данные с заданной скоростью передачи. В каждый данный момент времени в очереди может находиться только одна операция передачи. CM возвращает ошибку, если исполняется вторая команда SEND_PTP, в то время как CM уже передает сообщение. Параметр Тип параметра Тип данных Описание REQ IN Bool Активизирует запрошенную передачу при нарастающем фронте на этом входе, разблокирующем передачу. Это инициирует передачу содержимого буфера в коммуникационный модуль (CM) двухточечного соединения. PORT IN PORT Идентификатор коммуникационного порта: Этот логический адрес является константой, на которую может быть сделана ссылка во вкладке "Constants" стандартной таблицы переменных. BUFFER IN Variant Этот параметр указывает на начальный адрес буфера передачи. Булевы данные или булевы массивы не поддерживаются. LENGTH IN UInt Длина передаваемого кадра в байтах При передаче составной структуры всегда используйте длину 0. PTRCL IN Bool Этот параметр выбирает буфер для стандартной двухточечной связи или для специальных протоколов, поставляемых фирмой Siemens, которые реализованы в присоединенном CM. ЛОЖЬ = операции двухточечной связи, управляемые программой пользователя (единственная применимая опция) DONE OUT Bool ИСТИНА в течение одного цикла, после того как последний запрос был выполнен без ошибок ERROR OUT Bool ИСТИНА в течение одного цикла, после того как последний запрос был выполнен с ошибкой STATUS OUT Word Код условия выполнения Пока операция передачи выполняется, выходы DONE и ERROR принимают значение ЛОЖЬ. Когда операция передачи завершена, выход DONE или выход ERROR принимает значение ИСТИНА в течение одного цикла, чтобы показать состояние операции передачи. Пока DONE или ERROR принимает значение ИСТИНА, выход STATUS действителен. Двухточечная связь (PtP) 8.6 Команды для двухточечного соединения Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 307 Команда возвращает состояние 16#7001, если коммуникационный модуль (CM) принимает передаваемые данные. Последующие исполнения команды SEND_PTP возвращают 16#7002, если CM все еще занят передачей. Когда операция передачи завершается, CM возвращает состояние 16#0000, если не было ошибок. Следующие исполнения команды SEND_PTP с REQ = 0 возвращают состояние 16#7000 (не занят). Связи выходных значений с REQ: При этом предполагается, что команда вызывается периодически, чтобы проверить состояние процесса передачи. На следующем рисунке предполагается, что команда вызывается в каждом цикле (представленном значениями STATUS). На следующем рисунке показано, как параметры DONE и STATUS оказываются действительными в течение только одного цикла, если к линии REQ прикладывается импульс (в течение одного цикла), чтобы инициировать операцию передачи. На следующем рисунке показана связь параметров DONE, ERROR и STATUS в случае ошибки. STATUS (W#16#....) Описание 80D0 Новый запрос при активном передатчике 80D1 Передача прервана из-за отсутствия CTS в течение времени ожидания 80D2 Передача прервана из-за отсутствия сигнала готовности DSR от устройства передачи данных DCE 80D3 Передача прервана из-за переполнения очереди (передача более 1024 байтов) 7000 Не занят 7001 Занят при приеме запроса (первый вызов) 7002 Занят опросом (n-й вызов) Двухточечная связь (PtP) 8.6 Команды для двухточечного соединения Программируемый контроллер S7-1200 308 Системное руководство, 11/2009, A5E02669003-02 Взаимодействие параметров LENGTH и DATA для PTP_SEND Минимальный размер данных, который может быть передан командой PTP_SEND, равен одному байту. Параметр DATA определяет размер данных, подлежащих передаче. Для этого параметра нельзя использовать данные типа BOOL или массивы типа BOOL. Параметр LENGTH Параметр DATA Описание LENGTH = 0 Не используется Полные данные передаются так, как они определены в параметре DATA. Вам не нужно указывать количество передаваемых байтов, если LENGTH = 0. Элементарный тип данных Значение LENGTH должно содержать число байтов этого типа данных. В противном случае ничего не передается и возвращается ошибка 8088H. Структура Значение LENGTH может содержать число байтов, меньшее, чем полная длина структуры в байтах. В этом случае передаются только первые LENGTH байтов. Массив Значение LENGTH может содержать число байтов, меньшее, чем полная длина массива в байтах. В этом случае передаются только элементы массива, которые полностью укладываются в байты LENGTH. Значение LENGTH должно быть кратным числу байтов элементов данных. В противном случае STATUS = 8088H, ERROR = 1, и передача не происходит. LENGTH > 0 Строка Передается полное распределение памяти формата строки. Значение LENGTH должно учитывать байты для максимальной длины, фактической длины и символов строки. Для типа данных STRING (строка) все длины и символы имеют размер по одному байту. Если параметр DATA использует строку символов в качестве фактического параметра, то значение LENGTH должно учитывать также два байта для двух полей длины. Двухточечная связь (PtP) 8.6 Команды для двухточечного соединения Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 309 8.6.6 Команда RCV_PTP Команда RCV_PTP (прием данных двухточечного соединения) опрашивает сообщения, принятые в CM. Если сообщение имеется, то оно будет передано из CM в CPU. При ошибке выводится соответствующе значение параметра STATUS. Значение параметра STATUS действительно, если NDR или ERROR принимает значение ИСТИНА. Значение параметра STATUS лает основание для завершения операции приема в CM. Обычно это положительное значение, указывающее, что операция приема была успешной и что процесс приема завершен нормально. Если значение STATUS отрицательно (устанавливается старший бит шестнадцатеричного значения), то это указывает, что операция приема была завершена из-за ошибки, например, контроля четности, кадрирования или переполнения. Каждый модуль CM, используемый для двухточечной связи, имеет буфер максимальной емкостью до 1 Кбайта. Это может быть одно большое сообщение или несколько меньших сообщений. Параметр Тип параметра Тип данных Описание EN_R IN Bool Если этот вход принимает значение ИСТИНА, то модуль CM должен быть проверен на наличие принятых сообщений. Если сообщение было успешно принято, то оно будет передано из модуля в CPU. Если EN_R принимает значение ЛОЖЬ, то CM проверяется на наличие принятых сообщений и выход STATUS устанавливается, но сообщение не передается в CPU. PORT IN PORT Идентификатор коммуникационного порта: Этот логический адрес является константой, на которую можно ссылаться во вкладке "Constants" стандартной таблицы переменных. BUFFER IN Variant Этот параметр указывает на начальный адрес принимающего буфера. Этот буфер должен быть достаточно большим, чтобы принять сообщение максимальной длины. Булевы данные или булевы массивы не поддерживаются. NDR OUT Bool ИСТИНА в течение одного цикла, когда готовы новые данные и операция завершена без ошибок. ERROR OUT Bool ИСТИНА в течение одного цикла, если операция была завершена с ошибкой STATUS OUT Word Код условия выполнения LENGTH OUT UInt Длина возвращенного сообщения (в байтах) STATUS (W#16#...) Описание 0000 Отсутствует буфер 80E0 Сообщение завершено, так как приемный буфер полон 80E1 Сообщение завершено из-за ошибки контроля четности 80E2 Сообщение завершено из-за ошибки кадрирования Двухточечная связь (PtP) 8.6 Команды для двухточечного соединения Программируемый контроллер S7-1200 310 Системное руководство, 11/2009, A5E02669003-02 STATUS (W#16#...) Описание 80E3 Сообщение завершено из-за ошибки переполнения 80E4 Сообщение завершено, так как расчетная длина превышает размер буфера 0094 Сообщение завершено, так как было принято максимальное число символов 0095 Сообщение завершено, из-за превышения времени приема сообщения 0096 Сообщение завершено, из-за превышения интервала между символами 0097 Сообщение завершено, из-за превышения времени ожидания ответа 0098 Сообщение завершено, так как условие длины "N+LEN+M" было выполнено 0099 Сообщение завершено, из-за того, что было выполнено условие окончания сообщения 8.6.7 Команда RCV_RST Команда RCV_RST (сброс приемника) очищает приемный буфер в CM. Параметр Тип параметра Тип данных Описание REQ IN Bool Активизирует сброс при нарастающем фронте на этом разблокирующем входе PORT IN PORT Идентификатор коммуникационного порта: Порт должен быть указан, с помощью логического адреса модуля. DONE OUT Bool Если принимает значение ИСТИНА в течение одного цикла, то это указывает, что последний запрос был выполнен без ошибок. ERROR OUT Bool Если принимает значение ИСТИНА, то это показывает, что последний запрос был выполнен с ошибками. Кроме того, если этот выход принимает значение ИСТИНА, то выход STATUS будет содержать соответствующие коды ошибок. STATUS OUT Word Код ошибки Двухточечная связь (PtP) 8.6 Команды для двухточечного соединения Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 311 8.6.8 Команда SGN_GET Команда SGN_GET (опрос сигналов RS232) считывает текущие состояния коммуникационных сигналов RS232. Эта функция действительна только для коммуникационного модуля RS232 (CM). Параметр Тип параметра Тип данных Описание REQ IN Bool Получает состояния сигналов RS232 при нарастающем фронте на этом входе PORT IN PORT Идентификатор коммуникационного порта: Этот логический адрес является константой, на которую может быть сделана ссылка во вкладке "Constants" стандартной таблицы переменных. NDR OUT Bool ИСТИНА в течение одного цикла, когда новые данные готовы и операция завершена без ошибок ERROR OUT Bool ИСТИНА в течение одного цикла, если операция была завершена с ошибкой STATUS OUT Word Код условия выполнения DTR OUT Bool Терминал ввода данных готов, модуль готов (выход) DSR OUT Bool Набор данных готов, коммуникационный партнер готов (вход) RTS OUT Bool Запрос на передачу, модуль готов к передаче (выход) CTS OUT Bool Готовность к приему, коммуникационный партнер может принимать данные (вход) DCD OUT Bool Носитель данных распознан, уровень принимаемого сигнала (всегда 0, не поддерживается) RING OUT Bool Индикатор вызова, индикация поступающего вызова (всегда 0, не поддерживается) STATUS (W#16#....) Описание 80F0 CM является модулем RS485 и сигналы отсутствуют 80F1 Сигналы не могут быть установлены из-за аппаратного управления потоком 80F2 Сигнал готовности модема (DSR) не может быть установлен, так как модуль является терминальным оборудованием (DTE) 80F3 Терминал ввода данных (DTR) не может быть установлен, так как модуль является аппаратурой передачи данных (DCE) Двухточечная связь (PtP) 8.6 Команды для двухточечного соединения Программируемый контроллер S7-1200 312 Системное руководство, 11/2009, A5E02669003-02 8.6.9 Команда SGN_SET Команда SGN_SET (установка состояний сигналов RS232) устанавливает состояния коммуникационных сигналов RS232. Эта функция действительна только для коммуникационного модуля RS232 (CM). Параметр Тип параметра Тип данных Описание REQ IN Bool Запускает операцию установки сигналов RS232 при нарастающем фронте на этом входе PORT IN PORT Идентификатор коммуникационного порта: Этот логический адрес является константой, на которую можно ссылаться во вкладке "Constants" стандартной таблицы переменных. SIGNAL IN Byte Выбирает сигналы, подлежащие установке: (допустимо несколько сигналов) • 01H = Установить RTS • 02H = Установить DTR • 04H = Установить DSR RTS IN Bool Запрос на передачу, модуль готов передавать значение, подлежащее установке (ИСТИНА или ЛОЖЬ) DTR IN Bool Терминал данных готов, модуль готов передавать значение, подлежащее установке (ИСТИНА или ЛОЖЬ) DSR IN Bool Набор данных готов (применим только к интерфейсам типа DCE) (не используется) DONE OUT Bool ИСТИНА в течение одного цикла, после того как последний запрос был выполнен без ошибок ERROR OUT Bool ИСТИНА в течение одного цикла, после того как последний запрос был выполнен с ошибкой STATUS OUT Word Код условия выполнения STATUS (W#16#....) Описание 80F0 CM является модулем RS485 и никакие сигналы не могут быть установлены 80F1 Сигналы не могут быть установлены из-за аппаратного управления потоком 80F2 Сигнал готовности модема (DSR) не может быть установлен, так как модуль является терминальным оборудованием (DTE) 80F3 Терминал ввода данных (DTR) не может быть установлен, так как модуль является аппаратурой передачи данных (DCE) Двухточечная связь (PtP) 8.7 Ошибки Программируемый контроллер S7-1200 Системное руководство, 11/2009, A5E02669003-02 313 8.7 Ошибки Возвращаемые значения команд PtP Каждая команда PtP имеет три выхода, которые отображают состояние исполнения: Параметр Тип данных Значение по умолчанию Описание DONE Bool ЛОЖЬ ИСТИНА в течение одного цикла указывает, что последний запрос выполнен без ошибок. ERROR Bool ЛОЖЬ ИСТИНА указывает, что последний запрос выполнен с ошибками, с соответствующим кодом ошибки в параметре STATUS. STATUS Word 0 Два байта, содержащих класс и номер ошибки, если она имеется. Параметр STATUS сохраняет это значение на протяжении исполнения этой функции. Классы общих ошибок и ошибки Описание класса Классы ошибок Описание Конфигурирование порта 80Ax Используется для определения общих ошибок конфигурирования порта Конфигурирование передачи 80Bx Используется для определения общих ошибок конфигурирования передачи Конфигурирование приема 80Cx Используется для определения общих ошибок конфигурирования приема Время выполнения передачи 80Dx Используется для определения общих ошибок во время выполнения передачи Время выполнения приема 80Ex Используется для определения общих ошибок во время выполнения приема Обработка сигналов 80Fx Используется для определения общих ошибок, связанных с обработкой всех сигналов Ошибки конфигурирования порта Идентификатор события/ошибки Описание 0x80A0 Этот протокол не существует 0x80A1 Эта скорость передачи не существует 0x80A2 Этот контроль четности не существует 0x80A3 Это число битов данных не существует 0x80A4 Это число стоповых битов не существует 0x80A5 Этот тип управления потоком не существует Двухточечная связь (PtP) 8.7 Ошибки Программируемый контроллер S7-1200 314 Системное руководство, 11/2009, A5E02669003-02 Ошибки конфигурирования передачи Идентификатор события/ошибки Описание 0x80B0 Этот протокол не существует 0x80B1 Эта скорость передачи не существует 0x80B2 Этот контроль четности не существует 0x80B3 Это число битов данных не существует 0x80B4 Это число стоповых битов не существует 0x80B5 Этот тип управления потоком не существует Ошибки конфигурирования приема Идентификатор события/ошибки Описание 0x80C0 Ошибка стартового условия 0x80C1 Ошибка конечного условия 0x80C3 Ошибка максимальной длины 0x80C4 Ошибка значения N (см. N+LEN+M) 0x80C5 Ошибка значения длины (см. MAXLEN или N+LEN+M) 0x80C6 Ошибка значения M (см. N+LEN+M) 0x80C7 Ошибка значения N- LEN -M (см. N+LEN+M) 0x80C8 Ошибка времени ожидания ответа, никаких сообщений не было принято в течение заданного интервала времени приема. (См. RCVTIME или MSGTIME) 0x80C9 Ошибка интервала времени между символами (см. CHARGAP) 0x80CA Ошибка времени простоя линии (см. Простаивающая линия) 0x80CB Заданная конечная последовательность сконфигурирована со всеми "безразличными" символами 0x80CC Заданная начальная последовательность сконфигурирована со всеми "безразличными" символами Ошибки сигналов Идентификатор события/ошибки Описание 0x80F0 Коммуникационный модуль является модулем RS485 и сигналы отсутствуют 0x80F1 Коммуникационный модуль является модулем RS232, но сигналы не могут быть установлены, так как разблокировано аппаратное управление потоком 0x80F2 Сигнал DSR не может быть установлен, так как модуль является устройством DTE |