Импорт классов модели
import package_or_class;
import package.*;
import операторы разрешают доступ к именам класса модели или функции, определенным в других областях (пакетах) без полной ссылки. Необходимо разместить import в начале файла Simscape™.
Существует два типа import синтаксисы операторов. Один - это квалифицированный импорт, который импортирует определенный пакет, класс или функцию:
import package_or_class;
Другой - неквалифицированный импорт, который импортирует все подпакеты, классы и функции в указанном пакете:
import package.*;
Имя пакета или класса должно быть полным путем, начиная с корня библиотеки (имя каталога пакета верхнего уровня) и содержащим имена подпакетов.
К операторам импорта применяются следующие ограничения:
Импортированное имя должно быть полным путем, начиная с корня библиотеки, даже если import используется в классе компонентов, определенном в том же пакете, что и импортируемый домен или класс компонентов.
Необходимо разместить import в начале файла Simscape. Область импортированных имен - это весь файл Simscape, за исключением setup раздел.
В определенных операторах импорта импортированное имя может ссылаться на подпакет, класс модели (класс домена или класс компонента) или функцию. Например, в import A.B.C; заявление, C может быть именем подпакета, именем класса или именем функции. В неквалифицированной инструкции импорта импортированное имя должно ссылаться на пакет или подпакет. Например, в import A.B.*; заявление, B должно быть именем подпакета (пакета A).
Это приводит к ошибке компиляции, если неквалифицированное импортированное имя идентично другим именам в той же области, при условии, что используется повторяющееся имя. Например, предположим, что подпакеты A.B и A.B1 оба содержат класс компонентов C. Следующий код:
import A.B.C;
import A.B1.*;
component M
components (ExternalAccess=observe)
c = C;
end
end
вызывает ошибку времени компиляции. Однако следующий код является законным (при условии, что D определяется только в A.B), поскольку C не используется:
import A.B.C;
import A.B1.*;
component M
components (ExternalAccess=observe)
d = D;
end
end
Этот кодекс также является законным:
import A.B;
import A.B1;
component M
components
c1 = B.C;
c2 = B1.C;
end
end
потому что вы импортируете два разных имени в эту область (B и B1) и получить доступ к двум различным классам компонентов C через родительские классы B и B1.
В этом примере составной компонент состоит из трех одинаковых резисторов, соединенных параллельно:
import foundation.electrical.electrical; % electrical domain class definition
import foundation.electrical.elements.*; % all electrical elements
component ParElResistors
nodes
p = electrical;
n = electrical;
end
parameters
p1 = {3 , 'Ohm'};
end
components(ExternalAccess=observe)
r1 = resistor(R=p1);
r2 = resistor(R=p1);
r3 = resistor(R=p1);
end
connections
connect(r1.p, r2.p, r3.p, p);
connect(r1.n, r2.n, r3.n, n);
end
end