Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Int_0 - прием сообщения завершен






1. Если статус приема показывает, что принят конечный символ, то назначить 10-миллисекундный таймер для запуска передачи и возврата.

2. Если прием завершен по любой другой причине, то начать новый прием.

SMB86 - Байт состояния приема

Бит5=1 – Принят символ конца

SMB34 = 10 миллисекундный таймер

 

10-е событие – управление временем прерывание 0

SMB34 = 10 миллисекундный таймер

 

Прием сообщения

 

 

Int_1 - Прерывание, управляемое 10-миллисекундным таймером:

1. Отсоединить прерывание, управляемое таймером.

2. Передать сообщение обратно пользователю.

 

Int_2 - при завершении передачи:

Разблокировать новый прием.

Условия начала и окончания сообщения команды приема

Для определения условий начала и окончания сообщения команда приема использует биты байта управления приемом сообщений (SMB87).

Совет

Если во время выполнения команды приема СОМ-порт занят другими устройствами, то функция приема сообщений может начать прием символа в середине этого символа, что может привести к ошибке при контроле четности и завершению приема сообщения.

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

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

 

Команда приема поддерживает несколько условий начала сообщения:

1. Распознавание бездействия линии: Условие бездействия линии определяется как время простоя или перерыва в работе линии передачи. Прием начинается, если линия связи находилась в простое или имела перерыв в работе в течение некоторого количества миллисекунд, указанного в SMW90.

Когда в вашей программе выполняется команда приема, то функция приема сообщений инициирует поиск условия бездействия линии. Если прием каких-либо символов происходит до истечения времени простоя линии, то функция приема сообщений игнорирует эти символы и вновь запускает таймер простоя линия с временем, полученным из SMW90. См. рис. 6–11.

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

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

Настройка: il = 1, sc = 0, bk = 0, SMW90 = простой линии в мс

 

 

2. Распознавание начального символа: начальный символ – это любой символ, используемый в качестве первого символа сообщения. Сообщение начинается, когда принимается начальный символ, указанный в SMB88.

Функция приема сообщений хранит начальный символ в буфере приема в качестве первого символа сообщения. Функция приема сообщений игнорирует все символы, принятые ранее начального символа. Начальный символ и все принятые после него символы сохраняются в буфере сообщения.

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

Настройка: il = 0, sc = 1, bk = 0, SMW90 - не имеют значения,

SMB88 - начальный символ

 

3. Простой линии и начальный символ: Команда приема может начинать сообщение комбинацией простоя линии и начального символа. При выполнении команды приема функция приема сообщений ищет условие простоя линии.

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

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

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

Настройка: il = 1, sc = 1, bk = 0, SMW90 > 0, SMB88 =начальный символ

 

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

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

Все символы, принятые до обнаружения условия паузы, игнорируются. Обычно обнаружение паузы используется в качестве начального условия только в том случае, если этого требует протокол.

Настройка: il = 0, sc = 0, bk = 1, SMW90 = не имеют значения,

SMB88 = не имеют значения

5. Пауза и начальный символ: Команда приема может быть сконфигурирована так, чтобы начинать прием символов после обнаружения условия паузы, за которым следует начальный символ.

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

Настройка: il = 0, sc = 1, bk = 1, SMW90 = не имеют значения,

SMB88 = начальный символ

 

6. Любой символ: Команда приема может быть сконфигурирована так, чтобы немедленно принимать все символы и помещать их в буфер сообщения. Это особый случай обнаружения бездействия линии. В этом случае время простоя линии (SMW90) устанавливается в ноль. Это заставляет команду приема начинать прием символов немедленно после начала исполнения.

Настройка: il = 1, sc = 0, bk = 0, SMW90 = 0, SMB88 = не имеют значения

Если в качестве начала сообщения используется любой символ, то можно использовать таймер сообщений для контроля времени приема сообщения. Это полезно в случаях, когда для реализации основной части протокола используется свободно программируемый обмен данными, и требуется контроль времени на случай, если в течение определенного промежутка времени не будет получено ответа от slave-устройства.

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

Настройка: il = 1, sc = 0, bk = 0, SMW90 = 0, SMB88 = не имеют значения,

c/m = 1, tmr = 1, SMW92 = выдержка времени таймера в мс

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

1. Обнаружение конечного символа: Конечный символ – это любой символ, используемый для обозначения конца сообщения.

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

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

Настройка: ec = 1, SMB89/SMB189 = конечный символ

2. Межсимвольный таймер: Время между символами – это промежуток времени от конца одного символа (стопового бита) до конца следующего символа (стопового бита). Если время между символами (включая второй символ) превышает количество миллисекунд, указанное в SMW92, то функция приема сообщений завершает работу. Межсимвольный таймер перезапускается после приема каждого символа.

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

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

Настройка: c/m = 0, tmr = 1, SMW92/SMW192 = выдержка времени в мс

 

 

 

3. Таймер сообщения: Таймер сообщения завершает сообщение через определенное время после его начала. Таймер сообщения запускается, как только выполнено начальное условие или условия для функции приема сообщений. Таймер сообщения завершает отсчет времени по истечении количества миллисекунд, указанных в SMW92.

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

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

Настройка: c/m = 1, tmr = 1, SMW92/SMW192 = выдержка времени в мс

 

 

4. Значение для наибольшего числа символов: Команде приема можно сообщить максимальное количество символов, которое должно быть принято (SMB94).

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

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

 

5. Ошибки, обнаруженные при проверке четности: Функция приема автоматически завершает работу, если аппаратура сообщает об ошибке четности в принятом символе.

Ошибки при проверке четности возможны только в том случае, если в SMB30 активизирована проверка четности. Эту функцию невозможно выключить.

 

6. Завершение по инициативе пользователя: Программа пользователя может завершить функцию приема сообщений, выполняя другую функцию приема сообщений и установив в ноль бит деблокировки в SMB87. Это приводит к немедленному завершению функции приема сообщений.

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.