Этот пример показывает, как создать блок MATLAB System, который может повредить алгебраический цикл в модели.
Системные объекты позволяют вам реализовывать использование алгоритмов MATLAB. Системные объекты являются специализированным видом объекта MATLAB, специально разработанного для реализации и симуляции динамических систем с входными параметрами то изменение в зависимости от времени.
После того, как вы зададите Системный объект, можно включать его в модель Simulink с помощью блока MATLAB System.
Этот пример имеет блок MATLAB System, который используется в обратной связи в модели. Обратная связь используется, чтобы накопить входные значения, и результат отображен в блоке Scope. Обратная связь в модели создает алгебраический цикл. Чтобы решить алгебраический цикл, Simulink нужен блок, который имеет непрямое сквозное соединение. Блоки, которые имеют непрямое сквозное соединение, используются в обратной связи, чтобы повредить алгебраические циклы. Этот блок может произвести вывод на шаге текущего времени, не получая вход сначала. В этом примере блок MATLAB System имеет непрямое сквозное соединение.
Блок MATLAB System использует Системный объект UnitDelayNondirect
, который реализует единичную задержку. Вывод показывает, как обратная связь накапливает значения входного сигнала.
Можно получить доступ к исходному коду MATLAB, используемому блоком MATLAB System путем нажатия на гиперссылку "Source Code" от диалогового окна блока. Системный объект UnitDelayNondirect
реализует resetImpl
, outputImpl
и методы updateImpl
. Чтобы использовать outputImpl
и updateImpl
, Системный объект наследовался классу matlab.system.mixin.Nondirect
. Системный объект имеет одно свойство под названием State
.
resetImpl
инициализирует свойство State
к 0.
outputImpl
возвращает значение, сохраненное в State
. Этот Системный объект имеет непрямое сквозное соединение, потому что outputImpl
не использует входных параметров.
updateImpl
использует входные параметры, чтобы обновить State
.
classdef UnitDelayNondirect < matlab.System & matlab.system.mixin.Nondirect % UnitDelayNondirect Delay input by one time step % Using Nondirect mixin enables use of this System object to create a % MATLAB System block with nondirect feedthrough. properties(DiscreteState) State end methods(Access = protected) function resetImpl(obj) obj.State = 0; % Initialize states end function y = outputImpl(obj, ~) y = obj.State; % Output current state % Input is not used in this method end function updateImpl(obj,u) obj.State = u; % Update state with input end end end