Mach3 имеет встроенный механизм макросов и сценариев, основанный на продукте Cypress ENABLE. Механизм сценариев позволяет редактировать стандартные M-коды, а также создавать собственные M-коды, которые можно вызывать из вашего G-кода. Типичным примером является изменение макросов M6 для работы автоматического устройства смены инструмента.
Другое использование скриптового движка — это скрипты кнопок. За некоторыми кнопками на экране Mach3 находится макрос, который запускается при нажатии этой кнопки (кнопка RefAll является одной из них). Эти макросы можно изменить, чтобы они работали иначе, чем они работают «из коробки». Кнопку RefAll, например, можно изменить так, чтобы исходные оси располагались в другом порядке или даже все одновременно. Также довольно легко добавлять свои собственные кнопки и встраивать в них макросы для выполнения нестандартных действий.
Макросы можно создавать и редактировать с помощью любого стандартного текстового редактора, например, «Блокнота», но Mach3 имеет встроенный редактор с приятными функциями, такими как раскраска синтаксиса, пошаговое выполнение и точки останова, которые могут оказаться большим подспорьем при написании, тестировании и отладке сложных макросов. Редактор, возможно, не выглядит «большим» по сравнению с современными IDE ( интегрированной средой разработки ), но он делает то, что от него можно ожидать.
Редактор запускается выбором Operator/VB Script Editor
и выглядит следующим образом:
Кроме того можно редактировать код кнопок, выбрав команду Operator/Edit Button Script
При этом кнопки, которые можно редактировать будут мигать, нажав на кнопку мы попадем на редакор кода кнопки.
Mach3 Версия 3.x
Справочное руководство по созданию макросов
Draft Revision 0.23
22.08.2010
Для Mach3 v3 versions thru 3.43.19.
Версия перевода 1.03
Введение
Это Справочное руководство для программистов документирует наиболее часто используемые макропрограммистами функции Mach3 версии 3. Это руководство создано для того, чтобы помочь пользователям понять, как работают макросы в Mach3. Все описанные в данном руководстве функции будут поддерживаться и в последующих версиях Mach3, но скоро произойдет релиз Mach4 с совершенно новым, гораздо более функциональным интерфейсом для создания макросов. Рекомендуем использовать новый интерфейс, поскольку поддержка старого в ближайшем будущем может быть прекращена. К тому же маловероятно, что после выхода Mach4 устаревший интерфейс будет получать регулярные обновления и исправления ошибок.
Это не исчерпывающее руководство, призванное охватить всю функциональность макроязыка Mach3. Есть множество новых функций, они не задокументированы или плохо задокументированы. Часть этих функций не включена в руководство. Есть ряд частично задокументированных функций, но они либо не функционируют так, как было объявлено, либо имеют существенные ограничения, некоторые из них весьма рискованно использовать, а другие использовать просто не имеет смысла. Подобные функции не включены в этот документ.
Описанный в руководстве функционал был протестирован на Mach3 версии 3.042.020.
Некоторые функции могут вести себя иначе в других версиях. Некоторые функции могут
полностью отсутствовать в более ранних версиях.
Функции, сгруппированные в алфавитном порядке
ActivateSignal
Sub ActivateSignal (SigNum As Integer)
Эта функция переводит указанный output сигнал Mach3 в активное состояние. (если
он определен в Config-> Ports & Pins как ActiveHigh, он будет переведен на логический
высокий уровень, в противном случае он будет переведен на логический низкий уровень).
Аргументы:
SigNum должен быть одной из предопределенных констант выходного сигнала Mach3 (см.
CB Constants) или должен иметь другое значение или выражение, которое оценивается как одно из этих значений.
Возвращаемое значение: отсутствует.
Пример:
ActivateSignal(OUTPUT2) ‘ Активировать выход 2
Sleep(1000) ‘ Задержка выполнения 1 секунда
DeactivateSignal(OUTPUT2) ‘ Деактивировать выход 2
Смотрите также:
DeactivateSignal(), CB Constants
AppendTeachFile
Function AppendTeachFile(Filename As String) As Integer
Эта функция повторно открывает существующий файл Teach в Gcode \ Filename в каталоге Mach3, и добавляет в этот файл любые команды, впоследствии выполняемые через MDI или Code (), до тех пор, пока CloseTeachFile() выполняется. Указанный файл должен быть создан вручную.
Что такое Teach в Mach3.
Mach3 может запоминать введенную вручную через строку ручного ввода (Input) последовательность кадров и записывать ее в файл. После, ее можно многократно выполнять, как обычный G-код.
Как это работает? На экране MDI (второй экран основного скринсета) нужно кликнуть по кнопке Start Teach. Замигает индикатор. Теперь вы можете ввести нужное количество кадров в экран ручного ввода. Mach3 будет выполнять каждый кадр сразу после ввода и сохранять его в файл с именем Teach file.
Аргументы:
Filename – имя файла Teach, который необходимо повторно открыть. Файл должен находиться в подкаталоге Gcode установочного каталога Mach3.
Возвращаемое значение:
Если операция прошла успешно, возвращается ненулевое значение.
Пример:
‘ Создайте новый обучающий файл в Mach3\Gcode
MyTeachFile = “TeachMe.nc”
Err = OpenTeachFile(MyTeachFile)
If Err <> 0 Then
‘ Файл есть в наличии
‘ Запишем некоторый G-код
Code “G00 X0 Y0”
Code “G02 X0 Y0 I-1 J0 F40”
‘ Закроем обучающий файл
CloseTeachFile()
‘ Теперь загрузим этот файл для выполнения
LoadTeachFile()
Else
‘ Загрузка не удалась
Message “Невозможно открыть обучающий файл”
End If
Смотрите также:
OpenTeachFile(), CloseTeachFile()
AskTextQuestion
Function AskTextQuestion(Prompt As String) As String
Эта функция отображает диалоговое окно, содержащее указанную строку приглашения, и ожидает ввода пользователем текстовой строки в текстовом поле диалогового окна. Строка, введенная пользователем, возвращается функцией.
Аргументы:
Prompt – это строка, которая будет отображаться над текстовым полем при отображении диалогового окна.
Возвращаемое значение:
Текстовая строка введенная пользователем.
Пример:
Dim UsersName As String
UsersName = AskTextQuestion(“Пожалуйста введите ваше имя: ”)
Message “Добро пожаловать, “ & UsersName & “!”
Смотрите также:
Message(), Question(), AskTextQuestion(), MachMsg(), GetCoord()
CloseDigFile
Sub CloseDigFile()
Эта функция закрывает открытый digitizing file. Если его нет, функция ничего не делает.
Аргументы:
отсутствуют
Возвращаемое значение: отсутствует
Пример:
OpenDigFile() ‘ Открываем digitizing file
ProbeOutline() ‘ Вызов пользовательской функции сканирования с помощью щупа.CloseDigFile() ‘ Закрываем digitizing file
Смотрите также:
OpenDigFile(), SetProbeActive(), IsProbing()
CloseTeachFile
Sub CloseTeachFile()
Эта функция закрывает открытый обучающий файл. Файл должен быть ранее открыт
либо с помощью OpenTeachFile, либо добавлен с помощью AppendTeachFile(). Если обучающий файл Teach не открыт в данный момент, функция ничего не делает.
Аргументы:
отсутствуют
Возвращаемое значение: отсутствует
Пример:
TeachFile = “MyTeachFile.nc”
Dim Err As Integer
Err = OpenTeachFile(TeachFile)
If Err = 0 Then
MsgBox(“Unable To Open: ” & Teachfile)
Else
‘ Введенные здесь команды MDI записываются в обучающий файл
Code(“G55”)
Code(“G00 X0.000 Y0.000 Z0.500”)
End If
‘ Теперь закрываем обучающий файл
CloseTeachFile()
‘ Тут можно добавить какие-то свои команды
‘ Снова открываем обучающий файл
Err = AppendTeachFile(TeachFile)
If Err = 0 Then
MsgBox(“Unable To Open: ” & TeachFile)
Else
‘ Введенные здесь команды MDI записываются в обучающий файл
Code(“G56”)
Code(“G00 X0.000 Y0.000 Z0.500”)
End If
‘ Теперь закрываем обучающий файл
CloseTeachFile()
Смотрите также:
OpenTeachFile(), AppendTeachFile()
CodeSub Code(Gcode As String)
Эта функция выполняет строку G-кода, переданную в качестве аргумента, так же, как если бы она были введены в строку MDI или обнаружена в программе G-кода. Обратите внимание, что строка G-кода помещается в очередь выполнения, и, как правило, функция Code () возвращает значение до того, как строка будет фактически выполнена. Если вам нужно, чтобы ваша программа знала, что строка была выполнена, цикл While должен использоваться с IsMoving (), как показано в примере ниже.
Также обратите внимание, что если в данный момент будет открыт обучающий файл, строка G-кода не будет выполняется, она просто запишется в обучающий файл.
Следующие дополнительные режимы функции Code () описаны здесь только для
полноты картины. Их использование не рекомендуется, и их поддержка может быть прекращена в любой момент, без предупреждения.
Sub Code(“LOAD:” & FilePath)
Этот режим загружает файл G-кода из указанного FilePath. Рекомендуется использовать функцию LoadFile () совместно с функцией Code() вместо данного режима.
Sub Code(“SAVE_XML”)
Этот метод немедленно сохраняет файл конфигурации XML.
Аргументы: Единичная срока G-кода (будет выполняться, как одна строка).
Возвращаемое значение:
отсутствует
Пример:
‘ Select our fixture Code(“G55”)
‘ Move away from the vise Code(“G00 X-4.000 Y1.000 Z1.000”)
‘ Wait for movement to complete While (IsMoving())
‘ Sleep, so other threads can run while we’re waiting
Sleep(100)
Wend ‘ Done
‘ Выбор системы координат детали
Code(“G55”)
‘ Передвижение в холостом режиме
Code(“G00 X-4.000 Y1.000 Z1.000”)
‘ Ожидаем выполнения команды
While (IsMoving())
‘Приостановка выполнения макроса для передачи процессорного ‘времени другим потокам
Sleep(100)
Wend
‘ Все сделано
Смотрите также: связи отстутствуют
CoupleSlave
Sub Function CoupleSlave(State As Integer)
Эта функция подключает любую подчиненную ось к своей главной оси или отключает ее во время homing.
Аргументы:
Состояние – значение 0 или 1, которое определяет, должна ли подчиненная ось быть
соединена со своей главной осью во время homing. Если State равен 0, оси будут разъединены, если State равен 1, оси будут связаны.Возвращаемое значение: отсутствует.
Примеры:
‘ Define the axes Dim Xaxis As Integer Xaxis = 0
Dim Yaxis As Integer Yaxis = 0
‘ Couple the slaved A axis to its master X axis CoupleSlave(1)
‘ Home the master and slave SingleVerify(Xaxis)
‘ Un-couple the X and A axes CoupleSlave(0)
‘ Определим оси
Dim Xaxis As Integer
Xaxis = 0
Dim Yaxis As Integer
Yaxis = 0
‘ Подчиним ось A оси X
CoupleSlave(1)
‘ Home главную и подчиненную ось
SingleVerify(Xaxis)
‘ Разъединим оси
CoupleSlave(0)
Смотрите также:
связи отсутствуют
.
DeactivateSignalSub DeactivateSignal (SigNum As Integer)
Эта функция переводит указанный output сигнал Mach3 в неактивное состояние. Если
сигнал определен в Config-> Ports & Pins как ActiveHigh, его состояние будет переведено на логический низкий уровень, в противном случае состояние будет переведено на логический высокий уровень.
Аргументы:
SigNum должен быть одной из предопределенных констант output сигнала Mach3 (см. CB Constants) или иметь другое значение или выражение, которое должно оцениваться программой, как одна из этих констант.
Возвращаемое значение:
отсутствует.
Примеры:
ActivateSignal (OUTPUT2) ‘ Turn on Flux Capacitor Sleep(1000) ‘ Give it time to charge fully
DeactivateSignal (OUTPUT2) ‘ Turn it off
ActivateSignal (OUTPUT2) ‘ Переведем выход 2 в активно состояние
Sleep(1000) ‘Ожидание 1 секунду
DeactivateSignal (OUTPUT2) ‘ Деактивируем выход 2
Смотрите также:
ActivateSignal (), CB Constants
DoMenu
Sub DoMenu (MenuIndex As Integer, MenuItem As Integer)
Эта функция позволяет макросу-скрипту вызывать любую функцию, доступную в
любом меню Mach3 точно так же, как если бы пользователь щелкнул меню мышью. Конкретный вызываемый пункт меню определяется двумя аргументами.
Первый указывает, в каком меню находится вызываемый элемент.
Второй указывает, какой элемент этого меню должен быть вызван.
Аргументы:
MenuIndex – это индекс активируемого меню, отсчитываемый от 0. Меню “Файл” – это индекс 0, меню Config – это индекс 1 и т. д. MenuItem – это отсчитываемый от 0 индекс элемента меню для активации. Первый пункт данного меню имеет индекс 0, второй – индекс 1 и т. д.
Возвращаемое значение: отсутствует
Примеры:
‘ Define menu indices, left-to-right, starting with 0 Dim FileMenu As Integer
FileMenu = 0
Dim ConfigMenu As Integer ConfigMenu = 1
…
‘ Define File menu items, top-to-bottom, starting with 0
Dim FileMenuLoadGCodeMenuItem FileMenuLoadGCodeMenuItem = 0
Dim FileMenuLazyCAMMenuItem As Integer FileMenuLazyCAMMenuItem = 1
Dim FileMenuCloseFilesMenuItem As Integer FileMenuCloseFilesMenuItem = 2
Dim FileMenuExitMenuItem As Integer FileMenuExitMenuItem = 3
‘ Define Config menu items, top-to-bottom, starting with 0
Dim ConfigMenuDefineNativeUnitsMenuItem As Integer ConfigMenuDefineNativeUnitsMenuItem = 0
Dim ConfigMenuPortsAndPinsMenuItem As Integer ConfigMenuPortsAndPinsMenuItem = 1
…
‘ Pop-up the Config->Ports & Pins dialog
DoMenu(ConfigMenu, ConfigMenuPortsAndPinsMenuItem)
‘Определяем индекс меню слева направо, начиная с 0
Dim FileMenu As Integer
FileMenu = 0
Dim ConfigMenu As Integer
ConfigMenu = 1
…
‘ Определяем элементы меню «файл», сверху вниз, начиная с 0
Dim FileMenuLoadGCodeMenuItem
FileMenuLoadGCodeMenuItem = 0
Dim FileMenuLazyCAMMenuItem As Integer
FileMenuLazyCAMMenuItem = 1
Dim FileMenuCloseFilesMenuItem As Integer
FileMenuCloseFilesMenuItem = 2
Dim FileMenuExitMenuItem As Integer
FileMenuExitMenuItem = 3
‘ Определяем элементы Config меню, сверху вниз, начиная с 0
Dim ConfigMenuDefineNativeUnitsMenuItem As Integer
ConfigMenuDefineNativeUnitsMenuItem = 0
Dim ConfigMenuPortsAndPinsMenuItem As Integer
ConfigMenuPortsAndPinsMenuItem = 1
…
‘ Открываем диалоговое меню Config->Ports & Pins
DoMenu(ConfigMenu, ConfigMenuPortsAndPinsMenuItem)
Смотрите также:
DoButton(), DoOEMButton()
DoButton
Sub DoButton(ButtonNum As Integer)
Эта устаревшая функция позволяет макросу выполнять функцию экранной кнопки, посредством кода кнопки. Указанная функция работает так же, как если бы пользователь
щелкнул мышью по соответствующей экранной кнопке. Обратите внимание, что на экране не должна существовать кнопка, чтобы эта функция работала. Это просто способ выполнять любую из функций «Кнопки» через CB. Использование DoButton больше не рекомендуется, и эта функция существует только для поддержки уже существующих устаревших скриптов. Эта функция устарела, и ее использование настоятельно не рекомендуется.
Примечание: существовало две разные нумерации кнопок: «Номер кнопки» “Button number и «OEMButton».
В этой функции используется нумерация «Номер кнопки».
В диапазоне «Номер кнопки» допустимые значения ButtonNums были от 0 до 31, что,
в свое время соответствовали OEM номерам светодиодов 1000 10 1031.
Числовое соответствие между рядами нумерации не гарантируется для будущих версий Mach. Используйте функцию DoOEMButton вместо этой функции.
Аргументы:
ButtonNum должен иметь один из предварительно заданных номеров OEM-кнопок Mach3. (см. Константы CB) или представлять из себя другое значение или выражение, которое оценивается как одна из этих констант.
Возвращаемое значение:
отсутствует.
Пример:
‘ Define OEM codes for Mist On and Mist Off Const RewindButton = 2
‘ rewind the gcode to start DoButton(RewindButton)
‘ Определим OEM код для вызова кнопок Mist On и Mist Off
Const RewindButton = 2
‘ rewind G-код для запуска
DoButton(RewindButton)
Смотрите также:
DoButton(), DoOEMButton()
DoOEMButton
Sub DoOEMButton(OEMButtonCode As Integer)
Эта функция позволяет макросу выполнять любую функцию экранной кнопки, которая имеет код OEM. Указанная функция вызывается точно так же, как если бы пользователь
щелкнул мышью по соответствующей экранной кнопке. Обратите внимание, что на экране не должна существовать кнопка, чтобы эта функция работала. Это просто способ
выполнять любую из функций «OEM-кнопки» через CB.
Аргументы: OEMButtonCode должен быть одним из предопределенных кодов OEM-кнопок Mach3 (см. Константы CB) или представлять из себя другое значение или выражение, которое оценивается как одна из этих констант.
Возвращаемое значение:
отсутствует.
Пример:
‘ Определяем OEM коды для запуска кнопок for Mist On и Mist Off
Const OEMButtonMistOn = 226
Const OEMButtonMistOff = 227
‘Включаем охлаждающую жидкость Mist на 3 секунды.
DoOEMButton(OEMButtonMistOn)
Sleep(3000)
DoOEMButton(OEMButtonMistOff)
Смотрите также:
DoButton(), DoOEMButton(), DoMenu()
DoSpinCCW
Sub DoSpinCCW()
Эта функция включает шпиндель, вращающийся против часовой стрелки.
Аргументы:
отсутствуют
Возвращаемое значение: отсутствует
Пример:
‘ Включаем шпиндель, вращающийся против часовой стрелки.
DoSpinCCW()
‘ Даем ему поработать 5 секунд
Sleep(5000)
‘ И отключаем
DoSpinStop()
Смотрите также:
DoSpinCW(), DoSpinStop()
DoSpinCW
Sub DoSpinCW()
Эта функция включает шпиндель по часовой стрелке.
Аргументы:
отсутствуют
Возвращаемое значение:
отсутствует
Пример:
‘Включаем шпиндель по часовой стрелке
DoSpinCW()
‘Даем ему поработать 5 секунд
Sleep(5000)
‘ И отключаем
DoSpinStop()
Смотрите также:
DoSpinCCW(), DoSpinStop()
DoSpinStop
Sub DoSpinStop()
Эта функция останавливает шпиндель
Аргументы:
отсутствуют
Возвращаемое значение:
отсутствует
Пример:
‘Включаем шпиндель по часовой стрелке
DoSpinCW()
‘Даем ему поработать 5 секунд
Sleep(5000)
‘ И отключаем
DoSpinStop()
Смотрите также:
DoSpinCW(), DoSpindCCW()
EndTHC
Sub EndTHC()
Эта функция отключает контроль высоты резака. Функционально идентичен THCOff ().
Аргументы:
отсутствуют
Возвращаемое значение:
отсутствует
Пример:
StartTHC()‘ Включаем контроль высоты резака
… ‘ Что-нибудь вырезаем
EndTHC() ‘ Отключаем контроль высоты резака
Смотрите также:
StartTHC(), THCOn(), EndTHC(), THCOff(), ZeroTHC(), ResetTHC()
FeedRate
Sub FeedRate() As Double
Эта функция получает текущую скорость подачи. Обратите внимание, что скорость подачи указывается в единицах в минуту.
Аргументы:
отсутствуют
Возвращаемое значение:
скорость подачи указанная в единицах / мин (формат Double)
Пример:
‘ Установить скорость подачи 123.456 дюймов/мин
SetFeedRate(123.456 / 60)
‘ Получить текущую скорость подачи в дюймах/мин и вывести на экран
CurrentFeedrate = FeedRate()
‘ Отобразить значение в строке состояния
Message “Current feed rate = “ & CurrentFeedrate
Смотрите также:
SetFeedrate()
FileName
Function FileName() As String
Эта функция возвращает имя файла и путь к текущему загруженному файлу G-кода, если таковой имеется. Если ни один файл в данный момент не загружен, возвращается строка «Файл не загружен».
Аргументы:
отсутствуют
Возвращаемое значение: имя файла и путь к текущему загруженному файлу G-кода или строка «Файл не загружен».
Пример:
‘ Покажем имя загруженного файла G-кода и путь к нему
Message “Current file is: “ & FileName()
Смотрите также:
LoadFile(), LoadRun()
GetABSPosition
Function GetABSPosition(Axis As Integer) As Double
Эта функция возвращает координаты положения указанной оси станка.
Аргументы:
Axis – это ось:
0 = ось X
1 = ось Y
2 = ось Z
3 = ось A
4 = ось B
5 = ось C
Возвращаемое значение:
Машинные? координаты в формате Double
Пример:
‘ определим оси
Dim Xaxis As Integer
Xaxis = 0
Dim Yaxis As Integer
Yaxis = 1
Dim Zaxis As Integer
Zaxis = 2
‘ Получим машинные координаты оси Y
Dim AxisPos As Double
AxisPos = GetABSPosition(Yaxis)
‘ Выведем их в строке состояния
Message “Y Axis Machine Pos = “ & AxisPos
Смотрите также:
SetMachZero(), MinX(), MaxX(), MinY(), MaxY()
GetACoor
Function GetACoor() As Double
Эта функция используется вместе с функцией GetCoord () для получения X, Y, Z и A
значений пользовательских координат оси. Функция GetACoor () вернет значение для оси A
введенные пользователем при последнем вызове функции GetCoord (). Для других координат функция принимает вид: GetXCoor (), GetYCoor (), GetZCoor ()
Аргументы:
отсутствуют
Возвращаемое значение:
Значение координаты оси A из последнего вызова GetCoord ()
Пример:
GetCoord(“Введите координаты цели:”)
Message “Coordinates are: “ & GetXCoor() & “ “ &
GetYCoor() & “ “ & GetZCoor() & “ “ & GetACoor()
Смотрите также:
GetCoord(), GetXCoor(), GetYCoor(), GetZCoor()
GetActiveProfileDir
Function GetActiveProfileDir() As string
Эта функция используется для получения строки с полным путем к активному профилю.
Аргументы:
отсутствуют
Возвращаемое значение:
путь к активному профилю
Пример:
MsgBox “The Running Profile path is “ &
GetActiveProfileDir()
Смотрите также:
GetActiveProfileName()
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
GetActiveProfileName
Function GetActiveProfileName() As string
Эта функция используется для получения имени текущего рабочего профиля.
Аргументы:
отсутствуют
Возвращаемое значение:
имя текущего рабочего профиля
Пример:
MsgBox “The Running Profile is: “ &
GetActiveProfileName()
Смотрите также:
GetActiveProfileDir()
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
GetActiveScreenSetName
Function GetActiveScreenSetName() As string
Эта функция используется для получения имени текущего активного ScreenSet.
Аргументы:
отсутствуют
Возвращаемое значение: имя текущего активного ScreenSet.
Пример:
MsgBox “The Running screen set is: “ &
GetActiveScreenSetName()
Смотри также:
связи отсутствуют
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
GetCoord
Sub GetCoord(Prompt As String)
Эта функция отображает диалоговое окно, содержащее строку приветствия и четыре
текстовые поля с метками X, Y, Z и A, в которые пользователь может ввести четыре значения координат. Значения хранятся в переменных Mach3, которые можно получить с помощью
функций GetXCoor (), GetYCoor (), GetZCoor () и GetACoor ().
Аргументы: строка приветствия, отображаемая в диалоговом окне.
Возвращаемое значение: отсутствует
Пример:
GetCoord(“Введите координаты цели:”)
Message “Coordinates are: “ & GetXCoor() & “ “ &
GetYCoor() & “ “ & GetZCoor() & “ “ & GetACoor()
Смотрите также:
GetXCoor(), GetYCoor(), GetZCoor(), GetACoor()
GetCurrentTool
Function GetCurrentTool() As Integer
Эта функция возвращает номер активного инструмента.
Аргументы: отсутствуют
Возвращаемое значение: номер активного инструмента (1-253)
Пример:
‘Сообщение пользователю, какой инструмент активен
Message “Current Tool is “ & GetCurrentTool() & “ = >
“ & GetToolDesc()
Смотрите также:
SetCurrentTool(), GetSelectedTool(), ToolLengthOffset(), GetToolParam(),
SetToolParam(), GetToolChangeStart(), GetToolDesc(), SetToolX(), SetToolZ()
GetDRO
Function GetDRO(DRONum As Integer) As Double
Эта устаревшая функция принимает номер DRO, переданный в качестве аргумента, и возвращает значение, которое содержит окно DRO Mach3. Использование GetDRO больше не рекомендуется, и эта функция существует только для поддержки уже существующих устаревших скриптов. Эта функция устарела, и ее использование не рекомендуется.
Примечание к устаревшему сценарию: существовало две разные нумерации DRO, используемые в Mach3: номер «DRO» и номер «OEMDRO». Эта функция использует номер «DRO».
Нумерация «DRO» были дополнительно разделена на «пользовательский» и «OEM» диапазоны. Диапазон «OEM» включал в себя номера от 0 до 200, что
соответствовал номерам OEM DRO от 800 до 1000. Числовое соответствие между рядами нумерации не гарантируется для будущих версий Mach.
Используйте функции GetOEMDRO() и GetUserDRO() вместо этой функции.
Аргументы: DRONum – это номер DRO для чтения. Значение должно быть в пределах нумерации «DRO» (похоже, что в диапазоне 0-200).
Возвращаемое значение: значение, которое содержится в соответствующем поле DRO.
Пример:
‘ Определим оси
Const XaxisMultiFunctionDRONum = 0
Const YaxisMultiFunctionDRONum = 1
Const ZaxisMultiFunctionDRONum = 2
‘ Прочитаем значение поля DRO для оси Z
MsgBox “Using GetDRO() Z Axis DRO reads: “ &
GetDRO(ZaxisMultiFunctionDRONum)
Смотрите также:
SetOEMDRO(), GetOEMDRO(), SetUserDRO(), GetUserDRO()
GetDROString
Function GetDROString(DRONum As Integer) As String
Эта устаревшая функция принимает номер DRO в качестве аргумента и возвращает значение поля DRO Mach3, округленное до четырех десятичных знаков после запятой в виде строки. Использование GetDROString больше не рекомендуется, и эта функция существует только для поддержки устаревших скриптов. Эта функция устарела, и ее использование категорически не рекомендуется.
Примечание к устаревшему сценарию: существовало две разные нумерации DRO, используемые в Mach3: номер «DRO» и номер «OEMDRO». Эта функция использует номер «DRO».
Нумерация «DRO» были дополнительно разделена на «пользовательский» и «OEM» диапазоны. Диапазон «OEM» включал в себя номера от 0 до 200, что
соответствовал номерам OEM DRO от 800 до 1000. Числовое соответствие между рядами нумерации не гарантируется для будущих версий Mach.
Используйте функции GetOEMDRO() и GetUserDRO() вместо этой функции совместно с функцией cStr() для конвертации числового значения в строку.
Аргументы: DRONum – это номер DRO для чтения. Значение должно быть в пределах нумерации «DRO» (похоже, что в диапазоне 0-200).
Возвращаемое значение: значение, которое содержится в соответствующем поле DRO в формате String.
Пример:
‘ Определим оси
Const XaxisMultiFunctionDRONum = 0
Const YaxisMultiFunctionDRONum = 1
Const ZaxisMultiFunctionDRONum = 2
Dim ZPositionString as String
‘ Прочитаем значение поля DRO оси Z
ZPosition = cStr(GetDRO(ZaxisMultiFunctionDRONum))
MsgBox “Using GetDRO() Z Axis DRO reads: “ &
ZPositionString
Смотрите также:
SetOEMDRO(), GetOEMDRO(), SetUserDRO(), GetUserDRO()
GetIJMode
Function GetIJMode() As Integer
Эта функция возвращает текущий режим IJ (абсолютный / инкрементный), установленный в Config-> GeneralConfig.
Аргументы: отсутствуют
Возвращаемое значение:
0 означает, что включен режим абсолютного IJ
1 означает, что включен режим инкрементного IJ
Пример:
‘ Покажем пользователю текущее состояние режима IJ
If GetIJMode() Then
Message “IJ Mode is incremental”
Else
Message “IJ Mode is absolute”
End If
Смотрите также:
SetIJMode()
GetLED
Function GetLED(LEDNum As Integer) As Integer
Эта устаревшая функция принимает переданный в качестве аргумента номер светодиода и возвращает его текущее состояние. Использование GetLED больше не рекомендуется, и эта функция существует только для поддержки устаревших скриптов. Эта функция устарела, и ее использование категорически не рекомендуется.
Примечание к устаревшему сценарию: существует две разные нумерации светодиодов, используемые в Mach3: номер «LED» и номер «OEMLED». Данная функция использует номер «LED».
Нумерация «LED» была разделена на диапазоны «Пользовательский» и «OEM». «OEM» диапазон принимает значения LEDNum от 0 до 55, что соответствует номерам OEMLED от 800 до 855. Для будущих версий Mach соответствие между этими нумерациями не гарантируется.
Используйте функции GetOEMLED() и GetUserLED() вместо данной функции.
Аргументы: LEDNum в соответствии с нумерацией «LED».
Возвращаемое значение:
0 – светодиод не активен
1 – светодиод активен
Пример:
‘ Определим светодиоды
Const InchModeLED = 1
Const mmModeLED = 2
‘ Выведем тип системы (дюймы или мм). (Code “G20” Code “G21”)
If GetLED(InchModeLED) Then
‘ Мы используем дюймовую систему
Message “Inch Mode”
End If
If GetLED(mmModeLED) Then
‘ Мы используем метрическую систему
Message “mm Mode”
End If
Смотрите также:
GetOEMLED(), SetUserLED(), GetUserLED()
GetLoadedGCodeDir
Function GetLoadedGCodeDir() As string
Эта функция используется для получения строки с полным путем к загруженному файлу G-кода.
Аргументы: отсутствуют
Возвращаемое значение: Путь к загруженному файлу G-кода.
Если G-код не загружен, функция возвращает пустую строку («»).
Пример:
MsgBox “The G-Code file path is “ &
GetloadedGCodeDir()
Смотрите также:
GetloadedGCodeFileName()
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
GetLoadedGCodeFileName
Function GetLoadedGCodeFileName() As string
Эта функция используется для получения имени загруженного файла G-кода.
Аргументы: отсутствуют
Возвращаемое значение: Имя загруженного файла G-кода. Расширение включено в строку. Если G-код не загружен, функция возвращает пустую строку («»).
Пример:
MsgBox “The G-Code file name is “ &
GetloadedGCodeFileName()
Смотрите также:
GetLoadedGCodeDir()
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
GetMachVersion
Function GetMachVersion(ByRef Major as Integer, ByRef Minor as Integer, ByRef
Build as Integer) As Boolean
Эта функция возвращает версию установленного ПО Mach.
Аргументы:
Аргументы функции передаются по ссылке и используются для возврата номера версии Mach3.
Major: основной номер версии
Minor:: дополнительный номер версии
Build:: номер версии сборки
Вы должны объявить (DIM) переменные, которые вы передаете функции, как целые числа. Не задекларированные переменные типа Var нельзя передавать по ссылке.
Возвращаемое значение:
True: возвращенные значения версии действительны.
False: произошла ошибка при обработке вызова GetMachVersion; значения версии
может быть недействительным.
Пример:
If (GetMachVersion(Major, Minor, Build) <> true) Then
MsgBox(“Unable to get Version info”)
Else
MsgBox(“Mach3 version = ” & Major & “.” & Minor &
“.” & Build )
End If
Смотрите также:
Связи отсутствуют
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.42.30.
GetMainFolder
Function GetMainFolder() As String
Эта функция возвращает полный путь к папке установки Mach3.
Аргументы: отсутствуют
Возвращаемое значение: строка содержащая полный путь к каталогу с установленным Mach3
Пример:
‘ Покажем пользователю, в какой папке установлен Mach3
Message “Mach3 is installed at: “ & GetMainFolder()
Смотрите также: связи отсутствуют
GetMyWindowsHandle
Function GetMyWindowsHandle() as Long
Эта функция используется для получения дескриптора окна для окна Mach3. Это
полезно для перехода к вызовам ОС, которые требуют дескриптора окна вызывающего абонента в качестве параметра.
Аргументы: отсутствуют
Возвращаемое значение: дескриптора окна Mach3.
Пример:
MsgBox “My Windows handle as number is “ &
GetMyWindowsHandle()
Смотрите также:
Связи отсутствуют
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
GetOEMDRO
Function GetOEMDRO(DRONum As Integer) As Double
Эта функция возвращает значение поля OEM DRO с номером DRONum.
Аргументы: DRONum должен быть действующим номером OEM DRO.
Возвращаемое значение: значение поля DRO в формате Double
Пример:
‘ Определим значение номеров полей DRO с координатами осей
Const XaxisMultiFunctionOEMDRONum = 800
Const YaxisMultiFunctionOEMDRONum = 801
Const ZaxisMultiFunctionOEMDRONum = 802
‘ Запишем 1.2345 в поле оси Z DRO используя SetOEMDRO
SetOEMDRO(ZaxisMultiFunctionDRONum, 1.2345)
‘ Покажем пользователю значение поля оси Z DRO
MsgBox “After using SetOEMDRO() the Z Axis DRO reads:
“ & GetOEMDRO(ZaxisMultiFunctionDRONum)
Смотрите также:
SetOEMDRO(), SetUserDRO(), GetUserDRO()
GetOEMLED
Function GetOEMLED(LEDNum As Integer) As Integer
Эта функция возвращает состояние светодиода с OEM номером, указанном в аргументе функции.
Аргумент: OEM номер светодиода
Возвращаемое значение:
0 – светодиод не активен
1 – светодиод активен
Пример:
‘проверим состояние светодиода подачи охлаждающей жидкости
Const LedCoolantMist = 12
If (GetOEMLED(LedCoolantMist) == 1) Then
MsgBox(“Coolant Mist On”)
Else
MsgBox(“Coolant Mist Off”)
End If
Смотрите также:
SetOEMLED(), SetUserLED(), GetUserLED()
GetPage
Function GetPage() As Integer
Эта функция возвращает номер текущей активной страницы настроек экрана.
Аргументы: отсутствуют
Возвращаемое значение: номер текущей активной страницы в формате Integer
Пример:
‘ Убедитесь, что пользователь находится на странице диагностики
If Not GetPage() = 5 Then
MsgBox “Please switch to Diagnostics page…”
End If
Смотрите также:
SetPage()
GetParam
Function GetParam(ParamName As String) As Double
Эта функция позволяет использовать ряд внутренних параметров Mach3 (не путать с параметрами G-кода) для чтения. Каждый параметр Mach3 идентифицируется по имени. Текущее значение параметра, имя которого задано в аргументе ParamName, возвращается, как Double.
Допустимые параметры:
Наименование | Описание |
XMachine | Машинные координаты оси X |
YMachine | Машинные координаты оси Y |
ZMachine | Машинные координаты оси Z |
Encoder1 | Счетчик Encoder1 |
Encoder2 | Счетчик Encoder2 |
Encoder3 | Счетчик Encoder3 |
Encoder4 | Счетчик Encoder4 |
MPG1 | Счетчик MPG1 |
MPG2 | Счетчик MPG2 |
MPG3 | Счетчик MPG3 |
XScale | Коэффициент масштаба оси X |
YScale | Коэффициент масштаба оси Y |
ZScale | Коэффициент масштаба оси Z |
AScale | Коэффициент масштаба оси A |
BScale | Коэффициент масштаба оси B |
CScale | Коэффициент масштаба оси C |
FeedRate | Скорость подачи |
Units | Текущие ед. изм. (дюймы/мм). 0 = mm, 1 = inch |
StepsPerAxisX | Количество шагов на ед. изм. по оси X |
StepsPerAxisY | Количество шагов на ед. изм. по оси Y |
StepsPerAxisZ | Количество шагов на ед. изм. по оси Z |
StepsPerAxisA | Количество шагов на ед. изм. по оси A |
StepsPerAxisB | Количество шагов на ед. изм. по оси B |
StepsPerAxisC | Количество шагов на ед. изм. по оси C |
VelocitiesX | Максимальная скорость оси X (настройки двигателя) в ед.изм./сек |
VelocitiesY | Максимальная скорость оси Y (настройки двигателя) в ед.изм./сек |
VelocitiesZ | Максимальная скорость оси Z (настройки двигателя) в ед.изм./сек |
VelocitiesA | Максимальная скорость оси A (настройки двигателя) в ед.изм./сек |
VelocitiesB | Максимальная скорость оси B (настройки двигателя) в ед.изм./сек |
VelocitiesC | Максимальная скорость оси C (настройки двигателя) в ед.изм./сек |
AccelerationX | Максимальное ускорение оси X (настройки двигателя) |
AccelerationY | Максимальное ускорение оси Y (настройки двигателя) |
AccelerationZ | Максимальное ускорение оси Z (настройки двигателя) |
AccelerationA | Максимальное ускорение оси A (настройки двигателя) |
AccelerationB | Максимальное ускорение оси B (настройки двигателя) |
AccelerationC | Максимальное ускорение оси C (настройки двигателя) |
SpindleSpeed | Должна изменять скорость шпинделя, но работает не во всех версиях. Вместо этого параметра используйте функцию SetSpinSpeed () |
ZInhibitOn | Наличие запрета перемещения оси Z ниже разрешенной высоты. 0: запрет Z отключен, 1: запрет Z включен. При включении этого запрета ось Z не может перемещаться ниже глубина, заданная параметром ZinhibitDepth. |
ZInhibitDepth | Параметр ограничивающий перемещение оси Z при активации ZInhibitOn |
SafeZ | Безопасная высота по оси Z |
XDRO | Значение поля DRO оси X |
YDRO | Значение поля DRO оси Y |
ZDRO | Значение поля DRO оси Z |
ADRO | Значение поля DRO оси A |
BDRO | Значение поля DRO оси B |
CDRO | Значение поля DRO оси C |
Boundry | Включение отображения границ траектории. 0: отключить отображение границ, 1: включить отображение границ |
XRefPer | homing скорость оси X, в % от максимальной |
YRefPer | homing скорость оси Y, в % от максимальной |
ZRefPer | homing скорость оси Z, в % от максимальной |
ARefPer | homing скорость оси A, в % от максимальной |
BRefPer | homing скорость оси B, в % от максимальной |
CRefPer | homing скорость оси C, в % от максимальной |
TotalHours | Подсчет общего времени безотказной работы Mach3 |
Аргументы: имя возвращаемого параметра. (одно из вышеперечисленных имен).
Возвращаемое значение: текущее значение данного параметра в формате Double
Пример:
————————————
Смотрите также:
SetParam()
GetPortByte
Function GetPortByte(PortAddr As Integer) As Integer
Эта функция считывает значение записанное в 8-битный порт ввода-вывода ПК, адрес которого задан в PortAddr, и возвращает данные, считываемые из порта как целое число без знака. Эта функция может использоваться для чтения данных с аппаратных устройств, не поддерживаемых Mach3 напрямую. Обратите внимание, что эта функция доступна, только если установлен драйвер параллельного порта.
Аргументы: PortAddr – адрес порта для чтения в формате Integer.
Возвращаемое значение: 8-битное целое число без знака.
Пример:
‘ Адрес порта 0x3f8
PortAddr = 1016
‘ Считываем данные из параллельного порта с этим адресом
PortData = GetPortByte(PortAddr)
Смотрите также:
PutPortByte()
GetToolParam
Function GetToolParam(ToolNum As Integer, ParamNum As Integer)
Эта функция позволяет получить любой параметр инструмента, кроме текста описания, для любого инструмента. ToolNum – номер инструмента (от 1 до 255), параметры которого запрашиваются. ParamNum – номер параметра, определяемый следующим образом:
Для Mach3Mill:
1 – Диаметр
2 – Z-смещение
3 – X износ
4 – Z износ
Для Mach3Turn:
1 – Тип наконечника
2 – Радиус инструмента
3 – Смещение по оси X
4 – Z-смещение
5 – X износ
6 – Z износ
7 – Угол револьверной головки
Аргументы:
ToolNum – номер инструмента (от 1 до 255), параметры которого запрашиваются,
ParamNum – номер параметра инструмента
Возвращаемое значение: запрошенное значение параметра в формате Double
Пример:
‘ Определим константы
DiameterParam = 1
ZoffsetParam = 2
XwearParam = 3
ZwearParam = 4
‘ Покажем параметры инструмента под номером 23
Diam = GetToolParam(23, DiameterParam)
Length = GetToolParam(23, ZoffsetParam)
Xwear = GetToolParam(23, XwearParam)
Zwear = GetToolParam(23, ZwearParam)
Desc = GetToolDesc(23)
Message “Tool 23: Diam=“ & Diam & “ Length=” & Length
_
& “ Xwear=” & Xwear & “ Zwear=” & Zwear & “ Desc=” &
Desc
Смотрите также:
SetToolParam(), GetToolDesc()
GetRPM
Function GetRPM() As Double
Эта функция возвращает текущую заданную скорость шпинделя (S-word) в формате Double. Обратите внимание, что возвращается последнее значение S-слова, а не фактическое число оборотов шпинделя.
Аргументы: отсутствуют
Возвращаемое значение: текущее заданное значение оборотов шпинделя в формате Double
Пример:
‘ Покажем текущее значение оборотов шпинделя
Message “S-Word = “ & GetRPM()
Смотрите также:
SetSpinSpeed(), DoSpinCW(), DoSpinCCW(), DoSpinStop()
GetSafeZ
Function GetSafeZ() As Double
Эта функция возвращает текущее значение безопасной высоты по оси Z
Аргументы: отсутствуют
Возвращаемое значение: текущее значение безопасной высоты по оси Z в формате Double
Пример:
‘ Получим текущую безопасную высоту
OldSafeZ = GetSafeZ()
‘ Установим новую безопасную высоту
NewSafeZ = 1.5750
SetSafeZ(NewSafeZ)
…
‘ Заново установим старую безопасную высоту
SetSafeZ(OldSafeZ)
Смотрите также:
SetSafeZ()
GetScale
Function GetScale(Axis As Integer) As Double
Эта функция возвращает текущий коэффициент масштабирования для оси Axis.
Аргументы:
Axis в формате Integer: 0=X, 1=Y, 2=Z, 3=A, и т.д.
Возвращаемое значение: текущее значение коэффициента масштабирования для заданной оси
Пример:
‘ Определим константы
Xaxis = 0
Yaxis = 1
Zaxis = 2
‘ Получим значение коэффициентов для осей X,Y,Z
OldXScaleFactor = GetScale(Xaxis)
OldYScaleFactor = GetScale(Yaxis)
OldZScaleFactor = GetScale(Zaxis)
‘ Получим новые значения этих параметров от пользователя
ScaleFactor = Question(“Enter new scale factor:”)
‘ Установим новые параметры
SetScale(Xaxis, ScaleFactor)
SetScale(Yaxis, ScaleFactor)
SetScale(Zaxis, ScaleFactor)
Смотрите также:
SetScale()
GetSelectedTool
Function GetSelectedTool() As Integer
Эта функция возвращает инструмент, установленный последней командой смены инструмента (M6). Она обычно используется в макросе M6Start, чтобы сделать выбранный инструмент текущим.
Аргументы: отсутствуют
Возвращаемое значение: номер текущего инструмента в формате Integer
Пример:
‘ Пример макроса M6Start
‘ Получаем инструмент установленный последней командой M6
NewTool = GetSelectedTool()
‘ Устанавливаем этот инструмент в качестве текущего
SetCurrentTool(NewTool)
Смотрите также:
GetCurrentTool(), SetCurrentTool()
GetSetupUnits
Function GetSetupUnits() As Integer
Эта функция возвращает исходные единицы измерения, установленные в настройках Mach3. Возвращаемое значение этого API не изменяется при использовании
G20 / G21.
Аргументы: отсутствуют
Возвращаемое значение:
0 – мм
1 – дюймы
Пример:
‘ Выведем установленные единицы измерения
Case Select GetSetupUnits()
Case 0:
MsgBox “Setup units are millimeters“
Case 1:
MsgBox “Setup units are inches“
Else:
MsgBox “Unknown setup units value”
End case
Смотрите также: связи отсутствуют
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
GetTimer
Function GetTimer(TimerNum As Integer) As Double
Эта функция возвращает текущее значение счетчика для указанного таймера. Mach3 предоставляет 25 таймеров. Они пронумерованы от 0 до 24 и могут использоваться для тайминга в сценариях CB. Чтобы рассчитать время мероприятия, сначала очистите таймер с помощью SetTimer (), затем используйте GetTimer () для чтения таймера. Обратите внимание, что эта функция работает только с драйвером параллельного порта, и она может быть удалена без предварительного уведомления в будущем выпуске Mach3.
Аргументы: TimerNum – номер таймера в диапазоне от 0 до 24
Возвращаемое значение: текущее значение счетчика таймера в формате Double
Пример:
‘ Сбросим таймер с номером 15
SetTimer(15)
‘ Ожидаем активации OEM триггера 10
While IsActive(OEMTRIG10) = False Then
Sleep 10
Wend
‘ Смотрим сколько времени прошло до активации триггера
Message “OEMTRIG10 active after “ & GetTimer(15) & “
seconds”
Смотрите также:
SetTimer()
GetToolChangeStart
Function GetToolChangeStart(Axis As Integer) As Double
Эта функция возвращает положение указанной оси в момент смены инструмента.
Обычно она используется в макросе M6End для восстановления позиций осей в положениях, которые были до смены инструмента.
Аргументы: Axis в формате Integer: 0=X, 1=Y, 2=Z, 3=A, и т.д.
Возвращаемое значение: положение указанной оси в начале последней смены инструмента в формате Double
Пример:
‘ Пример макроса M6End
‘ Определим константы
Xaxis = 0
Yaxis = 1
Zaxis = 2
‘ Вернем все оси на то место, где они были до смены инструмента
Xpos = GetToolChangeStart(Xaxis)
Ypos = GetToolChangeStart(Yaxis)
Zpos = GetToolChangeStart(Zaxis)
Code “G00 X” & Xpos & “ Y” & Ypos & “ Z” & Zpos
‘ Ожидаем завершения действия
While IsMoving()
Sleep 100
Wend
Смотрите также:
GetSelectedTool(), GetCurrentTool(), SetCurrentTool()
GetToolDesc
Function GetToolDesc(ToolNum As Integer) As String
Эта функция возвращает строку описания инструмента указанного в параметре ToolNum
Аргументы: номер инструмента в диапазоне от 0 до 255
Возвращаемое значение: строка описания инструмента
Пример:
‘ Покажем описание текущего инструмента
Message “Tool “ & GetCurrentTool() & “: “ & _
GetToolDesc(GetCurrentTool())
Смотрите также:
GetToolParam(), SetToolParam(), SetToolDesc()
GetTurretAng
Function GetTurretAng() As Double
Эта функция возвращает текущий угол револьверной головки токарного станка
Аргументы: отстутствуют
Возвращаемое значение: Текущий угол револьверной головки токарного станка, в формате Double
Пример:
‘ Покажем текущий угол револьверной головки токарного станка
Message “Tool turret position = “ & GetTurretAng()
Смотрите также: связи отсутствуют
GetUserDRO
Function GetUserDRO(DRONum As Integer) As Double
Эта функция возвращает значение пользовательского поля DRO с номером DRONum в формате Double.
Аргументы: DRONum – номер пользовательского поля DRO. Диапазон: от 1000 до 2254.
Возвращаемое значение: текущее значение пользовательского поля DRO в формате Double
Пример:
‘ Определим константы
MyWidgetDRO = 1125
‘ Установим значение MyWidgetDRO: 1.234
SetUserDRO(MyWidgetDRO, 1.234)
…
‘ Получим текущее значение MyWidgetDRO
MyDROVal = GetUserDRO(MyWidgetDRO)
Смотрите также:
GetUserDRO(), SetOEMDRO(), GetOEMDRO()
GetUserLabel
Function GetUserLabel(LabelNum As Integer) As String
Эта функция позволяет получить значение экранного поля Label созданного пользователем. Поля Label создаются в дизайнере интерфейса (например Mach3Screen) с текстом по умолчанию, содержащим строку «UserLabel», за которой следует одна или несколько цифр.
Аргументы: LabelNum – числовая часть строки поля Label по умолчанию. Диапазон: от 0 до 255.
Возвращаемое значение: значение экранного поля Label в формате строки
Пример:
‘ Изменим текст поля Label25
SetUserLabel(25, “This is Label 25”)
…
‘ Получим текст UserLabel25
LabelText = GetUserLabel(25)
Смотрите также:
SetUserLabel()
GetUserLED
Function GetUserLED(LEDNum As Integer) As Integer
Эта функция позволяет получить текущее состояние пользовательского светодиода.
Аргументы: LEDNum – номер индикатора, состояние которого необходимо получить. Диапазон от 1000 до 2254
Возвращаемое значение: текущее состояние указанного пользовательского индикатора. 0 – индикатор выключен, 1 – индикатор включен.
Пример:
‘ Определим константы
‘ выход для управления конденсатором потока
FluxCapacitorControl = OUTPUT1
‘ индикатор показывающий состояние конденсатора потока
FluxCapacitorLED = 1234
‘ Включим конденсатор потока
ActivateSignal(FluxCapacitorControl)
‘ Включим индикатор конденсатора потока
SetUserLED(FluxCapacitorLED, 1)
…
‘Получим состояние индикатора
FluxCapacitorOn = GetUserLED(FluxCapacitorLED)
Смотрите также:
GetUserLED(), SetOEMLED(), GetOEMLED()
GetVar
Function GetVar(VarNum As Integer) As Double
Эта функция возвращает текущее значение переменной Mach, заданной VarNum, в формате Double. Переменные Mach доступны как для скриптов CB, так и с помощью SetVar () и функции GetVar (), а также программ G-кода, использующих синтаксис #nnnn.
Аргументы: VarNum – номер переменной Mach, значение которуй нужно получить.
Возвращаемое значение: Текущее значение указанной переменной в формате Double.
Пример:
‘ Установим значение переменной 1234 равное 2.3456
SetVar(1234, 2.3456)
‘ Передвинем ось X в координату равную значению этой переменной
Code “G0 X #1234”
‘ Другой способ:
Code “G0 X “ & GetVar(1234)
Смотрите также:
SetVar()
GetXCoor
Function GetXCoor() As Double
Эта функция используется вместе с функцией GetCoord () для получения X, Y, Z и A
значений координат осей введенных пользователем. Функция GetXCoor () вернет значение координаты X введенной пользователем при последнем вызове функции GetCoord ().
Аргументы: отсутствуют
Возвращаемое значение: Значение координаты оси X из последнего вызова GetCoord ()
Пример:
GetCoord(“Enter target coordinates:”)
Message “Coordinates are: “ & GetXCoor() & “ “ &
GetYCoor() _
& “ “ & GetZCoor() & “ “ & GetACoor()
Смотрите также:
GetCoord(), GetYCoor(), GetZCoor(), GetACoor()
GetYCoor
Function GetYCoor() As Double
Аналогично GetXCoor
GetZCoor
Function GetZCoor() As Double
Аналогично GetXCoor
GotoSafeZ
Sub GotoSafeZ()
Эта функция переместит ось Z в положение Safe_Z, если Safe_Z включен в Config-
> Настройка Safe_Z. Если Safe_Z не включен, в строке состояния будет отображаться сообщение об ошибке и в данном случае ось Z будет оставаться на прежнем месте.
Аргументы: отсутствуют
Возвращаемое значение: отсутствует
Пример:
‘ Передвинем ось Z в позицию Safe_Z
GotoSafeZ()
Смотрите также:
GetSafeZ(), SetSafeZ()
HelpAbout
Sub HelpAbout()
Эта функция отображает диалоговое окно, отображающее текущую версию обработчика скриптов.
Аргументы: отсутствуют
Возвращаемое значение: отсутствует
Пример:
‘ Покажем пользователю текущую версию обработчика скриптов
HelpAbout()
Смотрите также: связи отсутствуют
IncludeTLOinZFromG31
Function IncludeTLOinZFromG31() As Boolean
Эта функция используется для получения состояния параметра меню Маch: config / general-> config который определяет, учитывается ли коррекция инструмента в данных щупа при сканировании.
Аргументы: отсутствуют
Возвращаемое значение:
True: Параметр включен
False: Параметр выключен
Пример:
MsgBox “TLO in G31 option is “ &
IncludeTLOinZFromG31()
Смотрите также: связи отсутствуют
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
IsActive
Function IsActive(Signal As Integer) As Boolean
Эта функция возвращает True, если указанный входной сигнал активен. Обратите внимание на то, что с точки зрения фактического уровня сигнала термин «активный» зависит от того, как этот сигнал определяется в настройках. Если сигнал определен в Config-> Ports & Pins-> InputSignals как ActiveLow, тогда IsActive () вернет True, когда этот сигнал не активен. Если сигнал определен в Config-> Ports & Pins-> InputSignals как ActiveHigh, то IsActive () вернет True, когда этот сигнал находится в активном состоянии.
Аргументы: Signal – целое число, соответствующее одной из заранее определенных констант входных сигналов.
Возвращаемое значение:
С учетом вышеописанного
False – сигнал в настоящее время находится в неактивном состоянии.
True – сигнал в настоящее время находится в активном состоянии.
Пример:
‘ Покажем пользователю состояние сигнала INPUT1
If IsActive(INPUT1) Then
Message “INPUT #1 input is active”
Else
Message “INPUT #1 input is inactive”
End If
Смотрите также: связи отсутствуют
IsDiameter
Function IsDiameter() As Integer
Эта функция применима только для токарного станка и возвращает 1, если в Mach3 в настоящее время установлен режим диаметра.
Аргументы: отсутствуют
Возвращаемое значение:
0 – режим радиуса.
1 – режиме диаметра.
Пример:
‘ Покажем пользователю, какой режим установлен
If IsDiameter() Then
Message “Currently in Diameter mode”
Else
Message “Currently in Radius mode”
End If
Смотрите также: связи отсутствуют
IsEStop
Function IsEStop() As Integer
Эта функция возвращает 1, если Mach3 в настоящее время находится в режиме E-Stop.
Аргументы: отсутствуют
Возвращаемое значение:
0 – Mach3 не находится в режиме E-Stop
1 – Mach3 находится в режиме E-Stop
Пример:
Dim FluxCapacitorControl As Integer
FluxCapacitorControl = OUTPUT3
‘ Находится ли Mach3 в режиме E-Stop?
If IsEStop() Then
‘ Mach3 в режиме E-Stop. Отключаем конденсатор потока.
DeactivateOutput(FluxCapacitorControl)
Else
‘Mach3 не в режиме E-Stop. Включаем конденсатор потока. ActivateOutput(FluxCapacitorControl)
End If
Смотрите также: связи отсутствуют
IsLoading
Function IsLoading() As Integer
Эта функция возвращает 1, если в данный момент загружается файл G-кода.
Аргументы: отсутствуют
Возвращаемое значение:
0 – файл G-кода в настоящее время не загружается.
1 – файл G-кода в данный момент загружается.
Пример:
Dim FluxCapacitorControl As Integer
FluxCapacitorControl = OUTPUT3
‘ Загружаеся ли сейчас файл G-кода?
If IsLoading() Then
‘ Да, тогда отключаем конденсатор потока
DeactivateOutput(FluxCapacitorControl)
Else
‘ Нет, тогда включаем конденсатор потока
ActivateOutput(FluxCapacitorControl)
End If
Смотрите также: связи отсутствуют
IsMoving
Function IsMoving() As Integer
Эта функция возвращает 1, если какая-либо ось в данный момент движется. Чаще всего функция используется для приостановки выполнение макроса, пока движение не будет
завершено. Обычно используется совместно с функцией IsStopped().
Аргументы: отсутствуют
Возвращаемое значение:
0 – если все оси в данный момент остановлены
1 – если какая-либо ось в данный момент движется
Пример:
‘ Передвинем ось Z в позицию Safe_Z
GotoSafeZ()
‘ Ожидаем пока передвижение в позицию SafeZ будет завершено
Sleep(100)
While IsMoving()
Sleep(100)
Wend
Смотрите также:
IsStopped()
IsOutputActive
Function IsOutputActive(Signal As Integer) As Boolean
Эта функция возвращает True, если текущим состоянием указанного выходного сигнала является его активное состояние. Обратите внимание, что возвращаемое значение будет зависеть от того, как настроен данный сигнал в Config-> Ports & Pins-> OutputSignals. Если он настроен, как ActiveLow, тогда IsOutputActive() вернет значение True, когда этот сигнал имеет низкий логический уровень. Если сигнал определен, как
ActiveHigh, тогда IsOutputActive() вернет значение True, когда этот сигнал имеет высокий логический уровень.
Аргументы: Signal – целое число, соответствующее одной из предопределенных констант выходных сигналов.
Возвращаемое значение: состояние указанного выходного сигнала в формате Boolean
Пример:
‘ Переведем OUTPUT1 в активное состояние
ActivateSignal(OUTPUT1)
‘ Покажем пользователю текущее состояние OUTPUT1
If IsActive(OUTPUT1) Then
MsgBox “OUTPUT #1 output is active”
Else
MsgBox “OUTPUT #1 output is inactive”
End If
‘ Деактивируем OUTPUT1
DeactivateSignal(OUTPUT1)
‘ Покажем текущее состояние OUTPUT1
If IsActive(OUTPUT1) Then
MsgBox “OUTPUT #1 output is active”
Else
MsgBox “OUTPUT #1 output is inactive”
End If
Смотрите также: связи отсутствуют
IsPeriodicScriptRunning
Function IsPeriodicScriptRunning(ByVal ScriptQFN as String) as Boolean
Эта функция используется, чтобы определить, был ли запущен сценарий с периодическим выполнением
Аргументы:
ScriptQFN – строка полного имени файла (QFN) скрипта. QFN относится к установочному каталогу Mach. Переданный QFN должен быть идентичен QFN, используемому для запуска макроса с периодическим выполнением.
Возвращаемое значение:
True – макрос запущен
False – макрос не запущен
Пример:
‘ проверка, запущен ли макрос управляющий смазкой станка
If IsPeriodicScriptRunning(“OilerScript”) then
Msgbox “Oiler script is running.”
Else
Msgbox “Oiler script is not running.”
End If
Смотрите также:
StartPeriodicScript, StopPeriodicScript
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
IsSafeZ
Function IsSafeZ() As Integer
Эта функция возвращает 1, если Safe_Z включен в Config-> Safe_Z Setup.
Аргументы: отсутствуют
Возвращаемое значение:
0 – Safe_Z не включен в Config-> Safe_Z Setup.
1 – Safe_Z включен в Config-> Safe_Z Setup.
Пример:
‘ Покажем состояние SafeZ
If IsSafeZ() Then
Message “SafeZ is enabled“
Else
Message “SafeZ is disabled“
End If
Смотрите также: связи отсутствуют
IsStopped
Function IsStopped() As Integer
Эта функция возвращает 1, если все оси в данный момент остановлены. Функция чаще всего используется для приостановки выполнения макроса, пока движение не будет
завершено. Обычно используется с функцией IsMoving().
Аргументы: отсутствуют
Возвращаемое значение:
0 – если какая-либо ось в данный момент движется
1 – если все оси в данный момент остановлены
Пример:
‘ Передвинем ось Z в позицию Safe_Z
GotoSafeZ()
‘ Ожидаем пока движение не будет завершено
Sleep(100)
While Not IsStopped()
Sleep(100)
Wend
Смотрите также:
IsMoving()
IsSuchSignal
Function IsSuchSignal(SignalID As Integer) As Integer
Эта функция возвращает значение, указывающее активирован ли соответствующий значению аргумента сигнал в Config->Ports&Pins. Возвращаемое значение 0 указывает, что сигнал не активирован, ненулевое возвращаемое значение указывает, что сигнал активирован. Функцию можно использовать например для обеспечения проверки настройки входа Probe перед началом сканирования.
Аргументы: SignalID должен быть равен одной из предопределенных констант сигналов Mach3 (см. CB Constants) или иметь другое значение или быть выражением, которое оценивается как одно из значений этих констант.
Возвращаемое значение:
0 – сигнал не активирован,
1 – сигнал активирован
Пример:
‘ Активирован ли YHOME входной сигнал?
If IsSuchSignal(YHOME) = 0 Then
Message “Error! No YHOME input is defined”
End If
Смотрите также: связи отсутствуют
JogOff
Function JogOff(Axis As Integer)
Эта функция используется для отключения режима однократных прерывистых перемещений на указанное значение оси, определенной в аргументе Axis. Обычно используется в сочетании с JogOn() для перемещения оси под управлением макроса.
Аргументы: Axis – целое число, определяющее ось, для которой следует отключить вышеописанный режим. 0 = Х, 1 = Y, 2 = Z, 3 = A и т. д.
Возвращаемое значение: отсутствует.
Пример:
‘ Определим константы
Xaxis = 0
Yaxis = 1
Zaxis = 2
Plus = 0
Minus = 1
‘ Включим режим для оси Y в отрицательном направлении на 1 с.
JogOn(Yaxis, Minus)
Sleep(1000)
‘ Теперь отключим данный режим
JogOff(Yaxis)
Смотрите также:
JogOn()
JogOn
Function JogOn(Axis As Integer, Dir as Integer)
Эта функция используется для запуска режима однократных прерывистых перемещений на указанное значение оси, определенной в аргументе Axis.
Аргументы: Axis – целое число, определяющее ось, для которой следует включить вышеописанный режим. 0 = Х, 1 = Y, 2 = Z, 3 = A и т. д.
Dir – направление. 0 – в положительном направлении, 1 – в отрицательном направлении
Возвращаемое значение: отсутствует
Пример:
‘ Определим константы
Xaxis = 0
Yaxis = 1
Zaxis = 2
Plus = 0
Minus = 1
‘ Включим режим Jog для Y в отрицательном направлении на 1 с
JogOn(Yaxis, Minus)
Sleep(1000)
‘ Отключим режим Jog
JogOff(Yaxis)
Смотрите также:
JogOff()
LoadFile
Sub LoadFile(FilePath As String)
Эта функция загружает файл G-кода, указанный в аргументе FilePath
Аргументы: FilePath – полный путь до файла G-кода
Возвращаемое значение: отстутствует
Пример:
‘ Загрузим файл
LoadFile(“C:\Mach3\Gcode\roadrunner.tap”)
‘ Запустим его
RunFile()
Смотрите также:
RunFile()
LoadRun
Sub LoadRun(Filepath As String)
Эта функция загружает файл G-кода, указанный в Filepath, а затем сразу же начинает
Его исполнение. Эквивалентно LoadFile(), за которым следует RunFile().
Аргументы: FilePath – полный путь до файла G-кода
Возвращаемое значение: отсутствует
Пример:
‘ Загрузим и запустим файл
LoadRun(“C:\Mach3\Gcode\roadrunner.tap”)
Смотрите также:
LoadFile(), RunFile(), Filename(), IsLoading()
LoadStandardLayout
Sub LoadStandardLayout()
Эта функция повторно загружает текущий набор экранов по умолчанию. Функция используется в основном для повторной загрузки экрана по умолчанию, когда происходит выход из визарда.
Аргументы: отсутствуют
Возвращаемое значение: отсутствует
Пример:
‘ Загрузим набор экранов по умолчанию
LoadStandardLayout()
Смотрите также:
ToggleScreens()
LoadTeachFile
Sub LoadTeachFile()
Эта функция загружает последний файл Teach в Mach3 для выполнения. Файл сначала должен быть открыт или создан с помощью OpenTeachFile() или AppendTeachFile() во время текущего сеанса Mach3.
Аргументы: отсутствуют
Возвращаемое значение: остсутствует
Пример:
‘ Создаем новый Teach файл
MyTeachFile = “TeachMe.nc”
Err = OpenTeachFile(MyTeachFile)
If Err <> 0 Then
‘ Teach файл создан успешно
‘ Записываем в него G-код
Code “G00 X0 Y0”
Code “G02 X0 Y0 I-1 J0 F40”
‘ Закрываем the Teach файл
CloseTeachFile()
‘ И teach file для выполнения
LoadTeachFile()
Else
‘ Не удалось открыть файл
Message “Unable to open Teach File”
End If
Смотрите также:
OpenTeachFile(), AppendTeachFile(), CloseTeachFile()
LoadWizard
Sub LoadWizard(WizardName As String)
Эта функция загружает и запускает указанный визард. Визарды находятся в папке Mach3 \ Addons. Каждый визард состоит из нескольких файлов с подкаталогом. Строка WizardName, переданная в качестве аргумента LoadWizard, должна быть просто именем подкаталога верхнего уровня для визарда.
Аргументы: WizardName – имя визарда, который должен быть загружен
Возвращаемое значение: отсутствует
Пример:
‘ Загрузим визард “Circular Pocket”
LoadWizard(“Circular Pocket”)
Смотрите также: связи отсутствуют
MachMsg
Function MachMsg(Prompt As String, Title As String, DialogType As Integer) As
Integer
Эта функция отображает диалоговое окно с одной из нескольких различных комбинаций кнопок, и ждет, пока пользователь нажмет одну из кнопок. Аргумент Title – отображается в заголовке диалогового окна. Аргумент Prompt – отображается в клиентской части
диалогового окна над кнопками. Щелчок по любой кнопке закрывает диалоговое окно, и
возвращаемое значение функции указывает, какую кнопку нажал пользователь.
Аргументы:
Prompt – строка, которая будет отображаться в клиентской части диалогового окна над
Кнопками.
Title – строка, которая будет отображаться в заголовке диалогового окна.
DialogType – целочисленное значение, которое определяет, какие кнопки будут отображаться в окне:
0 – кнопка OK
1 – кнопки OK, Cancel
2 – кнопки Abort, Retry, Ignore
3 – кнопки Yes, No, Cancel
4 – кнопки Yes, No
5 – кнопки Retry, Cancel
6 – кнопки Cancel, Try Again, Continue
Возвращаемое значение: указывает, какую кнопку нажал пользователь:
OK – 1
Cancel – 2
Abort – 3
Retry – 4
Ignore – 5
Yes – 6
No – 7
Try Again – 10
Continue – 11
Пример:
‘ Определим константы для формирования диалогового окна
MachMsgTypeOK = 0
MachMsgTypeOKCancel = 1
MachMsgTypeAbortRetryIgnore = 2
MachMsgTypeYesNoCancel = 3
MachMsgTypeYesNo = 4
MachMsgTypeRetryCancel = 5
MachMsgTypeCancelTryAgainContinue = 6
‘ Определим константы для обработки возвращаемого значения
MachMsgReturnOK = 1
MachMsgReturnCancel = 2
MachMsgReturnAbort = 3
MachMsgReturnRetry = 4
MachMsgReturnIgnore = 5
MachMsgReturnYes = 6
MachMsgReturnNo = 7
MachMsgReturnTryAgain = 10
MachMsgReturnContinue = 11
‘ Покажем Abort/Retry/Ignore диалоговое окно
Ret = MachMsg(“Flux Capacitor Failed to Start”, _
“Flux Capacitor Warning”,
MachMsgTypeAbortRetryIgnore)
If Ret = MachMsgReturnAbort Then
‘ Нажата кнопка Abort
ElseIf Ret = MachMsgReturnRetry Then
‘Нажата кнопка Retry
ElseIf Ret = MachMsgReturnIgnore Then
‘Нажата кнопка Ignore
End If
Смотрите также:
Message(), Question(), AskTextQuestion(), GetCoord()
MaxX
Function MaxX() As Double
Эта функция возвращает максимальное значение X координаты открытого файла G-кода в формате Double
Аргументы: отсутствуют
Возвращаемое значение: максимальное значение X координаты открытого файла G-кода в формате Double
Пример:
‘ Покажем пользователю максимальное значение X координаты
Message “MinX=” & MinX() & ” MaxX=” & MaxX() & _
” MinY=” & MinY() & ” MaxY=” & MaxY()
Смотрите также:
MinX(), MinY, MaxY()
MaxY
Function MaxY() As Double
Аналогично MaxX
Message
Sub Message(MessageText As String)
Эта функция отображает строку MessageText в строке состояния.
Аргументы: MessageText – строка, которая будет отображена в строке состояния
Возвращаемое значение: отсутствует
Пример:
‘ Покажем номер текущего инструмента в строке состояния
Message “Current tool is “ & GetCurrentTool()
Смотрите также:
Message(), Question(), Ask TextQuestion(), MachMsg(), GetCoord()
MinX
Function MinX() As Double
Аналогично MaxX, но будет возвращено минимальное значение
MinY
Function MinY() As Double
Аналогично MinX
nFmt
Function nFmt(Val As Double, Digits As Integer) As Double
Эта функция округляет значение Double до указанного количества десятичных знаков.
Аргументы:
Val – значение типа Double, которое нужно округлить
Digits – количество знаков после запятой
Возвращаемое значение: округленное значение в формате Double
Пример:
‘ Округлим 1.23456789 до 4 знаков после запятой
‘ Покажем округленное значение 1.2345
Message nFmt(1.23456789, 4)
Смотрите также: связи отсутствуют
NotifyPlugins
Sub NotifyPlugins(Event As Integer)
Эта функция вызывает метод MyNotify всех загруженных в данный момент подключаемых модулей, передавая событие как аргумент.
Аргументы: Event – целочисленное значение, которое будет передано в качестве аргумента MyNotify.
Возвращаемое значение: отсутствует
Пример: отсутствует
Смотрите также: связи отсутствуют
NumberPad
Function NumberPad (ByVal PadTitle As string) As Double
Эта функция отображает цифровую клавиатуру для ввода данных. Она достаточно большая, чтобы ее было легко использовать с сенсорными экранами. Размер цифровой клавиатуры также можно изменить, перетащив границу.
Аргументы: PadTitle – строка, отображаемая в заголовке окна клавиатуры
Возвращаемое значение: Введенное значение в формате Double
Пример:
Option explicit
Dim d As Double
d = NumberPad(“test num pad”)
MsgBox “value entered = ” & d
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
OpenDigFile
Sub OpenDigFile()
Эта функция открывает файл журнала оцифровки. При запуске OpenDigFile
отобразится диалоговое окно, в котором пользователь может выбрать существующий файл или ввести новое имя файла, в который будут записаны данные оцифровки (зондирования). После открытия файла команда G31 вызовет запись положения триггера датчика в файл оцифровки. Когда оцифровка будет завершена, CloseDigFile() можно использовать для закрытия файла.
Аргументы: отсутствуют
Возвращаемое значение: отсутствует
Пример: отсутствует
Смотрите также: связи отсутствуют
OpenTeachFile
Function OpenTeachFile (Filename As String) As Integer
Эта функция повторно открывает существующий файл Teach, находящийся в каталоге Gcode установочного каталога Mach3 и добавляет в этот файл все команды, которые впоследствии выполняются через MDI или Code (), до тех пор, пока не будет запущена функция CloseTeachFile().
Аргументы: Filename – имя файла для открытия
Возвращаемое значение:
0 – не удалось открыть файл
1 – файл успешно открыт
Пример:
‘ Откроем файл Teach в Mach3\Gcode
MyTeachFile = “TeachMe.nc”
Err = OpenTeachFile(MyTeachFile)
If Err <> 0 Then
‘ Файл успешно создан
‘Запишем в него G-код
Code “G00 X0 Y0”
Code “G02 X0 Y0 I-1 J0 F40”
‘ Закроем файл Teach
CloseTeachFile()
‘ Теперь запустим файл teach для выполнения
LoadTeachFile()
Else
‘ Не удалось открыть файл Teach
Message “Unable to open Teach File”
End If
Смотрите также:
AppendTeachFile(), CloseTeachFile()
Param1
Function Param1() As Double
Эта функция возвращает значение параметра P, переданное в M-макрос.
Аргументы: отсутствуют
Возвращаемое значение: значение параметра P, переданное в M-макрос в формате Double
Пример:
‘ Этот макрос ожидает три аргумента: P, Q, & R
‘ Если поместить его в M-макрос и вызвать через MDI, он будет
‘отображать значения аргументов в строке состояния
‘Например, если вы используете M1200:
‘ M1200 P1.234 Q2.345 R3.456
‘Выполнение указанной выше строки в MDI отобразит:
‘ P=1.234 Q=2.345 R=3.456
Parg = Param1()
Qarg = Param2()
Rarg = Param3()
Message “P=” & Parg & “P=” & Qarg & “R=” & Rarg
Смотрите также:
Param2(), Param3()
Param2
Function Param2() As Double
Аналогично Param1
Param3
Function Param3() As Double
Аналогично Param1
PlayWave
Sub PlayWave(Filename As String)
Эта функция воспроизводит файл .WAV через аудиосистему ПК. Filename – имя
файла WAV для воспроизведения.
Аргументы: Filename – имя файла WAV для воспроизведения
Возвращаемое значение: отсутствует
Пример:
PlayWave(“C:\WINDOWS\Media\Windows XP Startup.wav”)
Смотрите также: связи отсутствуют
ProgramSafetyLockout
Function ProgramSafetyLockout() As Boolean
Эта функция используется для получения значения параметра config / general-config меню Mach. который определяет, используется ли вход 1 для управления системой безопасности станка (щитки и т.д.)
Аргументы: отсутствуют
Возвращаемое значение:
True: опция активна
False: опция не активна
Пример:
MsgBox “Program Safety Lockout “ &
ProgramSafetyLockout()
Смотрите также: связи отсутствуют
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
PutPortByte
Sub PutPortByte(PortAddr As Integer, Value As Integer)
Эта функция записывает 8-битные данные, заданные в аргументе Value в 8-битный порт ввода-вывода ПК, адрес которого передается в аргументе PortAddr. Эта функция может использоваться для управления аппаратными устройствами, которые напрямую не поддерживаются Mach3.
Аргументы:
PortAddr – адрес порта.
Value – записываемое значение. Только 8 младших значащих битов (LSBs).
Возвращаемое значение: отсутствует
Пример:
‘ Определим константы
PortAddr = 1016 ‘ 0x3f8
PortData = 154 ‘ 0xa5
‘ Записываем 0xa5 в LPT порт с адресом 0x3f8
PortData = PutPortByte(PortAddr, PortData)
Смотрите также:
GetPortByte()
Question
Function Question(Prompt As String) As Double
Эта функция отображает диалоговое окно с кнопкой ОК и текстовое поле, в которое пользователь можно ввести числовое значение. Строка подсказки отображается над текстовым полем. Значение возвращается в формате Double. Функцию можно использовать для получения одного числового значения от пользователя.
Аргументы: Prompt – строка подсказки.
Возвращаемое значение: числовое значение введенное пользователем.
Пример:
‘ Получим следующую позицию по координате X от пользователя
NextPos = Question(“Enter next X position:”)
‘ Передвинем ось X в данную позицию
Code “G00 X” & NextPos
Смотрите также:
Message(), Question(), AskTextQuestion(), MachMsg(), GetCoord()
QueueDepth
Function QueueDepth() As Integer
Эта функция возвращает текущее количество записей в очереди планирования траектории.
Аргументы: отсутствуют
Возвращаемое значение: Количество записей в очереди планировщика траектории в виде целого числа.
Пример:
‘Показать текущий размер очереди
Message “Queue depth = “ & QueueDepth()
Смотрите также: связи отсутствуют
Random
Function Random() As Double
Эта функция возвращает псевдослучайное число от 0 до 1. Ее можно использовать вместо функции CB rnd ().
Аргументы: отсутствуют
Возвращаемое значение:
Следующее псевдослучайное число в последовательности, в формате Double
Пример:
‘ получим псевдослучайное число
NextRand = Random()
Смотрите также: связи отсутствуют
RefCombination
Sub RefCombination(Axes As Integer)
Эта функция позволяет одновременно реферировать (привязать) любую комбинацию осей. Оси определяются аргументом Axes.
Аргументы:
Axes – значение, которое определяет, на какие оси следует ссылаться. Оно вычисляется путем сложения значений, соответствующих отдельным осям. Значения осей:
Х = 1
Y = 2
Z = 4
А = 8
В = 16
С = 32
Так, например, для ссылки на оси X, Z и B, Аргумент Axes будет равен: 1 + 4 + 16 = 21.
Возвращаемое значение: отсутствует
Пример:
‘ Определим константы
RefX = 1
RefY = 2
RefZ = 4
RefZ = 8
RefB = 16
RefC = 32
‘ Привяжем оси Y, Z и C
RefCombination(RefY + RefZ + RefC)
Смотрите также:
VerifyAxis(), SingleVerify(), SingleVerifyReport()
ResetAxisSwap
Sub ResetAxisSwap()
Эта функция отменяет действие функции SwapAxis (). Обратите внимание, что это единственный способ отменить Swap, и выполнение двух вызовов SwapAxis ().
Аргументы: отсутствуют
Возвращаемое значение: отсутствует
Пример:
‘ Определим константы
Xaxis = 0
Yaxis = 1
Zaxis = 2
‘ Поменяем местами оси X и Y
SwapAxis(Xaxis, Yaxis)
‘ Что нибудь сделаем и отменим SwapAxis
ResetAxisSwap()
‘ Теперь поменяем местами оси Y и Z
SwapAxis(Yaxis, Zaxis)
Смотрите также:
SwapAxis()
ResetTHC
Sub ResetTHC()
Эта функция сбрасывает высоту резца. Она идентична ZeroTHC(), за исключением случаев, когда программа запущена. В этом случае она ничего не делает.
Аргументы: отсутствуют
Возвращаемое значение: отсутствует
Пример:
‘ Сбросим THC
ResetTHC()
Смотрите также:
THCOn(), THCOff()
RetractMode
Function RetractMode() As Integer
Эта функция возвращает текущий режим отвода Peck Drilling. Если код G98 был запущен и не был отменен командой G99 функция вернет 0. Если же был запущен код G99 и не был отменен командой G98, то будет возвращена 1.
Аргументы: отсутствуют
Возвращаемое значение: целочисленное значение, указывающее, какой цикл сверления активирован 0 = G98, 1 = G99.
Пример:
‘ Выполним код G98
Code “G98 Z-0.5 R0.1 F10”
‘ Ожидаем завершения
While IsMoving()
Sleep 100
Wend
‘ Теперь покажем, текущий цикл сверления – должен показать 0
MsgBox(“RetractMode = “ & RetractMode())
Code “Hit CycleStart to continue…”
‘ Выполним код G99
Code “G99 Z-0.5 R0.1 F10”
‘ Ожидаем завершения
While IsMoving()
Sleep 100
Wend
‘Теперь покажем, текущий цикл сверления – должен показать 1
MsgBox(“RetractMode = “ & RetractMode())
Code “Hit CycleStart to continue…”
Смотрите также: связи отсутствуют
roun
Function roun(Val As Double) As Double
Эта функция округляет значение Double, заданное параметром Val, до четвертого знака после запятой.
Аргументы: Val – округляемое значение в формате Double
Возвращаемое значение: Число, округленное до четвертого знака после запятой в формате Double
Пример:
‘Округлим 1.23456789
Message “1.23456789 rounds to “ & roun(1.23456789)
Смотрите также:
Round()
RunFile
Sub RunFile()
Эта функция начинает выполнение загруженного в данный момент G-кода, если таковой имеется. Идентична DoOEMButton (CYCLESTART)
Аргументы: отсутствуют
Возвращаемое значение: отсутствует
Пример:
‘ Загрузим наш файл G-кода
LoadFile(“MyGCode.tap”)
‘ Выполним его
RunFile()
Смотрите также:
FileName(), LoadFile(), LoadRun(), IsLoading(), DoOEMButton()
RunScript
Function RunScript(ByVal QFN as string) as Integer
Эта функция может использоваться для запуска макроса из другого макроса. Параметр квалифицированного имени файла (QFN) относится к установочному каталогу Mach.
Функция загрузит указанный файл макроса, скомпилирует его, выполнит и вернется к выполнению основной программы, когда сценарий будет завершен.
До добавления этой функции обычной практикой было помещать код сценария в макрос Mxxx.m1s и использовать функцию Code для выполнения макроса Mxxx. Выполнение
макроса Mxxx предполагало использование интерпретатора Mach GCode (выполнение блока GCode M) и приводило к тому, что программисту приходилось изобретать и обрабатывать семафоры для координации асинхронного выполнения Mxxx
макроса.
Рекомендуется избегать использования функции Code в качестве метода вызова скрипта и, по возможности, следует использовать функцию RunScript.
Аргументы: QFN – полное имя файла макроса (без расширения) для запуска. Расширение не включено, так как Mach3 будет искать расширение .m1s или .mcc для названного макроса.
Возвращаемое значение:
0 – файл найден и запущен.
<0 – состояние ошибки, файл не был запущен.
Возвращаемые значения ошибки: <TBD>
Пример:
‘ Запустим макрос
If RunScript(“MsgBoxScript”) < 0 then
Msgbox “RunScript returned an error”
Else
Msgbox “Script ran”
End If
Файл MsgBoxScript.m1s содержит MsgBox «Message from script file»
В результате отобразится диалоговое окно с содержимым «Message from script file».
Затем следует диалоговое окно с надписью «Script Ran».
Смотрите также: связи отсутствуют
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06.
В версии 3.43.6 возвращаемое значение функции было изменено на Boolean:
Возвращаемое значение:
True – файл найден и запущен.
False – файл не найден.
Эта функция была вновь изменена в Mach3 версии 3.43.19 и теперь ее возвращаемое значение, как и в первоначальном варианте, имеет формат Integer.
SaveWizard
Sub SaveWizard()
Эту функцию можно использовать в визарде для сохранения значений параметров, введенных пользователем. Они будут загружены при следующем запуске визарда.
Аргументы: отсутствуют
Возвращаемое значение: отсутствует
Пример:
‘Сохраним текущие значения параметров визарда
SaveWizard()
Смотрите также: связи отсутствуют
SetButtonText
Sub SetButtonText(Text As String)
Эта функция позволяет изменять текст экранной кнопки. Ее можно использовать для изменения текста на кнопке на основе состояния переменной или режима.
Аргументы:
Text – строка, определяющая новый текст, который будет отображаться на кнопке.
Возвращаемое значение: отсутствует
Пример:
‘ Пример изменения текста кнопки переключателя шпинделя On/Off
SpindleCWLED = 11
If GetOEMLED(SpindleCWLED) Then
‘ Шпиндель включен – выключим его и установим текст кнопки «On»
DoSpinStop()
SetButtonText(“Spindle On”)
Else
‘ Шпиндель выключен – включим его и установим текст кнопки «Off»
DoSpinCW()
SetButtonText(“Spindle Off”)
End If
Смотрите также: связи не обнаружены
SetCurrentTool
Sub SetCurrentTool(ToolNum As Integer)
Эта функция делает выбранный инструмент текущим.
Аргументы:
ToolNum – номер инструмента от 1 до 255.
Возвращаемое значение: отсутствует
Пример:
‘ Обычный скрипт, реализующий код M6
‘ Получим выбранный инструмент
NewTool = GetSelectedTool()
‘ Сделаем его текущим инструментом
SetCurrentTool(NewTool)
Смотрите также:
GetCurrentTool(), GetSelectedTool()
SetDRO
Function SetDRO(DRONum As Integer, DROVal As Double)
Эта устаревшая функция изменяет значение поля DRO, с номером DRONum, на указанное пользователем значение DROVal.. Использование SetDRO больше не рекомендуется. Эта функция существует только для поддержки устаревших скриптов.
Примечание к устаревшему сценарию: существовало две разные нумерации DRO, используемые в Mach3: номер «DRO» и номер «OEMDRO». Эта функция использует номер «DRO».
Нумерация «DRO» были дополнительно разделена на «пользовательский» и «OEM» диапазоны. Диапазон «OEM» включал в себя номера от 0 до 200, что
соответствовал номерам OEM DRO от 800 до 1000. Числовое соответствие между рядами нумерации не гарантируется для будущих версий Mach.
Используйте функции SetOEMDRO и SetUserDRO вместо этой функции.
Аргументы:
DRONum – номер поля DRO (от 0 до 200)
DROVal – значение, присваиваемое полю DRO
Возвращаемое значение: отсутствует
Пример:
‘ Определим константы
Const XaxisMultiFunctionDRONum = 0
Const YaxisMultiFunctionDRONum = 1
Const ZaxisMultiFunctionDRONum = 2
‘ Запишем 1.2345 в поле DRO оси Z используя SetDRO
SetDRO(ZaxisMultiFunctionDRONum, 1.2345)
‘ Покажем значение поля DRO оси Z используя GetDRO()
MsgBox “After using SetDRO() the Z Axis DRO reads: “ &
GetDRO(ZaxisMultiFunctionDRONum)
Смотрите также:
SetOEMDRO(), GetOEMDRO(), SetUserDRO(), GetUserDRO(), GetDRO()
SetFeedRate
Sub SetFeedRate(FeedRate As Double)
Эта функция устанавливает скорость подачи. Обратите внимание, что значение FeedRate указывается в единицах в секунду, а не в единицах в минуту.
Аргументы:
FeedRate – указывается в единицах в секунду в формате Double
Возвращаемое значение: отсутствует
Пример:
‘ Установим скорость подачи 123.456 дюймов/мин
SetFeedRate(123.456 / 60)
‘ Получим текущую скорость подачи
CurrentFeedrate = FeedRate()
‘ Покажем ее в строке состояния
Message “Current feed rate = “ & CurrentFeedrate
Смотрите также:
FeedRate()
SetFormula
Sub SetFormula(Formula As String, Axis As Integer)
Эта функция устанавливает формулу, доступную через FunctionCfg’s-> Formulas для указанной оси. Формулы позволяют определять движение осей с учетом положения других осей используя алгебраические и тригонометрические функции. Обратите внимание: чтобы формулы могли быть задействованы, вы должны установить флажок «Формулы включены» в FunctionCfg’s-> Formulas.
Аргументы:
Formula – строка, определяющая алгебраическую / тригонометрическую функцию, которая будет использоваться для вычисления положения оси.
Axis – значение определяющее к какой оси должна применяться формула.
Возвращаемое значение: отсутствует
Пример:
‘ Определим константы
Xaxis = 0
Yaxis = 1
Zaxis = 2
‘ Формула: линейное движение оси
‘ Y приводит к синусоидальному движению оси X
‘ ось Z движется нормально
SetFormula(“Z”, Zaxis)
SetFormula(“Y”, Yaxis)
SetFormula(“Sin(y)”, Xaxis)
Смотрите также: связи не обнаружены
SetIJMode
Sub SetIJMode(IJMode As Integer)
Эта функция устанавливает режим IJ. IJMode = 0 устанавливает абсолютный режим, а IJMode = 1 устанавливает инкрементальный режим.
Аргументы: IJMode = 0 устанавливает абсолютный режим, IJMode = 1 устанавливает инкрементальный режим.
Возвращаемое значение: отсутствует
Пример:
‘ Определим константы
IJAbsolute = 0
IJIncremental = 1
‘ Установим инкрементальный режим
SetIJMode(IJIncremental)
Смотрите также:
GetIJMode()
SetMachZero
Sub SetMachZero(Axis As Integer)
Эта функция обнуляет координату указанной оси в текущей позиции.
Аргументы: Axis – значение, определяющее обнуляемую ось. 0 = X, 1 = Y, 2 = Z, 3 = Z,
и т.д.
Возвращаемое значение: отсутствует.
Пример:
‘ Определим константы
Xaxis = 0
Yaxis = 1
Zaxis = 2
‘ Установим ноль для оси Y в текущей позиции.
SetMachZero(Yaxis)
Смотрите также: связи отсутствуют
SetOEMDRO
Sub SetOEMDRO(DRONum As Integer, DROVal as Double)
Эта функция изменяет значение поля OEM DRO, с номером DRONum, на значение указанное в DROVal.
Аргументы: DRONum – значение или выражение, равное номеру одного из полей OEM DRO.
DROVal – новое значение поля.
Возвращаемое значение: отсутствует
Пример:
‘ Определим константы
Const XaxisMultiFunctionOEMDRONum = 800
Const YaxisMultiFunctionOEMDRONum = 801
Const ZaxisMultiFunctionOEMDRONum = 802
‘ Запишем 1.2345 в поле DRO оси Z используя SetOEMDRO
SetOEMDRO(ZaxisMultiFunctionDRONum, 1.2345)
‘ Покажем значение поля DRO оси Z используя GetOEMDRO()
MsgBox “After using SetOEMDRO() the Z Axis DRO reads:
“ & GetOEMDRO(ZaxisMultiFunctionDRONum)
Смотрите также:
GetOEMDRO(), SetUserDRO(), GetUserDRO()
SetPage
Sub SetPage(PageNum As Integer)
Эта функция переключает текущую отображаемую страницу на страницу с номером PageNum.
Аргументы:
PageNum – номер страницы, на которую нужно переключиться.
Возвращаемое значение: отсутствует.
Пример:
‘ Для скринсета 1024.set, перейдем на страницу диагностики
SetPage(5)
Смотрите также:
GetPage()
SetParam
Sub SetParam(ParamName As String, ParamVal As Double)
Эта функция позволяет использовать ряд внутренних параметров Mach3 (не путать с параметрами G-кода). Каждый параметр Mach3 идентифицируется по имени. Параметр,
имя которого задано в ParamName, устанавливается равным значению, заданному в ParamVal. Параметры:
RPMOverRide | Когда этот параметр равен 1, скорость шпинделя (OEMDRO 39) становится доступной для записи, перекрывая таким образом обычный расчет истинной скорости шпинделя в Mach3. |
Xscale | Коэффициент масштабирования по оси X |
YScale | Коэффициент масштабирования по оси Y |
ZScale | Коэффициент масштабирования по оси Z |
AScale | Коэффициент масштабирования по оси A |
BScale | Коэффициент масштабирования по оси B |
CScale | Коэффициент масштабирования по оси C |
FeedRate | Скорость подачи |
Units | Текущие единицы (дюйм / мм). 0 = мм, 1 = дюйм |
StepsPerAxisX | Шагов по оси X на единицу |
StepsPerAxisY | Шагов по оси Y на единицу |
StepsPerAxisZ | Шагов по оси Z на единицу |
StepsPerAxisA | Шагов по оси A на единицу |
StepsPerAxisB | Шагов по оси B на единицу |
StepsPerAxisC | Шагов по оси C на единицу |
VelocitiesX | Максимальная скорость по оси X (в зависимости от настройки двигателя), в единицах в секунду |
VelocitiesY | Максимальная скорость по оси Y (в зависимости от настройки двигателя), в единицах в секунду |
VelocitiesZ | Максимальная скорость по оси Z (в зависимости от настройки двигателя), в единицах в секунду |
VelocitiesA | Максимальная скорость оси A (в зависимости от настройки двигателя), в единицах в секунду |
VelocitiesB | Максимальная скорость оси B (в зависимости от настройки двигателя), в единицах в секунду |
VelocitiesC | Максимальная скорость оси C (в зависимости от настройки двигателя), в единицах в секунду |
AccelerationX | Максимальное ускорение оси X (в зависимости от настройки двигателя) |
AccelerationY | Максимальное ускорение оси Y (в зависимости от настройки двигателя) |
AccelerationZ | Максимальное ускорение оси Z (в зависимости от настройки двигателя) |
AccelerationA | Максимальное ускорение оси A (в зависимости от настройки двигателя) |
AccelerationB | Максимальное ускорение оси B (в зависимости от настройки двигателя) |
AccelerationC | Максимальное ускорение оси C (в зависимости от настройки двигателя) |
SpindleSpeed | Изменяет скорость шпинделя, но работает не во всех версиях. Для изменения скорости шпинделя используйте функцию SetSpinSpeed (). |
ZInhibitOn | Z Inhibit Enable. 0: ограничение передвижений по оси Z отключено, 1: ограничение оси Z включено. При включении ограничения оси Z она не сможет перемещаться ниже глубины, заданной параметром ZinhibitDepth. |
ZInhibitDepth | ZinhibitDepth – ограничительный параметр для вышеуказанного параметра |
SafeZ | Безопасная высота по оси Z |
Boundry | Отображение границ траектории включено. 0: отключить отображение границ, 1: включить отображение границ |
XRefPer | Скорость перемещения к нулю по оси X, в % от максимальной скорости |
YRefPer | Скорость перемещения к нулю по оси Y, в % от максимальной скорости |
ZRefPer | Скорость перемещения к нулю по оси Z, в % от максимальной скорости |
ARefPer | Скорость перемещения к нулю по оси A, в % от максимальной скорости |
BRefPer | Скорость перемещения к нулю по оси B, в % от максимальной скорости |
CRefPer | Скорость перемещения к нулю по оси C, в % от максимальной скорости |
ToolPathLock | Включение блокировки траектории. 0: Траектория разблокирована, 1: Траектория заблокирована. Когда траектория заблокирована, ее нельзя перемещать, масштабировать или вращать. |
PrepMove | Запрет показа диалогового окна подготовительного перемещения. 0: разрешить отображение диалоговых окон подготовительного перемещения, 1: запретить отображение диалоговых окон подготовительного перемещения |
AutoToolChange | ??? – Указывает, что используется автоматическая смена инструмента |
ADirActive | ??? – Обратное направление оси А |
Аргументы:
ParamName – имя устанавливаемого параметра (из таблицы).
ParamVal – значение типа Double, присваиваемое параметру
Возвращаемое значение: отсутствует
Пример:
‘ Получим новые коэффициенты масштабирования для осей X/Y/Z
ScaleFactor = Question “Enter new scale factor:”
‘ Присвоим их осям
SetParam(“Xscale”, ScaleFactor)
SetParam(“Yscale”, ScaleFactor)
SetParam(“Zscale”, ScaleFactor)
Смотрите также:
GetParam()
SetPulley
Sub SetPulley(Pulley As Integer)
Эта функция устанавливает текущий номер передачи шпинделя. Это позволяет Mach3 правильно масштабировать выходную скорость шпинделя на основе текущей передачи и заданной скорости шпинделя. Передаточное число и допустимые диапазоны скоростей настраиваются в Config-> SpindlePulleys.
Аргументы:
Pulley – это номер передачи от 1 до 15.
Возвращаемое значение: отсутствует
Пример:
‘ Запросим номер передачи у пользователя
NewPulley = Question “Enter new pulley number:”
‘ Установим ее в качестве текущей
SetPulley(NewPulley)
Смотрите также: связи отсутсвуют
SetSafeZ
Sub SetSafeZ(SafeZ As Double)
Эта функция устанавливает новое значение для безопасной высоты по Z. Обратите внимание, что SafeZ должен быть включен в Config-> SafeZConfig
Аргументы:
SafeZ – значение безопасной высоты в формате Double
Возвращаемое значение: отсутствует
Пример:
‘ Установим безопасную высоту по Z равную +2.000
SetSafeZ(2.000)
Смотрите также: связи отсутствуют
SetScale
Sub SetScale(Axis As Integer, Scale As Double)
Эта функция устанавливает коэффициент масштабирования для оси Axis
Аргументы:
Axis -номер оси. 0: X, 1: Y, 2: Z, 3: A и т. д.
Scale – коэффициент масштабирования
Возвращаемое значение: отсутствует
Пример:
‘ Установим константы
Xaxis = 0
Yaxis = 1
Zaxis = 2
‘ Получим текущие значения коэффициента
OldXScaleFactor = GetScale(Xaxis)
OldYScaleFactor = GetScale(Yaxis)
OldZScaleFactor = GetScale(Zaxis)
‘ Получим новые значения коэффициента от пользователя
ScaleFactor = Question(“Enter new scale factor:”)
‘ Установим новые значения коэффициента для осей X/Y/Z
SetScale(Xaxis, ScaleFactor)
SetScale(Yaxis, ScaleFactor)
SetScale(Zaxis, ScaleFactor)
Смотрите также:
GetScale()
SetSpinSpeed
Sub SetSpinSpeed(RPM As integer)
Эта функция устанавливает скорость шпинделя в об / мин точно так же, как слово «S» в G-коде.
Аргументы:
RPM – устанавливаемая скорость шпинделя.
Возвращаемое значение: отсутствует
Пример:
‘ Установим скорость шпинделя в 2500 RPM и запустим шпиндель
SetSpinSpeed(2500)
DoSpinCW()
Смотрите также:
DoSpinCW(), DoSpinCCW(), DoSpinStop()
SetTicker
Sub SetTicker(TickerNum As Integer, TickerText As String)
Эта функция загружает текст, заданный в параметре TickerText, в Ticker, указанный в параметре TickerNum. Ticker – это прокручиваемая текстовая метка, текст по умолчанию которой установлен на «Tickernn», где «nn» – это число от 0 до 255. В Ticker можно поместить длинное сообщение, и оно будет прокручиваться постоянно, поэтому все сообщение будет видно, даже если метка короче текста.
Аргументы:
TickerNum – номер метки Ticker.
TickerText – текст строки, который будет записан в метку Ticker
Возвращаемое значение: отсутствует
Пример:
‘ Запишем текущее значение пути к файлу в метку с номером 25
SetTicker(25, FileName())
Смотрите также:
SetUserLabel(), Message()
SetTimer
Function SetTimer(TimerNum As Integer)
Эта функция сбрасывает указанный таймер. Mach3 предоставляет 25 таймеров, пронумерованных от 0 до 24. Их можно использовать для отсчета времени в скриптах CB. Чтобы рассчитать время события, сначала сбросьте таймер, используя SetTimer (), затем используйте GetTimer () для получения значения счетчика таймера. Обратите внимание, что эта функция работает только с драйвером параллельного порта, и поддержка этой функции может быть прекращена без уведомления в последующих версиях программы.
Аргументы:
TimerNum – номер таймера (от 0 до 24).
Возвращаемое значение: отсутствует
Пример:
‘ Сбросим таймер с номером 15
SetTimer(15)
‘ Ожидаем активации OEM триггера 10
While IsActive(OEMTRIG10) = False Then
Sleep 10
Wend
‘ Смотрим сколько времени прошло до активации триггера
Message “OEMTRIG10 active after “ & GetTimer(15) & “
seconds”
Смотрите также:
GetTimer()
SetToolDesc
Function SetToolDesc(ToolNum As Integer, TDesc As String)
Эта функция устанавливает текстовое описание инструмента во внутренней таблице инструментов Mach.
Аргументы:
ToolNum – номер инструмента (от 0 до 254).
TDesc – строка с описанием инструмента.
Возвращаемое значение:
True: описание задано
False: произошла ошибка при попытке задать описание инструмента.
Пример:
‘ Установим новое описание инструмента
Dim TNum as Integer
Dim TDesc as string
TNum = 1 ‘ хотим установить описание инструмента с номером # 1
TDesc = “1/4 135 degree split point drill”
If SetToolDescription(TNum, TDesc) then
Message “Tool description was set”
Else
Message “Error setting Tool description”
End if
Смотрите также:
GetToolDesc(), GetToolParam(), SetToolParam()
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.42.30
SetToolParam
Sub SetToolParam(ToolNum As Integer, ParamNum As Integer, ParamVal As Double)
Эта функция позволяет установить любой параметр инструмента для любого инструмента.
Аргументы:
ToolNum – номер инструмента, параметры которого устанавливаются (от 1 до 255). ParamNum – номер параметра, определяемый следующим образом:
Для Mach3Mill:
1 – Диаметр
2 – Z-смещение
3 – X износ
4 – Z износ
Для Mach3Turn:
1 – Тип наконечника
2 – Радиус инструмента
3 – Смещение по оси X
4 – Z-смещение
5 – X износ
6 – Z износ
7 – Угол револьверной головки
Возвращаемое значение: отсутсвует
Пример:
‘ Определим константы
DiameterParam = 1
ZoffsetParam = 2
XwearParam = 3
ZwearParam = 4
‘ Установим параметры инструмента под номером #23
SetToolParam(23, DiameterParam, 0.2500) ‘Установим диаметр 1/4”
SetToolParam(23, ZoffsetParam, 1.2500) ‘ Set length
offset = 1.25”
SetToolParam(23, XwearParam, 0.0005) ‘ Set X wear =
0.0005”
SetToolParam(23, ZwearParam, 0.0013) ’ Set Z wear =
0.0013”
Смотрите также:
GetToolParam(), GetToolDesc()
SetToolX
Function SetToolX(Pos As Double)
Эта функция устанавливает значение поля DRO оси X в значение, заданное аргументом Pos, а затем отображает сообщение «Рабочее смещение установлено» в строке состояния. Обратите внимание, что за исключением этого сообщения SetToolX() функционально идентичен использованию SetOEMDRO для изменения значения поля DRO оси X.
Аргументы:
Pos – значение, которое будет присвоено полю DRO оси X.
Возвращаемое значение: отсутствует.
Пример:
‘ Предложим пользователю обнулить ось X
Message “Move X axis to zero position. Press OK when
ready…”
‘ Zero the X axis DRO
SetToolX(0.0000)
Смотрите также:
SetToolZ()
SetToolZ
Function SetToolZ(Pos As Double)
Эта функция устанавливает значение поля DRO оси Z в значение, заданное аргументом Pos, а затем отображает сообщение «Рабочее смещение установлено» в строке состояния. Обратите внимание, что за исключением этого сообщения SetToolZ() функционально идентичен использованию SetOEMDRO для изменения значения поля DRO оси Z.
Аргументы:
Pos – значение, которое будет присвоено полю DRO оси Z.
Возвращаемое значение: отсутствует.
Пример:
‘Предложим пользователю обнулить ось Z
Message “Move Z axis to zero position. Press OK when
ready…”
‘ Zero the Z axis DRO
SetToolZ(0.0000)
Смотрите также:
SetToolX()
SetTriggerMacro
Sub SetTriggerMacro(MacroNum As Integer)
Эта функция позволяет связать M-макрос с OEM-кодом 301. Эту конструкцию можно использовать для того, чтобы один из триггерных сигналов OEM автоматически запускал макрос. Сигнал OEM Trigger сначала должен быть настроен в Config-> Ports & Pins-
> Входные сигналы. Затем OEM-триггер должен быть связан с OEM-кодом 301 в
Конфигурация-> SystemHotKeys. Наконец, необходимо использовать SetTriggerMacro, чтобы определить, какой M-макрос будет выполняться при выполнении кода кнопки OEM 301.
Аргументы:
MacroNum – номер M-макроса, который будет запускаться.
Возвращаемое значение: отсутствует.
Пример:
‘ Назначим OEMTRIGGER5 OEM коду 301
‘ Назначим макрос M1025 OEM коду 301
SetTriggerMacro(1025)
‘ Теперь, когда OEMTRIGGER5 активируется, запускается M1025.m1s
Смотрите также: связи отсутствуют.
SetUserDRO
Sub SetUserDRO(DRONum As Integer, DROVal As Double)
Эта функция изменяет значение пользовательского поля DRO с номером DRONum на значение, указанное в аргументе DROVal.
Аргументы:
DRONum – номер пользовательского поля DRO (от 1000 до 2254).
DROVal – новое значение пользовательского поля DRO.
Возвращаемое значение: отсутствует.
Пример:
‘ Определим константы
MyWidgetDRO = 1125
‘ Присвоим полю MyWidgetDRO значение 1.234
SetUserDRO(MyWidgetDRO, 1.234)
…
‘ Получим текущее значение поля MyWidgetDRO
MyDROVal = GetUserDRO(MyWidgetDRO)
Смотрите также:
GetUserDRO(), SetOEMDRO(), GetOEMDRO()
SetUserLabel
Sub SetUserLabel(LabelNum As Integer, LabelText As String)
Эта функция позволяет изменять текст пользовательской метки типа Label на экране с помощью макроса без использования редактора экранов.
Аргументы:
LabelNum – числовая часть текста метки, установленная по умолчанию (от 0 до 255).
LabelText – текст, который нужно разместить.
Возвращаемое значение: отсутствует.
Пример:
‘ Изменим текст на метке UserLabel25
SetUserLabel(25, “This is Label 25”)
…
‘ Получим текст метки UserLabel25 в переменную
LabelText = GetUserLabel(25)
Смотрите также: связи отсутствуют.
SetUserLED
Sub SetUserLED(LEDNum As Integer, State As Integer)
Эта функция позволяет включить или отключить пользовательский индикатор.
Аргументы:
LEDNum – номер пользовательского индикатора (от 1000 до 2254).
State – состояние пользовательского индикатора. 0 – выключен, 1 – включен.
Возвращаемое значение: отсутствует.
Пример:
‘ Установим константы
‘ Выход управляющий конденсатором потока
FluxCapacitorControl = OUTPUT1
‘ Индикатор состояния конденсатора потока
FluxCapacitorLED = 1234
‘ Включим конденсатор потока
ActivateSignal(FluxCapacitorControl)
‘ Включим индикатор указывающий состояние конденсатора потока
SetUserLED(FluxCapacitorLED, 1)
…
‘ Получим состояние индикатора
FluxCapacitorOn = GetUserLED(FluxCapacitorLED)
Смотрите также:
GetUserLED(), SetOEMLED(), GetOEMLED()
SetVar
Sub SetVar(VarNum As Integer, Val As Double)
Эта функция присваивает переменной Mach с номером VarNum значение из параметра Val. Переменные Mach доступны как для макросов с помощью SetVar () и GetVar () так и из G-кода, с помощью использования синтаксиса #nnnn.
Аргументы:
VarNum – номер переменной.
Val – новое значение переменной.
Возвращаемое значение: отсутствует.
Пример:
‘ Присвоим переменной 1234 значение 2.3456
SetVar(1234, 2.3456)
‘ Теперь переместим ось X в координату, равную этому значению
Code “G0 X #1234”
Смотрите также:
GetVar()
SingleVerify
Sub SingleVerify(Axis As Integer)
Эта функция выполняет проверку положения указанной оси, перемещая эту ось в home, обнуляет координату оси, затем возвращает ее к исходной (к началу проверки) координате. Обычно используется в начале программы, чтобы убедиться, что координаты установлены правильно, или после сбоя для восстановления правильных координат.
Аргументы:
Axis – ось для проверки. 0 – X, 1 – Y, 2 – Z, 3 – А и т. д.
Возвращаемое значение: отсутствует.
Пример:
Xaxis = 0
Yaxis = 1
Zaxis = 2
‘ Проверим ось Z
SingleVerify(Zaxis)
Смотрите также:
SingleVerifyReport(), VerifyAxis(), RefCombination()
SingleVerifyReport
Function SingleVerifyReport(Axis As Integer)
Эта функция выполняет проверку положения указанной оси, перемещая эту ось в home, обнуляет координату оси, затем возвращает ее к исходной (к началу проверки) координате. После завершения проверки отображается сообщение, показывающее, насколько ось была смещена от правильного положения. Функция идентична SingleVerify за исключением отображения этого сообщения. Обычно используется в начале программы, чтобы убедиться, что координаты установлены правильно, или после сбоя для восстановления правильных координат.
Аргументы:
Axis – ось для проверки. 0 – X, 1 – Y, 2 – Z, 3 – А и т. д.
Возвращаемое значение: отсутствует.
Пример:
Xaxis = 0
Yaxis = 1
Zaxis = 2
‘ Проверим ось Z и выведем сообщение
SingleVerifyReport(Zaxis)
Смотрите также:
SingleVerify(), VerifyAxis(), RefCombination()
Sleep
Sub Sleep(Time As Integer)
Эта функция приостанавливает выполнение макроса на указанный период времени в миллисекундах. В это время другие процессы могут иметь доступ к ЦП. Функция Sleep() обязательно вставляется в любой цикл, который может оставаться активным в течение неопределенного периода времени, для того, чтобы исключить блокировку остальных процессов. Например, в цикл While при ожидании завершения команды перемещения.
Аргументы:
Time – время в миллисекундах.
Возвращаемое значение: отсутствует.
Пример:
‘ Передвинем оси X/Y в нулевую точку
Code “G0 X0.000 Y0.000”
‘ Ожидаем завершения операции
While IsMoving()
‘ Позволим другим процессам в это время использовать ЦП
Sleep 100
Wend
Смотрите также: связи отсутствуют.
Speak
Sub Speak(TextToSpeak As String)
Эта функция использует речевой синтезатор, чтобы «озвучить» аргумент String. Обратите внимание, что ваш компьютер должен иметь работающую аудиосистему. Также необходимо включить речевой синтезатор, установив флажок в Config-> GeneralConfig-> GeneralConfiguration.
Аргументы:
TextToSpeak – текст для озвучивания
Возвращаемое значение: отсутствует.
Пример:
‘ Попросим пользователя установить новую заготовку
Speak(“Please load next work piece. Hit CycleStart
When Ready”)
Code “M00”
Смотрите также: связи отсутствуют.
StartPeriodicScript
Function StartPeriodicScript(ByVal ScriptQFN as String, ByVal UpdatePeriod as
Double) as Integer
Эта функция запускает скрипт с указанной периодичностью.
Аргументы:
ScriptQFN: полное имени файла (QFN) запускаемого макроса. Полное имя пути указывается относительно каталога установки Mach. Расширение скрипта в полное имя не включается. Mach сначала будет искать ScriptQFN.mcc, а если он не будет не найден, то ScriptQFN.m1s. Если QFN – это имя макроса, уже запущенного предыдущим вызовом
StartPeriodicScript () будет возвращена ошибка. Mach не поддерживает несколько периодических экземпляров одного макроса.
UpdatePeriod: период времени между запусками скрипта. Единицы времени – секунды. Минимальное значение 5 мс. Любое значение меньше 5 мс. будет проигнорировано, и для UpdatePeriod будет использоваться минимальное значение 5 мс.
Рекомендуется запускать такие макросы с максимально возможным для выполнения задачи UpdatePeriod. Это поможет минимизировать нагрузку на ПК при выполнении нескольких периодических макросов.
Возвращаемое значение:
0 – функция была выполнена успешно (скрипт запущен).
<0 – ошибка (скрипт не запущен).
Возвращаемые значения ошибок: <tbd>
Пример:
‘ Инициализируем макрос, запускающий смазку станка каждые 30 мин
If StartPeriodicScript(“OilerScript”, 30*60*1000) then
Msgbox “Oiler periodic script is running”
Else
Msgbox “Oiler script was not started”
End If
Смотрите также:
IsPeriodicScriptRunning, StopPeriodicScript
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06. Она была определена, как функция с возвращаемым значением типа Boolean:
True – функция выполнена (макрос запущен)
False – ошибка (макрос не запущен)
В версии Mach3 3.43.19 она была определена, как функция с возвращаемым значением типа Integer.
StartTHC
Sub StartTHC()
Эта функция включает управление высотой резака. Функционально идентична THCOn().
Аргументы: отсутствуют.
Возвращаемое значение: отсутствует.
Пример:
StartTHC()‘ Включим контроль за высотой
… ‘ Что-нибудь вырежем
EndTHC() ‘ Отключим контроль
Смотрите также:
THCOn(), THCOff(), EndTHC(), ZeroTHC(), ResetTHC()
StopPeriodicScript
Function StopPeriodicScript(ByVal ScriptQFN as String) as Integer
Эта функция используется для остановки ранее запущенного периодического макроса.
Макрос будет остановлен только в конце текущего кванта времени UpdatePeriod установленного в StartPeriodicScript(). Например, если скрипт выполняется с 5-минутным
UpdatePeriod, и запрос остановки будет запущен через 2 минуты после начала цикла, макрос не будет остановлен, пока не истечет текущий 5-минутный цикл.
Аргументы:
ScriptQFN: полное имени файла (QFN) останавливаемого макроса. Полное имя пути указывается относительно каталога установки Mach. Расширение скрипта в полное имя не включается. Попытки остановить скрипт, который не был запущен с помощью функции StartPeriodicScript(), игнорируются (не является ошибкой).
Возвращаемое значение:
0 – функция была выполнена успешно (макрос остановлен).
<0 – макрос не был остановлен (например, в случае если он не был ранее запущен с помощью StartPeriodicScript())
Возвращаемые значения ошибок: <tbd>
Пример:
‘ остановим ранее запущенный периодический макрос смазки станка
If StopPeriodicScript(“OilerScript”) then
Msgbox “Oiler periodic script has been stopped”
Else
Msgbox “Error, Oiler script was not stopped,
check the QFN passed.”
End If
Смотрите также:
IsPeriodicScriptRunning, StartPeriodicScript
Первая версия Mach3 с данным API:
Этот API был впервые реализован в Mach3 версии 3.43.06. Она была определена, как функция с возвращаемым значением типа Boolean:
True – функция выполнена (макрос остановлен)
False – ошибка (макрос не остановлен)
В версии Mach3 3.43.19 она была определена, как функция с возвращаемым значением типа Integer.
StraightFeed
Sub StraightFeed(X As Double, Y As Double, Z As Double, A As Double, B As Double,
C As Double)
Эта функция выполняет перемещение осей в указанное положение с текущей скоростью подачи. Обратите внимание, что все оси должны быть указаны. Эквивалентно коду «G1 Xn.nnn Yn.nnn.
Zn.nnn An.nnn Bn.nnn Cn.nnn».
Аргументы:
X – определяет целевую координату оси X
Y – определяет целевую координату оси Y
Z – определяет целевую координату оси Z
A – определяет целевую координату оси A
B – определяет целевую координату оси B
C – определяет целевую координату оси C
Возвращаемое значение: отсутствует
Пример:
‘ Отправим все оси в нулевую точку с текущей скоростью подачи
StraightFeed(0.000, 0.000, 0.000, 0.000, 0.000,
0.000)
Смотрите также:
StraightTraverse(), Code()
StraightTraverse
Sub StraightTraverse(X As Double, Y As Double, Z As Double, A As Double, B As
Double, C As Double)
Эта функция выполняет быстрое перемещение осей в указанную позицию. Необходимо указать координаты всех осей. Эквивалентно коду «G0 Xn.nnn Yn.nnn Zn.nnn.
An.nnn Bn.nnn Cn.nnn».
Аргументы:
X – определяет целевую координату оси X
Y – определяет целевую координату оси Y
Z – определяет целевую координату оси Z
A – определяет целевую координату оси A
B – определяет целевую координату оси B
C – определяет целевую координату оси C
Возвращаемое значение: отсутствует
Пример:
‘ Отправим все оси в ноль с максимальной скоростью подачи
StraightTraverse(0.000, 0.000, 0.000, 0.000, 0.000,
0.000)
Смотрите также:
StraightFeed(), Code()
SwapAxis
Sub SwapAxis(FirstAxis As Integer, SecondAxis As Integer)
Эта функция меняет местами контакты STEP и DIR для двух указанных осей. Дает такой же эффект, как и изменение настроек вывода в Config-> Ports & Pins. Обратите внимание, что никакие другие параметры или настройки осей не меняются. Если две указанные оси имеют разные настройки ускорения и скорости, то скорее всего, это приведет к ненадежной работе. Отметим также, что если вы выходите из Mach3, пока действует SwapAxis, смена мест контактов будет записана в XML файл конфигурации, и SwapAxis будет действовать при следующем запуске Mach3. Недопустимо (может привести к сбою) выполнять два последовательных SwapAxis без предварительного выполнения ResetAxisSwap().
Аргументы:
FirstAxis – первая ось для замены: 0 – X, 1 – Y, 2 – Z и т.п.
SecondAxis – вторая ось для замены: 0 – X, 1 – Y, 2 – Z и т.п.
Возвращаемое значение: отсутствует
Пример:
Xaxis = 0
Yaxis = 1
Code “G0 X0 Y0”
‘ Вырежем диагональ под углом 45 градусов (нижний правый угол –
‘верхний левый угол)
Code “G1 X-1 Y1”
Code “G0 X0 Y0”
‘ Теперь поменяем местами оси X и Y
SwapAxis(Xaxis, Yaxis)
‘ Вырежем диагональ под углом 45 градусов (верхний левый угол –
‘нижний правый угол). Обратите внимание: G-код не изменился.
Code “G1 X-1 Y1”
Code “G0 X0 Y0”
Смотрите также:
ResetAxisSwap()
SystemWaitFor
Sub SystemWaitFor(Signal As Integer)
Эта функция используется, чтобы сообщить Mach, что макрос завершается, и в дальнейшем выполнение G-кода должно дождаться активации некоторого сигнала. Эта функция (при ее использовании) должна быть последней строкой в макросе. Она никогда не используется в цикле.
Аргументы:
SignalID – одна из предопределенных констант выходного сигнала Mach3 CB (см.
CB Constants) или другое значение или выражение, которое принимает значение такой константы.
Возвращаемое значение: отсутствует
Пример: отсутствует.
Смотрите также: связи отсутствуют.
THCOff
Sub THCOff()
Эта функция отключает регулировку высоты резака.
Аргументы:
отсутствуют
Возвращаемое значение:
отсутствует
Пример:
‘ Остановим THC
THCOff()
Смотрите также:
THCOn(), ZeroTHC()
THCOn
Sub THCOn()
Эта функция включает регулировку высоты резака.
Аргументы:
отсутствуют
Возвращаемое значение: отсутствует
Пример:
‘ Включим THC
THCOn()
Смотрите также:
THCOff(), ZeroTHC()
ToggleScreens
Sub ToggleScreens()
Эта функция переключает активный экран между «сложным» и «простым» (.set и
.sset) наборами экранов с тем же базовым именем. Например, если текущим набором экранов является по умолчанию «1024.set», эта функция загрузит набор экранов «1024.sset», и наоборот. Функцию можно использовать для переключения между любыми двумя наборами экранов давая обоим одинаковое базовое имя и присваивая одному файлу расширение .set, а другому – расширение .sset.
Аргументы:
отсутствуют
Возвращаемое значение:
отсутствует
Пример:
‘ Перейдем к простому набору экранов
ToggleScreens()
‘ Подождем 5 секунд
Sleep 5000
‘ Вернемся к сложному набору экранов
ToggleScreens()
Смотрите также: связи отсутствуют.
ToolLengthOffset
Function ToolLengthOffset() As Double
Эта функция возвращает коррекцию длины для текущего инструмента.
Аргументы:
отсутствуют
Возвращаемое значение:
коррекция длины для текущего инструмента.
Пример:
‘ Получим коррекцию длины для текущего инструмента
LengthOffset = ToolLengthOffset()
‘ Покажем это значение пользователю
Message “Tool length offset = “ & LengthOffset
Смотрите также:
GetCurrentTool(), SetCurrentTool(), GetSelectedTool(), GetToolParam(),
SetToolParam(), SetToolX(), SetToolZ(), GetToolDesc()
VerifyAxis
Sub VerifyAxis(Silent As Boolean)
Эта функция проверяет положения всех осей, выполняя операцию их возврата в исходное положение на всех осях одновременно, затем перемещая все оси в положение 0,0000. Если
Safe_Z включен, сначала будет выполнено перемещение в Safe_Z. Если аргумент Silent равен True, то по завершении перемещений в строке состояния отображается сообщение, показывающее смещение всех осей от их исходного положения. Эта функция может быть использована для того чтобы убедиться, что не произошла потеря позиции и /или для исправления потери позиции, которая могла произойти по разным причинам.
Аргументы:
True – после завершения проверки функция отображает сообщение с указанием смещений, если таковые имеются для каждой оси.
False – сообщение не отображается.
Возвращаемое значение:
отсутствует. Машинные нули всех осей по окончании проверки сбрасываются в правильное положение.
Пример:
‘ Убедимся, что все оси находятся в правильном положении
VerifyAxis()
‘ Загрузим какой-нибудь G-код
LoadFile(“MyGCodeFile.nc”)
‘ Ожидаем завершения загрузки
While IsLoading()
Sleep 100
Wend
‘ Выполняем G-код
DoOEMButton(CycleStartButton)
‘ Ожидаем выполнения G-кода
While (GetOEMLED(StartLED))
Sleep 100
Wend
Смотрите также:
SingleVerify(), SingleVerifyReport(), RefCombination()
ZeroTHC
Sub ZeroTHC()
Функция обнуления поправочного коэффициента высоты резака.
Аргументы:
отсутствуют
Возвращаемое значение:
отсутствует.
Пример:
‘ Обнулим поправочный коэффициент
ZeroTHC()
Смотрите также:
THCOn(), THCOff()