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

Используйте мультиплексирование, чтобы представлять несколько сигналов в местоположении одного сигнала в данных сообщения 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 активный, измените значение 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 функция, чтобы узнать больше о создании сообщений.

Похожие темы