В этом примере показано, как отправлять, получать и обрабатывать сообщения с помощью блока MATLAB System. Используйте системные объекты для создания блоков для моделирования пользовательского поведения, чтобы отправлять и получать сообщения и управлять полезной нагрузкой сообщения.
Загрузка и открытие модели
Откройте модель системы отправки и получения сообщений. Эта модель содержит генератор случайных чисел в качестве источника данных. На основе этих данных отправитель сообщения отправляет сообщение с полезной нагрузкой синусоиды в блок очереди. Блок очереди хранит сообщения, и приемник сообщений преобразует сообщение обратно в данные.
Использование getInterfaceImpl
Системный объект API для задания портов сообщений
getInterfaceImpl
используется в этом примере для определения входного и выходного портов сообщений в блоке MATLAB System как для отправителя сообщений, так и для приемника сообщений. Для отправителя сообщений, getInterfaceImpl
используется для определения выхода системного блока MATLAB как сообщения. Это действие предлагает системному объекту создать выход сообщения. Для приемника сообщений, 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
Установите распространители и шаг расчета
В Message Sender необходимо установить следующие четыре распространителя: getOutputSizeImpl
, getOutputDataTypeImpl
, isOutputComplexImpl
, isOutputFixedSizeImpl
.
В этом примере очередь сообщений имеет максимальную емкость 16 сообщений. Генератор случайных чисел имеет шаг расчета 0,1. Приемник имеет шаг расчета 1. Приемник шага расчета сообщений устанавливается в системном блоке MATLAB с помощью getSampleTimeImpl
API.
function sts = getSampleTimeImpl(obj)
sts = createSampleTime(obj,'Type','Discrete', ...
'SampleTime',obj.SampleTime);
end
Моделируйте модель и рецензируйте результаты
В блоке Scope отображаются результаты. Эти результаты показывают, что, когда вы запускаете больше симуляций, генератор случайных чисел выдает число, больше нуля 50% времени, как ожидалось.