Рабочий цикл SPPX
SPPX-постпроцессор — это набор обработчиков (по одному на команду CLData), а также подпрограммы, объекты и регистры, написанные на встроенном Паскале-подобном языке, с форматированием вывода, описанным масками. Ассистент работает именно с этими элементами через сервер InP MCP, и цикл всегда один и тот же: прочитать, изменить, скомпилировать, запустить, сравнить.
Справочник по языку и маскам — в документации Генератора постпроцессоров, смысл входных команд — в справочнике CLData.
Цикл
- Подготовьте базу. Берите за основу ближайший из существующих постпроцессоров — тот, что используется для этого станка, или дистрибутивный для похожей системы ЧПУ, — а не пустой файл. Скопируйте его или зафиксируйте текущее состояние, чтобы у сравнения была отправная точка. Сформируйте УП один раз до любых изменений и сохраните её.
- Найдите данные. Определите команду CLData, из которой получаются нужные кадры УП, и прочитайте её фактические параметры в тестовом проекте. Названия команды недостаточно: в разных проектах одна и та же команда несёт разные значения.
- Найдите обработчик. В структуре постпроцессора перечислены обработчики, подпрограммы и объекты. Обработчик, названный по команде, — это место, где начинается обработка, но вывод может формироваться дальше: в подпрограмме, в маске или при следующей смене модального состояния.
- Прочитайте перед записью. Ассистент обязан прочитать текущий код того элемента, который собирается изменить, и описания регистров, если дело касается регистров. Правка непрочитанного — это то, как исчезает посторонний код.
- Меняйте минимум. Сохраняйте порядок и формат регистров, модальное поведение, разделители, состояние в
Commonи локальных переменных и принятые в посте соглашения о подпрограммах. Донорский код из другого постпроцессора нужно проверять по данным этого проекта, а не вставлять как есть. - Скомпилируйте. Все выданные ошибки нужно исправить, прежде чем идти дальше: запускать несобравшийся постпроцессор бессмысленно.
- Запустите. Интерпретируйте тот же тестовый проект и получите УП. Изменение, которое ни разу не запускали, не завершено, как бы ни выглядел код.
- Сравните. Сопоставьте новую УП с исходной, затем с эталонной программой со станка. Проследите каждое отличие до команды и обработчика — включая отличия, которых вы не ожидали.
- Проверьте. Перейдите к проверке и подтверждению результата.
Что ассистент может изменить, а что нет
На каждую команду CLData есть один обработчик: обработчики можно править, но нельзя создать или удалить. Создавать можно подпрограммы и объекты. Удаление элемента необратимо, поэтому ассистент сначала спрашивает — прочитайте запрос прежде, чем подтвердить.
Наблюдение за работой
Просите оконный экземпляр InP, когда хотите видеть среду: изменённый обработчик, сообщения компиляции и сформированная программа оказываются перед вами. Безоконный экземпляр нужен для пакетных проверок и параллельных прогонов — на экране при этом ничего не появляется. Если открыто несколько окон InP, скажите, в каком работать.
В VS Code вы также можете попросить открыть изменённый обработчик в редакторе или подготовить прогон Generate NC, чтобы самому увидеть панель, параметры и сравнение.
Что проверять в коде
Формат регистров и модальный вывод — то место, где черновики ИИ ошибаются чаще всего: значение выводится безусловно вместо вывода по изменению, модальный регистр остаётся установленным, слово оси выводится с неверным знаком или не в том порядке. Просмотрите каждую условную ветвь и каждый оператор прямого вывода и проверьте значения, которых нет в тестовом наборе: пропущенные параметры, повторяющиеся команды, границы и максимумы, переходы в начале и конце программы.
Не допускайте появления имён свойств .NET в коде SPPX. Обе подсистемы читают одни и те же данные разным синтаксисом: страницы CLData описывают смысл, страницы SPPX — форму доступа, и нумерация элементов в них различается.