ISO programming and G-codes
ISO programming, G-codes, file names, program structure and subprograms
INSIGHT
In the first part of today’s lesson we completed the topic “Programming Method”. We saw the three programming possibilities: G-codes, SHOPMILL/TURN and ISO.
We have already seen the comparison with SHOPMILL programming in the previous lesson, and now I would like to make a clarification regarding pure ISO programming. Few people in fact know that on SIEMENS 840D control, by appropriately setting parameter 18800 there is the possibility of programming in pure ISO codes. First, however, a premise must be made for those who have recently approached the world of CNC programming.
What is ISO programming?
ISO programming of machine tools is basically programming that follows the ISO6983 standard in which the main programming functions are defined. Some numerical controls have tried to be more faithful to the ISO format, while others have only taken guidelines from it and still others have created their own proprietary languages. The reason numerical control builders have needed to create their own language, more or less similar to the ISO standard, is related to the fact that the standard has not been able to keep up to date with the needs of the builders and technology, thus leaving a gap especially regarding advanced functions and fixed cycles.
So programming a SIEMENS machine in pure ISO format can only be justified in the face of real needs for compatibility with other machines, but aware that you are greatly reducing the possibilities and functionality. As mentioned in the video, if you set ISO programming using parameter 18800, the control will only accept programming in ISO format, and in case we want to execute a SIEMENS command, within the ISO program you can program the function G290 to open a SIEMENS parenthesis and G291 to close it.
G290 | Enables writing in SIEMENS language within an ISO program |
G291 | Reactivates ISO language programming |
I provide below an example of a program written in ISO format:
In blue I have put there the SIEMENS functions that can still be programmed upon activation using the G290 function. Now that we understand at least broadly I’ll try to answer a question that I imagine is fairly obvious.
What differences are there between G-code and ISO programming?
G-code programming is basically Siemens’ proprietary format in which it has maintained a structure and some rules respecting where possible the ISO standard, but expanding and modifying with its own functions to make the numerical control more complete and versatile. To be more concrete I give you below the same group of functions in the ISO version and in the G-codes version. In particular it is group n°1 that defines the trajectory functions, thus the most important group.
FUNCTIONS GROUP N°1 – ISO SIEMENS
Name | Description |
G00 | Rapid movement |
G01 | Linear interpolation |
G02 | Clockwise circular interpolation |
G02.2 | Clockwise evolving interpolation |
G03 | Counterclockwise circular interpolation |
G03.2 | Counterclockwise evolving interpolation |
G33 | Constant pitch threading |
FUNCTIONS GROUP N°1 – SIEMENS G-CODES
Name | Description |
G00 | Rapid movement |
G01 | Linear interpolation |
G02 | Clockwise circular interpolation |
G03 | Counterclockwise circular interpolation |
CIP | Circular interpolation with middle point definition |
ASPLINE | Akima-Spline |
BSPLINE | B-Spline |
CSPLINE | Cubic spline |
POLY # | Polynomial: polynomial interpolation |
G33 | Constant pitch threading |
G331 | Tapping |
G332 | Retraction (Tapping) |
OEMIPO1 ## | Circle with tangential round |
OEMIPO2 ## | Thread pitch increase (progressive change) |
CT | Decrease in thread pitch (degressive change) |
G34 | Thread pitch increase (progressive change) |
G35 | Decrease in thread pitch (degressive change) |
INVCW | Clockwise evolving interpolation |
INVCCW | Counterclockwise evolving interpolation |
At this stage it is not important to dwell on or understand the individual functions, but I have given you the two tables so that you can see the difference between the available functions. In the ISO format we have only 7 functions available versus the 19 functions available in Siemens G-code programming. Hence why it is not at all recommended to program a Siemens control in ISO format, because we would not have available all the functions and capabilities that make the Siemens numerical control truly versatile and complete.
Also, activating with parameter 18800 the ISO programming should be done with due care and only by consulting the machine builder, because the tool tables and offsets would also be changed, and it should be evaluated correctly by analyzing each subprogram and function of the machine. So we will continue with the course in SIEMENS G-code programming knowing that there is the possibility of programming in pure ISO format but with reduced possibilities and functionality compared to G-code programming.
Name of programs and subprograms
In the lesson we saw the rules for defining program and subprogram names. I will briefly review below the rules on file names and specifically regarding main .MPF programs and .SPF subprograms.
Main Programs (.MPF)
⦁ Maximum 24 characters
⦁ No spaces
⦁ No arithmetic signs
⦁ The first two characters must be letters or under-score ( rule applies only to files generated by serial transfer with name encoding at the head of the file)
Subprograms (.SPF)
⦁ Maximum 24 characters
⦁ Minimum 2 characters
⦁ No spaces
⦁ No arithmetic signs
⦁ First two characters must be letters or under-score (file is created anyway without alarms but when called it generates an alarm)
⦁ In the case of a name consisting of numbers only, you should prefix the address L. Example: L100.SPF
Name of file generated by serial transmission
In machines where the transmission of programs from PC to control is still done by serial connection, it is possible to define the file name and its location directly at the head of the program, but it must comply with the following rules in addition to what has already been said for .MPF file names:
⦁ Minimum 3 characters
⦁ The first two characters must be letters or under-score
⦁ In the first block of the program enter the file name after the following characters %_N_
⦁ Example: %_N_PIECE1_N