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

Модули мобильной системы 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

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

Ошибки при использовании функции ускоренной отправки

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

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

Использование функции ускоренной отправки при связи FlatStream усложняет ситуацию. Приемник повторно принимает старые данные, т.е. предыдущие значения для SequenceAck/SequenceCounter и старый MTU.

Потеря квитирования (SequenceAck)

Если значение SequenceAck потеряно, то MTU уже был передан правильно. Поэтому приемнику разрешено продолжать обработку следующей последовательности. Значение SequenceAck устанавливается равным соответствующему SequenceCounter и отправляется назад на передатчик. Проверка входящих подтверждений показывает, что все последовательности, кроме последней квитированной, были успешно переданы (см. последовательности 1 и 2 на рисунке).

Потеря передачи (SequenceCounter, MTU):

Если значение SequenceCounter или заполненный MTU потеряны из-за сбоя цикла шины, приемник не получит никаких данных. На данный момент ошибка еще не влияет на процедуру передачи. MTU с управлением по времени разблокируется и может быть перезаписан.

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

Если было отправлено максимальное количество неквитированных последовательностей и не получено подтверждений, передатчик должен повторить действия для неподтвержденных счетчиков SequenceCounter и соответствующих MTU (см. последовательность 3 и 4 на рисунке).

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

Этап I

Этап II

Этап III

Этап IV

Этап V

 

 

 

 

 

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

 

Этап I

Этап II

Этап III

Этап IV

Этап V

 

 

 

 

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

 

 

Этап I

Этап II

Этап III

Этап IV

Этап V

 

 

 

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

 

 

 

Этап I

Этап II

Этап III

Этап IV

Этап V

 

 

 

Цикл шины 1

Цикл шины 2

Цикл шины 3

Цикл шины 4

Цикл шины 5

Цикл шины 6

Цикл шины 7

Цикл шины 8

Цикл шины 9

Цикл шины 10

 

 

 

 

 

 

 

 

 

 

Время

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

Этап I

Этап II

Этап III

 

 

 

 

 

 

 

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

 

Этап I

Этап II

Этап III

Этап IV

Этап V

 

 

 

 

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

 

 

Этап I

Этап II

 

 

 

Этап I

Этап II

Этап III

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

 

 

 

Этап I

Этап II

 

 

 

Этап I

Этап II

 

Цикл шины 1

Цикл шины 2

Цикл шины 3

Помехи

Цикл шины 5

Цикл шины 6

Цикл шины 7

Цикл шины 8

Цикл шины 9

Цикл шины 10

 

 

 

 

 

 

 

 

 

 

Время

Рисунок 60: Эффект потери цикла шины

Потеря квитирования

В последовательности 1 квитирование потеряно из-за помехи. В этом случае последовательности 1 и 2 квитируются на этапе V последовательности 2.

Потеря передачи

В последовательности 3 из-за помехи потеряны все передаваемые данные. Приемник останавливается и больше не возвращает никаких подтверждений.

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

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

236

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

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