Разделение на подклассы и наследование

Разделение на подклассы позволяет вам создавать модели компонента на основе других моделей компонента следовательно. Разделение на подклассы применяется только к моделям компонента, не моделям предметной области. Синтаксис для разделения на подклассы основан на системном синтаксисе класса MATLAB® для разделения на подклассы использования < символ на линии объявления модели компонента:

component MyExtendedComponent < PackageName.MyBaseComponent
  % component implementation here
end

Путем разделения на подклассы подкласс наследовал всех участников (параметры, переменные, узлы, вводы и выводы) от базового класса и может добавить собственных участников. При использовании подкласса как внешний клиент, весь public члены базового класса доступны. Весь public и protected члены базового класса доступны для событий, уравнения, структуры и других разделов подкласса. Подкласс не может объявить участника с тем же идентификатором как public или protected член базового класса.

setup функция базового класса выполняется перед setup функция подкласса.

Примечание

  • Запуск в R2019a, использование setup не рекомендуется. Другие построения, доступные на языке Simscape™, позволяют вам достигнуть тех же результатов, не ставя под угрозу возможности во время выполнения. Для получения дополнительной информации смотрите, что настройка не рекомендуется.

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

Например, можно создать базовый класс ElectricalBranch.ssc, который задает электрическую ветвь с положительными и отрицательными внешними узлами, начальный ток и напряжение и отношение между переменными компонента и узлами (и поэтому, соединяет переменные компонента с Через и Через доменные переменные). Такой компонент не очень полезен как библиотечный блок, поэтому если вы не хотите, чтобы базовый класс появился как блок в пользовательской библиотеке, устанавливаете Hidden=true значение атрибута:

component (Hidden=true) ElectricalBranch
  nodes
    p = foundation.electrical.electrical; % +:left
    n = foundation.electrical.electrical; % +:right
  end
  variables
    i = { 0, 'A' };
    v = { 0, 'V' };
  end
  branches
    i : p.i -> n.i;
  end
  equations
    v == p.v - n.v;
  end
end

Если, например, ваш базовый класс находится в пакете под названием +MyElectrical, затем можно задать компонент подкласса Capacitor.ssc можно следующим образом:

component Capacitor < MyElectrical.ElectricalBranch
% Ideal Capacitor
  parameters
    c = { 1, 'F' };
  end
  equations
      assert(c>0, 'Capacitance must be greater than zero');	
      i == c * v.der;
  end
end

Компонент подкласса наследовал p и n узлы, i и v переменные с начальными значениями и отношение между и доменными переменными компонента из базового класса. Таким образом, Capacitor.ssc файл содержит только параметры и уравнения, характерные для конденсатора.