В этом примере показано, как отправить, получите, и сообщения процесса с помощью блока MATLAB System. Используйте Системные объекты, чтобы создать блоки, чтобы смоделировать пользовательское поведение, чтобы отправить и получить сообщения и управлять полезной нагрузкой сообщения.
Загрузите и откройте модель
Откройтесь модель сообщения Отправляют и Получают систему. Эта модель содержит генератор случайных чисел как источник данных. На основе тех данных Отправитель сообщения отправляет сообщение с полезной нагрузкой синусоиды с блоком очереди. Блок очереди хранит сообщения, и Приемник сообщения преобразует сообщение назад в данные.
Используйте getInterfaceImpl
API системного объекта, чтобы задать порты сообщения
getInterfaceImpl
используется в этом примере, чтобы задать порты сообщения ввода и вывода в блоке MATLAB System и для Отправителя сообщения и для Приемника сообщения. Для Отправителя сообщения, getInterfaceImpl
используется, чтобы задать выход блока MATLAB System как сообщение. Это действие запрашивает Системный объект создавать сообщение выход. Для Приемника сообщения, getInterfaceImpl
используется, чтобы задать вход Системного объекта как сообщение и выход как данные.
%Function to send messages
function interface = getInterfaceImpl(~)
import matlab.system.interface.*;
interface = Output("Out1", Message);
end
%Function to receive messages and output as data
function interface = getInterfaceImpl(obj)
import matlab.system.interface.*;
interface = [Input("In1", Message), ...
Output("Out1", Data), Output("out2", Data)];
end
Установите Распространителей и Шаг расчета
Следующие четыре распространителя должны быть установлены в Отправителе сообщения: getOutputSizeImpl
getOutputDataTypeImpl
isOutputComplexImpl
isOutputFixedSizeImpl
.
В этом примере очередь сообщений имеет максимальную способность 16 сообщений. Генератор случайных чисел имеет шаг расчета 0,1. Приемник имеет шаг расчета 1. Шаг расчета Приемника сообщения установлен в блоке MATLAB System с помощью getSampleTimeImpl
API.
function sts = getSampleTimeImpl(obj)
sts = createSampleTime(obj,'Type','Discrete', ...
'SampleTime',obj.SampleTime);
end
Симулируйте модель и рассмотрите результаты
Блок Scope отображает результаты. Эти результаты показывают это, когда вы запускаете больше симуляций, генератор случайных чисел производит номер, больше, чем нуль 50% времени, как ожидалось.