Заявление о ситуации в Симулинке - PullRequest
0 голосов
/ 31 мая 2011

Я просто не могу понять, как поступить:

Я пытаюсь построить модель:

  • Было бы 4 входа (булево i / p)
  • Это будет иметь 1 выход (подписано: 8 бит)

Будет выполнено следующее:

  • Исходя из того, какой вход равен 1, он даст соответствующий вывод, отражающий DataRate.

Если бы мне пришлось писать в Matlab, я бы написал что-то вроде этого:

if (portA==1)
    PSDU_Data_Rate=1;
    elseif(portB==1)
        PSDU_Data_Rate=2;
    elseif (portC==1)
        PSDU_Data_Rate=5.5;
    elseif(portD==1)
        PSDU_Data_Rate=11;
end

Я прилагаю ту часть модели, которую разрабатываю для той же функциональности:

Data Rate Calculate

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

Спасибо

1 Ответ

0 голосов
/ 07 июня 2011

Поскольку у вас есть 4 различных входа вместо одного входа, содержащего перечисляемое значение, используйте If - Else вместо оператора Case. Я добавляю скриншоты того, как это можно сделать. Обратите внимание, что блок If также позволяет иметь выход Else, если вы хотите выбрать одну из скоростей передачи данных по умолчанию (если ни один из входов не является ненулевым).

If настройки блока:

  • Количество входов: 4
  • Если выражение: u1 ~ = 0
  • Выражения Elseif: u2 ~ = 0, u3 ~ = 0, u4 ~ = 0

Модель состоит из блока If, подключенного к набору блоков If Action Subsystem. Выходы последнего можно объединить в один сигнал с помощью блока Merge.

Top-level model

One of the If Action Subsystems

...