Массивы компонентов

Сведения об массивах компонентов

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

Использование 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 класс member.

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

  • Размер массива может быть параметром или параметрическим выражением. Параметры, которые управляют размером массива, могут иметь свои ExternalAccess для атрибута задано значение modify, что позволяет пользователям блоков изменять размер массива.

  • Представители массива должны иметь ExternalAccess для атрибута задано значение none или observe.

  • Пустые массивы не поддерживаются.

Можно использовать for циклы для объявления массивов компонентов и для соединения представителей массива друг с другом. for петли имеют тот же синтаксис, что и циклы for в MATLAB®. Следующие правила и ограничения применяются к for циклы на языке Simscape:

  • for циклы могут содержать только components или connections.

  • The 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 циклы внутри условных сечений.

Похожие темы