exponenta event banner

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

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

Связанные темы