Сосонкин_Системы_ЧПУ (1087166), страница 26
Текст из файла (страница 26)
Это позволяет запускать подгруппы поочередно в каждом интервале времени.Модель контроллера на уровне функциональных модулей показана нарис.88.Виртуальный контроллер имеет пять составных частей (модулей):В.П. Сосонкин, Г.М. Мартинов.
Системы числового программного управления146• анализатор, читающий IPD-данные из входного буфера и преобразующий эти данные во внутренний формат виртуального контроллера сучетом входных и выходных регистров электроавтоматики;• синхронизатор, поддерживающий механизм назначения квантов времени и генерирующий синхросигналы для всех процессов виртуальногоконтроллера;• исполняемые модули, служащие для отработки команд, поступающих в виртуальный контроллер, таких как опрос датчиков аварийного останова и конечных выключателей, включение/выключение подачи охлаждающей жидкости, зажим/разжим патрона, запуск/останов шпинделя, опрос датчиков температуры и т.д;• регистр, используемый для обмена информацией между системойЧПУ и виртуальным контроллером;• шлюз, предназначенный для отображения информации, передаваемой по CAN-магистрали в регистр.ISO-7 bitИнтерп ретаторIPD-кодIPD-коддля приводовИнтерполятор—isMIIPD-KOfl(H1004)Анализатор IPD-кодаМодульсинхронизацииИсполняемыемодулиРегистрШлюз Can-PicКонтроллер SoftPLCПриводьCANРис.
88. Архитектура виртуального контроллера на уровнефункциональных модулейГлава 3. Задачи управления-) 4 7Взаимодействие модулей осуществляется следующим образом. В результате интерпретации управляющей программы ЧПУ формируется промежуточный IPD-код [21], представляющий собой универсальный бинарный код, не зависящий от используемой платформы. IPD-код содержиттраекторную информацию об относительных перемещениях инструментаи детали, а также информацию о вспомогательных М-командах. Модульинтерполятора читает IPD-код, отделяя те данные, которые относятся ккомандам контроллера.
Выделенная команда направляется соответствующему исполняемому модулю, внутри которого есть все необходимое длявыполнения контроллером команды. Исполняемый модуль представлен ввиртуальном контроллере в виде отдельной задачи.Допускается параллельное выполнение нескольких М-команд. Механизм назначения квантов времени, генерирующий синхросигналы для всехпроцессов контроллера, обеспечивает синхронное выполнение команд.После отработки внутреннего алгоритма контроллер передает интерполятору информацию о своем состоянии.Обмен данными между контроллером и системой ЧПУ осуществляется через разделяемую память, называемую в нашем проекте «регистром».В регистре выделены три блока: специальных маркеров SM (SpecialMarker), входных данных виртуального контроллера; выходных данных контроллера. Маркер SM используется для оповещения о нерегулярных ситуациях, возникающих в системе ЧПУ и контроллере.
В каждом кванте времени блок SM анализируется на наличие в нем признаков сбоев (отказоваппаратуры и механизмов и др.) или признаков особо важных сигналов(при воздействии оператора на внешние органы управления). Например,аварийный останов принудительно прекращает работу всей системы. Информация о поступлении аварийного сигнала (при нажатии на кнопку аварийного останова) распространяется по всем объектам контроллера черезопределенную ячейку в блоке SM.Блоки входных и выходных данных предназначены для организациидвустороннего обмена с объектом управления: контроллер считывает информацию из блока входных данных и записывает ее в блок выходных данных.
Передача информации между регистром и CAN-магистралью осуществляется посредством шлюза. Модель виртуального контроллера на уровнепрограммной реализации рассмотрим в отдельном разделе.3.3.3. Программная реализация виртуального контроллераВиртуальный контроллер представляет собой некоторую систему с DLLинтерфейсом, работающую в отдельном RT-процессе реального времени (RealTime). Система имеет единственный экспортируемый класс CNcMParser, содержащий набор базовых функций управления и общедоступные экземпля-148В.Л. Сосонкин, Г.М. Мартинов.
Системы числового программного управленияры входных и выходных данных. Остальные механизмы системы защищеныот совместного доступа и не контролируются пользователем.Объекты представляют собой экземпляры классов, описывающих электроавтоматику системы ЧПУ. В рамках модульной архитектуры виртуального контроллера каждый отдельный класс отвечает за свой объект управления на станке (рис. 89). Так, класс CNcSpindle отвечает за управлениешпинделем, класс CNcClnt - за управление механизмом подачи смазочноохлаждающей жидкости и т.д.Благодаря модульной архитектуре виртуальный контроллер обладаетвысокой степенью гибкости, позволяющей использовать его на станках различных групп и типов. Конфигурация контроллера для заданного типа станка, в процессе ее инициализации, состоит в создании такого набора связанных объектов, который воспроизводит конфигурацию станка.
Например, если в станке имеются два шпинделя, то будут созданы два объектакласса CNcSpindle.При создании объектов осуществляется их взаимное связывание. Науровне языка C++ процесс связывания состоит в инициализации специальных указателей. Например, для привязывания патрона к шпинделю вVm_CurTool: intState: Int*OnProcessTimeSiceO*C hangeTodOT*ClampO1*UnClampOT*CheckB10l»CheckB20T*CheckB30fGetToollDOT^StartToTimerOf*StopToTimei<)CNcRagControlV m _ R e g D a t a : long**Wrie(address : long, value : long): void*Read(address : long): long«mjjRegCtrlCNcSwaflDelSysCNcTimeiClienlT*<<abstract» OnProcessTimeSlceOCNcSpindleLbrcntSvsV m State : boo IV m State : bool'StartO•stopo*OnProcessTimeSliceQV m State: intCNcChuck•startO•stopo*OnProcessTimeSlice()*OnProcessTimeSlice()"startO•StopO*StopAtAngleO^GetStateO*GetRotSpeedO*GetRotDir()*>GetAngleOCNcSlideLbrcntSysV m _ S t a t e : bool'StartO•stopO*OnProcessTimaSltce()CNcSpindleWm_State: int*»m_CurRotDir:boolUm_CuiRotSpeed : intVm_CurAngle : 'batVmJsClipped : bootV m ParentSphde : CNcSpindle*VnTsActCnt : int**m cuiCode : int*CliplntO"UnC «pinto•CIlpExtO*UnClipEMO*OnProcessTimeSlice()*CNcChuck()CNcTalstockSleeveUrn IsClipped: boott»m_ParentSpfidle: CNcSpindle*»»m_SActCnt : intVm_cuiCode: int*OnProcessTimeSlice()•Clip()*UnClip()*C NcTailstockSleeveO"GelSlataOOnProcessTimeSlicef)•StartO•stopo•startAutoO»*Start_Offrimei()**>Start_OnTimerQPuc.
89. Фрагмент диаграммы классов в нотации UML, реализующих исполняемые модули виртуального контроллераГлава 3. Задачи управления149классе CNcChuck инициализируется указатель m_ParentSpindle. Указатели инициализируются в конструкторах классов, т.е. информация о связяхмежду объектами обновляется только при создании объектов.После создания объектов и при необходимости настройки дополнительных параметров виртуальный контроллер переходит в состояние готовности выполнения команд. Рассмотрим программную реализацию функциональных модулей, входящих в состав виртуального контроллера (рис. 90).Интерполятор вызывает анализатор IPD-кода с частотой 50 Гц, при этоманализатору передается некоторый объем IPD-кода с информацией о командах, которые контроллер должен выполнить.
Анализатор описан отдельным классом CNcMParser.Приемником IPD-кода, поступающего со стороны интерполятора по указателю на массив, служит метод ParserMCommand (long len, BYTE*С NcReg Controlm_RegData: long*РегистрWrite(address : long, value : long): voidRead(address : long): longАнализаторIPD хода#m_pRegCtrlCNcMParserCNcTimerClient]ParseMCommand(len long, PCommand BYTE*): long<abstract» OnProcessTimeSliceO : voidCList(from Logical View)InterpolatorСпиоIHCOK групповыхbvTai.ймеров (100,50,), 20 Hz )Ii +m_Sync#m Timers.t«typedef>>CNcTimerListCNcSync\Sync(): voidAddfNewTimer: CNcTimer*): boolDelete(Timer: CNcTimer*): boolМодульсинхронизации<<typedef»CNcTCIientListУ-#m_Clients \CNcTimerm_EventsCnt: intm_FreqDiv : intrrTFreqDivCntr: intСписокС»,исполняемыхмодулейIOnSyncf): voidAdd(NewClient: CNcTimerClient*): boolDelete(Client: CNcTimerClient*): boolOnTimerEventf): voidCNcTimer(FreqDiv : int)Рис.
90. Диаграмма классов, реализующих основные механизмывиртуального контроллера150В.Л. Сосонкин, Г.М. Мартинов. Системы числового программного управленияPCommand). Объем кода указан в параметре «len». Метод ParserMCommand()интерпретирует IPD код, выделяя из него команды и их параметры. Послевыделения очередной команды разыскивается объект, для которого онапредназначается (шпиндель, патрон, пиноль и т.д.), затем активизируетсякоманда с заданными параметрами в соответствующем объекте. Активизация команды не означает мгновенного ее запуска: выполнение командыначнется в ближайшем кванте времени, выделенном объекту, и продолжится во всех последующих квантах вплоть до завершения реализациикоманды.Модуль синхронизации предназначен для генерации в контроллере необходимого набора внутрисистемных частот, используемых для псевдопараллельного выполнения команд с помощью механизма квантов. Модуль синхронизации представлен классом CNcSync и построен на базе списка программных таймеров m Timers.
В класс CNcSync включеныследующие методы:• Sync() вызывается с каждым тактом опорной частоты и в свою очередь периодически вызывает методы OnSync каждого таймера, осуществляющего деление опорной частоты.• Add(CNcTimer *NewTimer), предназначенный для добавления нового таймера в список. Каждый таймер содержит две переменные: времясчета и счетчик времени. Эти переменные инициализируются при создании таймера, и таймер подключается к синхронизатору при помощи метода CNcSync: :Add().Синхросигнал опорной частоты передается с помощью методаCNcSync::Sync() модуля синхронизации (рис.