PPFUN TECHINFO(58) - Команда технологических параметров
Команда технологических параметров PPFUN TECHINFO(58) передаёт дополнительную технологическую информацию об операции CAM-системы. Команда PPFUN TECHINFO(58) генерируется в начале списка технологических команд операции.
Параметры
| Массив CLD | Параметр | Описание переменной | Группа |
|---|---|---|---|
| 1 | SubCode | 58 (TechInfo) | |
| 2 | 2 | Версия CLData | |
| 3 | 3 | Минимальное значение координаты X | Габарит траектории |
| 4 | 4 | Минимальное значение координаты Y | |
| 5 | 5 | Минимальное значение координаты Z | |
| 6 | 6 | Максимальное значение координаты X | |
| 7 | 7 | Максимальное значение координаты Y | |
| 8 | 8 | Максимальное значение координаты Z | |
| 9 | 9 | Уровень безопасной плоскости (уровень ускоренного перемещения для электроэрозионных операций) | Уровни |
| 10 | 10 | Верхний уровень обработки | |
| 11 | 11 | Нижний уровень обработки | |
| 12 | 12 | Припуск | Заготовка |
| 13 | 13 | Минимальное значение координаты X | |
| 14 | 14 | Минимальное значение координаты Y | |
| 15 | 15 | Минимальное значение координаты Z | |
| 16 | 16 | Максимальное значение координаты X | |
| 17 | 17 | Максимальное значение координаты Y | |
| 18 | 18 | Максимальное значение координаты Z | |
| 19 | 19 | Допуск CLData (число десятичных знаков) | Допуск |
| 20 | 20 | Единицы измерения: 0 – мм; 1 – дюймы. | |
| 21 | 21 | Минимальная длина дуги | |
| 22 | 22 | Отклонение от заготовки | |
| 23 | 23 | Отклонение в заготовку | |
| 24 | 24 | Припуск операции | |
| 25 | 25 | Тип инструмента: 0 – цилиндрическая 1 – сферическая 2 – тороидальная 3 – двухрадиусная 4 – ограниченная двухрадиусная 5 – коническая фреза 6 – ограниченная коническая фреза 7 – гравёр 8 – сверло 9 – составной инструмент 10 – фреза с отрицательным радиусом 11 – резец 12 – метчик 13 – центровочное сверло 14 – зенковка 15 – цековка 16 – развёртка 17 – резьбовое сверло 100 – наружный резец 101 – расточной резец 102 – наружный резьбовой резец 103 – внутренний резьбовой резец 104 – наружный канавочный резец 105 – внутренний канавочный резец 106 – торцовый канавочный резец | Инструмент |
| 26 | 26 | Номер инструмента | |
| 27 | 27 | Диаметр инструмента (диаметр проволоки для электроэрозионных операций) | |
| 28 | 28 | Длина рабочей части | |
| 29 | 29 | Угол рабочей части (угол конуса в радианах) | |
| 30 | 30 | Радиус скругления | |
| 31 | 31 | Номер коррекции на длину. Устанавливается в 0, если коррекция на длину выключена | |
| 32 | 32 | Номер коррекции на радиус. Устанавливается в 0, если коррекция на радиус выключена | |
| 33 | 33 | Значение коррекции на длину | |
| 34 | 34 | Значение коррекции на радиус | |
| 35 | 35 | Точка привязки осевого инструмента: 0 – Центр, 1 – Пользовательская, 2 – Торец. Точка привязки токарного инструмента: 0 – Слева, 1 – Справа, 2 – Сверху, 3 – Снизу, 4 – Сверху слева, 5 – Сверху справа, 6 – Снизу слева, 7 – Снизу справа, 8 – Центр, 9 – Пользовательская. | |
| 36 | 36 | Частота вращения шпинделя (об/мин) | Скорость |
| 37 | 37 | Ускоренная подача (мм/мин или дюйм/мин) | |
| 38 | 38 | Рабочая подача | |
| 39 | 39 | Подача врезания | |
| 40 | 40 | Подача подхода | |
| 41 | 41 | Подача отвода | |
| 42 | 42 | Следующая подача | |
| 43 | 43 | Подача возврата | |
| 44 | 44 | Длина траектории | Свойства траектории |
| 45 | 45 | Время обработки операции в минутах | |
| 46 | 46 | Общее время техпроцесса в минутах | |
| 47 | 47 | Верхний уровень направляющей электроэрозионного станка | Уровни |
| 48 | 48 | Нижний уровень направляющей электроэрозионного станка | |
| 49 | 49 | Рабочее время операции в минутах | Свойства траектории |
| 51 | 51 | Ось инструмента: 1 – X, 2 – Y, 3 – Z. (Точение – 2, Токарное сверление – 1, Фрезерование – 3) | |
| 52 | 52 | Координата X | Точка смены инструмента |
| 53 | 53 | Координата Y | |
| 54 | 54 | Координата Z | |
| 55 | 55 | Координата X | Опорная точка |
| 56 | 56 | Координата Y | |
| 57 | 57 | Координата Z | |
| 58 | 58 | Номер активного сопла: 0 – СОЖ выключена, 1 – полив, 2 – туман, 3 – через инструмент. | |
| 60 | 60 | Технологическая группа операции: 0 – не задана, 1 – фрезерование, 2 – точение, 3 – вспомогательная, 4 – электроэрозионная. | |
| 61 | 61 | 0 – команда PPFUN не активирована 1 – команда PPFUN активирована | |
| 62 | 62 | Кинематика робота: 0 – положение 3-го сустава не зависит от положения 2-го сустава 1 – 2-й и 3-й суставы связаны параллелограммным механизмом | Кинематика робота |
| 63 | 63 | Номер детали, явно заданный пользователем в параметрах детали CAM-системы | Деталь |
| 64 | 64 | Код вектора направления смещения вершины токарного инструмента (0-8): 0: X=0, Y=0; 1: X=+1, Y=+1; 2: X=-1, Y=+1; 3: X=-1, Y=-1; 4: X=+1, Y=-1; 5: X=+1, Y=0; 6: X=0, Y=+1; 7: X=-1, Y=0; 8: X=0, Y=-1; | Код вершины инструмента |
| 65 | 65 | Номер системы координат заготовки (G54, G55, G54.2 и т. д.) операции | Номер системы координат |
| 80 | 80 | Шаг вдоль оси инструмента для многослойной обработки (только для операции 2D-контур) | Слои |
| 81 | 81 | Припуск чистового слоя вдоль оси инструмента (только для операции 2D-контур) | Слои |
Параметры, доступные через оператор cmd
| Тип | Описание | Описание вложенного поля |
|---|---|---|
| TCLDPPFun: ComplexType | Команда, определяющая технологические параметры операции | |
| PPFun: Array, Key="RecordID" | cmd.Ptr["PPFun"] - массив структур разных типов для хранения параметров команды PPFun | |
| TPPFunTechInfoParameters: ComplexType | cmd.Ptr["PPFun"].Item[1] или cmd.Ptr["PPFun(TechInfo)"] - отдельный элемент массива PPFun. Содержит информацию о технологических параметрах операции. Доступ к элементам массива возможен как по индексу, так и по ключевому полю RecordID. Для команды определения технологических параметров операции всегда имеет значение "TechInfo". | |
| RecordID: String | cmd.Str["PPFun(TechInfo).RecordID"] - идентификатор типа постпроцессорной функции. В данном случае всегда имеет значение "TechInfo". | |
| RecordCode: Integer | cmd.Int["PPFun(TechInfo).RecordCode"] - код, идентифицирующий тип постпроцессорной функции. В данном случае всегда имеет значение "58". | |
| Operation: Array | cmd.Ptr["PPFun(TechInfo).Operation"] - почти полный список параметров технологической операции. Дочерними элементами являются разнообразные параметры операции: тип операции, её имя, группа, свойства инструмента, припуски, допуски расчёта, методы подхода и отхода, уровни и шаг обработки и т. д. Конкретный набор параметров зависит от типа операции. Тип операции можно получить как cmd.Ptr["PPFun(TechInfo).Operation(1)"].Name. | |
| SetupStage: ComplexType | cmd.Ptr["PPFun(TechInfo).SetupStage"] - информация об установе, в котором находится операция. | |
| Index: Integer | Индекс установа в списке установов проекта CAM-системы | |
| Name: String | Имя группы установа в проекте CAM-системы | |
| Tool: ComplexType | cmd.Ptr["PPFun(TechInfo).Tool"] - параметры, относящиеся к инструменту, используемому в технологической операции. | |
| ID: Integer | cmd.Int["PPFun(TechInfo).Tool.ID"] - идентификатор (номер) инструмента | |
| HolderID: Integer | cmd.Int["PPFun(TechInfo).Tool.HolderID"] - идентификатор (номер) державки инструмента | |
| RevolverID: String | cmd.Str["PPFun(TechInfo).Tool.RevolverID"] - строковый идентификатор револьверной головки. | |
| Workpiece: ComplexType | cmd.Ptr["PPFun(TechInfo).Workpiece"] - параметры, относящиеся к заготовке, используемой в технологической операции. | |
| HolderID: String | cmd.Str["PPFun(TechInfo).Workpiece.HolderID"] - строковый идентификатор державки заготовки. | |
| Part: ComplexType | cmd.Ptr["PPFun(TechInfo).Part"] - информация о детали, обрабатываемой этой операцией | |
| Index: Integer | Индекс детали в списке деталей проекта CAM-системы | |
| Number: Integer | Номер детали, явно заданный пользователем в параметрах детали CAM-системы | |
| Name: String | Имя детали (имя группы), заданное в CAM-системе |
Ниже приведён пример доступа к свойствам операции через оператор cmd.
program PPFun
if cld[1]=58 then begin ! TechInfo
call AnalysePPFun
end
end
sub AnalysePPFun
OpType: String
OpGroup: Integer
! Строковое имя типа операции: TSTRoughingWaterlineOp, TST2DContouringOp, TSTDrillOp, LatheRoughOp...
OpType = cmd.Ptr["PPFun(TechInfo).Operation(1)"].Name
! OperationGroup:
! 1 - фрезерование
! 2 - точение
! 3 - вспомогательная
! 4 - проволочная электроэрозионная
OpGroup = cmd.Int["PPFun(TechInfo).Operation(1).OperationGroup"]
Output "; Operation type = " + OpType
Output "; Operation comment = " + cmd.Str["PPFun(TechInfo).Operation(1).Comment"]
if OpGroup=1 then begin ! фрезерование
Output "; Tool overhang = " + Str(cmd.Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).AxialOverhang"])
if OpType="TSTRoughingWaterlineOp" then begin
Output "; Axial stock = " + Str(cmd.Flt["PPFun(TechInfo).Operation(1).Stocks.Axial"])
Output "; Radial stock = " + Str(cmd.Flt["PPFun(TechInfo).Operation(1).Stocks.Radial"])
end
end else if OpGroup=2 then begin ! точение
Output "; Tool X overhang = " + Str(cmd.Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Overhang.Value.X"])
Output "; Tool Y overhang = " + Str(cmd.Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Overhang.Value.Y"])
Output "; Tool Z overhang = " + Str(cmd.Flt["PPFun(TechInfo).Operation(1).ToolSection.Tools(1).Overhang.Value.Z"])
Output "; Axial stock = " + Str(cmd.Flt["PPFun(TechInfo).Operation(1).LatheStock.AxialValue"])
Output "; Radial stock = " + Str(cmd.Flt["PPFun(TechInfo).Operation(1).LatheStock.RadialValue"])
end
subend
Доступ из .NET
Помимо базового OnPPFun, этот подкод вызывает специальный обработчик OnStartTechOperation:
public override void OnStartTechOperation(ICLDTechOperation op, ICLDPPFunCommand cmd, CLDArray cld)
Общая модель .NET (члены, индексация 1-based и 0-based) описана в разделе Постпроцессорная функция (PPFUN).
Чтение XML-свойств операции по имени
Для TECHINFO/ENDTECHINFO, помимо фиксированных параметров выше, команда обеспечивает доступ к XML-свойствам операции по имени через помощники cmd:
Предупреждение. Это прямое чтение внутренних структур данных CAM-системы. Их расположение и именование не гарантированно сохраняются между версиями. Используйте это только как крайнее средство, когда нужное значение не предоставляется через публичный API CLData выше. По возможности предпочитайте документированные параметры и типизированные члены.
Индекс элемента массива различается между средами — 1-based в sppx, 0-based в .NET:
- sppx:
cmd.Ptr["PPFun(TechInfo).Operation(1)"] - .NET:
cmd.Ptr["PPFun(TechInfo).Operation(0)"]
Пример (из постпроцессора Heidenhain (iTNC530)_Mill — sppx, 1-based индекс элемента):
! глубоко вложенное свойство операции, доступное через команду TechInfo операции
MinDepth = cmd.Flt["PPFun(TechInfo).Operation(1).ChipBreaking.DepthDegression.MinStepPercent"]
Чтобы узнать точное имя свойства: откройте инспектор свойств операции, найдите свойство, нажмите кнопку ... справа в его строке и выберите «Скопировать имя свойства в буфер обмена»; либо изучите XML операции. Правила именования и полная модель доступа описаны в разделе Использование XML-свойств из кода.
Пример — OnStartTechOperation (из постпроцессора Heidenhain_Mill_iTNC530_DN):
public override void OnStartTechOperation(ICLDTechOperation op, ICLDPPFunCommand cmd, CLDArray cld)
{
nc.WriteLine();
nc.OutText("; " + Transliterate(op.Comment));
// 17 TOOL CALL 1 Z S159 DL+0 DR+0
// 18 TOOL DEF 2
// 19 L Z+0 FMAX M91
if (op.Tool.Command!=null && op.Tool.Command.ToolChanged) { // если у операции есть команда загрузки инструмента
double s = 0;
if (op.SpindleCommand!=null)
s = Abs(op.SpindleCommand.RPMValue);
nc.OutText($"TOOL CALL {op.Tool.Number} {GetToolPlaneName(op.Tool.Command)} {nc.S.ToString(s)} DL+0 DR+0");
int nextTool = FindNextOpToolNumber(op);
if (nextTool>0)
nc.OutText($"TOOL DEF {nextTool}");
if (firstToolNumber<0)
firstToolNumber = op.Tool.Number;
nc.OutText("L Z+0 FMAX M91");
}
}