CUTCOM - Компенсация инструмента
Отображение команды
Как команда отображается в списке команд CLData:
CUTCOM ON(71)|OFF(72), LENGTH(9)|R(23) lr, X x, Y y, Z z,
XY n, YZ m, XZ k, RIGHT(24)|LEFT(8)
Команда CUTCOM используется для переключения режима компенсации на длину или радиус инструмента.
Доступ из sppx
Обработчик: program CutCom
| Параметр | Массив CLD | Имя CLD | Описание |
|---|---|---|---|
| ON(71) OFF(72) |
CLD[1] | CLD.OnOff | Тип команды: 71 - включение компенсации, 72 - выключение компенсации. |
| LENGTH(9) R(23) |
CLD[2] | CLD.Length | Вид компенсации: 9 - компенсация на длину инструмента, 23 - компенсация на радиус инструмента. |
| LR | CLD[3] | CLD.LR | Значение компенсации на длину или радиус инструмента. |
| x y z |
CLD[4] CLD[5] CLD[6] |
CLD.X CLD.Y CLD.Z |
Компенсация по осям. |
| n m k |
CLD[7] CLD[8] CLD[9] |
CLD.N CLD.M CLD.K |
Значения компенсации в плоскостях. |
| RIGHT(24) LEFT(8) |
CLD[10] | CLD.RGT | Направление компенсации на радиус инструмента: 24 - компенсация направо, 8 - компенсация налево. |
Для создания ISO-постпроцессора с помощью шаблонов используйте значения ISO.G, которые соответствуют параметрам CUTCOM:
| Параметр CLD | Значение ISO |
|---|---|
| CLD[1] = 72, CLD[2] = 9 | ISO.G = 49 |
| CLD[1] = 71, CLD[2] = 9 | ISO.G = 43 |
| CLD[1] = 72, CLD[2] = 23 | ISO.G = 40 |
| CLD[1] = 71, CLD[2] = 23, CLD[10] = 24 | ISO.G = 42 |
| CLD[1] = 71, CLD[2] = 23, CLD[10] = 8 | ISO.G = 41 |
Пример (из постпроцессора Fanuc (30i)_Mill):
program CutCom
if cld[2]=9 then begin ! LENGTH
X = MaxReal; X@ = X
Y = MaxReal; Y@ = Y
Z = MaxReal; Z@ = Z
if cld[1]=71 then begin ! Включение
CoordSys = WCSNumber
OutBlock
if (NeedKorDl=0) and (OperationIsLathe=0) and
((WasLoadTool>0) or (H<>cld[3]))
then begin
NeedKorDl = 43
H = cld[3]; H@ = H
end
OutBlock
end else begin ! Выключение
KORDL = 49; !KORDL@ = MaxReal
H = 0; H@ = H
OutBlock
call SwitchOffLocalCS
end
end else if cld[2]=23 then begin ! RADIUS
if cld[1]=72 then
KorEcv = 40
else begin
if GFeed<>GFeed@ then OutBlock
if cld[10]=24 then KorEcv=42 else KorEcv=41
D = cld[3]
D@ = MaxReal
end
end else begin
end
end
Доступ из .NET
Обработчики:
public override void OnCutCom(ICLDCutComCommand cmd, CLDArray cld)
public override void OnLengthCompensation(ICLDCutComCommand cmd, CLDArray cld) // компенсация LENGTH(9)
public override void OnRadiusCompensation(ICLDCutComCommand cmd, CLDArray cld) // компенсация RADIUS(23)
Наследование: ICLDCutComCommand : ICLDCommand.
Читайте параметры из строго типизированного объекта cmd (рекомендуется); также доступны «сырой» массив cld[i] (те же индексы, что и в sppx) и именованные помощники cmd["..."]. В таблице перечислены члены команды, включая унаследованные от базовых интерфейсов; общие члены ICLDCommand (навигация, CLD, CLDFile, TechOperation, ...) описаны в разделе Модель доступа к CLData.
| Член | Тип | Описание |
|---|---|---|
cmd.IsOn |
bool |
Возвращает «True», если это команда включения компенсации, иначе возвращает «False». |
cmd.IsOff |
bool |
Возвращает «True», если это команда выключения компенсации, иначе возвращает «False». |
cmd.IsLength |
bool |
Возвращает «True», если это команда переключения компенсации LENGTH, иначе возвращает «False». |
cmd.IsRadius |
bool |
Возвращает «True», если это команда переключения компенсации RADIUS, иначе возвращает «False». |
cmd.IsRightDirection |
bool |
Определяет направление компенсации. «True» означает правое направление, «False» - левое. |
cmd.IsLeftDirection |
bool |
Определяет направление компенсации. «True» означает левое направление, «False» - правое. |
cmd.CorrectorNumber |
int |
Номер корректора инструмента в таблице корректоров станка. |
Пример - OnLengthCompensation (из постпроцессора Fanuc (30i)_Mill_DN):
public override void OnLengthCompensation(ICLDCutComCommand cmd, CLDArray cld)
{
if (cmd.IsOn) {
nc.GLCompens.Reset(43);
nc.HLCompens.Reset(cmd.CorrectorNumber);
} else {
nc.GLCompens.Show(49);
nc.HLCompens.Hide(0);
nc.Block.Out();
}
}
Пример - OnRadiusCompensation (из постпроцессора Fanuc (30i)_Mill_DN):
public override void OnRadiusCompensation(ICLDCutComCommand cmd, CLDArray cld)
{
if (cmd.IsOn) {
if (cmd.IsLeftDirection)
nc.GRCompens.Show(41);
else
nc.GRCompens.Show(42);
nc.DRCompens.Show(cmd.CorrectorNumber);
} else {
nc.GRCompens.Show(40);
}
}