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

В этом примере показано, как создать блок MATLAB System, который может повредить алгебраический цикл в модели.

Системные объекты

Системные объекты позволяют вам реализовывать использование алгоритмов MATLAB. Системные объекты являются специализированным видом объекта MATLAB, специально разработанного для реализации и симуляции динамических систем с входными параметрами то изменение в зависимости от времени.

После того, как вы зададите Системный объект, можно включать его в модель Simulink с помощью блока MATLAB System.

Описание модели

Этот пример имеет блок MATLAB System, который используется в обратной связи в модели. Обратная связь используется, чтобы накопить входные значения, и результат отображен в блоке Scope. Обратная связь в модели создает алгебраический цикл. Чтобы решить алгебраический цикл, Simulink нужен блок, который имеет непрямое сквозное соединение. Блоки, которые имеют непрямое сквозное соединение, используются в обратной связи, чтобы повредить алгебраические циклы. Этот блок может произвести выход на шаге текущего времени, не получая вход сначала. В этом примере блок MATLAB System имеет непрямое сквозное соединение.

Блок MATLAB System использует Системный объект UnitDelayNondirect это реализует единичную задержку. Выход показывает, как обратная связь накапливает значения входного сигнала.

Определение класса системного объекта

Можно получить доступ к исходному коду MATLAB, используемому блоком MATLAB System путем нажатия на гиперссылку "Source Code" от диалогового окна блока. UnitDelayNondirect Системный объект реализует resetImploutputImpl, и updateImpl методы. Системный объект имеет одно свойство под названием State.

  • resetImpl инициализирует State свойство к 0.

  • outputImpl возвращает значение, сохраненное в State. Этот Системный объект имеет непрямое сквозное соединение потому что outputImpl не использует входных параметров.

  • updateImpl использует входные параметры, чтобы обновить State.

classdef UnitDelayNondirect < matlab.System
% UnitDelayNondirect Delay input by one time step

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

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

|

Похожие темы