EGCL: An Extended G-Code Language with Flow Control, Functions and Mnemonic Variables

In the context of computer numerical control (CNC) and computer aided manufacturing (CAM), the capabilities of programming languages such as symbolic and intuitive programming, program portability and geometrical portfolio have special importance. They allow to save time and to avoid errors during part programming and permit code re-usage. Our updated literature review indicates that the current state of art presents voids in parametric programming, program portability and programming flexibility. In response to this situation, this article presents a compiler implementation for EGCL (Extended G-code Language), a new, enriched CNC programming language which allows the use of descriptive variable names, geometrical functions and flow-control statements (if-then-else, while). Our compiler produces low-level generic, elementary ISO-compliant Gcode, thus allowing for flexibility in the choice of the executing CNC machine and in portability. Our results show that readable variable names and flow control statements allow a simplified and intuitive part programming and permit re-usage of the programs. Future work includes allowing the programmer to define own functions in terms of EGCL, in contrast to the current status of having them as library built-in functions.





References:
[1] Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman.
Compilers: Principles, Techniques, and Tools (2nd Edition). Addison
Wesley, 2006.
[2] G. Arroyo, C. Ochoa, J. Silva, and G. Vidal. Towards CNC Programming
Using Haskell. Advances in Artificial Intelligence-IBERAMIA 2004,
pages 386-396, 2004.
[3] X. Guo, Y. Liu, D. Du, K. Yamazaki, and M. Fujishima. A Universal
NC Program Processor Design and Prototype Implementation for
CNC Systems. The International Journal of Advanced Manufacturing
Technology, pages 1-15, 2011.
[4] S Habeeb and X Xu. A Novel CNC System for Turning Operations
Based on a High-Level Data Model. The International Journal of
Advanced Manufacturing Technology, 43:323-336, 2009.
[5] International Organization for Standardization (1982). ISO 6983-1: Numerical
control of machines - Program format and definition of address
words - Part 1: Data format for positioning, line motion and contouring
control systems. International Organization for Standardization, Geneva,
Switzerland.
[6] International Organization for Standardization (2004). ISO 14649-
1: Industrial automation systems and integration - Data model for
computerized numerical controllers - Part 1: overview and fundamental
principles. International Organization for Standardization, Geneva,
Switzerland.
[7] SC. Johnson. YACC - Yet Another Compiler-Compiler. Computer
Science, Technical Report 32, 1975.
[8] ME Lesk. Lex - A Lexical Analyzer Generator. Computing Science,
Technical Report 39, 1975.
[9] Y. Liu, X. Guo, W. Li, K. Yamazaki, K. Kashihara, and M. Fujishima.
An Intelligent NC Program Processor for CNC System of Machine
Tool. Robotics and Computer-Integrated Manufacturing, 23(2):160-169,
2007.
[10] S. Nagle and J. Wiegley. GSP: Extending G-Code Using JSP Servlet
Technologies. In Automation Science and Engineering, 2008. CASE
2008. IEEE International Conference on, pages 953-958. IEEE, 2008.
[11] D.T. Ross. The Design and Use of the APT Language for Automatic
Programming of Numerically Controlled Machine Tools. In Proc. 1959
Computer Applications Symposium, Chiergo, pages 80-99, 1959.
[12] T. Schroeder and M. Hoffmann. Flexible Automatic Converting of NC
Programs. A Cross-compiler for Structured Text. International Journal
of Production Research, 44(13):2671-2679, 2006.
[13] S.J. Shin, S.H. Suh, and I. Stroud. Reincarnation of G-code Based Part
Programs Into STEP-NC for Turning Applications. Computer-Aided
Design, 39(1):1-16, 2007.
[14] Bulldog Digital Technologies. Free CNC-Simulator (Version 4.53f)
(Software). Avaliable from http://www.cncsimulator.com, 2007.
[15] J. Zhang, L. Wang, S. Li, and F. Zhang. The Research of an Intelligent
Open CNC System. Initiatives of Precision Engineering at the Beginning
of a Millennium, pages 779-783, 2002.