В этом примере показано, как отправить, получите, и сообщения процесса с помощью блока MATLAB System. Используйте Системные объекты, чтобы создать блоки, чтобы смоделировать пользовательское поведение, чтобы отправить и получить сообщения и управлять полезной нагрузкой сообщения.
Откройтесь модель сообщения Отправляют и Получают систему. Эта модель содержит генератор случайных чисел как источник данных. На основе тех данных Отправитель сообщения отправляет сообщение с полезной нагрузкой синусоиды с блоком очереди. Блок очереди хранит сообщения, и Приемник сообщения преобразует сообщение назад в данные.
open_system('slexMessageArrivalExample');
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% времени, как ожидалось.