2015-10-26 1 views
0

Я работаю над проектом, который требует передачи значения в реальном времени между Simulink и Labview Matlab в сетевых системах (в настоящее время работает Matlab 2010b и Labview 7.0). Я пытался сделать это с помощью функций UDP Send/Receive в любой из программ, однако Labview, похоже, имеет дело с Strings с UDP/TCP-IP. Simulink только считывает int/double значения из портов UDP.Передача значения через UDP между Simulink/Labview

Есть ли способ для меня преобразовать эти значения ПОСЛЕ операции чтения или иначе обойти ограничение типа? Любые советы (или альтернативные способы передачи значения между двумя программами) будут действительно оценены. К сожалению, из-за аппаратных ограничений я придерживаюсь этих версий программ.

Спасибо!

ответ

5

Функции TCP/UDP в LV используют строки, поскольку это удобный способ представления массива байтов, который в основном является потоком TCP. Вы можете взять данные и преобразовать их так, чтобы они могли использоваться. Предполагая, что Simulink кодирует значения одинаково (простой двоичный код для ints, представление IEEE754 для float), вы можете просто использовать тип cast или flatten to/unflatten из строковых функций для преобразования данных. Возможно, вам потребуется изменить порядок байтов для учетной записи endianess.

Вы можете посмотреть примеры TCP в LV и документацию по сплющенным данным, чтобы лучше понять, как это работает.

В качестве бокового пункта UDP является потерянным и в основном подходит, если вам нужно быстро передавать или получать данные, например, при потоковой передаче видео. Если данные важны, вы должны использовать TCP.