Обработка полезной нагрузки сообщения с помощью MATLAB System Block

В этом примере показано, как отправлять, получать и обрабатывать сообщения с помощью блока MATLAB System. Используйте системные объекты для создания блоков для моделирования пользовательского поведения, чтобы отправлять и получать сообщения и управлять полезной нагрузкой сообщения.

Загрузка и открытие модели

Откройте модель системы отправки и получения сообщений. Эта модель содержит генератор случайных чисел в качестве источника данных. На основе этих данных отправитель сообщения отправляет сообщение с полезной нагрузкой синусоиды в блок очереди. Блок очереди хранит сообщения, и приемник сообщений преобразует сообщение обратно в данные.

open_system('slexMessageArrivalExample');

Использование 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% времени, как ожидалось.