Мультиплексные сигналы

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

  • Стандартный сигнал - Этот сигнал всегда активен. Можно создать один или несколько стандартных сигналов.

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

  • Мультиплексированный сигнал - Этот сигнал активен, когда его значение мультиплексора совпадает со значением сигнала мультиплексора. Можно создать один или несколько мультиплексированных сигналов в сообщении.

Мультиплексирование работает только с базой данных CAN с определениями сообщений, которые уже содержат информацию о сигнале мультиплексора. В этом примере показано, как получить доступ к различным сигналам мультиплексора с помощью базы данных, созданной специально для этой цели. Эта база данных имеет одно сообщение с этими сигналами:

  • SigA - мультиплексированный сигнал со значением мультиплекса 0.

  • SigB - Другой мультиплексированный сигнал со значением мультиплекса 1.

  • MuxSig - мультиплексорный сигнал, значение которого определяет, какие из двух мультиплексированных сигналов активны в сообщении.

Для примера,

  1. Создайте базу данных CAN.

    d = canDatabase('Mux.dbc')

    Примечание

    Это пример базы данных, созданной для создания сообщений мультиплексора. Чтобы попробовать этот пример, используйте свою собственную базу данных.

  2. Создайте сообщение CAN.

    m = canMessage(d,'Msg')
    m = 
    
      can.Message handle
      Package: can
    
      Properties:
               ID: 250
         Extended: 0
             Name: 'Msg'
         Database: [1x1 can.Database]
            Error: 0
           Remote: 0
        Timestamp: 0
             Data: [0 0 0 0 0 0 0 0]
          Signals: [1x1 struct]
    
      Methods, Events, Superclasses
  3. Для отображения сигналов введите:

    m.Signals
    
    ans = 
    
          SigB: 0
          SigA: 0
        MuxSig: 0

    MuxSig - мультиплексорный сигнал, значение которого определяет, какие из двух мультиплексированных сигналов активны в сообщении. SigA и SigB являются ли мультиплексированные сигналы, которые активны в сообщении, если их значения мультиплекса совпадают MuxSig. В показанном примере SigA активен, потому что его текущее значение мультиплекса 0 соответствует значению MuxSig (который есть 0).

  4. Если вы хотите сделать SigB active, измените значение MuxSig на 1.

    m.Signals.MuxSig = 1

    Для отображения сигналов введите:

    m.Signals
    
    ans = 
    
          SigB: 0
          SigA: 0
        MuxSig: 1

    SigB теперь активен, потому что его значение мультиплекса 1 соответствует текущему значению MuxSig (который есть 1).

  5. Измените значение MuxSig на 2.

    m.Signals.MuxSig = 2

    Здесь ни один из мультиплексированных сигналов не является активным, потому что текущее значение MuxSig не соответствует значению мультиплекса ни одного из SigA или SigB.

      m.Signals
    
     ans = 
    
          SigB: 0
          SigA: 0
        MuxSig: 2

    Всегда проверяйте значение сигнала мультиплексора перед использованием мультиплексированного значения сигналов.

    if (m.Signals.MuxSig == 0)
    % Feel free to use the value of SigA however is required.
    end 

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

Примечание

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

См. canMessage для получения дополнительной информации о создании сообщений.

Похожие темы