Разработка постпроцессоров
  • Разработка постпроцессоров
v20.0.1
Search Results for

    Show / Hide Table of Contents

    Рабочий цикл SPPX

    SPPX-постпроцессор — это набор обработчиков (по одному на команду CLData), а также подпрограммы, объекты и регистры, написанные на встроенном Паскале-подобном языке, с форматированием вывода, описанным масками. Ассистент работает именно с этими элементами через сервер InP MCP, и цикл всегда один и тот же: прочитать, изменить, скомпилировать, запустить, сравнить.

    Справочник по языку и маскам — в документации Генератора постпроцессоров, смысл входных команд — в справочнике CLData.

    Цикл

    1. Подготовьте базу. Берите за основу ближайший из существующих постпроцессоров — тот, что используется для этого станка, или дистрибутивный для похожей системы ЧПУ, — а не пустой файл. Скопируйте его или зафиксируйте текущее состояние, чтобы у сравнения была отправная точка. Сформируйте УП один раз до любых изменений и сохраните её.
    2. Найдите данные. Определите команду CLData, из которой получаются нужные кадры УП, и прочитайте её фактические параметры в тестовом проекте. Названия команды недостаточно: в разных проектах одна и та же команда несёт разные значения.
    3. Найдите обработчик. В структуре постпроцессора перечислены обработчики, подпрограммы и объекты. Обработчик, названный по команде, — это место, где начинается обработка, но вывод может формироваться дальше: в подпрограмме, в маске или при следующей смене модального состояния.
    4. Прочитайте перед записью. Ассистент обязан прочитать текущий код того элемента, который собирается изменить, и описания регистров, если дело касается регистров. Правка непрочитанного — это то, как исчезает посторонний код.
    5. Меняйте минимум. Сохраняйте порядок и формат регистров, модальное поведение, разделители, состояние в Common и локальных переменных и принятые в посте соглашения о подпрограммах. Донорский код из другого постпроцессора нужно проверять по данным этого проекта, а не вставлять как есть.
    6. Скомпилируйте. Все выданные ошибки нужно исправить, прежде чем идти дальше: запускать несобравшийся постпроцессор бессмысленно.
    7. Запустите. Интерпретируйте тот же тестовый проект и получите УП. Изменение, которое ни разу не запускали, не завершено, как бы ни выглядел код.
    8. Сравните. Сопоставьте новую УП с исходной, затем с эталонной программой со станка. Проследите каждое отличие до команды и обработчика — включая отличия, которых вы не ожидали.
    9. Проверьте. Перейдите к проверке и подтверждению результата.

    Что ассистент может изменить, а что нет

    На каждую команду CLData есть один обработчик: обработчики можно править, но нельзя создать или удалить. Создавать можно подпрограммы и объекты. Удаление элемента необратимо, поэтому ассистент сначала спрашивает — прочитайте запрос прежде, чем подтвердить.

    Наблюдение за работой

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

    В VS Code вы также можете попросить открыть изменённый обработчик в редакторе или подготовить прогон Generate NC, чтобы самому увидеть панель, параметры и сравнение.

    Что проверять в коде

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

    Не допускайте появления имён свойств .NET в коде SPPX. Обе подсистемы читают одни и те же данные разным синтаксисом: страницы CLData описывают смысл, страницы SPPX — форму доступа, и нумерация элементов в них различается.

    In this article