Получите данные по 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.
Этот блок не имеет никаких входных портов. Это имеет или один или два выходных порта, на основе вашего выбора блокирования или неблокирования режима. Если вы выберете блокирующийся режим затем, то блок будет иметь один выходной порт, соответствующий данным, которые это получает.
Если вы не выберете блокирующийся режим, блок будет иметь два выходных порта, Порт данных и порт Status.
Буфер Метода "первым пришел - первым вышел" (FIFO) получает данные. На каждом временном шаге Порт данных выводит требуемые значения от буфера. В не блокирующемся режиме порт Status указывает, получил ли блок новые данные.
Используйте блок TCP/IP Receive, чтобы считать данные о потоковой передаче по сети TCP/IP, с помощью функциональности Instrument Control Toolbox в Simulink.
Этот блок поддерживает использование режима Simulink 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
.
При использовании двоичного файла или binblock формата больше чем с 8 битами, можно задать порядок байтов инструмента для данных. Вашими опциями является BigEndian
или LittleEndian
.
Задайте, хотите ли вы блокировать симуляцию при получении данных. Эта опция выбрана по умолчанию. Снимите этот флажок, если вы не хотите, чтобы операция чтения блокировала симуляцию.
Если вы позволите блокировать режим, модель блокирует симуляцию, в то время как это ожидает запрошенных данных, чтобы быть доступным. Когда вы не позволяете блокировать режим, симуляция запускается постоянно. Блок имеет два выходных порта, Состояние и Данные. Порт данных содержит требуемый набор данных на каждом временном шаге. Порт Status содержит 0 или 1 на основе того, получил ли он новые данные на данном временном шаге. Следующие схемы показывают различие между получением режима блокирования использования данных и неблокированием режима.
В этом примере вы запускаете симуляцию во время (t=0) и задаете объем данных, чтобы получить как 4 (набор в поле Размера данных диалогового окна 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
, указание, что новые данные доступны. Data
порт в этой точке содержит недавно полученные значения. Блок сбрасывает буферность к 0.
На временном шаге 2: данные о программных запросах Simulink снова и буфер имеют только три значения. Блок не может возвратить значение 3, потому что размер данных задан как 4. Поэтому блок устанавливает значение порта Status к 0
, указание, что существует нет новых данных. Порт данных содержит ранее полученное значение, и буфер в три (количество значений, которые это получило, поскольку последний запрос был обработан).
На временном шаге 3: Когда данные о программных запросах Simulink здесь, буфер теперь имеет пять значений, и это возвращает первые четыре в полученном заказе и изменяет значение порта Status в 1
.
Задайте количество времени, что модель будет ожидать данных во время каждого шага времени симуляции. Значением по умолчанию является 10
секунды. Это поле отключено, если вы не выбрали режим блокирования Enable.
Задайте шаг расчета блока во время симуляции. Это - уровень, на котором блок выполняется в процессе моделирования. Значением по умолчанию является 0.01
секунды.
Query Instrument, Serial Configuration, Serial Receive, Serial Send, TCP/IP Send, To Instrument, UDP Receive, UDP Send