Модули мобильной системы 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
Ускоренная отправка данных − это метод, который может использоваться для существенного увеличения скорости передачи данных 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 |