FROM - Начальная точка
Отображение команды
Как команда отображается в списке команд CLData:
FROM COUNT 5, MACHINE, X 0, Y 0, Z 254, A 0, C 0, GEOM X 10, Y 0, Z 194, NX 0, NY 0, NZ 1, NW 0, MSF 0, Time 0
Команда FROM задаёт координаты исходной точки. Обычно команда FROM вызывается только один раз, в начале обработки, и координаты первого перемещения, как правило, совпадают с координатами команды FROM. Если требуется избежать вывода исходной точки в управляющую программу, используйте команду FROM для инициализации значений регистров без их вывода в код управляющей программы. Это предотвращает вывод команд перемещения, координаты которых совпадают с координатами команды FROM.
Доступ из sppx
Обработчик: program From
| Параметр | Массив CLD | Имя CLD | Описание |
|---|---|---|---|
| X Y Z |
CLD[1] CLD[2] CLD[3] |
CLD.X CLD.Y CLD.Z |
Пространственные координаты исходной точки кончика инструмента относительно активной системы координат заготовки |
| NX NY NZ NW |
CLD[4] CLD[5] CLD[6] CLD[7] |
CLD.NX CLD.NY CLD.NZ CLD.NW |
Ориентация системы координат инструмента в исходной точке относительно активной системы координат заготовки. Способ задания ориентации зависит от настройки в схеме станка. Это могут быть углы Эйлера в различных соглашениях, вектор нормали инструмента, кватернион или повёрнутый вектор. |
| MSF | CLD[8] | CLD.MSF | Флаги состояния станка (флипы). Актуально для роботов и станков, которые могут иметь несколько конфигураций физических осей для одной и той же пространственной позиции. См. описание в следующей таблице. |
| Time | CLD[9] | CLD.Time | Время перемещения. |
| AxesCount | CLD[10] | CLD.AxesCount | Количество физических координат станка, задействованных в этой команде. |
| r1 | CLD[11] | Индекс оси с именем Axis1Pos в списке координат. | |
| Val1 | CLD[12] | Значение координаты станка Axis1Pos. | |
| r2 | CLD[13] | Индекс оси с именем Axis2Pos в списке координат. | |
| Val2 | CLD[14] | Значение координаты станка Axis2Pos. | |
| … | … | … | |
| rN | CLD[2*N+9] | Индекс оси с именем AxisNPos в списке координат. | |
| ValN | CLD[2*N+10] | Значение координаты станка AxisNPos. |
Параметры, доступные через оператор cmd
| TCLDFrom: ComplexType | Команда координат исходной точки |
|---|---|
| Axes: Array, Key="AxisID" | cmd.Ptr["Axes"] - массив структур типа Axis. Одна команда может включать перемещение по нескольким осям, положение каждой из которых хранится в этом массиве. |
| Axis: ComplexType | cmd.Ptr["Axes"].Item[Index] или cmd.Ptr["Axes(AxisName)"] - отдельный элемент массива Axes. Содержит информацию о перемещении по одной оси станка. Доступ к элементам массива возможен как по индексу, так и по ключевому полю. Здесь AxisName - значение ключевого поля, которое должно совпадать со значением поля AxisID. |
| AxisID: String | cmd.Str["Axes(AxisName).AxisID"] - идентификатор оси станка, для которой задана новая позиция. Определяется схемой станка. |
| Value: Double | cmd.Flt["Axes(AxisName).Value"] - новая позиция оси станка, в которую она перемещается. |
| Pos5D: ComplexType | cmd.Ptr["Pos5D"] - структура, содержащая координаты, определяющие конечное положение инструмента в пространстве. Определяет не только положение настроечной точки инструмента (поля X, Y и Z - декартовы координаты), но и ориентацию инструмента относительно текущей системы координат (поля NX, NY, NZ и NW). В зависимости от конфигурации системы (заданной в схеме станка) ориентация инструмента может задаваться: вектором нормали n = (NX, NY, NZ); пространственными углами поворота вокруг осей координат - углами Эйлера (порядок поворотов также задаётся настройками) A = NX, B = NY, C = NZ; кватернионом q = (NX, NY, NZ, NW). |
| X: Double | cmd.Flt["Pos5D.X"] - декартова координата X точки кончика инструмента. |
| Y: Double | cmd.Flt["Pos5D.Y"] - декартова координата Y точки кончика инструмента. |
| Z: Double | cmd.Flt["Pos5D.Z"] - декартова координата Z точки кончика инструмента. |
| NX: Double | cmd.Flt["Pos5D.NX"] - в зависимости от конфигурации системы может быть компонентой NX вектора нормали инструмента, углом поворота вокруг одной из осей координат или коэффициентом кватерниона. |
| NY: Double | cmd.Flt["Pos5D.NY"] - в зависимости от конфигурации системы может быть компонентой NY вектора нормали инструмента, углом поворота вокруг одной из осей координат или коэффициентом кватерниона. |
| NZ: Double | cmd.Flt["Pos5D.NZ"] - в зависимости от конфигурации системы может быть компонентой NZ вектора нормали инструмента, углом поворота вокруг одной из осей координат или коэффициентом кватерниона. |
| NW: Double | cmd.Flt["Pos5D.NW"] - если выбран способ ориентации инструмента в виде кватерниона, это четвёртый коэффициент кватерниона. |
| MachineStateFlags: Integer | cmd.Ptr["MachineStateFlags"].Bit[i], i=(0..31). Целое число, являющееся битовым полем из 32 бит от 0 до 31. Если для заданного положения инструмента в пространстве существует несколько вариантов расположения осей станка, каждый бит этого поля определяет выбор одного из возможных решений. Например, для большинства положений инструмента у пятиосевого станка с осями A и C есть два возможных решения - с положительным значением оси A и с отрицательным значением оси A. Нулевой бит этого поля выберет одно из этих решений. Для стандартного шестиосевого сочленённого робота многие положения инструмента в пространстве могут быть обеспечены разными комбинациями положений трёх его ключевых сочленений (основания, локтя и запястья), что даёт в сумме 8 возможных решений. В этом случае нулевой бит этого поля будет определять положение основания, первый бит - положение локтя, а третий бит будет задавать положение запястья робота. Таким образом, значение каждого из этих битов полностью определяется используемой схемой станка. При использовании станков, для которых эти флаги не нужны, вывод этого параметра в CLData можно отключить в схеме станка. |
| Time: Double | Время перемещения в минутах. |
Список координат, передаваемых через CLData команды FROM, определяется схемой станка CAM-системы.
Используйте массив GMA для обработки команды FROM. Свойствам массива GMA автоматически присваиваются предварительно рассчитанные значения параметров координатного перемещения. Параметры команды также доступны через оператор cmd.
Пример (из постпроцессора Heidenhain (iTNC530)_Mill):
program From
!X = CLD[1]; X@ = X; XT_ = X
!Y = CLD[2]; Y@ = Y; YT_ = Y
!Z = CLD[3]; Z@ = Z; ZT_ = Z
!A = 0; A@ = A; AT_ = A
!B = 0; B@ = B; BT_ = B
!C = 0; C@ = C; CT_ = C
End
Доступ из .NET
Обработчики:
public override void OnBeforeMovement(ICLDMotionCommand cmd, CLDArray cld) // групповой обработчик - перед любой командой перемещения
public override void OnFrom(ICLDFromCommand cmd, CLDArray cld)
public override void OnAfterMovement(ICLDMotionCommand cmd, CLDArray cld) // групповой обработчик - после любой команды перемещения
Наследование: ICLDFromCommand : ICLDMultiMotionCommand : ICLDMotionCommand : ICLDCommand.
Читайте параметры из строго типизированного объекта cmd (рекомендуется); доступны также «сырой» массив cld[i] (те же индексы, что и в sppx) и именованные обёртки cmd["..."]. В таблице перечислены члены команды, включая унаследованные от базовых интерфейсов; общие члены ICLDCommand (навигация, CLD, CLDFile, TechOperation, ...) описаны в разделе Модель доступа к CLData.
| Член | Тип | Описание |
|---|---|---|
cmd.EN |
TInpRotation |
Конечная нормаль или ориентация перемещения в декартовой системе координат. В зависимости от текущих настроек схемы станка это может быть вектор нормали, углы Эйлера, кватернион и т. д. |
cmd.MSFlags |
BitArray |
Флаги состояния станка или флипы робота, которые вместе с декартовыми координатами помогают определить конкретное состояние механизма в случае избыточности. То, какой бит отвечает за какой флаг, зависит от типа и конфигурации оборудования. |
cmd.Time |
double |
Продолжительность перемещения в минутах. |
cmd.AxesCount |
int |
Количество осей, которые перемещение содержит в списке Axis[]. |
cmd.Axis |
ICLDMultiMotionAxesIndexer |
Список осей перемещения [0..(AxesCount-1)]. |
cmd.Axes |
IEnumerable |
Объект-перечислитель осей перемещения для удобного использования синтаксиса foreach. |
cmd.HasAxis(...) |
bool |
Возвращает "true", если перемещение содержит ось с указанным текстовым идентификатором. Иначе возвращает "false". |
cmd.EP |
TInp3DPoint |
Конечная точка (X, Y, Z) перемещения |
Пример - OnFrom (из постпроцессора Sinumerik (840D)_Mill_DN):
public override void OnFrom(ICLDFromCommand cmd, CLDArray cld)
{
nc.X.Hide(cld[1]); nc.Y.Hide(cld[2]); nc.Z.Hide(cld[3]);
LastPnt.X = cld[1]; LastPnt.Y = cld[2]; LastPnt.Z = cld[3];
}