Сгенерировать сущности, несущие вложенные структуры данных

Этот пример показывает, как исследовать пропускную способность объекта обслуживания транспортного средства с помощью Simulink® Редактор шины для создания вложенных структур данных, переносимых сущностями.

Объект имеет три станции технического обслуживания, представленные тремя блоками Entity Server. Поступающие на объект транспортные средства ставятся в очередь и затем направляются на одну из трех станций технического обслуживания в зависимости от их размера и пробега. Предполагается, что более старые транспортные средства требуют большего времени обслуживания.

  1. Создание сущностей, которые представляют транспортные средства, прибывающие на объект обслуживания. В сущности содержатся данные, представляющие транспортному средству размерностей и свойства как вложенные объекты шины. Размерности транспортного средства включают высоту и ширину транспортного средства в метрах, а свойства транспортного средства включают его возраст и текущий пробег. Дополнительные сведения об использовании редактора шин см. в разделе Создание и определение объектов Simulink .Bus.

    1. На Modeling вкладке в Design разделе выберите и откройте Bus Editor.

    2. В редакторе шин выберите File > Add Bus.

    3. Создайте новый объект шины и установите значение свойства Name Dimensions.

    4. Выберите File > Add/Insert BusElement, чтобы создать два элемента шины, Height и Width.

    5. Создайте другой объект шины и установите значение свойства Name Properties. Добавьте три элемента шины Station, Year, и Mileage.

    6. Создайте другой объект шины и установите значение свойства Name Vehicle.

    7. Добавьте два элемента шины и установите их свойства Name равными VehicleDimensions и VehicleProperties. Для своих Data type свойств используйте Bus: <object name> шаблон, замена <object name> с Dimensions и Properties.

  2. Добавьте блок Entity Generator. Дважды кликните Entity Generator блок.

    1. Выберите вкладку Entity type. Установите Entity type равным Bus object и Entity type name как Vehicle.

      Vehicle - объект шины, созданный редактором шин.

    2. Выберите вкладку Event actions. В Generate action поле введите:

      % Vehicle Dimensions
      entity.VehicleDimensions.Height = 1+rand();
      entity.VehicleDimensions.Width = 1+rand();
      % Vehicle Properties
      entity.VehicleProperties.Year = randi([1996 2018]);
      entity.VehicleProperties.Mileage = randi([50000 150000]);

      Транспортные средства поступают на объект со случайными размерностями и свойствами.

  3. Добавьте блок Entity Queue и переименуйте его в Очередь транспортных средств.

    1. На вкладке 'Main установите Capacity значение Inf.

    2. Выберите вкладку Event actions. В поле Entry action введите этот код для определения выбора сервисной станции для транспортных средств.

      % If the height and width of the vehicle are greater than 1.5 m, select Station 1.
      if entity.VehicleDimensions.Width > 1.5 && entity.VehicleDimensions.Height > 1.5  
          entity.VehicleProperties.Station = 1;
      % Else, if the vehicle's mileage is greater than 90000 km, select Station 2.
      else if entity.VehicleProperties.Mileage > 90000    
           entity.VehicleProperties.Station = 2;
      % If the vehicle's mileage is less than 90000 km, select Station 3.
      else
           entity.VehicleProperties.Station = 3;   
      end
      end

      Транспортные средства ставятся в очередь для направления на правильную станцию технического обслуживания, а размерности и свойства транспортных средств используются для выбора соответствующей станции технического обслуживания.

  4. Добавьте блок Entity Output Switch.

    1. Установите Number of output ports равным 3.

    2. Установите Switching criterion равным From attribute.

    3. Установите Switch attribute name равным VehicleProperties.Station.

    Блок Entity Output Switch направляет транспортные средства на станции на основе заданного Station атрибут.

  5. Добавьте блок Entity Server, который представляет сервисную станцию. Переименуйте блок Сервисная станция 1.

    1. На вкладке Main установите Service time source значение MATLAB action.

    2. В Service time action поле введите:

      if entity.VehicleProperties.Year > 2015
          dt = 1;
      else
          dt = 5;
      end

      Принято, что время работы автомобиля больше для старых транспортных средств.

    3. На вкладке Statistics выберите Number of entities departed, d statistic и соедините его с возможностями.

  6. Подключите сервисную станцию 1 к блоку Entity Terminator.

  7. Выполните те же действия, чтобы создать сервисную станцию 2 и сервисную станцию 3 и соединить их как показано на рисунке.

  8. Увеличьте время симуляции, чтобы 100 и запустите симуляцию.

    Наблюдать за количеством транспортных средств, обслуживаемых на станции обслуживания 1.

    Наблюдать за количеством транспортных средств, обслуживаемых на станции обслуживания 2.

    Наблюдать за количеством транспортных средств, обслуживаемых на станции технического обслуживания 3.

См. также

| | |

Похожие темы