Массивы компонента обеспечивают интуитивный способ смоделировать составные компоненты с произвольным числом гомогенных членов, такие как сегментированные конвейеры, блоки батарей или линии электропередачи.
Используйте for цикл, чтобы объявить массив компонентов члена:
for i=1:array_size
components (ExternalAccess=none)
member_comp(i) = compX;
end
end
Размер массивов может быть объявлен как корректируемый параметр составного компонента, так, чтобы пользователи блока могли изменить это значение.
parameters
array_size = 10; % Number of member components
end
Объявите параметр, задающий размер массивов как безразмерное целое число потому что for итератор цикла должен быть безразмерным целым числом.
Подобно регулярным составным компонентам, если вы хотите, чтобы определенные параметры базового компонента члена были корректируемыми через составной интерфейс компонента, включайте их в объявление элемента. Этот пример устанавливает отношение между параметром parX из компонента члена compX и параметр верхнего уровня top_level_parX из составного компонента:
parameters
array_size = 10; % Number of member components
top_level_parX = { 1, 'm' }; % Modifiable parameter of the member components
end
for i=1:array_size
components (ExternalAccess=none)
member_comp(i) = compX(parX = top_level_parX);
end
end
Используйте for циклы, чтобы задать связи между компонентами члена. Область значений итератора для них for циклы зависят от размера массивов и типа связи. Например, когда вы соединяете N члены параллельно, область значений итератора равна размеру массивов:
for i=1:N
connections
connect(compX(i).A, A);
connect(compX(i).B, B);
end
end
Однако, если вы соединяете N члены последовательно, область значений итератора от 1 к (N-1), потому что вы соединяете порт B каждого члена кроме последнего к порту A следующего члена:
for i=1:(N-1)
connections
connect(compX(i).B, compX(i+1).A);
end
end
В этом случае не забывайте соединять концы цепи к внешним портам составного компонента:
connections
connect(compX(1).A, A);
connect(compX(N).B, B);
end
Можно также использовать compX(end) указать на последний член массива компонента. Например, этот синтаксис эквивалентен предыдущему для соединения концов цепи к внешним портам составного компонента:
connections
connect(compX(1).A, A);
connect(compX(end).B, B);
end
Можно использовать, вложил for циклы, чтобы создать многомерные массивы компонентов.
Следующие правила и ограничения применяются к массивам на языке Simscape™:
Массивы применяются только к component класс члена.
Массивы компонента должны быть гомогенными, то есть, их члены должны все принадлежать тому же классу. Однако у членов могут быть различные значения параметров.
Для примера массива компонента с идентичными членами смотрите, что Сегментированный Конвейер Использует Массив Компонента.
Для примера того, как можно задать различные значения параметров для определенных членов массива компонента, смотрите Тематическое исследование — Блок батарей с Отказом Используя Массивы.
Размер массивов может быть параметром или параметрическим выражением. Параметры, которые управляют размером массивов, могут иметь свой ExternalAccess припишите набор modify, который позволяет пользователям блока изменить размер массива.
У членов массивов должен быть ExternalAccess припишите набор none. Это означает, что регистрация данных, Переменное Средство просмотра и другая функциональность, которая требует ExternalAccess быть modify или observe не доступно для членов массивов.
Пустые массивы не поддержаны.
Можно использовать for циклы, чтобы объявить массивы компонента и соединить члены массива друг другу. for циклы имеют тот же синтаксис как for в MATLAB®. Следующие правила и ограничения применяются к for циклы на языке Simscape:
for циклы могут содержать только components или connections.
for итератор цикла должен быть безразмерным целым числом.
for циклы могут быть вложены. Используйте вложил for циклы, чтобы создать многомерные массивы компонентов.
Во вложенном for циклы, итератор во вложенном цикле не может относиться к итератору в цикле выше его. Например, этот синтаксис недопустим:
for i=1:N
for j=1:i
...
end
end
Объявление компонента с помощью for цикл должен содержать for итератор цикла на левой стороне как пустой идентификатор, например, pipe(i). Вы не можете использовать выражения или числа вместо итератора. Компоненты объявляются во вложенном for цикл должен перечислить все итераторы, например:
for i=1:N
for j=1:M
components (ExternalAccess=none)
resistor(i,j) = foundation.electrical.elements.resistor(R = R);
end
end
end
Вы не можете включать условные разделы (что вы используете, чтобы задать варианты компонента) в for циклы. Однако можно включать for циклы в условных разделах.