Мониторинг состояния чернил на общем принтере с помощью функций Simulink

В этом примере показано, как клиенты, в данном случае три компьютера, могут отправлять задания на сервер, принтер и получать состояние с этого сервера. В этом примере показано, как функции Simulink могут вызываться из различных подсистем и взаимодействовать как в Simulink ®, так и в Stateflow ®. (Обратите внимание, что при моделировании примера Stateflow может сгенерировать код в текущей рабочей папке.)

Каждый компьютер генерирует задания печати случайных размеров с регулярными интервалами. Принтер взаимодействует с компьютерами через две функции Simulink на холсте Simulink и одну экспортированную графическую функцию в Stateflow.

Клиенты используют блоки Function Caller для вызова addPrintJob интерфейс принтера. Взаимодействие клиент-сервер, смоделированное этим вызовом, может иметь отрицательное возвращаемое значение, если у принтера закончились чернила.

Пример также показывает, как соединить Simulink и Stateflow с помощью функций.

Реализация addPrintJob использует блок Function Caller для вызова queuePrintJob, экспортированная графическая функция Stateflow. The queuePrintJob функция взаимодействует с другим содержимым на графике с помощью переменной локальной диаграммы work.

Реализация графика делает вызов для printerInk, функцию Simulink, которая использует графические входные и выходные параметры для взаимодействия со addPrintJob функция.

Можно также визуализировать и отлажить функции Simulink.

Чтобы включить функции соединения линий визуализации и соответствующих вызывающих абонентов, в редакторе Simulink, на вкладке Debug, в разделе Information Overlays, нажмите Function Connectors.

Блок Sequence Viewer показывает, где генерируются вызовы функций и какие функции вызываются в разное время. Эта информация позволяет понять поток вызовов относительно времени и проанализировать аргументы, отправленные во время этих вызовов функциям.