exponenta event banner

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

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

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

Использовать for loop для объявления массива компонентов-членов:

  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 или 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 loop должен перечислять все итераторы, например:

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

Связанные темы