Philips CNC6600 Program Interpreter
Go to file
Joop Schilder 5c87b1067f Implemented M67 2020-05-14 12:26:29 +02:00
bin Refactor, add extensive README.md, add future planning 2020-05-13 00:32:28 +02:00
config Refactor, add extensive README.md, add future planning 2020-05-13 00:32:28 +02:00
ref Add Memory Controllers for SP and PP, add Instruction Set 2020-05-10 21:17:12 +02:00
src Implemented M67 2020-05-14 12:26:29 +02:00
var Refactor, add extensive README.md, add future planning 2020-05-13 00:32:28 +02:00
.gitignore Refactor, add extensive README.md, add future planning 2020-05-13 00:32:28 +02:00
README.md Refactor, add extensive README.md, add future planning 2020-05-13 00:32:28 +02:00
composer.json Refactor, add extensive README.md, add future planning 2020-05-13 00:32:28 +02:00
composer.lock Refactor, add extensive README.md, add future planning 2020-05-13 00:32:28 +02:00

README.md

Philips CNC6600 NC System Interpreter

Description

This is an interpreter for programs written for the MAHO MH-C 700.
It basically creates a state-machine that represents the Philips CNC6600 NC system.

Requirements

Usage

Installation

## install dependencies and autoloader
$ composer install

## copy tool configuration data and edit it 
$ cp config/tools.yaml.dist config/tools.yaml
$ nano config/tools.yaml

Tool data

Tools are loaded from config/tools.yaml.
A tool configuration example would be:

# config/tools.yaml

T1:
  X: 5500 # radius in 0.001mm
  Z: 2500 # length in 0.001mm

T2:
  X: 3000
  Z: 61379

Programs

The application loads programs from config/part_programs and config/sub_programs.
The programs are stored in the memory of the machine.

  • A file containing a program may have any name (a program is identified by its program number)
  • A program must have a program number as the first block
  • A program is terminated either by a comment containing 'EOF' (case sensitive) or by a physical EOF
  • A comment is denoted by ;, anything after this character on the same line is ignored

An example of a program would be:

; config/part_programs/some_name

;; Some program that drills two holes
N9045

; and yes, comments are fully supported,
; or rather, detected and ignored by the parser
N10 G18 T2    M6
N20 G1  F1500 S1250
N30 M4

; prepare and execute drill cycle
N40 G81         Y2000   Z-7000   B48000

; the parser also understands this
N50G79X-20000Y0Z-15000

; hell, you may even put multiple blocks on one line:
; N50G0X2N60G1Y20
; though it's good practice to align your program:
N60 G79 X20000  Y0      Z15000

N70 G0 Y150000  ; safely retract
N80 M2          ; turn off spindle, no return

;; EOF

Executing program 9045 from the example:

## execute the example program
$ bin/run_program 9045

## or
$ php bin/run_program 9045
  • calling a subprogram (G22 X9...) is supported
  • line repetitions (E0302) are not supported yet
  • parameter programming is not supported yet

Machine State

The machine state can be saved to a file to continue later on by using State\Persister.

use Machine\CNC6600;
use State\Persister;

$CNC6600 = new CNC6600();

// Do some things with the machine...

// Saving the machine state
$persister = new Persister();
$persister->persist('some_state_identifier', $CNC6600);

// Retrieving the saved state
$CNC6600 = $persister->load('some_state_identifier');

Future

  • Tool path simulation
  • Manual Data Input (MDI) mode
  • Proper tool compensation
  • Line repetitions
  • Parameter programming