Как выбрать из двух одинаковых сигналов шины в Simulink? - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть две идентичные структуры шины в Simulink, с разными значениями.Одна - это шина (CAN) от реального автомобиля, другая - идентичная имитированная (CAN) шина в Simulink.Я хочу составить смешанную, идентичную выходную шину с этими, где некоторые сигналы берутся с первой шины, а другие со второй шины, как показано.

Я хочу переключиться с третьей идентичной шиной, содержащейзначение для каждого сигнала, определяющего переключение сигнала на выход с шины 1 или шины 2. Схематически это выглядит как серая секция:

pic Как вы можете видеть,первый сигнал (Rpm, 3) берется с шины автомобиля, второй сигнал (Spd, 6) берется с моделируемой шины.Что касается структуры, выходная шина идентична двум входным шинам.Принцип в схеме работает, но у меня более 500 сигналов, поэтому этот метод больше не применим.

Как я могу сделать это без необходимости вручную маршрутизировать 500 сигналов?
Я думаю о функциональном блоке MATLAB, но предложения приветствуются.

1 Ответ

0 голосов
/ 07 мая 2019

Я нашел способ решить эту проблему.Это не самый элегантный способ, но он работает.

Поскольку шины обрабатываются как структуры в функциональных блоках MATLAB, я перебрал все поля и элементы, чтобы выбрать нужный источник для каждого элемента в выходной шине.вот так:

subbus = fieldnames(SLCT);
for i=1:+1:11
    signal = fieldnames(SLCT.(subbus{i}))
    for j=1:+1:5
        switch SLCT.(subbus{i}).(signal{j})
            case 0
                TRGT.(subbus{i}).(signal{j}) = SRCA.(subbus{i}).(signal{j});
            case 1
                TRGT.(subbus{i}).(signal{j}) = SRCB.(subbus{i}).(signal{j});
            otherwise
                TRGT.(subbus{i}).(signal{j}) = SRCC.(subbus{i}).(signal{j});
        end
    end
end

Я уверен, что должны быть намного лучшие, намного более быстрые способы, но это работает, и это достаточно быстро для моего приложения.

...