AXESBRAKE - Управление тормозами осей станка
Отображение команды
Как команда отображается в списке команд CLData:
AXESBRAKE COUNT N, Axis1Pos(n1) State1, Axis2Pos(n2) State2, ...,
AxisNPos(nN) StateN
Команда AXESBRAKE используется для включения и выключения тормозов осей, если на станке есть тормоза осей. Чаще всего эта команда используется для включения/выключения тормоза шпинделя (ось C) на токарно-фрезерных станках при переключении с точения на фрезерование и обратно. При токарной обработке шпиндель вращается на высокой скорости, а при фрезеровании шпиндель фиксируется тормозом в определённом угловом положении. Использование тормозов позволяет увеличить нагрузку на шпиндель и снизить износ механизмов точного позиционирования шпинделя. Также тормоза используются на фрезерных станках на поворотных осях для выполнения обработки с делением (индексацией).
Доступ из sppx
Обработчик: program AxesBrake
| Параметр | Массив CLD | Описание |
|---|---|---|
| N | CLD[1] | Число осей, затрагиваемых этой командой. |
| n1 | CLD[2] | Индекс оси с именем Axis1Pos в списке координат. |
| State1 | CLD[3] | Новое состояние оси Axis1Pos: ON(71) - тормоз включён, OFF(72) - тормоз выключен. |
| n2 | CLD[4] | Индекс оси Axis2Pos в списке координат. |
| State2 | CLD[5] | Новое состояние оси Axis2Pos: ON(71) - тормоз включён, OFF(72) - тормоз выключен. |
| … | … | … |
| nN | CLD[2*N] | Индекс оси AxisNPos в списке координат. |
| StateN | CLD[2*N+1] | Новое состояние оси AxisNPos: ON(71) - тормоз включён, OFF(72) - тормоз выключен. |
Параметры, доступные через оператор cmd
| TCLDAxesBrake: ComplexType | Команда переключения состояний тормозов осей. |
|---|---|
| Axes: Array, Key="AxisID" | cmd.Ptr["Axes"] - Массив структур типа AxisBrake. Таким образом, одна команда может менять состояние тормоза сразу нескольких осей. |
| AxisBrake: ComplexType | cmd.Ptr["Axes"].Item[Index] или cmd.Ptr["Axes(AxisName)"] - Отдельный элемент массива Axes. Содержит состояние тормоза одной оси станка. Доступ к элементам массива возможен как по индексу, так и по ключевому полю. Здесь AxisName — значение ключевого поля, которое должно совпадать со значением поля AxisID. |
| AxisID: String | cmd.Str["Axes(AxisName).AxisID"] - Идентификатор оси станка, для которой задано новое состояние тормоза. Определяется схемой станка. |
| BrakeState: Integer | cmd.Int["Axes(AxisName).BrakeState"] - новое состояние тормоза оси станка: 0 - выключен, 1 - включён. |
Синтаксис команды допускает изменение состояний тормозов нескольких осей одновременно. Список координат, имена которых фигурируют в этой команде, определяется схемой станка CAM-системы.
Ниже приведены два простых примера обработчиков-программ для этой команды.
program AxesBrake
Index: Integer ! Счётчик цикла
AxisNumber: Integer ! Индекс оси в списке осей станка
BrakeState: Integer ! Новое состояние тормоза оси
Index = 1
while Index<=CLD[1] do begin
AxisNumber = CLD[2*Index]
BrakeState = CLD[2*Index+1]
case AxisNumber of
4: begin ! Индекс AxisAPos(A) в списке осей станка
if BrakeState=71 then Output "M680" ! Включить тормоз оси A
else Output "M690" ! Выключить тормоз оси A
end
6: begin ! Индекс AxisAPos(A) в списке осей станка
if BrakeState=71 then Output "M68" ! Включить тормоз оси C
else Output "M69" ! Выключить тормоз оси C
end
end
Index = Index + 1
end
end
Ещё один пример с использованием оператора cmd.
program AxesBrake
if cmd.Ptr["Axes(AxisAPos)"]<>0 then begin ! Ось A присутствует в этой команде
if cmd.Int["Axes(AxisAPos).BrakeState"]=1 then Output "M680" ! Включить тормоз оси A
else Output "M690" ! Выключить тормоз оси A
end
if cmd.Ptr["Axes(AxisCPos)"]<>0 then begin ! Ось C присутствует в этой команде
if cmd.Int["Axes(AxisCPos).BrakeState"]=1 then Output "M68" ! Включить тормоз оси C
else Output "M69" ! Выключить тормоз оси C
end
end
Доступ из .NET
Обработчик:
public override void OnAxesBrake(ICLDAxesBrakeCommand cmd, CLDArray cld)
Наследование: ICLDAxesBrakeCommand : ICLDCommand.
Читайте параметры из строго типизированного объекта cmd (рекомендуется); доступны также «сырой» массив cld[i] (те же индексы, что и в sppx) и именованные обёртки cmd["..."]. В таблице перечислены члены команды, включая унаследованные от базовых интерфейсов; общие члены ICLDCommand (навигация, CLD, CLDFile, TechOperation, ...) описаны в разделе Модель доступа к CLData.
| Член | Тип | Описание |
|---|---|---|
cmd.AxesCount |
int |
Число осей в списке "Axis". |
cmd.Axis |
ICLDBrakeAxesIndexer |
Список состояний тормозов осей Axis[i] или Axis["AxisCPos"]. |
cmd.Axes |
IEnumerable |
Объект-перечислитель осей тормозов, позволяющий использовать удобный синтаксис foreach. |
cmd.HasAxis(...) |
bool |
Возвращает "True", если список "Axis" содержит ось с указанным текстовым ID. Иначе возвращает "False". |
Пример - OnAxesBrake (из постпроцессора Fanuc (30i)_Mill_DN):
public override void OnAxesBrake(ICLDAxesBrakeCommand cmd, CLDArray cld)
{
foreach(CLDAxisBrake ax in cmd.Axes) {
if (ax.IsA) {
if (ax.StateIsOn)
nc.MABrake.v = 593;
else
nc.MABrake.v = 592;
} else if (ax.IsB) {
if (ax.StateIsOn)
nc.MBBrake.v = 595;
else
nc.MBBrake.v = 594;
} else if (ax.IsC) {
if (ax.StateIsOn)
nc.MCBrake.v = 597;
else
nc.MCBrake.v = 596;
}
}
if (nc.MABrake.Changed || nc.MBBrake.Changed || nc.MCBrake.Changed)
nc.Block.Out();
}