Повредите алгебраические циклы

Введение

Этот пример показывает, как создать блок 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

Смотрите также

Похожие темы