GE Fanuc разделяемая структура инициализации узла

Структура инициализации узла имеет следующие поля:

     Interface: [1x1 struct]
    Partitions: [1x1 struct]

где

Поля структуры узла

Описание

Interface

Задает, как плата сконфигурирована. Интерфейсная структура имеет следующие поля, три из которых являются структурами:

  • Mode — Конфигурирует регистры платы (см. Режим Совета),

  • Interrupts — Позволяет плате сгенерировать прерывания PCI от сетевых событий, которые были широковещательно переданы от других узлов, или в ответ на состояние ошибки (см. Прерывания Совета),

  • NodeID — Задает идентификатор узла для платы (см. Идентификатор узла Совета),

  • Internal — Зарезервированный для внутреннего пользования

Partitions

Хранит сегменты общей памяти (см., Создают GE Fanuc Разделяемые Разделы),

Режим Совета

Плата общей памяти имеет несколько регистров, которые можно установить через Interface.Mode поле . Чтобы отобразить поля режима платы, введите:

>> node.Interface.Mode

ans = 
          StatusLEDOff: 'off'
    TransmitterDisable: 'off'
      DarkOnDarkEnable: 'off'
        LoopbackEnable: 'off'
     LocalParityEnable: 'off'
          MemoryOffset: '0'
            MemorySize: '64MByte'

Значения режима взаимодействуют с установкой платы LSR1 (Локальный Регистр управления и состояния 1) и LIER (Локальный Регистр Разрешения прерывания) регистры. Обратитесь к документации по продукту платы для получения дальнейшей информации на этих двух регистрах. Чтобы контролировать состояние этих режимов, установите флажок Error Status Port блоков записи или чтения.

Особо значимый следующие режимы:

Режимы Совета

Описание

StatusLEDOff

Поворачивается состояние платы Вовлекло и прочь. Устанавливание этого значения к 'off' выключает LED, когда модель Simulink® Real-Time™ запускается, устанавливание этого значения к 'on' включает LED, когда модель Simulink Real-Time запускается. Когда программное обеспечение Simulink Real-Time завершает работу, реверсы состояния LED в обоих случаях. Значением по умолчанию является 'off'.

MemoryOffset

Применяет глобальное смещение к сетевым передачам данных, прибывающим из платы. В следующей таблице перечислены значения смещения и получившееся смещение. Значение по умолчанию 0.

MemorySize

Задает требуемый размер минимальной памяти, в формате 'sizeМегабайт'. Драйвер платы проверяет это значение по емкости памяти платы. Если вы вводите размер в это поле, которое является более крупным, чем емкость памяти фактической платы, драйвер возвращает ошибку.

Эта таблица приводит значения для MemoryOffset:

Значение

Возместите произведенный

'0'

0

'1'

0x4000000

'2'

0x8000000

'3'

0xC000000

Прерывания Совета

Плата может сгенерировать прерывания PCI в ответ на сетевые события, которые были широковещательно переданы от других узлов, или в ответ на состояние ошибки. Например, можно сконфигурировать две модели Simulink Real-Time Simulink, один как ведущее устройство, и один как ведомое устройство широковещательного узла в основной модели Simulink Real-Time. В такой настройке широковещательное прерывание узла инициировало временные шаги модели.

Чтобы отобразить поля режима прерывания, введите:

node.Interface.Interrupts
ans =
       LocalMemoryParity: 'off'
    MemoryWriteInhibited: 'off'
         LatchedSyncLoss: 'off'
              RXFifoFull: 'off'
        RXFifoAlmostFull: 'off'
                 BadData: 'off'
             PendingInit: 'off'
             RoguePacket: 'off'
        ResetNodeRequest: 'off'
             PendingInt3: 'off'
             PendingInt2: 'off'
             PendingInt1: 'off'

Каждое поле соответствует немного в регистре LIER платы общей памяти GE® Fanuc Embedded Systems. Каждый бит включает заданный источник прерывания на плате. Обратитесь к документации по продукту платы для получения дальнейшей информации на этом регистре.

Чтобы позволить узлу сгенерировать сетевой источник прерывания, добавьте широковещательный блок в модель (основная модель). Этот блок выпускает сетевые прерывания на уровне частоты дискретизации модели. Чтобы позволить другим узлам сети (ведомые модели) принять широковещательные прерывания, сконфигурируйте ведомые модели, чтобы ожидать широковещательное прерывание.

Следующая процедура описывает, как сконфигурировать целую модель Simulink Real-Time, чтобы принять широковещательное прерывание от платы.

  1. Из Командного окна MATLAB® ввести

    tg = slrt;
    getPCIInfo(tg, 'installed')

    Эта информация о плате списков команд для установленных устройств PCI, о которых знает программное обеспечение Simulink Real-Time.

  2. Найдите IRQ заданным для платы общей памяти.

    Чтобы задать в поле Real-Time interrupt source панели Simulink Real-Time Options, используйте этот исходный номер прерывания.

  3. Отредактируйте свой скрипт и добавьте линию как следующее.

    node.Interface.Interrupts.PendingInt1='on'
    

    Эта линия направляет модель, чтобы ожидать прерывание. Это принимает, что значение широковещательного блока Interrupt parameter равняется 1.

  4. Из Окна Команды MATLAB введите имя своей модели Simulink.

    Модель Simulink появляется.

  5. На вкладке Real-Time, от раздела Prepare, выбирают Hardware Settings.

  6. Выберите узел Code Generation.

  7. Выберите узел Simulink Real-Time Options.

  8. Установите поле Execution mode на Real-Time.

  9. Кликните по списку Real-Time interrupt source.

  10. Выберите исходный номер прерывания, в который установлена плата.

  11. Кликните по списку I/O board generating the interrupt и выберите GE_Fanuc(VMIC)_PCI-5565 из списка.

  12. Нажмите OK.

Примечание

Если у вас есть большая модель, чтобы локализовать управление прерывания в той модели, используйте Исходный блок IRQ от подбиблиотеки Asynchronous Event.

Идентификатор узла Совета

Перемычки платы задают идентификатор узла платы. Соответственно, можно также сконфигурировать блок с идентификатором узла платы с помощью Interface.NodeID поле . Введите значения согласно следующему:

Значение NodeID

Описание

'any'

Позволяет драйверу платы работать с узлом независимо от установки перемычки идентификатора узла платы

значение от '0' к '255'

Задает конкретный узел, который должен искать драйвер. Если это значение не совпадает с установившим перемычки значением на плате, драйвер возвращает ошибку.

Значение по умолчанию 'любого' удовлетворяет требования в большинстве экземпляров. Если у вас есть несколько плат общей памяти в вашей системе, чтобы идентифицировать драйвер для конкретного узла, задайте особое значение NodeID.