Позвольте блокироваться, режим в получают и отправляют блоки

Параметр Enable blocking mode позволяет вам ожидать, пока запрошенные данные не доступны для блока, чтобы получить или ожидать, пока все данные не отправляют. Можно отключить эту опцию, чтобы позволить симуляции запускаться постоянно. Этот параметр доступен в следующих блоках:

Блокирование режима

Параметр Enable blocking mode включен по умолчанию.

Получите блоки

Если вы позволяете блокировать режим в Serial Receive, TCP/IP Receive и блоках UDP Receive, симуляция ожидает запрошенных данных, чтобы стать доступной. Модель ожидает до количества времени, заданного параметром Timeout.

В этом примере запустите симуляцию во время t = 0 и задайте Data size как [4,1]. Если симуляция запускается, данные получены асинхронно в буфере FIFO.

Graph of Simulink buffer size versus time. Requests at different time steps are shown as vertical dotted lines.

Блокирующаяся симуляция режима происходит в следующих шагах.

  • На временном шаге 1: Simulink® данные о программных запросах и buffer size являются четырьмя значениями. Блок обрабатывает запрос, не прерывая симуляцию. Блок сбрасывает значение buffer size к 0.

  • На временном шаге 2: данные о программных запросах Simulink снова и buffer size являются только тремя значениями; поэтому, программное обеспечение блокирует симуляцию, пока это не получает четвертое значение. Когда блок получает четвертое значение, он обрабатывает запрос и возобновляет симуляцию. Блок сбрасывает значение buffer size к 0.

  • На временном шаге 3: Когда данные о программных запросах Simulink, блок имеет пять значений. Это возвращает первые четыре, что это получило и сбрасывает значение buffer size к 1.

Для каждого временного шага, если запрошенные данные не получены в количестве времени, заданном в поле Timeout:

  • Блок Serial Receive принимает меры, заданные параметром Action when data is not available.

  • Блок TCP/IP Receive выводит значение 0.

Отправьте блоки

Если вы позволяете блокировать режим в Serial Send, TCP/IP Send и блоках UDP Send, симуляция ожидает, пока блок не отправляет полные данные.

В этом примере запустите симуляцию во время t=0.

Time course of simulation, showing three separate blocks of data being sent at different time points.

На временном шаге (T1) вывод данных инициируется и остановки симуляции, пока блок данных (B1) не отправляется. После того, как данные отправляются, резюме симуляции до временного шага (T2), где блок инициирует другой вывод данных, и симуляция блокируется, пока блок данных (B2) не отправляется, и резюме симуляции.

Неблокирование режима

Снимите флажок, если вы хотите, чтобы параметр Enable blocking mode был выключен.

Получите блоки

Если вы не позволяете блокировать режим в Serial Receive, TCP/IP Receive и блоках UDP Receive, симуляция запускается постоянно, и блок имеет два выходных порта, Status и Data. Порт Data содержит требуемый набор данных на каждом временном шаге. Порт Status содержит 0 или 1 на основе того, получил ли он новые данные на данном временном шаге.

Graph of Simulink buffer size versus time. Requests at different time steps are shown as vertical dotted lines.

Здесь симуляция не блокируется и запускается постоянно.

  • На временном шаге 1: данные о программных запросах Simulink и buffer size являются четырьмя значениями. Блок обрабатывает запрос и изменяет значение порта Status в 1, указание, что новые данные доступны. Порт Data в этой точке содержит недавно полученные значения. Блок сбрасывает значение buffer size к 0.

  • На временном шаге 2: данные о программных запросах Simulink снова и buffer size являются только тремя значениями. Блок не может возвратить значение 3, потому что размер данных задан как 4. Поэтому блок устанавливает значение порта Status к 0, указание, которое нет новых данных доступно. Порт данных содержит ранее полученное значение или 0, в зависимости от блока, и buffer size в три (количество значений, которые это получило, поскольку последний запрос был обработан).

  • На временном шаге 3: Когда данные о программных запросах Simulink здесь, buffer size является теперь шестью значениями. Блок возвращает первые четыре в полученном заказе и изменяет значение порта Status в 1.

Отправьте блоки

Если вы не позволяете блокировать режим в Serial Send, TCP/IP Send и блоках UDP Send, симуляция запускается постоянно.

Вывод данных опережает скорость симуляции

Time course of simulation, showing three separate blocks of data being sent at different time points.

В этом сценарии вывод данных опережает скорость симуляции. Вывод данных инициируется на первом временном шаге (T1), и соответствующий блок данных (B1) отправляется в заданный удаленный адрес асинхронно. Симуляция запускается постоянно в этом режиме.

Скорость симуляции опережает вывод данных

Time course of simulation, showing three blocks of data being sent one after the other.

В этом сценарии скорость симуляции опережает сбор данных.

  • На временном шаге T1: блок данных (B1) отправляется асинхронно.

  • На временном шаге T2: симуляция блокируется, пока блок данных (B1) не отправляется полностью. Когда B1 полностью отправляется, новый блок данных (B2) отправляется асинхронно, и резюме симуляции.

Примечание

Несколько факторов, включая сетевое соединение и сложность модели, могут влиять на скорость симуляции, которая может заставить оба неблокирующихся сценария происходить в рамках той же симуляции.

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

| | | | |