Примеры порядка исполнения По потоку данных

<< Click to Display Table of Contents >>

Navigation:  Программирование в MasterSCADA 4D > Редактор FBD > Порядок исполнения FBD-блоков >

Примеры порядка исполнения По потоку данных

Пример 1

В данном примере проверяется очередность выполнения без приоритетных блоков. Два цикла без общих участков цепи, внутри которых ФБ расположены на одном уровне, порядок исполнения будет аналогичен выполнению по строкам:

Primer_po_potoku_dannih

Пример 2

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

Primer_po_potoku_dannih_1

Пример 3

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

Primer_po_potoku_dannih_2

Пример 4

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

Primer_po_potoku_dannih_3

Пример 5

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

Primer_po_potoku_dannih_4

Пример 6

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

Primer_po_potoku_dannih_5

Пример 7

В данном примере проверяется очередность выполнения при отсутствии приоритетных блоков, где все ФБ расположены на разной высоте. Таким образом, без наличия связей они бы выполнялись по порядку исполнения по строкам.Но наличие связей между ФБ, даже без наличия цикла, меняет очередность выполнения. А именно: сначала выбирается самый верхний блок, далее выполняются все ФБ, с которыми он имеет связь. Далее выбирается следующий за ним по высоте блок из другой цепочки связей:

Primer_po_potoku_dannih_7

Пример 8

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

Primer_po_potoku_dannih_8

Пример 9

Данный пример аналогичен предыдущему, за исключением того, что в нем присутствует приоритетный блок, из-за чего в таком сценарии блок без цепочки связей не будет исполняться первым. Причина, по которой сам приоритетный блок не выполняется первым, аналогичен предыдущему примеру - ему нужны входные связи для начала исполнения. Поэтому первым блоком будет самый последний блок из рекурсивной цепочки связанных с приоритетным ФБ блоков. Так кактаких блоков 2, то первым из них будет выбран тот, что расположен выше:

Primer_po_potoku_dannih_9