exponenta event banner

Разорвать алгебраические петли

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

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

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

После определения объекта System его можно включить в модель Simulink с помощью блока MATLAB System.

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

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

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

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

Доступ к исходному коду MATLAB, используемому системным блоком MATLAB, можно получить, щелкнув гиперссылку «Исходный код» в диалоговом окне блока. UnitDelayNondirect Системный объект реализует resetImpl, outputImpl, и updateImpl методы. Объект System имеет одно свойство с именем State.

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

  • outputImpl возвращает значение, сохраненное в State. Этот объект System имеет непрямой канал, так как 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

См. также

|

Связанные темы