Прием данных по протоколу TCP/IP от указанной удаленной машины
Instrument Control Toolbox
Блок TCP/IP Receive конфигурирует и открывает интерфейс к указанному удаленному адресу с помощью протокола TCP/IP. Строения и инициализация происходят один раз в начале выполнения модели. Во время запуска модели блок получает данные либо в режиме блокировки, либо в режиме без блокировки.
Примечание
Вам нужна лицензия как для Instrument Control Toolbox™ так и для Simulink® программное обеспечение для использования этого блока.
Примечание
В библиотеке блоков Instrument Control Toolbox блок TCP/IP Receive теперь называется блоком TCP/IP Client Receive, а блок TCP/IP Send теперь называется блоком TCP/IP Client Send. Обратите внимание, что внутреннее имя не было изменено, поэтому нет проблемы совместимости, если у вас есть скрипты или модели с этими именами блоков. Оба блоков предназначены для использования в качестве клиентов TCP/IP. Они не работают как серверы TCP/IP.
Этот блок не имеет входных портов. Он имеет один или два выходных порта, основанных на вашем выборе режима блокировки или без блокировки. Если вы выбираете режим блокировки, у блока будет один выходной порт, соответствующий данным, которые он получает.
Если вы не выбираете режим блокировки, блок будет иметь два выходных порта: порт данных и порт состояния.
Буфер First In First Out (FIFO) получает данные. На каждом временном шаге порт данных выводит требуемые значения из буфера. В режиме non blocking порт Status указывает, получил ли блок новые данные.
Используйте блок TCP/IP Receive, чтобы считать потоковые данные по сети TCP/IP, используя функциональность Instrument Control Toolbox в Simulink.
Этот блок поддерживает использование режима Accelerator™ Simulink, но не Rapid Accelerator или генерацию кода.
Блок поддерживает использование ссылок на модели, так что ваша модель может включать другие модели Simulink в качестве модульных компонентов.
Для получения дополнительной информации об этих функциях см. документацию Simulink.
Примечание
Вы можете ввести переменный MATLAB в текстовые поля редактирования в диалоговом окне TCP/IP Receive Block Parameters, за исключением следующих полей: Remote address, ASCII format string и Terminator.
Введите IP-адрес, имя или адрес веб-сервера компьютера, с которого необходимо получить данные. По умолчанию это поле пустое.
Введите удаленный порт на удаленном компьютере, к которому необходимо подключиться. Значение порта по умолчанию 80
. Допустимые значения портов 1
на 65535
.
Нажмите эту кнопку, чтобы:
Проверьте правильность указанного удаленного адреса.
Установите соединение с указанными удаленным адресом и портом.
Задайте размер выходных данных или количество значений, которые должны считываться на каждом временном шаге симуляции. Размер по умолчанию [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 диалогового окна TCP/IP Receive Block Parameters). Когда симуляция начинается, данные получают асинхронно в буфере FIFO.
Режим блокировки
Симуляция режима блокировки происходит так:
Во временной шаг 1: Программное обеспечение Simulink запрашивает данные, и буфер имеет четыре значения доступных. Блок выполняет запрос, не прерывая симуляции. Блок устанавливает значение буфера равным 0.
Во временной шаг 2: Программное обеспечение Simulink запрашивает данные снова, и буфер имеет только три значения, поэтому он блокирует симуляцию, пока не получит четвертое значение. Когда блок получает четвертое значение, он выполняет запрос и возобновляет симуляцию. Блок устанавливает значение буфера равным 0.
На временной шаг 3: Когда программное обеспечение Simulink запрашивает данные, блок имеет пять значений, и он возвращает первые четыре, которые он получил, и сбрасывает буфер на 1.
Если запрошенные данные не получены в течение периода времени, заданного в поле Timeout (из диалогового окна TCP/IP Receive Block Parameters), происходит ошибка Simulink и симуляция останавливается.
Примечание
В режиме блокировки, если у вас на компьютере более одной модели TCP/IP, убедитесь, что блок Receive получает данные. Если это не так, то ваша модель может ошибиться. Этого можно избежать, изменив блок на режим Nonblocking или сбросив приоритет блока.
Не блокирующий режим
Здесь симуляция не блокируется и выполняется постоянно.
На временной шаг 1: Программное обеспечение Simulink запрашивает данные, и буфер имеет четыре значения, блок выполняет запрос и изменяет Status
значение порта в 1
, что указывает на доступность новых данных. The Data
порт в этой точке содержит вновь полученные значения. Блок устанавливает значение буфера равным 0.
На временной шаг 2: Программное обеспечение Simulink запрашивает данные снова, и буфер имеет только три значения. Блок не может вернуть значение 3, потому что размер данных задан как 4. Поэтому блок устанавливает значение порта Status на 0
, что указывает на отсутствие новых данных. Порт Data содержит ранее полученное значение, и буфер имеет значение три (количество значений, полученных с момента выполнения последнего запроса).
На временной шаг 3: Когда программное обеспечение Simulink запрашивает данные здесь, буфер теперь имеет пять значений, и он возвращает первые четыре в полученном порядке и изменяет значение порта состояния на 1
.
Задайте количество времени, которое модель будет ждать данных во время каждого временного шага симуляции. Значение по умолчанию 10
(секунды). Это поле отключено, если не выбран режим включения блокировки.
Задайте шаг расчета блока во время симуляции. Это скорость, с которой блок выполняется во время симуляции. Значение по умолчанию 0.01
(секунды).
Query Instrument, Serial Configuration, Serial Receive, Serial Send, TCP/IP Send, To Instrument, UDP Receive, UDP Send