Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БЭМЗ полищук доки / 2020 / А2000 минск / АСКВ2 БУ max90-ru_v1.20.pdf
Скачиваний:
15
Добавлен:
21.12.2020
Размер:
11.44 Mб
Скачать

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

Прием данных из модуля (входное направление)

При получении данных массив передачи генерируется модулем, передается через FlatStream и затем должен быть воссоздан в массиве приема. Структура входящего потока данных может конфигурироваться в регистре режима. При этом алгоритм получения данных не меняется.

ПЛК / контроллер шины

 

Модуль

 

 

 

 

Внутренний буфер

Внутренний массив

Массив приема

InputMTU

 

передачи в модуле

передачи в модуле

Тип данных: USINT

Тип данных: USINT

 

Тип данных: USINT

Тип данных: USINT

_data_01

Байты Rx

Циклич.

* Байты Tx

_data_01

_data_02

Если увеличивается

InputMTU

Если разрешено:

_data_02

_data_03

_data_03

счетчик

циклически получает

модуль заполняет внутренний

_data_04

InputSequence:

данные из

буфер передачи

_data_04

 

буфера приема

указанной последовательностью

_data_05

InputMTU необходимо

по шине X2X

из массива передачи

_data_05

добавить в конец

 

 

. . .

массива приема

 

Модуль увеличивает

. . .

_data_xx

(увеличение InputSequenceAck

 

счетчик InputSequence

_data_xx

для корректного завершения)

 

 

 

Рисунок 49: Связь FlatStream (вход)

 

Алгоритм

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

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

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

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

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

Подготовка:

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

Действие:

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

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

1) Прием (как только увеличивается значение InputSequenceCounter):

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

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

Завершение:

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

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

– Дальнейшие последовательности могут быть переданы только в следующем цикле шины после успешной проверки завершения.

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

221

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

 

 

 

 

 

Общая блок-схема

 

 

 

 

 

 

Пуск

 

 

 

 

InputSyncBit = 1?

 

► InputSequenceAck = InputSequenceCounter

Синхронизация

 

► RemainingSegmentSize = 0

 

 

 

 

► SegmentFlags = 0

 

 

Да

 

 

 

InputSyncAck = 1?

Нет

InputSequenceAck > 0?

Нет

 

 

 

Да

 

Да

 

MTU_Offset = 0

 

InputSyncAck = 1

 

(InputSequenceCounter –

 

 

 

 

InputSequenceAck)

 

 

 

 

И 0x07 = 1?

 

 

 

 

 

 

 

► RemainingSegmentSize =

 

 

RemainingSegmentSize = 0?

 

MTU_Data[MTU_Offset] И 0b0011 1111

 

 

 

► SegmentFlags =

 

 

 

 

 

MTU_Data[MTU_Offset] И 0b1100 0000

 

 

 

 

 

► MTU_Offset = MTU_Offset + 1

 

сегмента

RemainingSegmentSize >

 

 

 

(InputMTU_Size - MTU_Offset)?

 

 

 

 

 

 

 

 

DataSize = InputMTU_Size – MTU_Offset

DataSize = RemainingSegmentSize

 

данных

► Копирование данных сегмента, например с помощью

 

 

 

memcpy(xxx, ADR(MTU_Data[MTU_Offset]), DataSize)

 

 

 

 

 

 

Обработка

► MTU_Offset = MTU_Offset + DataSize

 

 

 

 

► RemainingSegmentSize = RemainingSegmentSize - DataSize

 

 

RemainingSegmentSize = 0 И

 

Пометить сегмент как завершенный

(SegmentFlags И 0x80) = 0?

 

 

 

 

 

 

 

 

 

RemainingSegmentSize = 0 И

 

 

 

 

(SegmentFlags И 0x40) = 0?

 

 

 

 

InputMTU_Size = MTU_Offset?

 

► InputSequenceAck =

 

 

 

InputSequenceCounter

 

 

 

 

 

 

 

Рисунок 50: Блок-схема для входного направления

 

 

222

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

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

Дополнительная информация Рекомендуется сохранять переданные сообщения в отдельных массивах приема.

Сегмент, следующий за сегментом, в котором установлен бит MessageEndBit, должен быть добавлен в массив приема. После этого сообщение полностью получено и может быть передано в пределах устройства для дальнейшей обработки. Для следующего сообщения должен быть создан новый/отдельный массив.

Информация:

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

Приращение счетчика SequenceCounter более чем на единицу указывает на возникновение ошибки.

Примечание: эта ситуация очень маловероятна при работе без использования функции ускоренной отправки.

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

Подтверждения должны проверяться на достоверность.

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

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

223

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

Режим FlatStream

Имя: FlatstreamMode

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

Информация:

Все модули B&R, имеющие режим FlatStream, поддерживают опции «Большие сегменты» и «мультисегментный MTU» в выходном направлении. Явное разрешение необходимо только для компактной передачи данных во входном направлении.

Описание битов регистра:

Бит

Имя

Значение

Описание

0

Мультисегментный MTU

0

Не разрешено (по умолчанию)

 

 

1

Разрешено

1

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

0

Не разрешено (по умолчанию)

 

 

1

Разрешено

2–7

Зарезервированы

 

 

По умолчанию

По умолчанию обе опции, связанные с компактной передачей данных во входном направлении, отключены.

1.Модуль формирует сегменты, которые хотя бы на один байт меньше, чем допустимый MTU. Каждая последовательность начинается с управляющего байта, так что поток данных четко структурирован и его относительно просто обрабатывать.

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

 

 

 

 

 

 

Цикл шины 1

 

 

 

Цикл шины 2

 

 

 

 

Цикл шины 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

C

 

 

 

-

-

 

C

 

-

 

ME0

 

 

 

 

 

 

 

ME1

 

 

 

 

ME1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сегмент 1

 

 

 

Сегмент 2

 

 

 

 

Сегмент 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сообщение 1

 

 

 

 

 

Сообщение 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

Управляющий байт с MessageEndBit = 0

 

 

 

 

 

 

 

 

 

ME0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

Управляющий байт с MessageEndBit = 1

 

ME1

 

 

 

 

Рисунок 51: Структура сообщения в MTU (по умолчанию)

224

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

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

Использование мультисегментных MTU

При использовании этой опции InputMTU заполняется полностью (если есть достаточный объем данных, ожидающих передачи). Ранее незаполненные байты Rx передают следующие управляющие байты и соответствующие им сегменты. Это позволяет использовать активные байты Rx более эффективно.

 

 

 

 

 

 

Цикл шины 1

 

 

 

 

Цикл шины 2

 

 

 

 

 

 

Цикл шины 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

C

 

 

 

 

C

 

 

 

C

 

 

 

-

-

 

ME0

 

 

 

 

 

 

 

ME1

 

 

 

 

ME0

 

 

 

ME1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сегмент 1

 

 

 

 

Сегмент 2

 

3

 

 

 

Сегмент 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сообщение 1

 

 

 

 

 

 

Сообщение 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

Управляющий байт с MessageEndBit = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

ME0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

Управляющий байт с MessageEndBit = 1

 

ME1

 

 

 

 

Рисунок 52: Организация сообщений в MTU (мультисегментные MTU)

Использование больших сегментов

При передаче очень длинных сообщений или при включении очень малого количества байтов Rx по умолчанию должно создаваться очень много сегментов. Это создает лишнюю нагрузку на шину, поскольку для каждого сегмента должен быть создан и передан дополнительный управляющий байт. При использовании опции «Большие сегменты» длина сегмента ограничена 63 байтами, независимо от размера InputMTU. Один сегмент может занять несколько последовательностей, т.е. могут быть образованы «чистые» последовательности без управляющих байтов.

Информация:

Однако все еще возможно разделить сообщение на несколько сегментов. Если эта опция активирована и, например, возникают сообщения длиннее 63 байтов, то сообщения можно все еще разделить на несколько сегментов.

 

 

 

 

Цикл шины 1

 

 

Цикл шины 2

 

 

 

 

 

Цикл шины 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

-

-

-

 

C

 

 

-

 

ME1

 

 

 

 

 

 

 

ME1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сегмент 1

 

 

Сегмент 2

 

 

 

 

 

 

Сегмент 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сообщение 1

 

 

 

 

 

 

Сообщение 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

Управляющий байт с MessageEndBit = 0

 

 

 

 

 

 

 

 

 

 

ME0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

Управляющий байт с MessageEndBit = 1

 

ME1

 

 

 

 

 

 

 

 

Рисунок 53: Организация сообщений в MTU (большие сегменты)

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

225

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

Использование обеих опций

Допускается одновременное использование обеих опций.

 

 

 

 

Цикл шины 1

Цикл шины 2

 

 

Цикл шины 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

 

 

C

 

 

 

 

 

 

-

-

-

-

 

ME1

 

 

 

 

 

 

 

 

ME1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сегмент 1

 

 

Сегмент 2

 

 

Сегмент 3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сообщение 1

 

 

 

 

 

 

Сообщение 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

Управляющий байт с MessageEndBit = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ME0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

Управляющий байт с MessageEndBit = 1

 

ME1

 

 

 

 

Рисунок 54: Организация сообщений в MTU (большие сегменты и мультисегментные MTU)

226

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

Соседние файлы в папке А2000 минск