В этом примере показано, как отправлять, получать и обрабатывать сообщения с помощью системного блока MATLAB. Используйте системные объекты для создания блоков для моделирования пользовательского поведения при отправке и получении сообщений, а также для управления полезной нагрузкой сообщений.
Откройте модель системы отправки и получения сообщений. Эта модель содержит генератор случайных чисел в качестве источника данных. На основе этих данных отправитель сообщений посылает сообщение с синусоидальной полезной нагрузкой в блок очереди. Блок очереди сохраняет сообщения, и получатель сообщения преобразует сообщение обратно в данные.
open_system('slexMessageArrivalExample');

getInterfaceImpl API системного объекта для указания портов сообщенийgetInterfaceImpl используется в этом примере для определения портов ввода и вывода сообщений в системном блоке MATLAB как для отправителя сообщения, так и для получателя сообщения. Для отправителя сообщения, 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 с помощью getSampleTimeImpl API.
function sts = getSampleTimeImpl(obj) sts = createSampleTime(obj,'Type','Discrete', ... 'SampleTime',obj.SampleTime); end
В блоке «Область» отображаются результаты. Эти результаты показывают, что при выполнении большего количества моделирования генератор случайных чисел создает число, превышающее 0 50% времени, как и ожидалось.
