В блоках Simulink® прямое сквозное соединение означает, что выходом блока управляет непосредственно значение сигнала входного порта. В непрямом сквозном соединении значение выходного сигнала не зависит от значения входного сигнала по крайней мере в одной функции во время симуляции.
По умолчанию блоки MATLAB Function имеют прямое включенное сквозное соединение. Если вы отключаете прямое сквозное соединение, семантика Simulink гарантируют, что выходные параметры полагаются только на текущее состояние. Используя непрямое сквозное соединение позволяет вам использовать блоки MATLAB Function в обратной связи и предотвратить алгебраические циклы.
Использовать непрямое сквозное соединение:
Включите функциональное встраивание блока MATLAB Function при помощи coder.inline
в теле функции верхнего уровня.
В Портах и Менеджере данных, в MATLAB Function Block Editor, выбирают Edit Data на вкладке Editor и снимают флажок Allow direct feedthrough. Для получения дополнительной информации смотрите Порты и Менеджер данных.
Не программируйте выходные параметры, чтобы использовать входные параметры, или обновил персистентные переменные. Например, не используйте этот код в непрямом проходном блоке:
counter = counter + 1; % update state output = counter; % compute output based on updated state
output = counter; % compute output based on current state counter = counter + 1; % update state