Раздел структуры файла Simscape™ выполняется один раз во время компиляции. В этом разделе содержится информация о том, как порты составляющих компонентов соединены друг с другом, а также с внешними входами, выходами и узлами компонента верхнего уровня.
Раздел структуры начинается с connections ключевое слово и завершается end ключевое слово. Это connections блок содержит набор connect конструкции, которые описывают оба сохраняющих соединения (между nodesи физические сигнальные соединения (между inputs и outputs).
В следующем примере файл пользовательского компонента включает блоки «Датчик напряжения библиотеки фундамента» (Foundation Library Voltage Sensor) и «Электрический эталон» (Electrical Reference) и задает следующие соединения:
Положительный порт датчика напряжения к внешнему электрическому консервационному порту + композитного компонента
Отрицательный порт датчика напряжения на землю
Порт вывода физического сигнала датчика напряжения на внешний выход составного компонента, расположенный справа от значка результирующего блока

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 классы участников. В следующей таблице перечислены допустимые комбинации источника и назначения.
| Источник | Место назначения |
|---|---|
| Внешний входной порт составного компонента | Входной порт компонента-элемента |
| Выходной порт компонента-члена | Входной порт компонента-элемента |
| Выходной порт компонента-члена | Внешний выходной порт составного компонента |
Например, рассмотрим следующую блок-схему.

Он представляет составной компонент CompMeas, который, в свою очередь, содержит составной компонент Valve Subsystem, а также несколько блоков библиотеки Foundation. Файл Simscape составного компонента определяет эквивалентные сигнальные соединения со следующими конструкциями.
| Конструкция | Объяснение |
|---|---|
connect(In, subt.I1); | Подключение порта In к входному порту + блока вычитания PS. Иллюстрирует подключение входного порта составного компонента к входному порту компонента-элемента. |
connect(subt.O, gain.I); | Соединяет выходной порт блока вычитания PS с входным портом блока усиления PS. Иллюстрирует подключение выходного порта компонента элемента к входному порту другого компонента элемента на том же уровне. |
connect(fl_rate.Q, subt.I2, Out); | Подключение выходного порта Q блока датчика гидравлического расхода к входному порту - блока вычитания PS и выходного порта Out составного компонента. Иллюстрирует подключение одного источника к нескольким адресатам, а также подключение выходного порта компонента-элемента к выходному порту охватывающего составного компонента. |
Также обратите внимание, что выходной порт блока усиления PS соединен с входным портом составного блока подсистемы клапанов (другой компонент элемента на том же уровне). Клапанная подсистема является автономным составным компонентом, и поэтому при подключении выходного порта блока PS Gain к входному порту одного из компонентов внутри клапанной подсистемы, что нарушит причинно-следственную связь физических сигнальных соединений (порт назначения не может быть подключен к нескольким источникам).
Многомерные физические сигналы могут быть полезны для:
Агрегирование измерений в различных пространственных точках, таких как температуры вдоль катушки или 2-D сетка элементов
Использование 3-D положений или скоростей тела
Использование матриц вращения или кватернионов в 3-D
Использование тензоров
Язык Simscape поддерживает нескалярные (векторные или матричные) физические сигналы в inputs и outputs декларации. Все сигналы в таком векторе или матрице должны иметь одинаковые единицы измерения. Например, следующее объявление
inputs
I = {zeros(3), 'm/s'}; % :left
end
инициализирует вход компонента в виде матрицы линейных скоростей 3 на 3.
При подключении входных и выходных портов, несущих нескалярные физические сигналы, можно использовать индексацию и конкатенацию сигналов в источнике, но не в месте назначения. Скалярное расширение не допускается.
В следующей таблице приведены допустимые примеры синтаксиса, предполагающие, что субкомпонент A с портом выходного сигнала 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 оператор, например:
connect(a.o(value( 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);