Сосонкин_Системы_ЧПУ (1087166), страница 22
Текст из файла (страница 22)
Задачи управления123| Интерпретато р (ClSOProcessor)чКольцевой буфер (CArraySubPrc)Кадр управляющей программы (CSubPrc)-{Внутренний формат кадра(CBiock) |Геометрическое перемещения вкадре (Cdrcle, CLine, CPoint)-|G-BeKTop кадра (CGCommandQ)Ц|G-KOMaHflafCGCommandj-| Система G-KOMMaHp(Clnst_GCommands)L-J G-KOManp,a(CGCommand)-I Конвертер во внутренный формат(CParserConverter) |Рис 75.
Полная объектная архитектура ISO-процессораШаг 1: перевод (конвертирование) кадра управляющей программы во внутренний формат. В кадре выделяются G-функции (команды ISO-процессора),перемещения (первый тип параметров), адреса (второй тип параметров) икомментарии. Пример подобного «разбора» кадра показан в табл. 5.Таблица 5. Пример разбора кадра на первом шаге интерпретацииПример кадраN20G-функцииПеремещенияАдресаКомментарииN70G91G01091G01Х20.5Y37.5Х20.5Y37.5F2500 *CommentF250O*CommentШаг 2: формирование активного G-вектора, размерность (число координат) которого соответствует числу групп G-функций (команд) в рабочейверсии кода IS0-7bit. Всякая новая G-команда включается в ту координату124В.Л.
Сосонкин, Г.М. Мартинов. Системы числового программного управления!S0-7bitПеревод кадра вовнутреннийформат(CParserConvertei)Формирование Gвектора (CSubPrc)Генерация IPD-код»для G- и М- командIPD(CG..., СМ..)Интерпретациякадра групповымиинтерпретаторами(CSubPrc)Выделениегеометрическихперемещений(CSubPrc)Эквидистантный анализ(CISOProcessor)Формированиекольцевогобуффера(CArraySubPrc)Рис. 74.
Конвейер ISO-процессораG-вектора, которая соответствует номеру группы G-команды, и будет существовать, пока ее не заменит другая модальная G-команда из той жегруппы. Немодальные команды деактивируются в G-векторы после завершения интерпретации кадра.Шаг 3: интерпретация кадра групповыми интерпретаторами (Dimension,Plane, Delay и др.), которые привязаны к группам G-функций и, соответственно, координатам G-вектора. Вызов того или иного группового интерпретатора определяет порядок выполнения интерпретации, который непосредственно зависит от версии кода ISO-7bit.Шаг 4: назначение геометрических перемещений (при активной эквидистантной коррекции) в объектах классов CLine, CCircle, CPoint.Шаг 5: эквидистантная коррекция, в процессе которой осуществляетсяперерасчет траектории инструмента с учетом его размеров.Шаг 6: формирование кольцевого буфера кадров и «окна просмотратраектории».
Цель состоит в корректной стыковке соседних эквидистантных контуров.125Глава 3. Задачи управленияШаг 7: генерация выходного IPD-кода активными командами G-вектора в соответствии с текущими значениями параметров после обращения кним групповых интерпретаторов.Объектная реализация архитектуры и системы команд ISO-процессоранасчитывает более 70 классов, поэтому поясним далее лишь некоторыемоменты.
Диаграмма конвейера интерпретатора представлена на рис. 75.Основной цикл создает функция ExecuteBlock() класса CISOProcessor она вызывает функцию CalckGVectorBlockO того же класса для выполнения двух первых шагов конвейера. После этого вызывается функцияInterpretatorO класса CSubPRC (текущего интерпретируемого кадра) длявыполнения третьего шага, в рамках которого и вызываются групповыеинтерпретаторы StandartCyclesO, DebugO, DimensionO, PlaneO- Если эквидистантная коррекция активна, то вызывается функция Equidistant_TaskOCISOProcessor:.ExecuteBlock()Cl SO ProcessorРгс:CSubPrcI1m_GVector[in_lnterpolatB]:CGCommand•1 : CaloGVectorForBbck(cons( char*)2: lnt<rpretator( {I3: MPrefixf)4:Oelay()5: Dimension()6: Plane()7: Equidist_Task()8: BufferCross()Шаг 5, 6ID9: Eqlnterpr()10: UnCorrect(CAbstractSubPrc*)11: lnterpolate(Puc. 75.
Диаграмма конвейера ISO-процессора126В.Л. Сосонкин, Г.М. Мартинов. Системы числового программного управлениякласса CISOProcessor для выполнения четвертого шага. ФункцияBufferCrossO реализует пятый-шестой шаги, а остальные функции - седьмой шаг. В качестве примера на рис. 76 показана диаграмма объектов, построенная для двух первых шагов конвейера интерпретатора.На первом шаге конвейера, реализующем функцию CalcGVectorForBlockO, вызывается IdentifierO конвертора для синтаксического анализа очередного кадра управляющей программы. В процессе конвертациикадра в формат команд интерпретатора осуществляется инициализацияInitO внутреннего представления. После этого кадр формата ISO-7bit преобразуется с помощью функции UnificationO, в некоторую стандартнуюформу, при этом расставляются или убираются пробелы, меняются регистры и т.д.
Вслед за вызовом функций SetGFuncO, SetMFuncO, SetAxisO,SetAddressO класса CBlock выполняется разбор кадра аналогично примеру в табл. 5. Функция ActivateO класса CISOProcessor реализует второйшаг конвейера. Рисунок 76 демонстрирует использование широко известной CASE-системы RationalRose при проектировании и объектной реализации ISO-процессора.На рис. 77 показан пример практической реализации ISO-процессора врамках двухкомпьютерной системы ЧПУ типа PCNC.8: Activate()3: Unification(CAbstractSubPrc*)ParserConvertw:CParserConvenor2: lnit()4: SetGFunc(CGCommand*, int)5: SetMFunc(CGCommand*, int)6: SetAxis(int)7: SetAddress(int)Рис.
76. Фрагмент диаграммы объектов конвейераГлава 3. Задачи управления127ПРИКЛАДНОЙ УРОВЕНЬACEDI-модаQuick-модаExpert-модаNC-мода(NC Editor)| PCNCIIИнтерполяторIИнтерпретатор(ISO-процессор)СИСТЕМНЫЙ УРОВЕНЬРС\MS Windos NT32- разрядный режим;NCОС Andronic32-:разрядныйрежииАППАРАТНЫЙ УРОВЕНЬЦПЦПР166P166PCI-BUSПрограммируемыйлогическийконтроллерТерминальный блокСопроцессор реального времениРис.
77. Интеграция ISO-процессора в двухкомпъютерную систему ЧПУтипа PCNC3.1.2. ИнтерполяторЗадачи модуля интерполяции полагаются традиционными, однако в последнее время к интерполятору предъявляют новые требования. В их числе: уменьшение цены дискреты в приводе до 0,5 микрона и меньше; прямой выход на приводы, при котором перемещение в кадре задано в приращениях следящего привода, что необходимо при особо высоких скоростяхподачи; разложение сложных перемещений на линейные комбинации основных перемещений. Подобные требования определяют новую (открытую)архитектуру интерполятора, в которой четко обозначены отдельные блоки.Открытый интерполятор допускает свободное наращивание алгоритмов интерполяции и произвольную их комбинацию при воспроизведениисложных траекторий в многокоординатном пространстве (в том числе и сиспользованием сплайнов).
Ключевым моментом при построении открытого интерполятора является удачный выбор входных форматов. Далее при-•\ 2 8В.Л. Сосонкин, Г/И. Мартинов. Системы числового программного управленияведен фрагмент формального грамматического описания одной из версийвходного формата, в составе которого управляющие структуры (заголовки, HeaderLine) и данные (DataLine).<заголовок> - <старт интерполяции, подача задана явно>|<старт интерполяции, подача задана неявно>|<вызов подпрограммы>|<конец программы>|<комбинация алгоритмов>|<переопределение скорости подачи>|<относительный номер кадра>;<старт интерполяции, подача задана явно> - Н1__Ю1(<идентификаторосей>,<подача в мм/мин>);<старт интерполяции, подача задана неявно> Н1__Ю2(<идентификаторы осей>, <индекс подачи>);<вызов подпрограммы> - HL_iO4(<pa3Mep подпрограммы в байтах>);<конец программы> - HL_End;<комбинация алгоритмов> - Н1__п00(<маска интерполяции>);<маска интерполяции, 16-разрядное спово> - <признак линейной><признак круговой><признак сплайновойхпризнак полиномиальной><признак алгоритма Безье><признак алгоритма Рябенкова><резервные биты>;«^переопределение скорости подачи> - т._п01(<новая подача>);<данные> - <линейная интерполяция>|<сплайновая интерполяция,заданы углы входа и выхода>|<сплайновая интерполяция, задан уголвыхода>|<круговая интерполяция>|<переопределение плоскости>|<переопределение осей>;<линейная интерполяция> - DL_06(<относительные координаты прямой>);<сплайновая интерполяция, заданы углы входа и выхода>DL_07(<oTHocHTenbHbie координаты точек>,<углы входа-выхода>);<сплайновая интерполяция, задан угол выхода> Р1-_08(<относительные координаты точек>,<угол выхода>);<круговая интерполяция> - О1-_11(<относительные координаты дляокружности>);<переопределение плоскости> - DL_16(<KOfl плоскости>);<переопределение осей> - ОЬ_17(<коды осей>).Заголовок HL_iO 1 инициирует старт (начало интерполяции или включение быстрого хода), при этом работают алгоритмы разгона или торможения.Переопределение осей HL_nO 1 производится, если задействованные в текущем кадре оси интерполяции отличаются от ранее установленных.