Розділ Підтримувані коди та можливості парсера описує повну функціональність інтерпретатора G-коду
в NCPlayer, включно з підтримуваними форматами команд, модальними групами, макропрограмуванням, арифметикою,
умовами, циклами та розширеними функціями.
Парсер розроблено для роботи з програмами у стилі FANUC
(зокрема серії 0i-MB), але він також сумісний з іншими контролерами при відповідному налаштуванні.
1. Підтримувані формати G/M-кодів
G-коди:
Стандартні модальні групи:
G0 — швидке позиціонування.
G1 — лінійна інтерполяція.
G2 / G3 — колова інтерполяція CW/CCW з підтримкою:
параметра R (радіус дуги);
параметрів I, J, K (координати центру дуги в абсолютному або інкрементному режимі);
площин G17, G18, G19.
G17 / G18 / G19 — вибір площини обробки.
G20 / G21 — вибір одиниць вимірювання (дюйми / міліметри).
G40 / G41 / G42 — компенсація радіуса фрези.
G43 / G44 — компенсація довжини інструмента.
G49 — скасування компенсації довжини інструмента.
G54 – G59 — системи координат заготовки (включно з розширеними G54.1 Px).
G90 / G91 — абсолютний / інкрементний режим.
G98 / G99 — повернення у свердлильних циклах (у початкову точку / на площину R).
Свердлильні цикли:G73, G74, G76,
G80, G81, G82, G83 з підтримкою параметрів
X, Y, Z, R, Q, F.
Спеціальні коди:G65 — виклик користувацького макросу з аргументами.
M-коди:
Керування шпинделем: M3, M4, M5.
Керування охолодженням: M7, M8, M9.
Зупинка програми: M0, M1, M2, M30.
Робота з підпрограмами: M98 (виклик), M99 (повернення).
2. Підтримка макропрограмування
Локальні змінні: #1 – #33 (скидаються при M99, якщо параметр увімкнено).
Загальні змінні: #100 – #199.
Глобальні змінні: #500 – #531.
Системні змінні: відповідно до FANUC (наприклад, #5001 — поточна координата X).
Математичні операції:
Додавання, віднімання, множення, ділення, піднесення до степеня.
Пріоритет дужок і вкладені обчислення.
Функції FANUC:
SIN, COS, TAN, ASIN, ACOS, ATAN.
ABS, ROUND, FIX, FUP, MOD, SQRT.
Підтримка вкладених функцій, наприклад SIN[FIX[#100+0.4]].
Підстановка адрес у командах: X[#500], F[#101+10] тощо.
3. Логічні конструкції
IF [умова] GOTO Nxxx — перехід до вказаного рядка.
IF [умова] THEN ... — виконання команди, якщо умова істинна.
Логічні оператори: AND, OR, XOR (вкладені умови до 3 рівнів).
Оператори порівняння: EQ, NE, GT, LT, GE, LE.
WHILE [умова] DOx ... ENDx — умовні цикли.
Лічильники циклів і захист від нескінченного виконання.
4. Підпрограми
Оголошення підпрограми: Oxxxx.
Виклик: M98 Pxxxx Lnn — з підтримкою аргументу L.
Повернення: M99 (зі скиданням локальних змінних, якщо параметр увімкнено).
Підтримка G65 Pxxxx із передачею аргументів (A, B, C ... H, I тощо) безпосередньо у локальні змінні.
Рекурсивні виклики з контролем глибини стеку.
5. Інші можливості
Підтримка одночасного використання абсолютного (G90) та інкрементного (G91) режимів у межах однієї програми.
Автоматична нормалізація коду: вирівнювання пробілів, видалення зайвих символів кінця блоку (EOB), коректна обробка коментарів.
Безпосереднє перетворення форматів дуг:
R → IJK (у абсолютному або інкрементному режимі).
IJK → R.
Парсинг із попередньою підстановкою змінних перед симуляцією.
Розгортання підпрограм “всередині рядка” для повної симуляції траєкторії.
Примітка: Парсер NCPlayer постійно розвивається.
У майбутніх версіях буде розширено підтримку кодів, специфічних для контролерів
Syntec, Siemens та інших.