У цій документації описано модуль python linuxcnc, який надає API Python для взаємодії з LinuxCNC.
1. Вступ
Користувацькі інтерфейси керують діяльністю LinuxCNC, надсилаючи повідомлення NML до контролера завдань LinuxCNC, та контролюють результати, спостерігаючи за структурою стану LinuxCNC, а також каналом повідомлення про помилки.
Програмний доступ до NML здійснюється через C++ API; однак найважливіші частини інтерфейсу NML до LinuxCNC також доступні для програм на Python через модуль linuxcnc.
Окрім інтерфейсу NML для каналів команд, стану та помилок, модуль linuxcnc також містить:
-
підтримка читання значень з INI-файлів
2. Шаблони використання інтерфейсу LinuxCNC NML
Загальна схема використання linuxcnc приблизно така:
-
Імпортуйте модуль
linuxcnc. -
За потреби встановіть з’єднання з каналами NML команд, стану та помилок.
-
Опитуйте канал стану періодично або за потреби.
-
Перед відправкою команди визначте за статусом, чи дійсно можна це зробити (наприклад, немає сенсу відправляти команду «Виконати», якщо завдання перебуває в стані ESTOP або інтерпретатор не перебуває в режимі очікування).
-
Надішліть команду за допомогою одного з методів каналу команди
linuxcnc.
Щоб отримати повідомлення з каналу помилок, періодично опитуйте канал помилок та обробляйте будь-які отримані повідомлення.
-
Опитуйте канал стану періодично або за потреби.
-
Виведіть будь-яке повідомлення про помилку та дослідіть код винятку.
Модуль linuxcnc також визначає тип винятку Python error для підтримки звітності про помилки.
3. Зчитування стану LinuxCNC за допомогою модуля linuxcnc Python
Ось фрагмент коду Python для дослідження вмісту об’єкта linuxcnc.stat, який містить понад 80 значень (типові значення запускаються під час роботи LinuxCNC):
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys import linuxcnc try: s = linuxcnc.stat() # створити підключення до каналу стану s.poll() # отримати поточні значення except linuxcnc.error, detail: print("error", detail) sys.exit(1) for x in dir(s): if not x.startswith("_"): print(x, getattr(s,x))
Модуль linuxcnc використовує стандартний скомпільований шлях до файлу конфігурації NML, якщо його не перевизначено, див. приклад ReadingINI file values.
3.1. Атрибути linuxcnc.stat
- прискорення
-
(повертає число з комою) – прискорення за замовчуванням, відображає запис INI [TRAJ]DEFAULT_ACCELERATION.
- active_queue
-
(повертає ціле число) – кількість рухів, що змішуються.
- actual_position
-
(повертає кортеж чисел з плаваючою комою) - поточна позиція траєкторії, (x y z a b c u v w) в одиницях вимірювання.
- adaptive_feed_enabled
-
(повертає логічне значення) – стан адаптивного коригування швидкості подачі (0/1).
- ain
-
(повертає кортеж чисел з плаваючою комою) - поточне значення аналогових вхідних контактів.
- angular_units
-
(повертає число з комою) – одиниці кутової довжини на градус, відображає значення INI [TRAJ]ANGULAR_UNITS.
- aout
-
(повертає кортеж чисел з плаваючою комою) - поточне значення аналогового виходу.
- axes (Вилучено з версії 2.9_)
-
замість цього використовуйте
axis_mask.bit_count(), щоб отримати кількість налаштованих осей. - axis
-
(повертає кортеж словників) - відображає поточні значення осі. Див. Словник осей.
- axis_mask
-
(повертає ціле число) – маска доступної осі, визначена параметром
[TRAJ]COORDINATESу INI-файлі. Повертає суму значень осей X=1, Y=2, Z=4, A=8, B=16, C=32, U=64, V=128, W=256. - block_delete
-
(повертає логічне значення) – поточний стан видалення блоку.
- call_level
-
(повертає ціле число)` - поточна глибина підпрограми. - 0, якщо не в підпрограмі, глибина, якщо не вказано інше.
- команда
-
(повертає рядок) – команда, що виконується на даний момент.
- current_line
-
(повертає ціле число) – рядок, що виконується в даний момент.
- current_vel
-
(повертає число з комою) - поточна швидкість в одиницях виміру користувача за секунду.
- cycle_time
-
(повертає число з плаваючою комою) - період потоку
- налагодження
-
(повертає ціле число) - прапорець налагодження з INI-файлу.
- delay_left
-
(повертає число з комою) – час, що залишився на команді затримки (G4), секунди.
- din
-
(повертає кортеж цілих чисел) - поточне значення цифрових вхідних контактів.
- distance_to_go
-
(повертає число з плаваючою комою) - відстань, що залишилася до кінця поточного руху, згідно з планувальником траєкторії.
- dout
-
(повертає кортеж цілих чисел) - поточне значення цифрових вихідних контактів.
- dtg
-
(повертає кортеж чисел з плаваючою комою) - відстань, що залишилася від поточного переміщення для кожної осі, як повідомляється планувальником траєкторії.
- echo_serial_number
-
(повертає ціле число) - Серійний номер останньої виконаної команди, надісланої інтерфейсом користувача до завдання. Усі команди мають серійний номер. Після виконання команди її серійний номер відображається в
echo_serial_number. - увімкнено
-
(повертає логічне значення) – прапорець увімкненого планувальника траєкторії.
- estop
-
(повертає ціле число) - Повертає або STATE_ESTOP, або ні.
- exec_state
-
(повертає ціле число) – стан виконання завдання. Один із EXEC_ERROR, EXEC_DONE, EXEC_WAITING_FOR_MOTION, EXEC_WAITING_FOR_MOTION_QUEUE, EXEC_WAITING_FOR_IO, EXEC_WAITING_FOR_MOTION_AND_IO, EXEC_WAITING_FOR_DELAY, EXEC_WAITING_FOR_SYSTEM_CMD, EXEC_WAITING_FOR_SPINDLE_ORIENTED.
- feed_hold_enabled
-
(повертає логічне значення) – увімкнути прапорець для затримки подачі.
- feed_override_enabled
-
(повертає логічне значення) – прапорець увімкнення для перевизначення каналу.
- feedrate
-
(повертає число з плаваючою комою) – поточне коригування швидкості подачі, 1.0 = 100%.
- file
-
(повертає рядок) – ім’я поточного завантаженого файлу G-коду зі шляхом.
- flood
-
(повертає ціле число) – Стан повені, FLOOD_OFF або FLOOD_ON.
- g5x_index
-
(повертає ціле число) - поточна активна система координат, G54=1, G55=2 тощо.
- g5x_offset
-
(повертає кортеж чисел з плаваючою комою) - зміщення поточної активної системи координат.
- g92_offset
-
(повертає кортеж чисел з плаваючою комою) - положення поточного зміщення g92.
- gcodes
-
(повертає кортеж цілих чисел) – Активні G-коди для кожної модальної групи.
Цілочисельні значення відображають номінальні числа G-кодів, помножені на 10. (Приклади: 10 = G1, 430 = G43, 923 = G92.3) - homed
-
(повертає кортеж цілих чисел) – поточні розміщені з’єднання, де 0 = не розміщено, 1 = розміщено.
- id
-
(повертає ціле число) – ідентифікатор руху, що виконується на даний момент.
- ini_filename
-
(повертає рядок) – шлях до INI-файлу, переданого до linuxcnc.
- inpos
-
(повертає логічне значення) – прапорець «машина в позиції».
- input_timeout
-
(повертає логічне значення) – прапорець для таймера M66, що працює.
- interp_state
-
(повертає ціле число) – поточний стан інтерпретатора RS274NGC. Один з INTERP_IDLE, INTERP_READING, INTERP_PAUSED, INTERP_WAITING.
- interpreter_errcode
-
(повертає ціле число) - поточний код повернення інтерпретатора RS274NGC. Один із INTERP_OK, INTERP_EXIT, INTERP_EXECUTE_FINISH, INTERP_ENDFILE, INTERP_FILE_NOT_OPEN, INTERP_ERROR. Див src/emc/nml_intf/interp_return.hh
- joint
-
(повертає кортеж словників) - відображає поточні спільні значення. Див. Спільний словник.
- joint_actual_position
-
(повертає кортеж чисел з плаваючою комою) – фактичні позиції суглобів.
- joint_position
-
(повертає кортеж чисел з плаваючою комою) – Бажані позиції суглобів.
- joints
-
(повертає ціле число) – кількість суглобів. Відображає значення INI [KINS]JOINTS.
- kinematics_type
-
(повертає ціле число) – Тип кінематики. Один з:
-
KINEMATICS_IDENTITY
-
KINEMATICS_FORWARD_ONLY
-
KINEMATICS_INVERSE_ONLY
-
KINEMATICS_BOTH
-
- limit
-
(повертає кортеж цілих чисел) – маски граничних значень осей. minHardLimit=1, maxHardLimit=2, minSoftLimit=4, maxSoftLimit=8.
- linear_units
-
(повертає число з комою) – одиниці лінійного обчислення на мм, відображає значення INI [TRAJ]LINEAR_UNITS.
- max_acceleration
-
(повертає число з комою) – максимальне прискорення. Відображає [TRAJ]MAX_ACCELERATION.
- max_velocity
-
(повертає число з комою) – максимальна швидкість. Відображає поточну максимальну швидкість. Якщо не змінено за допомогою halui.max-velocity або подібного, воно має відображати [TRAJ]MAX_VELOCITY.
- mcodes
-
(повертає кортеж з 10 цілих чисел) – активні на даний момент M-коди.
- mist
-
(повертає ціле число) - Стан туману, MIST_OFF або MIST_ON
- motion_line
-
(повертає ціле число) – виконується рух номера вихідного рядка. Зв’язок з
idнезрозумілий. - motion_mode
-
(повертає ціле число) – Це режим контролера руху. Один з TRAJ_MODE_COORD, TRAJ_MODE_FREE, TRAJ_MODE_TELEOP.
- motion_type
-
(повертає ціле число) – Тип поточного виконуваного руху. Один з:
-
MOTION_TYPE_TRAVERSE
-
MOTION_TYPE_FEED
-
MOTION_TYPE_ARC
-
MOTION_TYPE_TOOLCHANGE
-
MOTION_TYPE_PROBING
-
MOTION_TYPE_INDEXROTARY
-
Або 0, якщо наразі рух не відбувається.
-
- optional_stop
-
(повертає ціле число) – прапорець зупинки опції.
- paused
-
(повертає логічне значення) - прапорець
рух призупинено. - pocket_prepped
-
(повертає ціле число) – Команда Tx завершена, і ця кишеня підготовлена. -1, якщо кишеня не підготовлена.
- poll()
-
Метод -(вбудована функція) для оновлення атрибутів поточного стану.
- position
-
(повертає кортеж чисел з плаваючою комою) - позиція на траєкторії.
- probe_tripped
-
(повертає логічне значення) - прапорець, True, якщо зонд спрацював (фіксатор).
- probe_val
-
(повертає ціле число) - відображає значення виводу
motion.probe-input. - probed_position
-
(повертає кортеж чисел з плаваючою комою) – позиція спрацьовування зонда.
- probing
-
(повертає логічне значення) – прапорець, True, якщо виконується операція зондування.
- program_units
-
(повертає ціле число) - одне з CANON_UNITS_INCHES=1, CANON_UNITS_MM=2, CANON_UNITS_CM=3
- queue
-
(повертає ціле число) – поточний розмір черги планувальника траєкторії.
- queue_full
-
(повертає логічне значення) – черга планувальника траєкторії заповнена.
- rapidrate
-
(повертає число з плаваючою комою) – швидке перевизначення масштабу.
- read_line
-
(повертає ціле число) – рядок, який зараз читає інтерпретатор RS274NGC.
- rotation_xy
-
(повертає число з плаваючою комою) - поточний кут повороту XY навколо осі Z.
- settings
-
(повертає кортеж чисел з плаваючою комою) - поточні налаштування інтерпретатора:
settings[0] = порядковий номер,
settings[1] = швидкість подачі,
settings[2] = швидкість,
settings[3] = толерантність змішуванняG64 P,
settings[4] = толерантність наївного CAMG64 Q. - spindle
-
' (повертає кортеж словників) ' - повертає поточний стан шпинделя, див. Словник шпинделя.
- spindles
-
(повертає ціле число) – кількість шпинделів. Відображає INI-значення
[TRAJ]SPINDLES. - state
-
(повертає ціле число) – поточний стан виконання команди. Один з
RCS_DONE,RCS_EXEC,RCS_ERROR. - task_mode
-
(повертає ціле число) – поточний режим завдання. Один з
MODE_MDI,MODE_AUTO,MODE_MANUAL. - task_paused
-
(повертає ціле число) – прапорець призупинення завдання.
- task_state
-
(повертає ціле число) – поточний стан завдання. Один з
STATE_ESTOP,STATE_ESTOP_RESET,STATE_ON,STATE_OFF. - tool_in_spindle
-
(повертає ціле число) – поточний номер інструменту.
- tool_from_pocket
-
(повертає ціле число) – номер гнізда для поточного завантаженого інструмента (0, якщо інструмент не завантажено).
- tool_offset
-
(повертає кортеж чисел з плаваючою комою) – значення зміщення поточного інструменту.
- tool_table
-
(повертає кортеж tool_results) - список записів інструменту. Кожен запис є послідовністю наступних полів: id, xoffset, yoffset, zoffset, aoffset, boffset, coffset, uoffset, voffset, woffset, diameter, frontangle, backangle, orientation. id та orientation є цілими числами, а решта - числами з плаваючою комою.
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import linuxcnc s = linuxcnc.stat() s.poll() # щоб знайти інформацію про завантажений інструмент, вона знаходиться в таблиці інструментів з індексом 0 якщо s.tool_table[0].id != 0: # інструмент завантажено print(s.tool_table[0].zoffset) else: print("No tool loaded.")
- toolinfo(toolno)
-
«(повертає словник tooldata для toolno)» — для ініціалізації необхідний початковий stat.poll(). toolno повинен бути більшим за нуль і меншим або рівним найвищому номеру інструменту, що використовується. Елементи словника включають всі елементи tooldata: toolno, pocketno, diameter,frontangle,backangle,orientation, xoffset,yoffset, … woffset, comment.
Як приклад, наступний скрипт
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import linuxcnc s = linuxcnc.stat() s.poll() toolno = 1 print(s.toolinfo(toolno))
видає результат:
': 0, 'xoffset': 0.0, 'yoffset': 0.0, 'zoffset': 0.18, 'aoffset': 0.0, 'boffset': 0.0, 'coffset': 0.0, 'uoffset': 0.0, 'voffset': 0.0, 'woffset': 0.0, 'comment': 'Tool_18 28Jan23:18.53.25'}
- velocity
-
(повертає число з плаваючою комою) – Ця властивість визначена, але не має корисної інтерпретації.
3.2. Словник «axis»
Значення конфігурації та стану осі доступні через список словників для кожної осі. Ось приклад того, як отримати доступ до атрибуту певної осі: Зверніть увагу, що багато властивостей, які раніше були в словнику axis, тепер знаходяться в словнику joint, оскільки на нетривіальних кінематичних машинах ці елементи (такі як люфт) не є властивостями осі.
- max_position_limit
-
(повертає число з плаваючою комою) – максимальне обмеження (м’яке обмеження) для руху осі, в параметрі конфігурації машини units. відображає
[JOINT___n__]MAX_LIMIT. - min_position_limit
-
(повертає число з плаваючою комою) – мінімальне обмеження (м’яке обмеження) для руху осі, в параметрі конфігурації машини units. відображає
[JOINT___n__]MIN_LIMIT. - velocity
-
(повертає число з плаваючою комою) - поточна швидкість.
3.3. Словник «joint»
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import linuxcnc s = linuxcnc.stat() s.poll() print("Стик 1 з домашнім розташуванням: ", s.joint[1]["homed"])
Для кожного суглоба доступні такі ключі словника:
- backlash
-
(повертає число з комою) – Люфт у машинних одиницях. Параметр конфігурації, відображає
[JOINT___n__]BACKLASH. - увімкнено
-
(повертає ціле число) – ненульове значення означає увімкнено.
- fault
-
(повертає ціле число) - ненульове значення означає несправність підсилювача осі.
- ferror_current
-
(повертає число з плаваючою комою) – поточна наступна помилка.
- ferror_highmark
-
(повертає число з плаваючою комою) – величина максимальної помилки відстеження.
- homed
-
(повертає ціле число) – ненульове значення означає, що було додано до основного поля.
- homing
-
(повертає ціле число) – ненульове значення означає, що виконується перенаправлення.
- inpos
-
(повертає ціле число) – ненульове значення означає «на місці».
- input
-
(повертає число з плаваючою комою) – поточна позиція вводу.
- jointType
-
(повертає ціле число) – тип параметра конфігурації осі, відображає
[JOINT___n__]TYPEзLINEAR=1,ANGULAR=2. Див. Конфігурація Joint INI для отримання детальної інформації. - max_ferror
-
(повертає число з комою) – максимальна наступна помилка. параметр конфігурації, відображає
[JOINT___n__]FERROR. - max_hard_limit
-
(повертає ціле число) – ненульове значення означає перевищення максимального жорсткого ліміту.
- max_position_limit
-
(повертає число з плаваючою комою) – максимальне обмеження (м’яке обмеження) для руху суглоба, в одиницях виміру. параметр конфігурації, відображає
[JOINT___n__]MAX_LIMIT. - max_soft_limit
-
ненульове значення означає, що
max_position_limitбуло перевищено, int - min_ferror
-
(повертає число з комою) – параметр конфігурації, відображає
[JOINT___n__]MIN_FERROR. - min_hard_limit
-
(повертає ціле число) – ненульове значення означає перевищення мінімального жорсткого ліміту.
- min_position_limit
-
(повертає число з плаваючою комою) – мінімальне обмеження (м’яке обмеження) для руху суглоба, в одиницях виміру. параметр конфігурації, відображає
[JOINT___n__]MIN_LIMIT. - min_soft_limit
-
(повертає ціле число) – ненульове значення означає, що перевищено
min_position_limit. - output
-
(повертає число з плаваючою комою) – позиція виводу, що була задана.
- override_limits
-
(повертає ціле число) – ненульове значення означає, що обмеження перевизначено.
- units
-
(повертає число з плаваючою комою) – одиниці вимірювання з’єднання на мм або на градус для кутових з’єднань.
(одиниці вимірювання з’єднання такі ж, як і одиниці машинного з’єднання, якщо не встановлено інше параметром конфігурації[JOINT___n__]UNITS) - velocity
-
(повертає число з плаваючою комою) - поточна швидкість.
3.4. Словник «веретено»
- brake
-
(повертає ціле число) – значення прапорця гальма шпинделя.
- direction
-
(повертає ціле число) - напрямок обертання шпинделя, де вперед=1, назад=-1.
- увімкнено
-
(повертає ціле число) – значення прапорця ввімкнення шпинделя.
- homed
-
(наразі не реалізовано)
- increasing
-
(повертає ціле число) – незрозуміло.
- orient_fault
-
(повертає ціле число)
- orient_state
-
(повертає ціле число)
- override
-
(повертає число з плаваючою комою) – шкала корекції швидкості шпинделя.
- override_enabled
-
(повертає логічне значення) – значення прапорця ввімкнення перевизначення шпинделя.
- speed
-
(повертає float) - значення швидкості обертання шпинделя, об/хв, > 0: за годинниковою стрілкою, < 0: проти годинникової стрілки.
При активному G96 це відображає максимальну швидкість, встановлену опціональним словом G96 D, або, якщо слово D відсутнє, значення за замовчуванням +/-1e30.
4. Підготовка до надсилання команд
Деякі команди завжди можна надсилати, незалежно від режиму та стану; наприклад, метод linuxcnc.command.abort() можна викликати завжди.
Інші команди можуть бути надіслані лише у відповідному стані, і ці перевірки можуть бути дещо складними. Наприклад, команду MDI можна надіслати лише якщо:
-
ESTOP не було запущено, і
-
машина ввімкнена та
-
осі розташовані в самому центрі та
-
інтерпретатор не працює, і
-
режим встановлено на
режим MDI
Відповідна перевірка перед надсиланням команди MDI через linuxcnc.command.mdi() може бути такою:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import linuxcnc s = linuxcnc.stat() c = linuxcnc.command() def ok_for_mdi(): s.poll() повернути не s.estop та s.enabled та (s.homed.count(1) == s.joints) і (s.interp_state == linuxcnc.INTERP_IDLE) if ok_for_mdi(): c.mode(linuxcnc.MODE_MDI) c.wait_complete() # зачекайте, поки буде виконано перемикання режимів c.mdi("G0 X10 Y20 Z30")
5. Надсилання команд через linuxcnc.command
Перед надсиланням команди ініціалізуйте канал команди таким чином:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import linuxcnc c = linuxcnc.command() # Приклади використання деяких команд, перелічених нижче: c.abort() c.auto(linuxcnc.AUTO_RUN, program_start_line) c.auto(linuxcnc.AUTO_STEP) c.auto(linuxcnc.AUTO_PAUSE) c.auto(linuxcnc.AUTO_RESUME) c.brake(linuxcnc.BRAKE_ENGAGE) c.brake(linuxcnc.BRAKE_RELEASE) c.flood(linuxcnc.FLOOD_ON) c.flood(linuxcnc.FLOOD_OFF) c.home(2) c.jog(linuxcnc.JOG_STOP, jjogmode, joint_num_or_axis_index) c.jog(linuxcnc.JOG_CONTINUOUS, jjogmode, joint_num_or_axis_index, velocity) c.jog(linuxcnc.JOG_INCREMENT, jjogmode, joint_num_or_axis_index, velocity, increment) c.load_tool_table() c.maxvel(200.0) c.mdi("G0 X10 Y20 Z30") c.mist(linuxcnc.MIST_ON) c.mist(linuxcnc.MIST_OFF) c.mode(linuxcnc.MODE_MDI) c.mode(linuxcnc.MODE_AUTO) c.mode(linuxcnc.MODE_MANUAL) c.override_limits() c.program_open("foo.ngc") c.reset_interpreter() c.tool_offset(toolno, z_offset, x_offset, diameter, frontangle, backangle, orientation)
5.1. linuxcnc.command атрибути
-
serial -
поточний серійний номер команди
5.2. linuxcnc.command методи:
-
abort() -
надіслати повідомлення EMC_TASK_ABORT.
-
auto(int[, int]) -
запустити, покроково виконати, призупинити або відновити програму.
-
brake(int) -
увімкнути або відпустити гальмо шпинделя.
-
debug(int) -
встановити рівень налагодження за допомогою повідомлення EMC_SET_DEBUG.
-
display_msg(string) -
надсилає повідомлення оператора на екран. (максимум 254 символи)
-
error_msg(string) -
надсилає на екран повідомлення про помилку оператора. (максимум 254 символи)
-
feedrate(float) -
встановити корекцію швидкості подачі, 1,0 = 100%.
-
flood(int) -
увімкнути/вимкнути затоплення.
- Синтаксис
-
LinuxCNCflood(command)
flood(linuxcnc.FLOOD_ON)
flood(linuxcnc.FLOOD_OFF) - Константи
-
FLOOD_ON
FLOOD_OFF
-
home(int) -
додому даний суглоб.
-
jog(command-constant, bool, int[, float[, float]]) -
- Синтаксис
-
jog(command, jjogmode, joint_num_or_axis_index, velocity[, distance])
jog(linuxcnc.JOG_STOP, jjogmode, joint_num_or_axis_index)
jog(linuxcnc.JOG_CONTINUOUS, jjogmode, joint_num_or_axis_index, velocity)
jog(linuxcnc.JOG_INCREMENT, jjogmode, joint_num_or_axis_index, velocity, distance) - Константи команд
-
linuxcnc.JOG_STOP
linuxcnc.JOG_CONTINUOUS
linuxcnc.JOG_INCREMENT - jjogmode
-
- True
-
запит на індивідуальний спільний поштовх (потрібне teleop_enable(0))
- False
-
запит на переміщення по осі за декартовими координатами (потрібне teleop_enable(1))
- joint_num_or_axis_index
-
- Для спільного поштовху (jjogmode=1)
-
joint_number
- Для осі декартових координат штовхання (jjogmode=0)
-
нульовий індекс координати осі відносно відомих літер координат XYZABCUVW (x=>0,y=>1,z=>2,a=>3,b=>4,c=>5,u=>6,v=>7,w=>8)
-
load_tool_table() -
перезавантажте таблицю інструментів.
-
maxvel(float) -
встановити максимальну швидкість
-
mdi(string) -
надіслати команду MDI. Максимум 254 символи.
-
mist(int) -
увімкнути/вимкнути туман.
- Синтаксис
-
туман(команда)
туман(linuxcnc.MIST_ON)
туман(linuxcnc.MIST_OFF)
- Константи
-
MIST_ON
MIST_OFF
-
mode(int) -
встановити режим (MODE_MDI, MODE_MANUAL, MODE_AUTO).
-
override_limits() -
встановити прапорець перевизначення меж осі.
-
program_open(string) -
відкрити файл NGC.
-
rapidrate() -
встановити коефіцієнт швидкого перевизначення
-
reset_interpreter() -
скинути налаштування інтерпретатора RS274NGC
-
set_adaptive_feed(int) -
встановити прапорець адаптивної подачі
-
set_analog_output(int, float) -
встановити значення аналогового вихідного контакту
-
set_block_delete(int) -
встановити прапорець видалення блоку
-
set_digital_output(int, int) -
встановити значення цифрового виходу
-
set_feed_hold(int) -
увімкнення/вимкнення блокування подачі
-
set_feed_override(int) -
увімкнення/вимкнення перевизначення подачі
-
set_max_limit(int, float) -
встановити максимальне обмеження положення для заданої осі
-
set_min_limit() -
встановити мінімальне обмеження положення для заданої осі
-
set_optional_stop(int) -
встановити додаткову зупинку ввімкнено/вимкнено
-
set_spindle_override(int [, int]) -
увімкнено корекцію шпинделя. За замовчуванням встановлено на шпиндель 0.
-
spindle(direction: int, speed: float=0, spindle: int=0, wait_for_speed: int=0) -
-
Напрямок: [
SPINDLE_FORWARD,SPINDLE_REVERSE,SPINDLE_OFF,SPINDLE_INCREASE,SPINDLE_DECREASE, orSPINDLE_CONSTANT] -
Швидкість: Швидкість в обертах за хвилину, за замовчуванням 0.
-
Шпиндель: Номер шпинделя для команди за замовчуванням дорівнює 0.
-
Wait_for_speed: якщо 1 рух очікуватиме на швидкість перед продовженням, за замовчуванням встановлено значення «ні».
-
|
Warning
|
Команди MDI проігнорують це. "S1000" після цього вимкне шпиндель. |
-
text_msg(string) -
надсилає оператору текстове повідомлення на екран (максимум 254 символи).
#!/usr/bin/env python3 import linuxcnc c = linuxcnc.command() # Збільште швидкість шпинделя 0 на 100 об/хв. Шпиндель має бути увімкнений першим. c.spindle(linuxcnc.INCREASE) # Збільште швидкість шпинделя 2 на 100 об/хв. Шпиндель має бути увімкнений першим. c.spindle(linuxcnc.SPINDLE_INCREASE, 2) # Встановіть швидкість шпинделя від 0 до 1024 об/хв. c.spindle.(linuxcnc.SPINDLE_FORWARD, 1024) # Встановіть швидкість шпинделя 1 на -666 об/хв. c.spindle.(linuxcnc.SPINDLE_REVERSE, 666, 1) # Зупинити шпиндель 0. c.spindle.(linuxcnc.SPINDLE_OFF) # Явно зупинити шпиндель 0. c.spindle.(linuxcnc.SPINDLE_OFF, 0)
-
spindleoverride(float [, int]) -
Встановити коефіцієнт корекції шпинделя. За замовчуванням шпиндель 0.
-
state(int) -
Встановіть стан машини. Стан машини має бути
STATE_ESTOP,STATE_ESTOP_RESET,STATE_ON, orSTATE_OFF. -
task_plan_sync() -
Після завершення цього виклику VAR-файл на диску оновлюється значеннями з інтерпретатора в реальному часі.
-
teleop_enable(int) -
Увімкнути/вимкнути режим телеоптичної операції (вимкнути для спільного бігання трусцем).
-
tool_offset(int, float, float, float, float, float, int) -
Встановіть зміщення інструменту. Див. приклад використання вище.
-
traj_mode(int) -
Встановити режим траєкторії. Режим є одним із
MODE_FREE,MODE_COORD, orMODE_TELEOP. -
unhome(int) -
Зняти з дому заданий джоін.
-
wait_complete([float]) -
Зачекайте на завершення останньої надісланої команди. Якщо час очікування в секундах не вказано, за замовчуванням встановлюється 5 секунд. Поверніть -1, якщо час очікування закінчився, поверніть
RCS_DONEабоRCS_ERRORвідповідно до статусу виконання команди.
6. Зчитування каналу помилок
Для обробки повідомлень про помилки підключіться до каналу помилок та періодично запитуйте його за допомогою функції poll().
Зверніть увагу, що канал NML для повідомлень про помилки має чергу (на відміну від каналів команд і статусів), що означає, що перший споживач повідомлення про помилку видаляє це повідомлення з черги; чи «побачить» це повідомлення інший споживач повідомлень про помилки (наприклад, AXIS), залежить від часу. Рекомендується мати лише одне завдання зчитування каналу помилок у налаштуваннях.
#!/usr/bin/env python3 # -*- coding: utf-8 -*- import linuxcnc e = linuxcnc.error_channel() error = e.poll() if error: kind, text = error if kind in (linuxcnc.NML_ERROR, linuxcnc.OPERATOR_ERROR): typus = "error" else: typus = "info" print(typus, text)
7. Читання значень INI-файлу
Ось приклад зчитування значень з INI-файлу через об’єкт linuxcnc.ini:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # run as: # python3 ini-example.py ~/emc2-dev/configs/sim/axis/axis_mm.ini import sys import linuxcnc inifile = linuxcnc.ini(sys.argv[1]) # inifile.find() повертає None, якщо ключ не знайдено - # наступна ідіома корисна для встановлення значення за замовчуванням: machine_name = inifile.find("EMC", "MACHINE") або "unknown" print("machine name: ", machine_name) # inifile.findall() повертає список збігів або порожній список # якщо ключ не знайдено: extensions = inifile.findall("FILTER", "PROGRAM_EXTENSION") print("extensions: ", extensions) # перевизначити стандартний NML-файл параметром INI, якщо його задано nmlfile = inifile.find("EMC", "NML_FILE") if nmlfile: linuxcnc.nmlfile = os.path.join(os.path.dirname(sys.argv[1]), nmlfile)
Або для того ж INI-файлу, що й LinuxCNC:
#!/usr/bin/env python3 # -*- coding: utf-8 -*- # run as: # python3 ini-example2.py import linuxcnc stat = linuxcnc.stat() stat.poll() inifile = linuxcnc.ini(stat.ini_filename) # Див. приклад вище щодо використання об'єкта 'inifile'
8. Тип linuxcnc.positionlogger
Деякі поради щодо використання можна почерпнути з src/emc/usr_intf/gremlin/gremlin.py.
8.1. члени
-
npts -
кількість балів.
8.2. методи
-
start(float) -
запустити реєстратор позицій та виконувати його кожні ARG секунд
-
clear() -
очистити реєстратор позицій
-
stop() -
зупинити реєстратор позицій
-
call() -
Намалюйте задній план зараз.
-
last([int]) -
Повернути найновішу точку на графіку або Немає