Определение связей компонента

О разделе структуры

Раздел структуры файла Simscape™ выполняется однажды во время компиляции. Этот раздел содержит информацию о том, как порты составляющих компонентов соединяются друг с другом, а также с внешними входными параметрами, выходными параметрами и узлами компонента верхнего уровня.

Раздел структуры начинается с connections ключевое слово и отключено end ключевое слово. Этот connections блок содержит набор connect построения, которые описывают обоих связи сохранения (между nodes) и связи физического сигнала (между inputs и outputs).

В следующем примере файл собственного компонента включает Датчик Напряжения библиотеки Foundation, и Электрическая Ссылка блокирует и задает следующие связи:

  • Положительный порт датчика напряжения к внешнему электрическому порту сохранения + составного компонента

  • Отрицательный порт датчика напряжения, чтобы основываться

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

component VoltSG
  nodes
     p = foundation.electrical.electrical; % +
  end
  outputs
     Out = { 0.0, 'V' }; % V:right
  end
  components(ExternalAccess=observe)
     VoltSensor = foundation.electrical.sensors.voltage;
     Grnd = foundation.electrical.elements.reference;
  end
  connections
     connect(p, VoltSensor.p);
     connect(Grnd.V, VoltSensor.n);
     connect(VoltSensor.V, Out);
  end
end

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

Сохранение связей

Для сохранения связей, connect построение может иметь два или больше аргумента. Например, связи в следующем примере

  connections
     connect(R1.p, R2.n);
     connect(R1.p, R3.p);
  end

может быть заменен

  connections
     connect(R1.p, R2.n, R3.p);
  end

Порядок аргументов не имеет значения. Единственное требование - то, что соединяемые узлы все имеют тот же тип (то есть, все сопоставлены с той же областью).

В следующем примере составной компонент состоит из трех идентичных резисторов, соединенных параллельно:

component ParResistors
  nodes
     p = foundation.electrical.electrical;
     n = foundation.electrical.electrical;
  end
  parameters
    p1 = {3 , 'Ohm'};
  end
  components(ExternalAccess=observe)
    r1 = foundation.electrical.elements.resistor(R=p1);
    r2 = foundation.electrical.elements.resistor(R=p1);
    r3 = foundation.electrical.elements.resistor(R=p1);
  end
  connections
    connect(r1.p, r2.p, r3.p, p);
    connect(r1.n, r2.n, r3.n, n);
  end
end

Связи с неявным ссылочным узлом

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

connections
    connect(A, *);
end

Неявный ссылочный узел действует как виртуальный компонент основания. Узел, соединенный с неявной ссылкой, имеет все свои переменные Across, равные 0.

* символ не проблемно-ориентирован, и тот же раздел структуры может содержать связи с неявной ссылкой в различных областях:

component abc
    nodes
        M = foundation.hydraulic.hydraulic;
        N = foundation.electrical.electrical;
    end    
    connections
        connect(M,*);
        connect(N,*);
    end
end

Однако несколько портов, соединенных с неявной ссылкой в том же connect оператор должен все принадлежать той же области:

connections
    connect(a, b, *);
end

Порядок портов не имеет значения. Это поведение сопоставимо с общими правилами связи для нескольких портов сохранения.

Связи физического сигнала

Связи физического сигнала направлены, поэтому connect построение имеет следующий формат:

  connect(s, d);

где s исходный порт сигнала и d целевой порт.

Может быть больше чем один целевой порт, соединенный с тем же исходным портом:

  connect(s, d1, d2);

Исходные и целевые порты принадлежат inputs или outputs классы члена. В следующей таблице перечислены допустимый источник и целевые комбинации.

ИсточникМесто назначения
Внешний входной порт составного компонентаInput port компонента члена
Выходной порт компонента членаInput port компонента члена
Выходной порт компонента членаВнешний выходной порт составного компонента

Например, рассмотрите следующую блок-схему.

Это представляет составной CompMeas компонента, который, в свою очередь, содержит составной Valve Subsystem компонента, а также несколько библиотечных блоков Основы. Файл Simscape составного компонента задал бы эквивалентные связи сигнала со следующими построениями.

СоздатьОбъяснение
connect(In, subt.I1);Порт In подключений к входному порту + из блока PS Subtract. Иллюстрирует соединение входного порта составного компонента к входному порту компонента члена.
connect(subt.O, gain.I);Соединяет выходной порт блока PS Subtract к входному порту блока PS Gain. Иллюстрирует соединение выходного порта компонента члена к входному порту другого компонента члена на том же уровне.
connect(fl_rate.Q, subt.I2, Out);Соединяет выходной порт Q из блока Hydraulic Flow Rate Sensor к входному порту - из блока PS Subtract и к выходному порту Out из составного компонента. Иллюстрирует соединение одного источника нескольким местам назначения, и также соединение выходного порта компонента члена к выходному порту включения составляет компонент.

Также заметьте, что выходной порт блока PS Gain соединяется с входным портом блока составного объекта Подсистемы Клапана (другой компонент члена на том же уровне). Подсистема клапана является автономным составным компонентом, и поэтому если вы соединяете выходной порт блока PS Gain к входному порту одного из компонентов члена в Подсистеме Клапана, которая нарушила бы причинную связь связей физического сигнала (целевой порт не может быть соединен с многочисленными источниками).

Нескалярные связи физического сигнала

Многомерные физические сигналы могут быть полезны для:

  • Агрегировав измерения в различных пространственных точках, таких как температуры вдоль обмотки или 2D сетки элементов

  • Используя 3-D положения тела или скорости

  • Используя матрицы вращения или кватернионы в 3-D

  • Используя тензоры

Язык Simscape поддерживает нескалярный (с векторным знаком или с матричным знаком) физические сигналы в inputs и outputs объявления. Все сигналы в таком векторе или матрице должны иметь те же модули. Например, следующее объявление

 inputs
   I = {zeros(3), 'm/s'}; % :left
 end

инициализирует вход компонента как 3х3 матрицу линейных скоростей.

Когда вы соединяете порты ввода и вывода, несущие нескалярные физические сигналы, можно использовать индексацию сигнала и конкатенацию в источнике, но не в месте назначения. Скалярное расширение не позволено.

Следующая таблица показывает примеры допустимого синтаксиса, принимая субкомпонент с портом A.o выходного сигнала соединяется с субкомпонентом B с портом B.i входного сигнала, и все размеры и модули совместимы.

СоздатьОбъяснение
connect(A.o(1,2), B.i);Исходная индексация, чтобы соединиться со скалярным местом назначения: возьмите запись (1,2) из выхода A.o и соедините его с входом B.i.
connect(A.o(1:2:5,2:3), B.i);Индекс строками и столбцами, чтобы задать субматрицу.
connect(A.o(1:2:end,:), B.i);Используйте обозначение двоеточия, чтобы задать границы массива (передайте любой столбец выхода A.o к входу B.i.
connect([A1.o, A2.o], B.i);Конкатенация выходных параметров A1.o и A2.o по столбцам и передачи результат к входу B.i.

Можно использовать значения параметров блоков для индексации в connect оператор, например:

подключение (a.o (значение (param_name, '1'), 3), b.i);

Когда вы соединяете два физических сигнала, их модули должны быть непосредственно конвертируемыми. Если один из сигналов объявляется как безразмерный (то есть, с модулями '1'), затем можно соединить сигнал с любыми основными единицами к нему. Однако модульное преобразование не поддерживается в этом случае. Например, если a.i 2x1 безразмерный входной порт, затем этот оператор допустим:

connect([out1_in_meters, out2_in_seconds], a.i);

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

connect([out1_in_km, out2_in_mm], a.i);

Связанные примеры

Больше о