Материал: АСКВ2 БУ max90-ru_v1.20

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Модули мобильной системы X90

Большие сегменты и мультисегментные MTU

Пример

Три автономных сообщения (7 байтов, 2 байта и 9 байтов) передаются с использованием MTU размером 7 байтов. Конфигурация позволяет передавать большие сегменты, а также мультисегментные MTU.

 

 

 

 

Сообщение 1:

 

 

 

 

 

 

Массив передачи/приема

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Из 7 элементов USINT в соответствии с

 

 

 

 

A1

A2

A3

 

A4

 

A5

A6

A7

 

 

 

 

настраиваемым размером MTU

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Обе опции

 

 

 

 

 

 

 

Сообщение 2:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Последовательность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C1

A1

A2

A3

A4

A5

A6

 

 

 

 

 

B1

 

B2

 

 

 

 

 

 

для цикла шины 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Последовательность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A7

C2

B1

B2

C3

D1

D2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для цикла шины 2

 

 

 

 

Сообщение 3:

 

 

 

 

 

 

 

 

 

 

 

 

Последовательность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D3

D4

D5

D6

D7

D8

D9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для цикла шины 3

 

D1

D2

D3

D4

D5

 

D6

D7

D8

 

D9

 

 

 

 

 

 

 

 

Последовательность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C0

-

-

-

-

-

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для цикла шины 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Больше нет данных для передачи

 

 

 

 

 

 

 

 

 

 

Последовательность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C0

-

-

-

-

-

-

 

 

 

 

 

для цикла шины 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Последовательность

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

-

 

 

- ...

 

 

 

 

 

C0

-

-

-

-

-

-

 

 

 

 

 

 

 

 

 

 

для цикла шины 6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок 57: Массив передачи/приема (большие сегменты и мультисегментные MTU)

Прежде всего сообщения необходимо разделить на сегменты. Если последний сегмент сообщения заполняет MTU не полностью, его можно использовать для других данных в потоке данных. Бит nextCBPos должен устанавливаться во всех случаях, когда управляющему байту сопутствует сегмент с полезными данными.

Возможность формировать большие сегменты означает, что сообщения разделяются на меньшее количество сегментов; это приводит к созданию меньшего количества управляющих байтов. Управляющие байты создаются таким же образом, как при использовании опции «Большие сегменты».

Использование больших сегментов → Макс. длина сегмента = 63 байта

Сообщение 1 (7 байтов)

Первый сегмент = Управляющий байт + 7 байтов данных

Сообщение 2 (2 байта)

Первый сегмент = Управляющий байт + 2 байта данных

Сообщение 3 (9 байтов)

Первый сегмент = Управляющий байт + 9 байтов данных

Больше нет сообщений

Управляющий байт C0

Для каждого сегмента должен быть создан уникальный управляющий байт. Кроме того, для сохранения связи в дежурном режиме генерируется управляющий байт C0.

C1 (управляющий байт 1)

 

 

C2 (управляющий байт 2)

 

 

C3 (управляющий байт 3)

 

 

– SegmentLength / длина сегмента

=

7

– SegmentLength / длина сегмента

=

2

– SegmentLength / длина сегмента

=

9

(7)

 

 

(2)

 

 

(9)

 

 

– nextCBPos / позиция след.

=

0

– nextCBPos / позиция след. управ-

=

0

– nextCBPos / позиция след. управ-

=

0

управляющего байта (0)

 

 

ляющего байта (0)

 

 

ляющего байта (0)

 

 

– MessageEndBit / признак конца

=

128

– MessageEndBit / признак конца

=

128

– MessageEndBit / признак конца

=

128

сообщения (1)

 

 

сообщения (1)

 

 

сообщения (1)

 

 

Управляющий байт

Σ

135

Управляющий байт

Σ

130

Управляющий байт

Σ

137

Таблица 26: Принцип формирования управляющих байтов FlatStream для примера с большими сегментами и мультисегментными MTU

Мобильная система управления X90 Руководство пользователя V 1.20 - Перевод руководства

231

Модули мобильной системы X90

Пример использования функции ускоренной отправки на шине X2X

Ускоренная отправка данных − это метод, который может использоваться для существенного увеличения скорости передачи данных FlatStream. Основной принцип используется и в других технических областях, например при конвейерной обработке пакетов данных в микропроцессоров.

Принцип работы

Циклическая передача последовательности FlatStream по шине X2X происходит в пять этапов. Таким образом, для успешной передачи последовательности требуется не менее пяти циклов шины.

 

Этап I

 

Этап II

Этап III

 

Этап IV

Этап V

 

Действия

Передача

последова-

Циклическое сравнение

Добавление

последова-

Циклическое сравнение

Проверка

бита

 

тельности из массива пе-

MTU и буфера модуля

тельности в массив прие-

MTU и буфера модуля

SequenceAck

 

 

редачи,

 

 

ма,

 

 

 

 

 

приращение

счетчика

 

корректировка

бита

 

 

 

 

SequenceCounter

 

SequenceAck

 

 

 

 

Ресурс

Передатчик

 

Шина

Приемник

 

Шина

Передатчик

 

 

(задача - отправка)

(направление 1)

(задача - прием)

(направление 2)

(задача - проверка квити-

 

 

 

 

 

 

 

рования)

 

Последовательность 1

Этап I

Этап II

Этап III

Этап IV

Этап V

 

 

 

 

 

Последовательность 2

 

 

 

 

 

Этап I

Этап II

Этап III

Этап IV

Этап V

Последовательность 3

 

 

 

 

 

 

 

 

 

. . .

 

Цикл шины 1

Цикл шины 2

Цикл шины 3

Цикл шины 4

Цикл шины 5

Цикл шины 6

Цикл шины 7

Цикл шины 8

Цикл шины 9

Цикл шины 10

 

 

 

 

 

 

 

 

 

 

 

 

Время

 

 

 

 

 

 

 

 

 

 

 

 

 

Последовательность 1

Этап I

Этап II

Этап III

Этап IV

Этап V

 

 

 

 

 

 

Последовательность 2

 

Этап I

Этап II

Этап III

Этап IV

Этап V

 

 

 

 

 

Последовательность 3

 

 

Этап I

Этап II

Этап III

Этап IV

Этап V

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Цикл шины 1

Цикл шины 2

Цикл шины 3

Цикл шины 4

Цикл шины 5

 

Цикл шины 6

Цикл шины 7

Цикл шины 8

Цикл шины 9

Цикл шины 10

 

 

 

 

 

 

 

 

 

 

 

 

Время

Рисунок 58: Сравнение передачи данных с ускоренной отправкой и без нее

На каждом из пяти этапов (для каждой из пяти задач) задействованы разные ресурсы. Если функция ускоренной отправки не используется, последовательности выполняются одна за другой. При этом каждый ресурс активен, только если он участвует в текущем этапе.

С функцией ускоренной отправки ресурс, выполнивший свое задание, может использоваться для обработки следующего сообщения. Условие включения MTU изменяется, чтобы позволить это. Затем последовательности поступают в MTU согласно расписанию. Передающая станция больше не ждет квитирования от SequenceAck; это означает, что канал передачи может использоваться гораздо более эффективно.

В идеальной ситуации в каждом цикле шины работают все ресурсы. Приемник все еще должен квитировать каждую принятую последовательность. Только когда SequenceAck изменится и будет проверен передатчиком, последовательность считается переданной успешно.

232

Мобильная система управления X90 Руководство пользователя V 1.20 - Перевод руководства

Модули мобильной системы X90

Настройка

Функцию ускоренной отправки необходимо включать только для входного направления. Для этого доступны два дополнительных регистра конфигурации. Модули FlatStream оптимизированы таким образом, что они поддерживают эту функцию. В выходном направлении функция ускоренной отправки может использоваться после указания размера OutputMTU.

Количество неподтвержденных последовательностей

Имя: Forward

Посредством регистра Forward пользователь указывает количество неподтвержденных последовательностей, которые может передавать модуль.

Рекомендованные значения:

Шина X2X:

Макс. 5

POWERLINK:

Макс. 7

 

 

 

Тип данных

 

Значения

USINT

 

1–7

 

 

По умолчанию: 1

Время задержки

Имя: ForwardDelay

Регистр ForwardDelay используется для задания времени задержки в мкс. Это время, которое должно пройти после отправки последовательности, прежде чем модуль получит разрешение записывать новые данные в MTU в следующем цикле шины. Поэтому подпрограмма для получения последовательности от модуля может работать в классе задач с временем цикла, превышающим время цикла шины.

Тип данных

Значения

UINT

0–65535 [мкс]

 

По умолчанию: 0

Последовательность 1

Этап I

Этап II

Этап III

Этап IV

 

Этап V

 

 

 

 

Последовательность 2

 

 

Этап I

Этап II

Этап III

Этап IV

 

Этап V

 

 

Последовательность 3

 

 

 

 

Этап I

Этап II

Этап III

Этап IV

 

Этап V

 

Цикл шины 1

Цикл шины 2

Цикл шины 3

Цикл шины 4

Цикл шины 5

Цикл шины 6

Цикл шины 7

Цикл шины 8

Цикл шины 9

Цикл шины 10

 

 

 

 

 

 

 

 

 

 

Время

Последовательность 1

Этап I

Этап II

 

Этап III

Этап IV

Этап V

 

 

 

 

Последовательность 2

 

 

Этап I

Этап II

 

Этап III

Этап IV

Этап V

 

 

Последовательность 3

 

 

 

 

Этап I

Этап II

 

Этап III

Этап IV

Этап V

 

Цикл шины 1

Цикл шины 2

Цикл шины 3

Цикл шины 4

Цикл шины 5

Цикл шины 6

Цикл шины 7

Цикл шины 8

Цикл шины 9

Цикл шины 10

 

 

 

 

 

 

 

 

 

 

Время

Рисунок 59: Влияние значения ForwardDelay на связь FlatStream с функцией ускоренной отправки

В программе важно убедиться, что контроллер обрабатывает все входящие InputSequence и InputMTU. Значение ForwardDelay настраивает отложенное квитирование в выходном направлении и задержку приема во входном направлении. Таким образом, контроллер имеет больше времени для обработки входящих

InputSequence или InputMTU.

Мобильная система управления X90 Руководство пользователя V 1.20 - Перевод руководства

233

Модули мобильной системы X90

Передача и прием с функцией ускоренной отправки

Базовый алгоритм для передачи и приема данных остается одинаковым. С помощью функции ускоренной отправки может быть передано до семи неквитированных последовательностей. Последовательности могут передаваться без ожидания квитирования предыдущего сообщения. Устранение задержки между записью и реакцией позволяет за то же время передать существенно больше данных.

Алгоритм передачи

Циклический запрос состояния:

– Модуль отслеживает счетчик OutputSequenceCounter.

0) Циклические проверки:

– Контроллер должен проверять OutputSyncAck.

Если OutputSyncAck = 0: Сбросить OutputSyncBit и повторно синхронизировать канал.

– Контроллер должен проверять, активирован ли OutputMTU.

Если OutputSequenceCounter > OutputSequenceAck + 7: не активирован, потому что последняя последовательность еще не квитирована.

1) Подготовка (создание массива передачи):

Контроллер должен разбить сообщение на допустимые сегменты и создать необходимые управляющие байты.

Контроллер должен объединить сегменты и управляющие байты в массив передачи.

2) Передача:

Контроллер должен передать текущую часть массива передачи в OutputMTU.

Контроллер должен увеличить OutputSequenceCounter, чтобы модуль принял последовательность.

После этого контроллер получает разрешение вести передачу в рамках следующего цикла шины, если MTU был активирован.

Модуль реагирует, поскольку OutputSequenceCounter > OutputSequenceAck:

Модуль принимает данные из внутреннего буфера приема и добавляет их в конец внутреннего массива приема.

Модуль квитирует прием; текущее принятое значение OutputSequenceCounter передается в OutputSequenceAck.

Модуль вновь начинает циклически запрашивать состояние.

3) Завершение (квитирование):

– Контроллер должен циклически проверять регистр OutputSequenceAck.

→ Последовательность считается успешно переданной, только если она была квитирована посредством OutputSequenceAck. Для выявления потенциальных ошибок передачи также и в последней последовательности, важно убедиться, что время выполнения алгоритма достаточно велико.

Примечание:

Для точного контроля продолжительности передачи необходимо подсчитывать циклы задачи, прошедшие с момента последнего увеличения OutputSequenceCounter. Таким образом можно измерить количество циклов шины, потребовавшихся для передачи предыдущих сегментов. Если значение контрольного счетчика превышает установленный предел, то последовательность можно считать потерянной (соотношение цикла шины и цикла задачи может регулироваться пользователем, так что предел должен определяться индивидуально).

Алгоритм приема

0) Циклический опрос состояния:

– Контроллер должен отслеживать InputSequenceCounter.

Циклические проверки:

Модуль проверяет InputSyncAck.

Модуль проверяет, активирован ли InputMTU.

→ Критерии активации: InputSequenceCounter > InputSequenceAck + Forward

Подготовка:

Модуль формирует управляющие байты / сегменты и создает массив передачи. Действие:

Модуль передает текущую часть массива передачи в буфер приема.

Модуль увеличивает значение счетчика InputSequenceCounter.

Модуль ожидает нового цикла шины, который начнется после истечения времени ForwardDelay.

Если InputMTU активирован, модуль повторяет действие.

1) Прием (InputSequenceCounter > InputSequenceAck):

Контроллер должен принять данные из InputMTU и добавить их к концу массива приема.

Контроллер должен сравнить значения InputSequenceAck и InputSequenceCounter текущей обрабатываемой последовательности.

Завершение:

– Модуль отслеживает значение регистра InputSequenceAck.

→ Последовательность считается успешно переданной, только если она была квитирована посредством InputSequenceAck.

234

Мобильная система управления X90 Руководство пользователя V 1.20 - Перевод руководства

Модули мобильной системы X90

Подробности/дополнительная информация

1.Недопустимый размер SequenceCounter (смещение счетчика) Ошибочная ситуация: MTU не активирован

Когда различие между значениями SequenceCounter и SequenceAck при передаче данных превышает допустимый предел, возникает ошибка передачи данных. В этом случае все неквитированные последовательности необходимо повторно передать со старым значением SequenceCounter.

2.Проверка квитирования После получения квитирования необходимо убедиться, что квитированная последовательность была

отправлена и не была подтверждена ранее. Если последовательность квитирована несколько раз, возникает критическая ошибка. Канал необходимо закрыть и повторно синхронизировать (принцип действий такой же, как и при связи без функции ускоренной отправки).

Информация:

Висключительных случаях при ускоренной передаче модуль может увеличивать

OutputSequenceAck более, чем на 1.

Вэтом случае ошибки не возникает. Контроллеру разрешено рассматривать все последовательности вплоть до квитируемой как переданные успешно.

3.Массивы передачи и приема Функция ускоренной отправки не влияет на структуру массивов передачи и приема. Они создаются и должны обрабатываться одинаково.

Мобильная система управления X90 Руководство пользователя V 1.20 - Перевод руководства

235