Назначение выводов генератора: Что обозначают цифры и буквы на контактных выводах генератора?

Содержание

Стартер генератор карбюратор автоэлектрика –Современные схемы генераторов без дополнительных диодов S IG L

 Современные схемы генераторов без дополнительных диодов S IG L 

Список всех статей

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

Регуляторы напряжения могут иметь различные схемы, которые обозначаются типом внешнего подключения: L, L-DFM,  L IG S,  FR SIG, RLO, C, COM  

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

Рассмотрим  пример схемы генератора L IG S

 

Схема генераторов  DENSO, которые применялись на автомобилях Тойота

Схема генератора с регулятором напряжения  типа  L IG S

Регуляторы такого типа применялись на генераторах фирмы Денсо для автомобилей Тойота

Регулятор представляет собой микросхему с несколькими навесными элементами.

Силовой транзистор Т2, который работает в ключевом режиме, включает и отключает ток возбуждения.

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

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

Регулятор напряжения имеет разъем L IG S, для внешнего подсоединения, и клеммы для внутреннего подсоединения к цепям генератора B, P, F, E

Назначение выводов внешних

S – подвод напряжения с выхода генератора и аккумулятора для контроля уровня напряжения.

IG- питания цепей регулятора после включения замка зажигания

L — подключение лампочки контроля заряда

Назначение выводов внутренних соединений регулятора

B — подвод тока возбуждения от выхода генератора

P — подвод переменного напряжения с фазы генератора

F — отвод тока возбуждения от ротора

E – земля

 

Работа схемы

В выключенном состоянии к точке В подведен плюс от аккумулятора, но транзистор Т2 полностью закрыт и тока по цепи возбуждения нет. Плюс действует на точке S, но это вход с очень высоким сопротивлением и тока не потребляет.

При включении зажигания плюс от аккумулятора попадает на точку IG и на точку L через лампочку.

Микросхема DD получает питание по цепи IG. Транзистор Т1 открывается и лампочка загорается, сигнализируя о том, что генератор готов к работе, но еще не работает.

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

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

Возникшее переменное напряжение, с одной из обмоток попадает на точку Р регулятора, и на соответствующую ножку микросхемы. Сигнал о появлении переменного напряжения, означает, что двигатель завелся и можно включать генератор. Микросхема переводит  транзистор Т2, на такую длительность импульсов при которой ток возбуждения  становится достаточно большим, чтобы генератор вышел на рабочее напряжение и начал отдавать достаточную мощность. Ток возбуждения (показано стрелками) от плюса, через точку В, идет в обмотку возбуждения, и через транзистор на Т2 на массу.  Ротор сильно намагничивается и генератор начинает работать. Транзистор Т1 получает от микросхемы команду на закрытие и лампочка гаснет, что подтверждает нормальный режим работы генератора.

Далее задача регулятора состоит в поддержании рабочего уровня напряжения на выходе генератора.

Генератор все время поднимает напряжение и стремится превысить его нормальный уровень. Регулятор ограничивает напряжение на заданном уровне. Микросхема DD  обеспечивает широтно – импульсное управление (ШИМ – регулятор). Среднее значение тока, протекающего в обмотку зависит от длительности импульса открытого состояния ключевого транзистора Т2. Когда напряжение на выходе генератора возрастает, то микросхема, получая это напряжение на точку S, уменьшает длительность открытого состояния транзистора, и среднее значение тока возбуждения снижается, напряжение на выходе генератора снижается, далее, длительность импульсов вновь увеличивается и напряжение возрастает, таким образом, поддерживается заданный уровень выходного напряжения с достаточно высокой точностью — около 14, 4 Вольта

Диод, шунтирующий обмотку возбуждения, защищает транзистор от возможного пробоя импульсом высокого напряжения. При закрытии транзистора, ток возбуждения резко снижается, это вызывает скачок ЭДС самоиндукции в обмотке, и импульс напряжения прикладывается к транзистору. Диод,  создает котур для тока и ЭДС самоиндукции не может создать импульса высокого напряжения. 

 

Схема генератора не нуждается в дополнительном выпрямителе для питания обмотки возбуждения.

Устаревшая схема генератора с доп. диодами имела такие преимущества пред первыми схемами:

  • исключалась разрядка аккумулятора при включенном зажигании и не заработавшем двигателе
  • задержка возбуждения генератора при запуске, пока работает стартер
  • возможность использования лампочки для контрола зарядки аккумулятора

Все это может делать и данная схема на микроконтроллере 

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

Как и в схеме с дополнительным выпрямителем, схема потребляет ток на свечение лампочки – сигнализатора разрядки и еще потребляет небольшой ток через обмотку возбуждения, необходимый для первоначального возбуждения, этот ток определяется импульсным режимом транзистора Т2 , его среднее значение оказывается достаточно мало, что не оказывать существенное влияние на разрядку аккумулятора, поэтому в автомобиле, который не завелся, долгое время может быть включено зажигания без риска разрядки аккумулятора через генератор.

 

На данном рисунке показана схема генераторов на 100 и 110 Ампер, для генераторов меньшей мощности достаточно обычного диодного моста с шестью диодами.

Условные обозначения для подключения генераторов — статьи по ремонту автомобилей — статьи полезные о автоэлектрике

Автор: neonym Рубрика: статьи по ремонту автомобилей Нет комментариев

.

 

 

Условные обозначения

ТерминалФункциональное назначениеКуда подключить
Aто же, что и IGплюс аккумулятора
AS(Alternator Sense) то же, что и «S»плюс аккумулятора
B+батарея (+)плюс аккумулятора
B-батарея (-)минус аккумулятора
BVS(Battery Voltage Sense) то же, что и «S»плюс аккумулятора
C(Communication) вход управления регулятором напряжения блоком управления двигателем. При подаче на этот вход <-> напряжение на выходе генератора не будет превышать 12.5 V 
COM(Communication) общее обозначение физического интерфейса управления и диагностики генератора. Могут использоваться протоколы BSD(Bit Serial Device), BSS(Bit Synchronized Signal) или LIN(Local Interconnect Network)приставка aRCI 011
D+вывод (+) дополнительного диодного моста для питания регулятора напряжения. Служит для подключения индикаторной лампы, осуществляющей подачу начального напряжения возбуждения и индикацию работоспособности генератораконтрольная лампа
D(Drive) вход управления регулятором с терминалом P-Dприставка aRC-011 или VRT-RC
D(Dummy) пустой, нет подключения, в основном на японских автомобилях 
D(Digital) вход кодовой установки напряжения на американских Ford, то же, что и SIG 
DFто же, что и Fвнешний регулятор
DFM(Digital Field Monitor) то же, что и FRприставка aRC-011 илиVRT-RC
E(Earth) Земля, батарея (-) 
F(Field) выход регулятора напряжениявнешний регулятор
FLDто же, что и Fвнешний регулятор
FR(Field Report) выход для контроля нагрузки на генератор блоком управления двигателем 
G(Ground) то же, что и C 
I(Indicator) то же, что и Lконтрольная лампа
IG(Ignition) вход включения зажиганияплюс аккумулятора
IL(Illumination) то же, что и Lконтрольная лампа
L(Lamp) выход на лампу индикатора работоспособности генератораконтрольная лампа
LI(Load Indicator) то же, что и «FR» ,только сигнал инверсный 
LINнепосредственное указание на интерфейс управления и диагностики генератора по протоколу LIN(Local Interconnect Network) 
M(Monitor) то же, что и FR 
N(Null) вывод средней точки обмоток статора. Обычно служит для управления индикаторной лампой работоспособности генератора с механическим регулятором напряжения 
N/C(no connect) нет подключения 
P(Phase) выход с одной из обмоток статора генератора. Служит для определения регулятором напряжения возбужденного состояния генератора 
RC(Regulator Control) то же, что и SIG 
RLO(Regulated Load Output) вход управления напряжением стабилизации регулятора в диапазоне 11,8-15 вольт(TOYOTA) 
RVC(L)(Regulated Voltage Control) похоже на SIG 
S(Sense) сенсор , вход для сравнения напряжения в точке контроля. Обычно точка контроля находится в блоке предохранителей ближе к аккумулятору (предохранитель CHARGE)плюс аккумулятора
S(Stator) то же, что и P 
SIG(Signal) вход кодовой установки напряжения 
STA(Stator) то же, что и P 
Statorто же, что и P 
W(Wave) выход с одной из обмоток статора генератора для подключения тахометра в автомобилях с дизельными двигателями 
15то же, что и IGплюс аккумулятора
30то же, что и B+плюс аккумулятора
31то же, что и B-минус аккумулятора
61то же, что и Lконтрольная лампа
67то же, что и F

 

….

Советы по поиску и устранению неисправностей авиационных генераторов и генераторов

Системы зарядки постоянным током могут быть идентифицированы как цепи типа «A» или «B». Это необходимо
для технического специалиста, чтобы определить, какая система у них есть, чтобы правильно устранить неполадки. Система типа «А» управляет выходом, регулируя цепь возбуждения до
земля. Система типа «В» управляет выходом, регулируя батарею по полю.

Все системы зарядки авиационных генераторов Delco Remy имеют схему «А», поэтому их
Регулятор контролирует, сколько заземления помещается в цепь возбуждения генератора. Первоначально это было достигнуто с помощью системы вибрирующих точек в регуляторе напряжения.
Чем больше точки вибрировали в направлении закрытого положения, тем больше выход.
Чем дальше друг от друга были точки во время функции вибрации, тем меньше выходной сигнал.

Большинство генераторов для авиации общего назначения имеют схему «В». Чтобы они выводили
ток от генератора, батарея должна подаваться на поле. Чем больше батарея
в поле, тем выше выход. Затем перед регулирующим органом ставится задача
контроль количества батареи в поле. Есть зарядка авиации общего назначения
системы, которые являются цепью или полем «A» к земле. Они могут быть легко идентифицированы, если
Номер детали регулятора напряжения имеет «VSF» перед четырехзначным номером. Когда
используется этот регулятор, генератор не будет иметь одну из двух полевых клемм
прикреплен к земле. Регуляторы серии «VSF» управляют полем на землю, чтобы
для управления мощностью генератора.

Причина, по которой технический специалист должен определить,
Цепь «А» или «В» предназначена для того, чтобы они могли приступить к диагностике системы зарядки. Общий
используемый метод называется тестом «полного поля». Этот тест используется техническими специалистами для определения
работает ли генератор или генератор. Поскольку регулятор контролирует, сколько батареи или заземления подается на цепь возбуждения, тест «полного поля» требует обхода цепи возбуждения.
регулятор. Это делается путем подключения полного заряда батареи или полного заземления к генератору или
полевой пост генератора. Это заставляет генератор переменного тока или генератор заряжаться на полную мощность при вращении.

Двигатель самолета будет использоваться для вращения генератора переменного тока или генератора аналогично использованию
испытательный стенд. Поскольку это делается на самолете, необходимо соблюдать осторожность, чтобы не
повредить что-либо в электрической системе. Вы будете, в течение очень короткого периода времени,
повышать напряжение в системе. Все остальные электрические устройства должны быть в выключенном положении.
при выполнении этого теста. Всего от 4 до 6 секунд требуется для выполнения «полного
полевые испытания.

При проведении испытаний «полного поля» на самолете с генератором Delco Remy
системе техническому специалисту потребуется одна перемычка и вольтметр постоянного тока. Удалить оба
якорь и провод возбуждения от генератора. Заклейте концы проводов для защиты.
Соедините перемычкой полевую стойку с землей планера. Подключить вольтметр
от стойки арматуры до земли планера. Запустите двигатель и постепенно доведите
обороты увеличиваются с холостого хода примерно до 1500 об/мин. Напряжение на якоре
пост должен следовать за дроссельной заслонкой. Если да, то генератор в порядке. Проверьте два
провода от генератора к регулятору напряжения. Убедитесь, что когда мастер
переключатель включен, что у вас есть напряжение батареи не менее 12 или 24 вольт на регуляторе
клемма аккумулятора. Если да, то проблема скорее всего в регуляторе напряжения.

Если техник столкнулся с генератором производства Bendix, Eclipse, Leece
Neville или General Electric, есть очень большая вероятность, что это схема «B». В
в этом случае поле будет переключено на источник батареи.

При проведении испытаний «полного поля» на воздушном судне, оборудованном генератором переменного тока.
такие же предостережения должны быть приняты. Убедитесь, что все электрические устройства выключены
позиция. На большинстве самолетов авиации общего назначения, оснащенных двигателями Chrysler, Ford или
Генераторы Delco имеют только одно поле. Другая сторона поля находится
подключен к земле, что делает его цепью «B». Чтобы «полное поле» этих систем
техник должен снять провод возбуждения с генератора и заклеить конец провода скотчем.
для защиты регулятора напряжения. Установите перемычку с клеммы аккумулятора на
генератор к полевому столбу. Лучший способ проверить выходную мощность, когда генератор
сконфигурирован для «полного поля», заключается в использовании клещей вокруг измерителя индуктивности постоянного тока. Эти
очень точны и измеряют выходную мощность усилителя с точностью до одной десятой доли ампера.
Запустите двигатель и следите за показаниями амперметра. При 2000 об/мин сила тока должна
быть очень близко к номиналу ампер генератора.

Большинство генераторов prestolite имеют двойное поле, f1 и f2. Отсоедините и заклейте скотчем
провод заканчивается от обеих этих клемм. Соедините любую полевую стойку с планером
землю, а другой к большому аккумуляторному столбу. Это устройство теперь подключено
полное поле, и двигатель самолета должен быть запущен, а амперы должны быть измерены, как в
предыдущий абзац.

По дополнительным вопросам обращайтесь ко мне по бесплатному телефону
800-634-0190.

Спасибо, Джон Эванс

Поиск и устранение неисправностей систем параллельного подключения —>

Книга рецептов генератора | MPS

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

Как генератор обрабатывает правила?

Генерация постепенно преобразует входную модель в выходную модель, которая затем может или не может быть преобразована в текст с помощью TextGen. Сам процесс генерации состоит из шагов. Каждый шаг состоит из трех фаз:

  1. Выполнение сценариев предварительного сопоставления

  2. Преобразование модели на основе шаблона

  3. Выполнение сценариев после сопоставления

Преобразование модели на основе шаблона состоит из одного или нескольких микроэтапов преобразования модели на основе шаблона. Микрошаг — это однопроходное преобразование модели и входной модели в переходную (выходную) модель. Генератор на этапе генерации будет перебирать модель и искать в генераторах всех языков, задействованных на этом этапе, правила, применимые к узлам во входной модели. Когда применимые правила не найдены, этап генерации останавливается. Следующий шаг генерации (если есть) получит выходную модель предыдущего шага генерации в качестве входных данных.

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

Нет, в настоящее время MPS допускает только один генератор для каждого языка. Если вам нужно несколько генераторов для языка, целесообразно создать пустые языки, расширяющие ваш язык, и в каждом из этих расширяющих языков определить нужные альтернативные генераторы.

Можно ли использовать несколько конфигураций сопоставления для одного генератора?

Да, все они будут рассматриваться как равные в процессе генерации. Кроме того, каждые 9Конфигурация сопоставления 0057  может иметь процесс генерации с приоритетом , указанный отдельно, что дает вам больше гибкости при настройке генерации.

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

  • Поместить все правила генерации для разных платформ в один генератор, возможно, логически разделенный на виртуальные пакеты и несколько конфигураций сопоставления, и использовать0057 условие  каждого правила для активации правила на основе текущей выбранной цели. Разработчик укажет предполагаемую целевую платформу, установив флаг в своем коде

  • Не иметь генератора на вашем языке напрямую и предоставить генераторы для каждой целевой платформы на отдельном пустом языке , который расширяет исходный язык. Разработчик выберет нужную целевую платформу, импортировав соответствующий язык расширения.

Какие макросы доступны в шаблонах?

  • Свойства Macro — вычисляет значение для свойства

  • Справочный макрос — Вычисляет целевой (узел) ссылочного

  • Node Macro — используется для контроля. time

    • $IF$ — условная генерация

    • $CALL$ — вставить другой шаблон в текущую позицию и обработать его, пройдя в текущем узле

    • $LOOP$ — перебрать набор узлов и установить текущий узел для каждой итерации

    • $COPY_SRC$ — скопировать указанный узел и заменить обернутый узел. Правила редукции применяются к скопированному узлу и его дочерним элементам в процессе

    • $COPY_SRCL$ — копирует указанный набор узлов и заменяет упакованный код. Правила редукции применяются к копируемым узлам и их дочерним элементам в процессе

    • $MAP_SRC$ — устанавливает узел, который будет использоваться в качестве текущего узла внутри обернутого кода. обернутый код

    • $SWITCH$ — выбирает шаблон для использования для генерации из нескольких вариантов

    • $LABEL$ — сохраняет обернутый узел в метке сопоставления  для облегчения обнаружения другими макросами

    • $VAR$ — задает значение переменной, которая затем будет доступна в обернутых узлах через сопоставление между исходным узлом и результирующим сгенерированным текстом в файле trace.info . Когда Сохранить переходные модели  включен параметр Показать исходный узел  в пункте всплывающего меню Отладка  в переходном модели

    • $WEAVE$ — вызывает определенное правило плетения

    • $INSERT$ — вставляет узел в выходную модель в текущей позиции

Куда поместить служебные классы?

Создайте новую модель внутри генератора. Убедитесь, что к нему не прикреплен стереотип генератора  . Модель обычно должна зависеть от BaseLanguage , чтобы в ней можно было создавать классы. Оригинальный генератор  модель должна импортировать полезную модель.

Где разместить классы выполнения?

Классы и библиотеки, на которые опирается сгенерированный код, должны быть помещены в отдельные решения среды выполнения , как описано в разделе «Добавление внешних классов Java и JAR-файлов в проект — решения времени выполнения» документа Правильное определение зависимостей.

Как создать уникальные имена?

Используйте параметр genContext  , который дает вам доступ к объекту контекста генератора, и вызовите:

  • уникальное имя из <базового имени> в контексте <узел>

  • базовое имя  — произвольная строка, которая должна быть частью сгенерированного имени , тогда MPS делает все возможное, чтобы сгенерировать имена, «содержащиеся» в области видимости (обычно это корневой узел). Затем, когда имена будут пересчитаны (из-за изменений во входной модели или в модели генератора), это не повлияет на другие имена вне области действия. 9Параметр 0059 context node является необязательным, но мы рекомендуем указать его, чтобы гарантировать стабильность генерации.

    Уникальность сгенерированных имен обеспечивается на протяжении всего сеанса генерации.

    Возможны конфликты с именами, созданными не с помощью этой службы.

Как генерировать типы данных перечисления?

Чтобы преобразовать тип данных перечисления в перечисление Java, лучше всего использовать макрос $SWITCH$  .

Обратите внимание, как фактический тип данных перечисления проверяется на равенство с использованием метода is()  :

Как изменить пакеты сгенерированных классов Java?

При создании сложного кода Java классы, интерфейсы и перечисления Java часто необходимо организовывать в пакеты. По умолчанию генератор MPS отражает структуру моделей MPS в структуре пакетов сгенерированного Java-кода. Каждая модель BaseLanguage транслируется в пакет Java с тем же именем. Если вам нужно манипулировать структурой сгенерированных пакетов Java, используйте0057 packageName свойство концепции Classifier . Свойство доступно для корневых классификаторов:

В чем разница между правилами сопоставления корней и правилами редукции?

При генерации модели, имеющие форму дерева (Абстрактное синтаксическое дерево, см. Основные понятия), транслируются в сгенерированные модели, которые также являются деревьями. Обычно корневые узлы генерируются в корневые узлы (например, робот Script в класс Java), а некорневые узлы — в некорневые узлы (например, робот 9).0057 Команда Step в Java BlockStatement ). Таким образом, шаблоны для правил сопоставления корней представляют собой отправную точку сгенерированной модели и не могут указывать контекст шаблона, в отличие от шаблонов сокращения, которые могут содержать контекст и указывать фактическое содержимое генерации с отметками фрагмента шаблона .

Что происходит с непреобразованными корнями?

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

Фрагмент шаблона в шаблоне указывает, какой узел будет заменять текущий входной узел. Фрагмент шаблона может быть присоединен только к одному узлу внутри шаблона, но шаблон генератора может содержать несколько фрагментов шаблона, при условии, что все они присоединены к узлам с одной и той же ролью одного и того же родителя. Таким образом, для одного входного узла может быть создано несколько узлов.

Почему редактирование макросов такое странное?

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

Макросы реализованы как Атрибуты узла/свойства/ссылки (см. раздел Атрибуты в главе Структура). Таким образом, они могут использоваться на любом языке и не требуют предварительной поддержки на этом языке. Это важно, потому что любой язык может быть использован в качестве цели генерации в MPS. Таким образом, макросы — это атрибуты, прикрепленные к узлу, который они обертывают. Удаление или замена узла, обернутого макросом, также удалит макрос, и вам придется повторно ввести макрос, чтобы прикрепить его к новому узлу. Рекомендуемый подход — сначала ввести код шаблона, а затем начать добавлять макросы. Если вам нужно изменить узел, обернутый макросом, вы можете, по крайней мере, сохранить Инспектор содержимого окна макроса на старом узле путем копирования и вставки в макрос на новом узле.

Как создать корневые узлы для некорневых узлов?

Просто создайте правило сопоставления корней для концепции, возможно, дополнительно ограничив его условием. Правило называется root , потому что оно создает корневой узел, а не обязательно принимает корень в качестве входных данных.

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

Как удалить из модели ненужные корни?

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

Как создать узлы для узлов в моделях аксессуаров?

Узлы в дополнительных моделях никаким образом не обрабатываются генератором. Для создания узлов на основе узлов в дополнительных моделях можно использовать либо правила условного корня , либо сценарии предварительной обработки .

Затем можно использовать правила сокращения для дальнейшей генерации «вставленных узлов» на желаемый целевой язык.

Как использовать метки сопоставления?

Метки сопоставления определяются в конфигурациях сопоставления (например, основной ). Затем их необходимо заполнить, обернув узел, который вы хотите сохранить, макросами, такими как $LOOP$, $LABEL$, $COPY_SRC$ и другими.

Как обрабатывать ссылки во время генерации?

Макросы ссылок следует использовать для установки правильных целевых узлов в сгенерированных ссылках. Обычно вы используете эталонные макросы вместе с сопоставлением ярлыков .

Основная задача здесь заключается в том, что для справки  R , который указывает на узел N , мы должны убедиться, что ссылка G(R) , созданная из R , должна указывать на узел G(N) , который был создан из N .

если R -> N, N генерируется в G(N), R генерируется в G(R) тогда G(R) -> G(N)

Метки отображения служат словарями, которые хранят узлы как ключи и то, во что они были сгенерированы как значения — N -> G(N) в нашем примере здесь. Генератор должен быть явно указан для сохранения сопоставления между узлом и его сгенерированным узлом в метке сопоставления. Фрагменты шаблона, а также макросы узла позволяют пользователю указать метку сопоставления, в которой должен быть сохранен сгенерированный узел.

При преобразовании R в G(R) ссылочный макрос на G(R) может извлечь G(N) из метки сопоставления, используя N в качестве ключа при вызове контекста генератора в genContext.get вывод по метке и ввод .

Глава 7 учебника по генератору более подробно описывает сопоставление меток.

Можно ли отлаживать процесс генерации?

Первый вариант — включить сохранение переходных моделей. Промежуточные модели, которые MPS создает во время генерации, будут сохранены, и вы сможете получить к ним доступ в Project View  панель в левой части экрана:

Сохраненные переходные модели позволяют исследовать, как модели выглядели на разных этапах процесса генерации.

Второй вариант — использование инструмента Generator Tracer Tool . Для этого инструмента параметр «Сохранить переходные модели» также должен быть установлен на на . Инструмент Generator Tracer позволяет подробно изучить процесс генерации для выбранного узла. Когда вы выбираете узел в своей исходной модели или в любой из переходных моделей, контекстное меню дает вам возможность проследить процесс генерации вперед или назад. В результате вы получаете древовидный отчет с доступом ко всем этапам, через которые проходил конкретный узел при генерации, и правилам, влияющим на его генерацию.

Кроме того, макрос генератора $TRACE$ позволяет помечать части ваших шаблонов для трассировки, чтобы вы могли вернуться от созданного узла в переходной модели к его исходный узел с помощью параметра Показать исходный узел  в контекстном меню -> Отладка языка  меню:

Как определить фактические этапы генерации?

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

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

Для более сложных сценариев новая функциональность планов генерации дает вам полный контроль над процессом генерации.

Как проверить, что модель не имеет ошибок перед запуском генератора?

Запустите Проверить модель (язык/решение)  действие контекстного меню для модели/языка/решения для проверки.

Настройки -> Сборка, выполнение, развертывание -> Генератор -> Проверять модели на наличие ошибок перед генерацией. Флаг конфигурации указывает, следует ли автоматически запускать средство проверки модели при каждом запуске генератора.

Как расширить существующий генератор?

Есть одно правило, которому нужно следовать: убедитесь, что ваш генератор-расширитель запускается до запуска расширенного генератора — дайте ему более высокий приоритет в диалоговом окне приоритета порядка генератора.

Как построить расширяемый генератор?

Расширяя генератор, расширения могут изменять семантику исходного языка. Генератор MPS является расширяемым по своей конструкции — он разрешает все правила генератора и конфигурации сопоставления для всех задействованных языков и создает глобальный план генерации. Для любого языка, присоединенного к проекту, будут включены свои правила. План определяет порядок выполнения правил генератора на основе их взаимных относительных приоритетов, выраженных в конфигурациях сопоставления. Это позволяет языковым расширениям внедрять собственные желаемые правила генерации в наиболее подходящую фазу генерации. Поскольку приоритеты выражаются в виде набора относительных порядков между конфигурациями сопоставления, расширению языка не нужно знать обо всех других генераторах, участвующих в генерации, чтобы работать. Потенциальные (и редкие) коллизии обнаруживаются и оставляются на усмотрение разработчика. После создания план генерации используется для итеративного вызова генераторов, потенциально используя параллелизм базового оборудования для взаимно независимых правил.

Предоставление дополнительных правил сокращения — один из способов расширения языка. Использование переключателя генератора является еще одним вариантом. Если родительский язык использует переключатель генератора для выбора правильных правил редукции, языковое расширение может расширить этот переключатель генератора своей дополнительной логикой для выбора правил редукции — обычно для включения новых правил, введенных языками расширения.

Для чего мне использовать TextGen?

В то время как генератор выполняет преобразование модели в модель, TextGen выполняет сопоставление с текстом. Обычно это последний этап генерации, и им полностью управляет генератор. Корни выбираются генератором и конвертируются в файлы. TextGen намеренно предлагает очень мало гибкости разработчику языка. Это Генератор, где в первую очередь должен быть настроен и обработан процесс генерации. Если вы чувствуете необходимость обойти ограничения TextGen, скорее всего, вы пытаетесь сделать что-то не так. Генератор — это место, где у вас есть наибольшая гибкость.

Как скопировать сгенерированный вывод в другое место?

Атрибут CopyOutcome языка jetbrains.mps.lang.makeup может использоваться для обеспечения того, чтобы окончательный сгенерированный текст для узла был скопирован в указанное место.

Как создать несколько файлов на корневой узел?

TextGen позволяет использовать только один файл на корневой узел. Кроме того, у вас может быть только один компонент TextGen для каждой концепции.