Способ разрешения конфликта адресации узлов в асинхронных сетях с топологией "общая шина"
Иллюстрации
Показать всеИзобретение относится к способам разрешения конфликта адресации узлов в асинхронных сетях. Технический результат, заключающийся в повышения надежности обнаружения и разрешения конфликта адресации узлов, достигается за счет выполняемых в сетевой системе операций, включающих этапы на которых ведущее устройство, подключенное к сети, инициирует обмен данными и формирует запросы; передает запросы по сети ведомым устройствам. Ведомые устройства принимают ответы из сети, каждое из которых подключено к сети, имеет собственный сетевой адрес и выполнено с возможностью принимать запросы ведущего устройства через сеть. Посылают из ведущего устройства в адрес выбранного ведомого устройства 1-й запрос, без задержки отправляют ответ из ведомых устройств. Посылают из ведущего устройства в адрес выбранного ведомого устройства 2-й запрос, содержащий команду, обеспечивающую случайную задержку ответа. Посылают из ведущего устройства в адрес выбранного ведомого устройства 3-й запрос выбранному ведомому устройству на изменение сетевого адреса. В случае обнаружения в сети ответа на 3-й запрос от другого ведомого устройства ведомое устройство не изменяет свой сетевой адрес, иначе ведомое устройство изменяет свой сетевой адрес и высылает ответ на 3-й запрос ведущему устройству. 6 табл.
Реферат
Область техники, к которой относится изобретение
Изобретение относится к вычислительной технике и, в частности, к способам разрешения конфликта адресации узлов в асинхронных сетях передачи данных с топологией "общая шина".
Уровень техники
Обмен данными и командами между ведущим и ведомыми устройствами в современных сетях передачи данных основан на формировании и присваивании адресов устройств в сети и передаче данных и/или команд согласно присвоенным адресам.
Однако, как показывает опыт, в процессе работы по различным причинам (замена оборудования или изменение конфигурации узлов сети, несовершенство программного обеспечения (ПО) и др.) возможно изменение адресов ведомых устройств таким образом, что два и более ведомых устройства могут иметь одинаковый сетевой адрес, что приводит к неправильной работе сети и/или ее отдельных узлов.
Известные протоколы для сетей с топологией "общая шина" не содержат механизма обнаружения и разрешения конфликта адресации узлов.
Так, например, известный протокол PCI содержит механизм присвоения адресов ведомым устройствам в сети с помощью ведущего устройства в ходе инициализации работы и не предусматривает случая неконтролируемого изменения адресов ведомых устройств [1]. Соответственно, при возникновении неконтролируемого изменения адресов ведомых устройств, в частности совпадения адресов, вполне возможной становится потеря работоспособности системы в целом из-за взаимного наложения во времени ответов на запросы и искажения сигнала, который не будет правильно воспринят ведомым устройством, и/или неправильная работа ведомого устройства, которое будет отрабатывать запросы, адресованные ошибочно.
Известный протокол ModBus также не содержит механизма разрешения конфликта адресов в ходе работы системы [2].
Известен также способ разрешения конфликтующих запросов данных [3], содержащий этапы, на которых
- разрешают конфликтующие запросы на блок данных от множества одноранговых узлов посредством однорангового узла, имеющего достоверную копию запрашиваемых данных, которая запрошена посредством конфликтующих сообщений,
- при этом упомянутый одноранговый узел, имеющий достоверную копию запрашиваемых данных, выбирает целевой узел из списка одноранговых узлов, которые передали конфликтующие сообщения; и
- разрешают конфликтующие запросы на блок данных посредством базового узла, соответствующего запрашиваемым данным, если отсутствует уникальная, кэшированная копия, хранящаяся на одном из одноранговых узлов,
- при этом базовый узел, имеющий достоверную копию запрашиваемых данных, выбирает целевой узел из списка одноранговых узлов, которые передали конфликтующие сообщения.
Известный способ относится к одноранговым сетям, имеющим базовый (ведущий) узел и одноранговые (ведомые) узлы и предложен для разрешения конфликтов запросов на доступ к разделяемым ресурсам системы (блокам данных).
Базовый узел выполнен с возможностью
- инициировать обмен данными и формировать по адресам в сети запросы, содержащие команды и/или данные для обработки;
- передавать запросы по сети одноранговым узлам;
- принимать ответы из сети от одноранговых узлов.
Каждый из одноранговых узлов выполнен с возможностью
- принимать запросы из сети от базового узла;
- обрабатывать запросы базового узла ведущего устройства;
- передавать ответ по сети базовому узлу.
В ходе выполнения способа предусмотрена передача нескольких запросов от базового узла одноранговым узлам.
Известный способ принят за прототип для предлагаемого технического решения, учитывая одинаковое предназначение (разрешение конфликтов в одноранговых сетях) и совокупность совпадающих существенных признаков.
Раскрытие изобретения
Техническим результатом является повышение надежности обнаружения и разрешения конфликта адресации узлов.
Для этого предлагается способ, выполняемый в сетевой системе, включающей
- ведущее устройство, которое подключено к сети и выполнено с возможностью
- инициировать обмен данными и формировать по адресам в сети запросы, содержащие команды и/или данные для обработки;
- передавать запросы по сети ведомым устройствам;
- принимать ответы из сети от ведомых устройств;
- по крайней мере два ведомых устройства, каждое из которых подключено к сети, имеет собственный сетевой адрес и выполнено с возможностью
- принимать запросы из сети от ведущего устройства;
- обрабатывать запросы ведущего устройства, в том числе обеспечивающие заданную задержку ответа и изменение собственного сетевого адреса;
- передавать ответ по сети ведущему устройству;
- принимать ответы других ведомых устройства с собственным сетевым адресом;
причем способ заключается в том, что
- посылают из ведущего устройства в адрес выбранного ведомого устройства 1-й запрос для определения наличия ведомого устройства в сети и для определения величины длительности передачи ответа на запрос от ведомого устройства;
- принимают в ведомых устройствах 1-й запрос;
- отправляют из ведомых устройств ответ ведущему устройству без задержки;
- определяют величину длительности передачи ответа на запрос от ведомого устройства;
- в случае получения ведущим устройством корректного ответа от выбранного ведомого устройства на 1-й запрос посылают из ведущего устройства в адрес выбранного ведомого устройства 2-й запрос, содержащий команду, обеспечивающую случайную задержку ответа, не превышающую длительности передачи ответа ведомым устройством;
- принимают в ведущем устройстве ответ выбранного ведомого устройства на 2-й запрос;
- анализируют в ведущем устройстве ответ выбранного ведомого устройства;
- если ответ выбранного ведомого устройства некорректный, то:
- формируют в ведущем устройстве новый сетевой адрес для выбранного ведомого устройства;
- устанавливают предельную величину задержки ответа для ведомого устройства;
- посылают из ведущего устройства в адрес выбранного ведомого устройства 3-й запрос, содержащий команды для выбранного ведомого устройства
- на изменение сетевого адреса,
- на расчет случайной величины задержки ответа,
- на передачу ответа после рассчитанной случайной величины задержки времени, не превышающей предельную величину задержки;
- принимают в ведомом устройстве 3-й запрос;
- определяют в ведомом устройстве величину случайного интервала времени,
- не превышающую установленную предельную величину,
- кратную длительности передачи ответа на запрос;
- принимают в ведомом устройстве в течение рассчитанного случайного интервала задержки времени ответ на 3-й запрос от других ведомых устройств, имеющих выбранный адрес;
- в случае обнаружения в сети ответа на 3-й запрос от другого ведомого устройства, ведомое устройство не изменяет свой сетевой адрес, иначе ведомое устройство изменяет свой сетевой адрес и высылает ответ на 3-й запрос ведущему устройству.
В ходе реализации предложенного способа 1-й запрос из ведущего устройства посылается для определения того, имеется ли в сети хотя бы одно ведомое устройство в сети по данному адресу, и для определения величины длительности передачи ответа на запрос от ведомого устройства. В общем случае определение величины длительности передачи ответа на запрос может быть выполнено на основе известности характеристик применяемого протокола обмена данными или экспериментально, с учетом особенностей конкретной сети.
В случае получения ведущим устройством корректного ответа от выбранного ведомого устройства на 1-й запрос посылают из ведущего устройства в адрес выбранного ведомого устройства 2-й запрос, содержащий команду, обеспечивающую случайную задержку ответа, не превышающую длительности передачи ответа на запрос ведомым устройством. Это делается для того, чтобы обеспечить наложение друг на друга ответов всех ведомых устройств, и, тем самым, делает невозможным получение ведущим устройством ответа без ошибок, наложения ответов друг на друга и, соответственно, искажения принимаемых ответов. Таким образом, устанавливается факт наличия в сети, по крайней мере двух ведомых устройств, имеющих одинаковый адрес.
Для исправления ситуации в ведущем устройстве устанавливают предельную величину задержки ответа для ведомого устройства и посылают из ведущего устройства в адрес выбранного ведомого устройства 3-й запрос с командами для выбранного ведомого устройства, обеспечивающими передачу ответа в фиксированные моменты времени, исключающими возможность наложения ответов друг на друга и обеспечивающими возможность приема ответа без ошибок. Предельная величина задержки ответа для ведомого устройства устанавливается на основе ранее определенной величины длительности передачи ответа на запрос от ведомого устройства и с учетом предполагаемого количества ведомых устройств, имеющих одинаковый адрес. При этом фиксированные моменты времени возникают при дискретизации попадания сгенерированного в ведомом устройстве случайного числа в заданные промежутки.
Например, если количество ведомых устройств, имеющих одинаковый адрес, предполагается не более 4, то предельная величина задержки ответа для ведомого устройства устанавливается в 4 раза больше, чем ранее определенная величина длительности передачи ответа на запрос от ведомого устройства, а случайное число генерируется в ведомом устройстве в диапазоне от 0 до 1, то диапазон разбивается на 4 равных промежутка. Тогда, если случайное число попадает в промежуток от 0 до 0,1, то фиксируется 1, если в промежуток от 0,1 до 0,2, то фиксируется 2 и т.д.
Таким образом, после реализации предложенного способа одно из ведомых устройств, имевших одинаковый сетевой адрес, изменит свой сетевой адрес на новый. Если же в сети одновременно несколько ведомых устройств имели совпадающий сетевой адрес, то предложенный способ необходимо осуществить последовательно, несколько раз подряд.
Может возникнуть ситуация, когда случайные числа, сгенерированные в разных ведомых устройствах, попадут в одинаковые промежутки, и тогда фиксированные моменты времени также совпадут, и произойдет наложение ответов ведомых устройств на 3-й запрос. В этом случае предложенный способ также необходимо осуществить последовательно, несколько раз подряд, пока не возникнет ситуация, когда фиксированные моменты времени в разных ведомых устройствах перестанут совпадать.
Осуществление изобретения
Рассмотрим вариант реализации предложенного способа в сети с топологией "общая шина", в которой использован стандарт асинхронного интерфейса RS485 полудуплексной многоточечной дифференциальной линии связи. Для обмена данными по шине используется протокол ModBus RTU со скоростью передачи 9600 бод без бита паритета с двумя стоповыми битами.
Такая сеть, например, может быть сформирована в системе для контроля температуры в больших многоэтажных зданиях. Ведущим устройством в этом варианте является центральный контрольный блок, представляющий собой специализированный компьютер, а ведомыми устройствами могут быть цифровые датчики температуры, имеющие в своем составе микроконтроллеры.
Во всех ведомых устройствах реализована возможность
- принимать запросы из сети от ведущего устройства;
- обрабатывать запросы ведущего устройства, в том числе обеспечивающие заданную задержку ответа и изменение собственного сетевого адреса;
- принимать ответы других ведомых устройств с собственным сетевым адресом;
- передавать ответ по сети ведущему устройству;
Перед началом работы программное обеспечение (ПО) ведущего и ведомых устройств, реализующее стандартный протокол ModBus, должно быть модифицировано для добавления новых команд. Модификация ПО может быть осуществлена специалистом по программированию (программистом) на основе известности заявляемого способа и выполняемых функций устройств.
После включения и приведения в рабочее состояние посылают из ведущего устройства в адрес выбранного ведомого устройства 1-й запрос для определения наличия ведомого устройства в сети и для определения величины длительности передачи ответа на запрос от ведомого устройства.
Параметры 1-го запроса ведущего устройства приведены в табл.1.
Затем принимают в ведомых устройствах 1-й запрос и отправляют из ведомых устройств ответ ведущему устройству без задержки.
Параметры ответа ведомого устройства на 1-й запрос приведены в табл.2.
Во время приема одного бита приемник ведомого устройства обычно выполняет три измерения через равные промежутки времени, а определяет принятое значение по мажоритарной системе. Если два или три измерения показали прием единицы, то детектируется прием единичного бита, иначе считается, что принят нулевой бит. Время передачи одного бита на скорости 9600 бод составляет 1/9600=0,000104167 с = 104,16 мкс, а интервал измерений в три раза чаще, т.е. каждые 34,72 мкс.
Для корректного выполнения 1-го запроса ведомые устройства должны отвечать на запрос с разнесением по времени не хуже 34,72 мкс, чтобы ведущее устройство корректно приняло ответ на 1-й запрос от всех возможных ведомых устройств с заданным адресом.
В рассматриваемом варианте реализации определение величины длительности передачи ответа на запрос от ведомого устройства осуществляется на основе известности характеристик используемого протокола Modbus RTU.
В случае получения ведущим устройством корректного ответа от выбранного ведомого устройства на 1-й запрос, посылают из ведущего устройства в адрес выбранного ведомого устройства 2-й запрос, содержащий команды, обеспечивающие случайную задержку ответа, не превышающую длительности передачи ответа ведомым устройством.
Параметры 2-го запроса ведущего устройства приведены в табл. 3.
После этого принимают и анализируют в ведущем устройстве ответ выбранного ведомого устройства на 2-й запрос.
Параметры ответа ведомого устройства на 2-й запрос приведены в табл. 4.
Размер ответа ведомого устройства на 2-й запрос составляет, согласно протоколу, 4 байта, а совокупности 4·8 бит + 4 стартовых бита + 8 стоповых бита, всего 44 бита. Время передачи одного бита на скорости 9600 бод составляет 1/9600=104,16 мкс. Тогда длительность передачи всего ответа при скорости передачи 9600 бод будет составлять 44/9600=0,004583 с = 4583 мкс.
Случайный интервал задержки ответа ведомого устройства на 2-й запрос вычисляется ведомым устройством как
TЗ=(4583-104,16) · Rand(),
где TЗ - время задержки, мкс
Rand() - случайное число в интервале от 0 до 1.
Для корректного выполнения 2-го запроса ведомые устройства должны самостоятельно вычислить случайный интервал задержки ответа. Если в сети находятся два или более устройств с заданным адресом, то с большой долей вероятности их ответы наложатся друг на друга и ведущее устройство не сможет корректно принять ответ на 2-й запрос.
Если ответ выбранного ведомого устройства некорректный, то:
- формируют в ведущем устройстве новый сетевой адрес для выбранного ведомого устройства;
- устанавливают предельную величину задержки ответа для ведомого устройства;
- посылают из ведущего устройства в адрес выбранного ведомого устройства 3-й запрос, содержащий команды для выбранного ведомого устройства;
- на изменение сетевого адреса;
- на расчет случайной величины задержки ответа;
- на передачу ответа после рассчитанной случайной величины задержки времени, не превышающей предельную величину задержки.
Параметры 3-го запроса ведущего устройства приведены в табл. 5.
Установленную предельную величину задержки ответа для ведомого устройства, которая в рассматриваемом варианте выбирается 2с экспертным путем, передают в составе 3-го запроса.
Затем принимают в ведомом устройстве 3-й запрос и определяют в ведомом устройстве величину случайного интервала времени, не превышающую установленную предельную величину и кратную длительности передачи ответа на запрос.
Размер ответа ведомого устройства на 3-й запрос составляет 4 байта, а в совокупности 4·8 бит + 4·(1 стартовый и 2 стоповых бит на каждый символ), всего 44 бита. По стандарту Modbus между посылками должны быть промежутки времени, длительностью не менее времени передачи 3,5 символов (3,5· (8+1+2) бит = 42 бит). Дискретность случайного интервала задержки составляет (44+42)/9600=0,008958 с = 8958 мкс.
С учетом установленной и принятой предельной величиной задержки ответа для ведомого устройства 2с, случайный интервал задержки ответа ведомого устройства на 3-й запрос можно вычислить следующим образом:
TЗ=(2-0,008958-0,008958) · Rand(X),
где TЗ - время задержки.
Дискретное случайное число Rand(X) определяется в интервале 1 до (2-0,008958-0,008958)/(0,008958+0,008958), (с округлением).
Затем принимают в ведомом устройстве в течение рассчитанного случайного интервала задержки времени ответ на 3-й запрос от других ведомых устройств, имеющих выбранный адрес.
Параметры ответа ведомого устройства на 3-й запрос приведены в табл. 6.
В случае обнаружения в сети ответа на 3-й запрос от другого ведомого устройства, ведомое устройство не изменяет свой сетевой адрес, иначе ведомое устройство изменяет свой сетевой адрес и высылает ответ на 3-й запрос ведущему устройству.
В результате выполнения 3-го запроса одно из ведомых устройств, имеющих заданный адрес, изменит его на новый и конфликт адресов будет устранен полностью (при наличии только двух конфликтующих ведомых устройств; при наличии более двух конфликтующих ведомых устройств предложенный способ необходимо повторить снова).
Все описанные процедуры и алгоритмы могут быть реализованы специалистом в данной области на основе известности выполняемых функций. Необходимо отметить, что возможны и другие варианты реализации предложенного способа, отличающиеся от описанного выше и зависящие от личных предпочтений при программировании отдельных действий и функций.
Источники информации
1. PCI Express 2.0 Base Specification, 2006 - электронная версия в сети Интернет по адресу https://www.pcisig.com/home
2. MODBUS Application Protocol Specification v. 1.1b3, 2012 - электронная версия в сети Интернет по адресу:
http://www.modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf
3. Патент РФ №2263344, с приоритетом от 19.12.2002 г.
Способ разрешения конфликта адресации узлов в асинхронных сетях с топологией ”общая шина”, выполняемый в сетевой системе, включающейведущее устройство, которое подключено к сети и выполнено с возможностьюинициировать обмен данными и формировать по адресам в сети запросы, содержащие команды и/или данные для обработки;передавать запросы по сети ведомым устройствам;принимать ответы из сети от ведомых устройств;по крайней мере два ведомых устройства, каждое из которых подключено к сети, имеет собственный сетевой адрес и выполнено с возможностью принимать запросы из сети от ведущего устройства;обрабатывать запросы ведущего устройства, в том числе обеспечивающие заданную задержку ответа и изменение собственного сетевого адреса;принимать ответы других ведомых устройства с собственным сетевым адресом;передавать ответ по сети ведущему устройству;причем способ заключается в том, чтопосылают из ведущего устройства в адрес выбранного ведомого устройства 1-й запрос для определения наличия ведомого устройства в сети и для определения величины длительности передачи ответа на запрос от ведомого устройства;принимают в ведомых устройствах 1-й запрос;отправляют из ведомых устройств ответ ведущему устройству без задержки; определяют величину длительности передачи ответа на запрос от ведомого устройства;в случае получения ведущим устройством корректного ответа от выбранного ведомого устройства на 1-й запрос посылают из ведущего устройства в адрес выбранного ведомого устройства 2-й запрос, содержащий команду, обеспечивающую случайную задержку ответа, не превышающую длительности передачи ответа ведомым устройством;принимают в ведущем устройстве ответ выбранного ведомого устройства на 2-й запрос;анализируют в ведущем устройстве ответ выбранного ведомого устройства;если ответ выбранного ведомого устройства некорректный, то:формируют в ведущем устройстве новый сетевой адрес для выбранного ведомого устройства;устанавливают предельную величину задержки ответа для ведомого устройства;посылают из ведущего устройства в адрес выбранного ведомого устройства 3-й запрос, содержащий команды для выбранного ведомого устройствана изменение сетевого адреса,на расчет случайной величины задержки ответа,на передачу ответа после рассчитанной случайной величины задержки времени, не превышающей предельную величину задержки;принимают в ведомом устройстве 3-й запрос;определяют в ведомом устройстве величину случайного интервала времени,не превышающую установленную предельную величину, кратную длительности передачи ответа на запрос;принимают в ведомом устройстве в течение рассчитанного случайного интервала задержки времени ответ на 3-й запрос от других ведомых устройств, имеющих выбранный адрес;в случае обнаружения в сети ответа на 3-й запрос от другого ведомого устройства ведомое устройство не изменяет свой сетевой адрес, иначе ведомое устройство изменяет свой сетевой адрес и высылает ответ на 3-й запрос ведущему устройству.