СПОСОБ ПЕРЕДАЧИ ПЕРИОДИЧЕСКИХ СООБЩЕНИЙ
METHOD OF TRANSMITTING PERIODIC MESSAGES

Область техники
Настоящее изобретение касается способа передачи периодических сообщений в сети, в частности сети, в которой применяют шину последовательной передачи данных для установления связи между различными вычислительными устройствами, которые осуществляют контроль и управление блоками транспортного средства, в частности автотранспортного средства.
Способ использует временные окна постоянной длины, которые позволяют связанному с сетью вычислительному устройству передавать в сеть периодические и не периодические сообщения, распределяя по окнам, предназначенным для передачи сообщений.
Предшествующий уровень техники
Известны способы этого типа, например способ, описанный в документе ЕР1461910В1. В этом документе известного уровня техники окна распределяют между вычислительными устройствами таким образом, чтобы специально выделять определенные окна для вычислительного устройства. Этот подход является проблемным, когда нагрузка на вычислительное устройство при передаче возрастает или когда необходимо изменить число вычислительных устройств.
Предоставляемая каждому вычислительному устройству возможность автономного управления временными окнами позволяет обеспечивать более высокую гибкость.
Однако при этом появляются другие проблемы, в частности проблема конфликта между сообщениями, независимо передаваемыми различными вычислительными устройствами.
Краткое изложение сущности изобретения
Для решения проблем, возникающих в технических решениях предшествующего уровня техники, в качестве объекта изобретения предлагается способ передачи из вычислительного устройства сообщений, с каждым из которых связывают период передачи, распределяя сообщения во временных окнах с заранее определенной периодичностью таким образом, чтобы каждый период передачи можно было выразить целым кратным периодичности. В рамках способа сообщения размещают в окна, которые выбирают со смещением относительно первоначального окна таким образом, чтобы исключить или уменьшить конфликты с сообщениями, передаваемыми другим вычислительным устройством, или с сообщениями, присутствующими в сети.
Этот способ позволяет также уменьшить конфликты с другими сообщениями, присутствующими в сети.
В частности, для выбора каждого окна способ содержит:
- первый этап, на котором для текущего сообщения, выбранного из сообщений, проверяют последовательные временные окна числом, меньшим на одну единицу от целого кратного, которое выражает период передачи, связанный с текущим сообщением, вычисляя для каждого проверяемого окна, по меньшей мере, количество бит, которое содержится в проверяемом окне и в окне, следующем за проверяемым окном после периода передачи, когда текущее сообщение помещено в проверяемое окно; и
- второй этап, на котором окно, выбранное для размещения сообщения, является окном, для которого, по меньшей мере, вычисленное количество бит является минимальным.
В частности:
- на первом этапе для каждого проверяемого окна вычисляют средний приоритет сообщений, содержащихся в проверяемом окне и в окне, которое следует за проверяемым окном после периода передачи, когда текущее сообщение помещено в проверяемое окно; и
- на втором этапе, среди проверяемых окон, для которых вычисленное количество бит является минимальным, выбранное окно является окном с наименьшим средним приоритетом.
В частности, на втором этапе среди двух проверяемых окон, для которых вычисленное количество бит является минимальным и средний приоритет имеет одинаковый уровень, выбранное окно является ранее проверяемым окном.
Предпочтительно способ содержит первоначальный этап, выполняемый перед другими этапами, на котором предназначенные для передачи сообщения классифицируют в порядке возрастания периодов передачи, и сообщения, с которыми связывают идентичные периоды передачи, классифицируют в порядке понижения приоритетов.
Предпочтительно текущее сообщение, выбираемое для первого выполнения первого этапа, является сообщением, с которым связывают наименьший период передачи, и среди сообщений с наименьшим периодом передачи - сообщение с наиболее высоким приоритетом.
В частности, для выполнения первого этапа и второго этапа предназначенные для передачи сообщения выбирают в порядке возрастания периодов передачи, а при одинаковых периодах передачи - в порядке понижения приоритетов.
В частности, способ содержит третий этап, который выполняют после выбора временного окна, наиболее подходящего для текущего сообщения, таким образом, чтобы найти положение временного окна, с которого начинается последовательность максимальной длины последовательных пустых временных окон.
В частности, после выполнения третьего этапа проверяемое окно располагают в середине последовательности, и длину последовательности уменьшают наполовину.
Среди других предпочтительных отличительных признаков изобретения можно указать:
- четвертый этап, на котором отслеживают, не осталось ли еще предназначенное для обработки сообщение;
- пятый этап, выполняемый при наличии еще одного предназначенного для обработки сообщения, при этом отслеживаемое сообщение берут в качестве нового текущего сообщения, чтобы повторно выполнить первый этап для нового текущего сообщения, когда количество бит, содержащееся в проверяемом окне и в окне, следующим за проверяемым окном после периода передачи, является нулевым или когда порядковое значение проверяемого окна равно положению временного окна, с которого начинается последовательность максимальной длины последовательных пустых временных окон;
- шестой этап, выполняемый после пятого этапа, когда количество бит, содержащееся в проверяемом окне и в окне, следующим за проверяемым окном после периода передачи, не является нулевым и когда порядковое значение проверяемого окна не равно положению временного окна, с которого начинается последовательность максимальной длины последовательных пустых временных окон, чтобы повторно выполнить пятый этап после размещения проверяемого окна в середине уменьшенной последовательности максимальной длины последовательных пустых временных окон и после повторного уменьшения наполовину уменьшенной последовательности.
В предпочтительном варианте осуществления способа порядковое значение проверяемого окна возвращают на ноль, если порядковое значение достигает числа, меньшего на единицу от целого кратного, которое выражает период передачи, связанный с текущим сообщением.
Объектом изобретения является также компьютерный программный продукт, напрямую загружаемый во внутреннюю память цифрового вычислительного устройства, содержащий участки программного кода для выполнения этапов способа в соответствии с настоящим изобретением, когда программу исполняет вычислительное устройство.
Способ можно загрузить в вычислительное устройство. Можно использовать только обобщение результатов, то есть использовать смещения или отклонения, получаемые при выполнении способа. Результаты формируют при помощи рабочей станции типа ПК и параметров в вычислительном устройстве.
Объектом изобретения является также вычислительное устройство, выполненное с возможностью передачи сообщений, с каждым из которых связывают период передачи, содержащее в своей памяти:
- первую переменную для указания заранее определенной периодичности временных окон таким образом, чтобы каждый период передачи можно было выразить целым кратным периодичности;
- ассоциативную таблицу, в которой каждое из сообщений связывают со смещением окна относительно первоначального окна с нулевым смещением таким образом, чтобы исключить или уменьшить конфликты между сообщениями, передаваемыми другим вычислительным устройством, или сообщениями, присутствующими в сети.
В частности, смещения, связанные с сообщениями, приводят к такому распределению сообщений во временных окнах, которое создает минимальную нагрузку занятости окон сообщениями.
Предпочтительно сообщения располагают в ассоциативной таблице по порядку возрастания периодов передачи, и сообщения, с которыми связан одинаковый период передачи, располагают в порядке понижения приоритетов.
Краткое описание чертежей
В дальнейшем изобретение поясняется предпочтительными вариантами воплощения со ссылками на сопроводительные чертежи, на которых
Фиг.1 изображает пример таблицы, объединяющей сообщения, предназначенные для передачи через вычислительное устройство;
Фиг.2 изображает другой пример таблицы, объединяющей сообщения, предназначенные для передачи через вычислительное устройство;
Фиг.3 изображает временную последовательность передачи сообщений;
Фиг.4 изображает этап способа в соответствии с настоящим изобретением в фазе инициализации;
Фиг.5 и 6 изображают обработку таблицы, показанной на фиг.2, в фазе инициализации;
Фиг.7-9 изображают этапы способа в соответствии с настоящим изобретением после фазы инициализации;
Фиг.10 и 11 изображают таблицы, соответственно показанные на фиг.1 и 2, после обработки при помощи описанного способа;
Фиг.12 и 13 изображают таблицы, измеряющие эффективность распределения сообщений при передаче.
Описание вариантов воплощения изобретения
В настоящем описании «отсечкой» будет называться временное окно постоянной длины, которое повторяется во времени с периодичностью, равной его длине, что позволяет вычислительному устройству передать одно или несколько сообщений. Каждое вычислительное устройство в сети управляет своей собственной отсечкой при передаче, причем абсолютно асинхронно с управлением другими вычислительными устройствами со своими собственными отсечками.
Каждое вычислительное устройство содержит в своей памяти (не показана) ассоциативную таблицу, в которой собраны сообщения, предназначенные для цикличной передачи с фиксированным периодом, выраженным, например, в миллисекундах, при помощи переменной V9, связанной с каждым сообщением.
В качестве примера рассмотрим сообщения, форматированные для передачи в сети типа CAN (кампусная сеть), используемой, в частности, для обеспечения связи между различными устройствами транспортного средства, в частности автотранспортного средства.
Как известно, сообщение для этого типа сети содержит поле-идентификатор, которое позволяет отличать одно сообщение от другого. Значение идентификатора показывает приоритетность сообщения в сети. Чем меньше его значение, тем выше приоритет. Каждое вычислительное устройство передает свои сообщения в порядке понижения приоритета. В случае конфликта, возникающего в результате одновременной передачи несколькими вычислительными устройствами, арбитражная фаза предоставляет преимущество вычислительному устройству, которое передает сообщение с самым высоким приоритетом. Сообщение с менее высоким приоритетом задерживается по отношению к запросу на его передачу таким образом, чтобы его передача произошла после передачи сообщения с более высоким приоритетом.
Каждое сообщение содержит поле полезных данных, которое служит для передачи информации. Это поле составляет от нуля до восьми байт.
На фиг.1 показан пример такой ассоциативной таблицы, все сообщения в которой предназначены для передачи с одинаковым периодом в 25 мс. Каждая строка таблицы 23 выделена для сообщения с порядковым номером, который, согласно распространенному в автоматике применению, начинается с нуля.
Первый столбец таблицы 23 содержит идентификаторы, закодированные, например, шестнадцатеричным кодом. Идентификатор значения 0хА в первой строке указывает, например, на сообщение меньшего приоритета, чем сообщение, которому выделена вторая строка и которое имеет идентификатор 0х9.
Второй столбец таблицы 23 содержит длину поля полезных данных каждого сообщения, связанного со своим идентификатором. В описанном примере выполнения длина выражена в байтах при помощи переменной V10. Следует напомнить, что один байт соответствует восьми битам. Например, как видно из таблицы 23, переменные V10, связанные с идентификаторами 0х4 и 0х0, равны 8. Эти идентификаторы обозначают сообщения, содержащие поля полезных данных на восемь байт. Переменная V10, связанная с идентификатором 0х3, равна 2, и переменная V10, соответствующая идентификатору 0х2, равна 1. Эти идентификаторы обозначают соответственно сообщение, содержащее поле полезных данных на два байта, и сообщение, содержащее поле полезных данных на один байт.
Каждая ячейка третьего столбца таблицы 23 содержит значение переменной V9, которая связана с идентификатором первого столбца в этой же строке для обозначения периода, за который должно быть передано идентифицированное сообщение. В данном случае представленные десять сообщений должны быть переданы с периодом в 25 мс.
На фиг.2 показан пример ассоциативной таблицы, в которой сообщения предназначены для передачи с разными периодами. Как и в таблице 23, каждая строка таблицы 24 выделена для сообщения, содержащего свой идентификатор в первом столбце, свою длину во втором столбце и свой период в третьем столбце.
Следует заметить, что сообщения с идентификаторами 0хА, 0х9 и 0х8 имеют период в 10 мс и что сообщения с идентификаторами 0х4 и 0х6 имеют период в 25 мс, указанные переменной V10.
Фиг.3 иллюстрирует, каким образом вычислительное устройство управляет своими отсечками или временными окнами в целом в рамках изобретения. Горизонтальная ось соответствует времени t. Каждая вертикальная пунктирная линия показывает начало отсечки. Интервал между двумя вертикальными линиями показывает одновременно временную длину и периодичность обновления отсечек. Понятно, что, если осечки в основном заняты передачами сообщений, риск конфликта с сообщениями другого вычислительного устройства возрастает. Вычислительное устройство пытается передать сообщения, которые он должен передать в рассматриваемый момент, в начале отсечки таким образом, чтобы успеть передать сообщения до конца отсечки в случае арбитража по причине одновременной передачи сообщений другими вычислительными устройствами.
0
0
0
Начиная с момента t, определяемого первой вертикальной линией, вычислительное устройство передает сообщение 1. В случае, показанном на фиг.3, период передачи сообщения 1 равен двойной периодичности отсечек. Сообщение 1 опять передают, начиная с третьей вертикальной линии, затем начиная с пятой вертикальной линии и так далее. Вычислительное устройство передает сообщение 2 со смещением D1 относительно t. Смещение D1, выраженное в числе отсечек, в данном случае составляет одну отсечку. Сообщение 2 передают, начиная со второй вертикальной линии. В случае, показанном на фиг.3, период передачи сообщения 2 равен двойной периодичности отсечек. Сообщение 2 опять передают, начиная с четвертой вертикальной линии, и так далее. Вычислительное устройство передает сообщение 3 со смещением D2 относительно t. Смещение D2, выраженное в числе отсечек, в данном случае составляет две отсечки. Сообщение 3 передают, начиная с третьей вертикальной линии после сообщения 1, которое является более приоритетным. В случае, показанном на фиг.3, период передачи сообщения 3 равен двойной периодичности отсечек. Сообщение 3 опять передают, начиная с пятой вертикальной линии, и так далее.
Если бы все три сообщения были переданы в одной отсечке, их время передачи способствовало бы возникновению риска конфликта с передачами других вычислительных устройств. Кроме того, в случае конфликта арбитражная фаза могла бы затронуть все три сообщения. Из фиг.3 видно, что период передачи сообщений можно соблюдать, передавая их в разные отсечки. Смысл этого состоит в том, что незначительная занятость каждой отсечки снижает риск конфликта и что в случае конфликта затронутыми оказываются не все сообщения.
Периодичность отсечек должна быть целым делителем каждого периода сообщения, чтобы соблюдать период каждого сообщения по числу отсечек. Например, периодичность отсечек в 5 мс является предпочтительной, когда сообщения имеют периоды 10 мс и 25 мс.
Мы рассмотрели только три сообщения на фиг.3, чтобы упростить описание. Количество сообщений, передаваемых вычислительным устройством, как правило, является намного большим. Очень быстро становится сложно определить, каким образом следует распределять передачи сообщений в отсечках, в частности, чтобы избежать заторов.
Далее следует описание этапов способа, позволяющих оптимизировать смещения для сообщений, периодически передаваемых вычислительным устройством.
В компьютерной программе предусмотрена таблица целых чисел Т3(), называемая, например, OffsetMsg(), которая должна содержать смещение, вычисленное для каждого представленного в ней сообщения.
В фазе инициализации точку активации 10 этапа Е0 активируют, например, посредством запуска способа. Входная точка 10 представлена в виде пакета из двух блоков. Верхний блок образует посылочную или обуславливающую часть для выполнения действий, которые содержатся в нижнем блоке. В данном случае обуславливающая часть является пустой, и описана будет рабочая часть.
Таблицу целых чисел Т1(), например, называемую в компьютерной программе tabSommeNbBitMsgSurReseau(), в которой каждая ячейка связана с одной отсечкой и должна содержать число бит, занятых в отсечке сообщениями, инициализируют на ноль. Точно также таблицу целых чисел Т2(), например, называемую в компьютерной программе tabSommeId(), в которой каждая ячейка соответствует одной отсечке и должна содержать сумму идентификаторов сообщений, присутствующих в отсечке, инициализируют на ноль.
Параметры целой переменной V1, называемой, например, ValeurDuTick в компьютерной программе, устанавливают с значением периодичности отсечек, которую определяют заранее в зависимости от периодов передачи сообщений. Периодичность отсечек может быть равна наибольшему общему делителю периодов сообщений, хотя это и не является обязательным условием. Периодичность отсечек может быть равна любому общему делителю периодов сообщений. Наибольший общий делитель является предпочтительным, так как он оставляет максимум тишины передачи после сообщений, сгруппированных таким образом, чтобы находиться в начале отсечек. Преимуществом наименьшего делителя является возможность лучшего рассредоточения сообщений, чтобы предохранить их от конфликтов. Например, для примера на фиг.2 наиболее подходящим для переменной V1 является значение 5 мс.
Целую переменную V2, например, называемую в компьютерной программе CptBoucle, для подсчета итераций обработки при помощи способа и целую переменную V5, например, называемую в компьютерной программе Msg, для подсчета числа сообщений, обрабатываемых при помощи способа, инициализируют на ноль.
При активации этап Е0 начинается с компоновки таблицы 23, 24 по порядку возрастания идентификаторов. Таким образом, как видно из фиг.5, где показана компоновка таблицы 24, идентификатор с наименьшим значением 0х4 находится в первой строке, и идентификатор с наибольшим значением 0хА находится в последней строке таблицы. Сканирование таблицы, показанной на фиг.5, начиная с нулевой строки, обрабатывает сообщения в порядке понижения приоритета.
Затем на этапе Е0 опять происходит компоновка таблицы 23, 24 по порядку возрастания периодов. Как видно из фиг.6, где показана перекомпоновка таблицы 24, периоды с наименьшим значением V9=10 находятся в первых строках, и периоды с наибольшим значением V9=25 находятся в последних строках таблицы 24. Сканирование таблицы, показанной на фиг.6, начиная с нулевой строки, обрабатывает сообщения по порядку возрастания периода, а для одинаковых значений периода - по порядку понижения приоритета.
Начиная с этапа Е0, переход 11 активирует этап Е1, который описан ниже со ссылками на фиг.7. На всех фигурах каждый переход представлен в виде стопы из двух блоков. Верхний блок образует посылочную или обуславливающую часть для выполнения действий, которые содержатся в нижнем блоке. Обуславливающая часть перехода 11 является пустой, поскольку переход 11 просто является продолжением перекомпоновок на этапе Е0 таблицы, в которой собраны сообщения. Далее следует описание рабочей части.
Переменную V3, например, называемую в компьютерной программе Pos, для указания порядкового значения отсечки, проверяемой с целью размещения сообщения, и целую переменную V4, например, называемую в компьютерной программе PosPrec, для запоминания выбранного ранее порядкового значения осечки, устанавливают на ноль.
Переменная V5 была инициализирована на ноль в соответствии с тем, что на этой предварительной стадии обработки еще не было обработано ни одного сообщения. Значение первой строки таблицы T3(V5) с указанием V5=0 устанавливают на значение произведения переменных V3 и V1, нулевое значение которого означает, что первая проверяемая отсечка является отсечкой с порядковым номером ноль, который соответствует нулевому смещению.
Как показано на фиг.7, на этапе Е1 выбирают отсечку для размещения текущего сообщения. Когда этап Е1 активируют впервые после этапа Е0 через переход 11, выбранная отсечка дает значение первой строки таблицы T3(V5). Следовательно, первое рассматриваемое сообщение является сообщением, внесенным в первую строку таблицы 23.
Переход 12 обусловлен следующей пропозициональной формулой:
((Р1)∨(Р2∧Р4))∧Р5
Как известно, в пропозициональных формулах знак ∨ обозначает логическую конъюнкцию, и знак ∧ обозначает логическую дизъюнкцию.
Суждение Р1 определяют таким образом, чтобы оно имело такие же значения истинности, что и:
T1(V3)+T1(V3+V9)>T1(V4)+T1(V4+V9)
В выражении суждения Р1 левый член является общим количеством бит сообщений, которые занимают проверяемую отсечку и отсечку, расстояние которой от проверяемой отсечки равно периоду передачи текущего сообщения. Правый член представляет собой общее количество бит сообщений, которые занимают ранее выбранную отсечку и отсечку, расстояние которой от ранее выбранной отсечки равно периоду передачи текущего сообщения. Суждение Р1 верно, если левый член строго превышает правый член. Иначе говоря, суждение Р1 верно, если размещение сообщения в проверяемой отсечке приводит к числу бит, большему места сообщения в ранее выбранной отсечке.
Суждение Р2 определяют таким образом, чтобы оно имело такие же значения истинности, что и:
T1(V3)+T1(V3+V9)=T1(V4)+T1(V4+V9)
В выражении суждения Р2 левый член является общим количеством бит сообщений, которые занимают проверяемую отсечку и отсечку, расстояние которой от проверяемой отсечки равно периоду передачи текущего сообщения, как и в суждении Р1. Правый член представляет собой общее количество бит сообщений, которые занимают ранее выбранную отсечку и отсечку, расстояние которой от ранее выбранной отсечки равно периоду передачи текущего сообщения, идентично суждению Р1. Суждение Р2 верно, если левый член равен правому члену. Иначе говоря, суждение Р2 верно, если размещение сообщения в проверяемой отсечке приводит к числу бит с таким же значением, что число, полученное при размещении текущего сообщения в ранее выбранной отсечке.
Суждение Р4 определяют таким образом, чтобы оно имело такие же значения истинности, что и:
T2(V3)+T2(V3+V9)•T2(V4)+T2(V4+V9)
В выражении суждения Р4 левый член является суммой идентификаторов сообщений, которые занимают проверяемую отсечку и отсечку, расстояние которой от проверяемой отсечки равно периоду передачи текущего сообщения. Правый член представляет собой сумму идентификаторов сообщений, которые занимают ранее выбранную отсечку и отсечку, расстояние которой от ранее выбранной отсечки равно периоду передачи текущего сообщения. Суждение Р4 верно, если левый член меньше или равен правому члену. Иначе говоря, суждение Р4 верно, если размещение текущего сообщения в проверяемой отсечке приводит к сумме идентификаторов сообщений, меньшей или равной сумме идентификаторов сообщений, которую получают при размещении текущего сообщения в ранее выбранной отсечке. То есть, суждение Р4 является верным, если размещение текущего сообщения в проверяемой отсечке понижает приоритет сообщений поверенной отсечки по отношению к ранее выбранной отсечке.
Суждение Р5 определяют таким образом, чтобы оно имело такие же значения истинности, что и:
V2•(V9/V1)-1
Суждение Р5 является верным, если при добавлении 1 к счетчику цикла получают значение, меньшее или равное отношению периода текущего сообщения к периодичности отсечек. Иначе говоря, суждение Р5 остается верным, пока содержимое счетчика цикла меньше или равно количеству отсечек, включенному в интервал времени, который разделяет последовательные передачи текущего сообщения, минус единица. То есть, суждение Р5 остается верным, пока итерации обработки при помощи способа не достигли числа, которое соответствует количеству отсечек, содержащихся в периоде передачи текущего сообщения.
Таким образом, обуславливающая часть перехода 12 является верной, пока число итераций обработки остается меньшим периода, связанного с текущим сообщением, выраженного в числе отсечек, и если размещение текущего сообщения в проверяемой отсечке приводит к заполнению, превышающему заполнение, получаемое при помещении текущего сообщения в ранее выбранную отсечку, или при одинаковом заполнении, если помещение текущего сообщения в проверяемую отсечку приводит к более высокому общему приоритету, чем при помещении текущего сообщения в ранее выбранную отсечку.
В рабочей части перехода 12 инкрементацию счетчика цикла осуществляют таким образом, чтобы указать следующую итерацию способа. Если число отсечек в периоде текущего сообщения минус порядковое значение V3 только что проверяемой отсечки равно одной единице, порядковое значение проверяемой отсечки возвращают на ноль. В противном случае порядковое значение V3 проверяемой отсечки инкрементируют таким образом, чтобы проверить отсечку, которая следует за только что проверяемой отсечкой.
Переход 12 закольцовывает этап Е1 таким образом, чтобы проверять отсечки одна за другой, пока этап Е1 остается замкнутым.
Переход 13 обусловлен следующей пропозициональной формулой:
¬
(Р2 ∧ Р4 ∧Р5)∨(Р3 ∧ Р5)
¬
Как известно, в пропозициональных формулах знак  обозначает логическое отрицание следующего за ним суждения. Определение суждений Р2, Р4 и Р5 было представлено выше.
Суждение Р3 определяют таким образом, чтобы оно имело такие же значения истинности, что и:
T1(V3)+T1(V3+V9)<T1(V4)+T1(V4+V9)
В выражении суждения Р3 левый член является общим количеством бит сообщений, которые занимают проверяемую отсечку и отсечку, расстояние которой от проверяемой отсечки равно периоду передачи текущего сообщения. Правый член представляет собой общее количество бит сообщений, которые занимают ранее выбранную отсечку и отсечку, расстояние которой от ранее выбранной отсечки равно периоду передачи текущего сообщения. Суждение Р2 верно, если левый член строго меньше правого члена. Иначе говоря, суждение Р3 верно, если размещение сообщения в проверяемой отсечке приводит к числу бит с меньшим числом бит, чем при размещении текущего сообщения в ранее выбранной отсечке.
Обуславливающая часть перехода 13 является верной, пока число итераций обработки остается меньшим периода, связанного с текущим сообщением, выраженного в числе отсечек, и если размещение текущего сообщения в проверяемой отсечке приводит к заполнению, меньшему заполнения, получаемого при размещении текущего сообщения в ранее выбранную отсечку или, при одинаковом заполнении, если размещение текущего сообщения в проверяемую отсечку не приводит к более высокому общему приоритету, чем при размещении текущего сообщения в ранее выбранную отсечку.
В рабочей части перехода 13 целую переменную V4 для запоминания порядкового значения ранее выбранной отсечки устанавливают по порядковому значению V3 проверяемой отсечки. Значение смещения T3(V5), связанное с текущим сообщением, устанавливают на значение произведения порядкового значения проверяемой отсечки на периодичность отсечки, просто чтобы выразить смещение в мс, а не в числе отсечек. В альтернативном варианте смещение можно также выразить в числе отсечек. Счетчик контура инкрементируют таким образом, чтобы указать следующую итерацию способа. Если число отсечек в периоде текущего сообщения минус порядковое значение V3 только что проверяемой отсечки равно одной единице, порядковое значение проверяемой отсечки возвращают на ноль. В противном случае порядковое значение V3 проверяемой отсечки инкрементируют таким образом, чтобы указать на следующею отсечку, которая должна следовать за только что проверяемой отсечкой.
Начиная с этапа Е1, переход 13 активирует этап Е2, описанный ниже со ссылками на фиг.8.
Переход 14 обусловлен следующей пропозициональной формулой:
¬
Р5
Обуславливающая часть перехода 14 является верной, как только содержимое счетчика цикла становится больше количества отсечек, входящих в интервал времени, разделяющий две последовательные передачи текущего сообщения, минус единица. Иначе говоря, обуславливающая часть перехода 14 является верной, как только итерации обработки при помощи способа достигают числа, которое соответствует количеству отсечек, входящих в период передачи текущего сообщения.
Рабочая часть перехода 14 осуществляет обновление таблиц Т1() и Т2(). В частности, число бит текущего сообщения добавляют к значению Т1(V4), соответствующему в таблице порядковому значению выбранной отсечки, и значение идентификатора текущего сообщения добавляют к значению T2(V4), соответствующему в таблице порядковому значению выбранной отсечки. Переменную V3, указывающую порядковое значение проверяемой отсечки, возвращают на ноль. Переменную V2 для подсчета итераций обработки в рамках способа возвращают на ноль, чтобы в дальнейшем подсчитывать итерации в рамках другого цикла на этапах Е1 и Е2.
Начиная с этапа Е1, переход 14 активирует этап Е3, описанный ниже со ссылками на фиг.8.
Сначала опишем этап Е2 со ссылками на фиг.8.
Переход 15 обусловлен следующей пропозициональной формулой:
Р5
Обуславливающая часть перехода 16 является верной, пока итерации обработки при помощи способа не достигли числа, которое соответствует количеству отсечек, содержащихся в периоде передачи текущего сообщения.
Активная часть перехода 15 инкрементирует переменную V3, которая показывает порядковое значение проверяемой отсечки.
Переход 15 вновь активирует этап Е1, начиная с этапа Е2. При этом этап Е1 вновь активируют с унитарным порядковым значением проверяемой отсечки, если переменная V3 была возвращена на ноль при входе на этап Е2, и, если нет, - с порядковым значением, равным старому порядковому значению проверяемой отсечки, увеличенному на единицу.
Переход 16 идентичен переходу 14 для активации этапа Е3, начиная с этапа Е2.
Этап Е3 состоит в поиске места, где имеется максимум пустых отсечек.
Предусмотрена целая переменная V6, например, называемая в компьютерной программе IndexDebutTickVide, для запоминания положения первой отсечки, после которой число последовательных пустых отсечек является максимальным.
Предусмотрена целая переменная V7, например, называемая в компьютерной программе IndexFinTickVide, для запоминания положения последней отсечки, которой предшествовало число последовательных пустых отсечек, являющееся максимальным.
Предусмотрена целая переменная V8, например, называемая в компьютерной программе NbTickVide, для запоминания числа последовательных пустых отсечек, заключенного между значениями V6 и V7.
Далее в качестве исключительно иллюстративного и не ограничительного примера следует пояснение возможного механизма для нахождения последовательности пустых отсечек максимальной длины. При активации на этапе Е3 переменные V6, V7 и V8 инициализируют на ноль. Специалист может легко разработать другие механизмы, не выходя за рамки настоящего изобретения.
В первом тесте проверяют, является ли пустой отсечка, индексом которой является значение переменной V6.
При отрицательном результате переменные V6 и V7 инкрементируют, и первый тест повторяют, пока переменная V6 не достигнет значения периода передачи, который связан с текущим сообщением.
При положительном результате значение переменной V8 устанавливают на унитарное значение, и переменную V7 инкрементируют, чтобы осуществить второй тест.
Во втором тесте проверяют, является ли пустой отсечка, индексом которой является значение переменной V7.
При положительном результате значения переменной V8 и переменной V7 инкрементируют, чтобы повторно осуществить второй тест.
При отрицательном результате значения переменных V6 и V8 сохраняют и переменную V7 инкрементируют, чтобы осуществить третий тест.
В третьем тесте проверяют, является ли пустой отсечка, индексом которой является значение переменной V7.
При отрицательном результате значение переменной V7 инкрементируют и третий тест повторяют.
При положительном результате значение переменной V'8 того же типа, что и переменная V8, устанавливают на унитарное значение и переменную V7 инкрементируют, чтобы осуществить четвертый тест.
В четвертом тесте проверяют, является ли пустой отсечка, индексом которой является значение переменной V7.
При положительном результате значения переменной V'8 и переменной V7 инкрементируют, чтобы повторно осуществить четвертый тест.
При отрицательном результате осуществляют сравнение переменных V8 и V'8. Если V8 превышает V'8, значения V6 и V8 сохраняют. В противном случае значение V8 устанавливают на значение V'8 и значение V6 устанавливают на V7-V'8. Переменную V7 инкрементируют, чтобы повторно осуществить третий тест.
Описанные выше тесты перестают осуществлять, как только V7 достигает V9 - 1. При этом V7 устанавливают на V7=V6+V8, чтобы получить последовательность пустых отсечек максимальной длины.
Переход 17 имеет пустую обуславливающую часть и рабочую часть, в которой переменную располагают в середине полученной последовательности пустых отсечек:
V3=V7-V8/2
V8=V8/2
Начиная с этапа Е3, переход 17 активирует этап Е4, описание которого следует далее со ссылками на фиг.9.
Этап Е4 предусмотрен, чтобы проверить, существуют ли еще предназначенные для обработки сообщения, при помощи булевой переменной В1, например, называемой в компьютерной программе MessageAtraiter. Состояние, например 1, указывает, что остаются предназначенные для обработки сообщения. Другое состояние, например 0, указывает, что предназначенных для обработки сообщений больше не остается, и это относится, в частности, к случаю, когда достигнут конец таблицы, показанной на фиг.1 или 2.
Обуславливающую часть перехода 18 подтверждают, если булева переменная В1 указывает, что остается по меньшей мере одно сообщение, предназначенное для обработки. Рабочая часть перехода 18 указывает на следующее сообщение, инкрементируя переменную V5. Начиная с этапа Е4, переход 18 активирует этап Е5.
На этапе Е5 рассматриваемое текущее сообщение является сообщением, указанным переменной V5, период которого указан переменной V9. Целью этапа Е5 является проверка присутствия сообщения в отсечке, отстоящей на один период по отношению к отсечке, индексируемой переменной V3.
Обуславливающая часть перехода 20 подтверждена, если сумма бит, содержащихся в отсечке, индексируемой переменной V3, и в отсечке, индексируемой суммой переменных V3 и V9, является нулевой или если переменная V3 равна переменной V6, иначе говоря, когда проверяемая отсечка является отсечкой начала последовательности пустых отсечек максимальной длины. Рабочая часть перехода 20 является пустой.
Начиная с этапа Е5, переход 20 реактивирует этап Е1.
Обуславливающая часть перехода 21 подтверждена, если сумма бит, содержащихся в отсечке, индексируемой переменной V3, и в отсечке, индексируемой суммой переменных V3 и V9, не является нулевой или если переменная V3 не равна переменной V6, иначе говоря, когда проверяемая отсечка не является отсечкой начала последовательности пустых отсечек максимальной длины. Рабочая часть перехода 20 устанавливает переменную V7, которая указывает на конец списка пустых отсечек, на значение переменной V3, которая указывает на проверяемую отсечку.
Начиная с этапа Е5, переход 21 активирует этап Е6, на котором существует сообщение в отсечке, отстоящей на один период по отношению к проверяемой отсечке.
Переход 22 имеет пустую обуславливающую часть и рабочую часть, в которой проверяемую отсечку смещают на половину длины пустого списка влево по отношению к ее предыдущему положению посредством действия V3=V7-V8/2. В рабочей части длину списка пустых отсечек тоже делят на 2.
Начиная с этапа Е6, переход 22 вновь активирует этап Е5.
Переход 19 подтверждают, когда больше не остается предназначенных для обработки сообщений. Начиная с четвертого этапа Е4, переход 19 активирует седьмой этап Е7, который отмечает конец процесса.
На фиг.10 показано состояние таблицы 23, когда способ переходит на этап Е7. Правый столбец содержит нулевое смещение для сообщений, идентифицированных 0х0 и 0хА, длина каждого из которых составляет восемь байт, то есть шестьдесят четыре бита. Ассоциативная таблица 25, показанная на фиг.12, связывает таблицы Т1() и Т2() с каждой отсечкой в 5 мс, в которой размещают сообщение, представленное в таблице 23.
Поскольку для каждого сообщения период составляет 25 мс, то в таблице Т1() отметим значение в шестнадцать байт или сто двадцать восемь бит, которые занимают отсечки порядкового значения 0, отстоящие на 0 мс, порядкового значения 5, отстоящие на 25 мс, и порядкового значения 10, отстоящие на 50 мс.
Правый столбец таблицы 23 содержит смещение в две отсечки, то есть 10 мс для сообщений, идентифицированных 0х2 и 0х6.
На фиг.11 показано состояние таблицы 24, когда способ переходит на этап Е7. Правый столбец содержит нулевое смещение для сообщений с идентификацией 0х0, 0хА и 0х4, длина которых соответственно составляет шесть байт, восемь байт и два байта. Ассоциативная таблица 26, показанная на фиг.13, связывает таблицы Т1() и Т2() с каждой отсечкой в 5 мс, в которую размещают сообщение, представленное в таблице 24.
Поскольку период составляет 10 мс для сообщений 0х8, 0хА и 25 мс для сообщения 0х4, то отметим в таблице Т1() на фиг.13 значение в шестнадцать байт или сто двадцать восемь бит, которые занимают отсечки порядкового значения 0, отстоящие на 0 мс, и порядкового значения 10, отстоящие на 50 мс.
Правый столбец таблицы 24 содержит смещение в одну отсечку, то есть 5 мс для сообщений, идентифицированных 0х9 и 0х6, соответственно длиной в восемь байт и в один байт. Поскольку период составляет 10 мс для сообщения 0х9 и 25 мс для сообщения 0х6, то отметим в таблице Т1() на фиг.13 заполнение на девять байт отсечки порядкового номера 1, отстоящей на 5 мс.
Сообщение 0х9 опять находим в отсечке порядкового значения 3, отстоящей на 15 мс, в отсечке порядкового значения 5, отстоящей на 25 мс, в отсечке порядкового значения 7, отстоящей на 35 мс, и в отсечке порядкового значения 9, отстоящей на 45 мс, в которых его совокупная длина приводит к заполнению соответственно в восемь, десять, восемь и восемь байт.
Сообщение 0х6 находим в отсечке порядкового значения 3, отстоящей на 30 мс, в которой его совокупная длина приводит к заполнению в четырнадцать байт.
Заполнение никогда не превышает шестнадцать байт.