SPINDL - Шпиндель
Отображение команды
Как команда отображается в списке команд CLData:
SPINDL ON(71)|OFF(72)|ORIENT(246), NO n, K k, MODE RPM(0)|RANGE(1)|CSS(2) {, SPEED c}
Команда SPINDL передаёт параметры управления шпинделем. Команда SPINDL используется для задания частоты вращения шпинделя или диапазона частот, скорости резания и т. д.
Доступ из sppx
Обработчик: program Spindl
Массив cld читается по индексу или по имени - в sppx по типизированному короткому имени (например, cld.X), в .NET по тому же имени как строковому ключу (например, cld["X"]).
| Параметр | Массив CLD | Имя CLD | Описание |
|---|---|---|---|
| ON(71) OFF(72) ORIENT(246) |
CLD[1] | CLD.OnOff | Тип команды: ON(71) - включение вращения шпинделя, OFF(72) - выключение вращения шпинделя, ORIENT(246) - ориентированный останов шпинделя. |
| n | CLD[2] | CLD.NO | Частота вращения, угол поворота шпинделя или максимальная частота вращения шпинделя в режиме CSS. |
| k | CLD[3] | CLD.K | Диапазон частот вращения. |
| RPM(0) RANGE(1) CSS(2) |
CLD[4] | CLD.Mode | Режим задания частоты вращения: RPM(0) - обороты в минуту, RANGE(1) - диапазон частот вращения шпинделя, CSS(2) - режим постоянной скорости резания. |
| c | CLD[5] | CLD.CSS | Значение постоянной скорости резания для режима CSS. |
Для создания ISO-постпроцессора с помощью шаблонов используйте значения ISO.M, которые соответствуют параметрам SPINDL.
| Параметр CLD | Значение ISO |
|---|---|
| CLD[1] = 71 | ISO.M = 3 |
| CLD[1] = 72 | ISO.M = 5 |
Пример (из постпроцессора Fanuc (30i)_Mill):
program Spindl
OutBlock
case cld[1] of
71: begin ! Включение
if cld[4]=2 then begin ! CSS
GSpindl = 96
S = abs(cld[5])
OutBlock
if cld[5] > 0 then SpDir = 3
else SpDir = 4 ! M3/M4 по/против часовой стрелки
SpRPM = abs(cld[2])
end else begin ! RPM
if cld[2] > 0 then Msp = 3
else Msp = 4 ! M3/M4 по/против часовой стрелки
if ((SpDir=3) or (SpDir=4)) and (SpDir<>Msp) then ! Реверс шпинделя
Output "M5"
GSpindl = 97
S = abs(cld[2]); S@=SpRPM
Msp@ = SpDir
SpDir = Msp
SpRPM = abs(cld[2])
OutBlock
end
end
72: begin ! Выключение
Msp = 5
S=0; S@=S
SpRPM = 0
SpDir = 5 ! M3/M4/M5
OutBlock ! Msp = 5;; OutBlock; Msp=1; OutBlock
end
246: begin ! M19 ORIENT
OutBlock
M = 19; M@ = MaxReal
OutBlock
end
end
end
Доступ по имени параметра (помощники)
Параметры, доступные через оператор cmd (одинаково в sppx и .NET):
| Имя | Помощник | Описание |
|---|---|---|
Action |
cmd.Int["Action"] |
Тип команды (0 - включение, 1 - выключение, 2 - ориентация). |
RotationDirection |
cmd.Int["RotationDirection"] |
Направление вращения. |
SpeedMode |
cmd.Int["SpeedMode"] |
0 - RPM, 1 - RANGE, 2 - CSS. |
Value |
cmd.Flt["Value"] |
Частота вращения / угол ориентации / максимальные обороты в минуту. |
CSSValue |
cmd.Flt["CSSValue"] |
Значение постоянной скорости резания. |
RangeValue |
cmd.Int["RangeValue"] |
Диапазон коробки передач. |
SpindleID |
cmd.Str["SpindleID"] |
Идентификатор шпинделя. |
Доступ из .NET
Обработчик:
public override void OnSpindle(ICLDSpindleCommand cmd, CLDArray cld)
Наследование: ICLDSpindleCommand : ICLDCommand.
Читайте параметры из строго типизированного объекта cmd (рекомендуется); также доступны «сырой» массив cld[i] (те же индексы, что и в sppx) и именованные помощники cmd[...]. В таблице перечислены члены команды, включая унаследованные от базовых интерфейсов; общие члены ICLDCommand (навигация, CLD, CLDFile, TechOperation, ...) описаны в разделе Модель доступа к CLData.
| Свойство | Тип | Описание |
|---|---|---|
cmd.SpindleID |
string | Текстовый идентификатор шпинделя, для которого эта команда задаёт параметры. |
cmd.Action |
CLDSpindleAction |
Действие для шпинделя (On, Off или Orient). |
cmd.IsOncmd.IsOffcmd.IsOrient |
bool | True, если это команда включения / выключения / углового ориентирования. |
cmd.SpeedMode |
CLDSpindleSpeedMode |
Режим вращения шпинделя (RPM или CSS). |
cmd.IsRPMcmd.IsCSS |
bool | True, если режим - RPM (об/мин, G97) / CSS (постоянная скорость резания, G96). |
cmd.RotationDir |
CLDRotationDir |
Направление вращения шпинделя (по часовой стрелке или против). |
cmd.IsClockwiseDir |
bool | True, если направление вращения - по часовой стрелке (CW). |
cmd.RPMValue |
double | Обороты в минуту (максимальные, если активен режим CSS). |
cmd.CSSValue |
double | Значение линейной (поверхностной) скорости для шпинделя. |
cmd.GearRange |
int | Диапазон коробки передач шпинделя. |
Пример (из постпроцессора Sinumerik 840D mill):
public override void OnSpindle(ICLDSpindleCommand cmd, CLDArray cld)
{
if (cmd.IsOn)
{
switch (cmd.SpeedMode)
{
case CLDSpindleSpeedMode.RPM:
nc.S.Show(cld[2]);
nc.Msp.Show(cmd.IsClockwiseDir ? 3 : 4);
break;
case CLDSpindleSpeedMode.CSS:
throw new Exception("CSS mode not realized");
}
}
else if (cmd.IsOff)
nc.Msp.Show(5);
}