Прием данных по сети UDP от указанной удаленной машины
Instrument Control Toolbox
Блок UDP Receive конфигурирует и открывает интерфейс к указанному удаленному адресу с помощью протокола UDP. Строения и инициализация происходят один раз в начале выполнения модели. Во время запуска модели блок получает данные либо в режиме блокировки, либо в режиме без блокировки.
Примечание
Вам нужна лицензия как для Instrument Control Toolbox™ так и для Simulink® программное обеспечение для использования этого блока.
Этот блок не имеет входных портов. Он имеет один или два выходных порта, основанных на выборе режима блокировки или без блокировки. Если вы выбираете режим блокировки, блок будет иметь один выходной порт, соответствующий данным, которые он получает.
Если вы не выбираете режим блокировки, блок будет иметь два выходных порта: порт данных и порт состояния.
Буфер First In First Out (FIFO) получает данные. На каждом временном шаге порт данных выводит требуемые значения из буфера. В режиме без блокировки порт Status указывает, получил ли блок новые данные.
Этот блок поддерживает использование режима Accelerator™ Simulink, но не Rapid Accelerator или генерацию кода.
Блок поддерживает использование ссылок на модели, так что ваша модель может включать другие модели Simulink в качестве модульных компонентов.
Для получения дополнительной информации об этих функциях см. документацию Simulink.
Примечание
Вы можете ввести переменный MATLAB в текстовые поля редактирования в диалоговом окне UDP Receive Block Parameters, за исключением следующих полей: Local address, Remote address, ASCII format string и Terminator.
Укажите IP-адрес, имя или адрес веб-сервера локального хоста. Это то же самое, что и интерфейс UDP localhost
свойство. По умолчанию это поле пустое.
Укажите порт для привязки на локальном компьютере. Значение по умолчанию -1
, который автоматически привязывается к доступному порту.
Используется для включения совместного использования портов. Порты UDP могут совместно использоваться другими приложениями, чтобы позволить нескольким приложениям прослушивать дейтаграммы UDP на этом порту. Можно связать объект UDP с определенным LocalPort
номер и в другом приложении привязать UDP сокет к тому же номеру локального порта, чтобы оба могли принимать широковещательные данные UDP. Включение этой опции позволяет другим сокетам UDP связываться с LocalPort
объекта UDP. По умолчанию он отключен.
Укажите IP-адрес, имя или адрес веб-сервера компьютера, с которого необходимо получить данные. Для этого поля задано значение localhost
по умолчанию.
Укажите удаленный порт на узле, к которому необходимо подключиться. Значение порта по умолчанию 9090
. Допустимые значения портов 1
на 65535
.
Нажмите эту кнопку, чтобы:
Проверьте правильность указанного удаленного адреса.
Установите соединение с указанными удаленным адресом и портом.
Позволяет получать последние данные от блока UDP Receive. Данные обычно получают способом FIFO. При включении получаются последние доступные пакеты вместо использования метода FIFO. Обратите внимание, что эта опция отключена, когда тип данных ASCII. По умолчанию эта опция отключена.
Задайте размер выходных данных или количество значений, которые должны считываться на каждом временном шаге симуляции. Размер по умолчанию [1 1]
.
Укажите тип входных данных для приема из блока. Можно выбрать из следующих значений:
single
double
int8
uint8
(по умолчанию)
int16
uint16
int32
uint32
ASCII
Эта опция доступна только при выборе ASCII в качестве типа данных. Он определяет строку формата для данных. Список форматов см. в разделе fscanf
функция.
Эта опция доступна только при выборе ASCII в качестве типа данных. Он может использоваться, чтобы задать терминатор строки для считанных данных. Для получения дополнительной информации об установке свойства смотрите Terminator
.
При использовании двоичного или двоичного формата с более чем 8 битами можно задать порядок байтов для данных. Ваши опции BigEndian
или LittleEndian
.
Укажите, хотите ли вы заблокировать симуляцию при получении данных. Эта опция выбрана по умолчанию. Снимите этот флажок, если вы не хотите, чтобы операция чтения блокировала симуляцию.
Если вы включите режим блокировки, модель заблокирует симуляцию, пока она ждет, когда запрошенные данные будут доступны. Если вы не включите режим блокировки, симуляция выполняется постоянно. Блок имеет два выходных порта, Status и данные. Порт Data содержит требуемый набор данных на каждом временном шаге. Порт Status содержит 0 или 1 на основе того, получил ли он новые данные на заданном временном шаге. Следующие схемы показывают различие между приемом данных с использованием режима блокировки и без блокировки.
В этом примере вы запускаете симуляцию в момент времени (t = 0) и задаете объем данных для приема как 4 (установите в поле Data size диалогового окна UDP Receive Block Parameters). После начала симуляции данные получают асинхронно в буфере FIFO.
Режим блокировки
Симуляция режима блокировки происходит так:
На временной шаг 1: Программное обеспечение Simulink запрашивает данные, и буфер имеет четыре значения, блок выполняет запрос, не прерывая симуляции. Блок устанавливает значение буфера равным 0.
Во временной шаг 2: Программное обеспечение Simulink запрашивает данные снова, и буфер имеет только три значения, поэтому он блокирует симуляцию, пока не получит четвертое значение. Когда блок получает четвертое значение, он выполняет запрос и возобновляет симуляцию. Блок устанавливает значение буфера равным 0.
На временной шаг 3: Когда программное обеспечение Simulink запрашивает данные, блок имеет пять значений, и он возвращает первые четыре, которые он получил, и сбрасывает буфер на 1.
Если запрошенные данные не получены в течение периода времени, заданного в поле Timeout (из диалогового окна Receive Параметры Блоков UDP), происходит ошибка программного обеспечения Simulink, и симуляция останавливается.
Примечание
В режиме блокировки, если у вас на компьютере более одной модели UDP, убедитесь, что блок Receive получает данные. Если это не так, то ваша модель может ошибиться. Этого можно избежать, изменив блок на режим Nonblocking или сбросив приоритет блока.
Не блокирующий режим
Здесь симуляция не блокируется и выполняется постоянно.
На временной шаг 1: Программное обеспечение Simulink запрашивает данные, и буфер имеет четыре значения, блок выполняет запрос и изменяет Status
значение порта в 1
, что указывает на доступность новых данных. The Data
порт в этой точке содержит вновь полученные значения. Блок устанавливает значение буфера равным 0.
Во временной шаг 2: Программное обеспечение Simulink запрашивает данные снова, и буфер имеет только три значения, и блок не может вернуть его, так как размер данных задан как 4. Поэтому блок устанавливает Status
значение порта в 0
, что указывает на отсутствие новых данных. The Data
порт содержит ранее полученное значение, и значение буфера составляет три (количество значений, полученных с момента выполнения последнего запроса).
На временной шаг 3: Когда программное обеспечение Simulink запрашивает данные здесь, буфер теперь имеет пять значений, и он возвращает первые четыре в том же порядке, в котором он получил, и изменяет Status
значение порта в 1
.
Задайте количество времени, которое модель будет ждать данных во время каждого временного шага симуляции. Значение по умолчанию inf
(секунды). Это поле недоступно, если вы не включили режим блокировки.
Задайте время дискретизации блока во время симуляции. Значение по умолчанию 0.01
(секунды).
Query Instrument, Serial Configuration, Serial Receive, Serial Send, TCP/IP Receive, TCP/IP Send, To Instrument, UDP Send