PA Software Functions

Similar documents
General Information. PA Control. Windows 7 Fact Sheet

Operating Manual PA 8000 NT

Tutorial PA Standard HMI

Toolinspect. Operating Instructions of the Tool Monitoring System. via 3 - functionkeys

NCT. PLC Programmer s Manual. Machine Tool Controls. From SW Version x.061 (M) (L)

START-UP and UPGRADE INSTRUCTIONS

Operating Manual WJ_V PA Waterjet Package

Lesson 6 The Key Operation Procedures

PA 9000 MICRO CNC. Maximum openness Extremely fast Ultra compact design.

MELDASMAGIC MMI OPERATION MANUAL (FOR L/G) BNP-B2194 (ENG)

Rexroth IndraMotion MTX Diagnosis Messages

Digital display for EMCO milling machines

CHAPTER 12. CNC Program Codes. Miscellaneous CNC Program Symbols. D - Tool Diameter Offset Number. E - Select Work Coordinate System.

Introduction to Word Address Programming

OPENcontrol. End User Manual

CNC 8055 T. Error solution. Ref.1705

SYSTEM SPECIFICATION

FNL Modbus TCP Interface

GSP - G&M codes extension to ACSPL+

FADAL TURN-KEY CNC REPLACEMENT. Upgrade your shop floor Increase performance and productivity Make more money.

User s Manual V MillPlus IT. NC Software

Contents. Batch & Import Guide. Batch Overview 2. Import 157. Batch and Import: The Big Picture 2 Batch Configuration 11 Batch Entry 131

MACHMOTION. Tool Setup. Using MachMotion s CNC Control 12/23/2010. Everything you need to know to setup your tooling in Mach3.

TF5xxx TwinCAT 3 Motion Control

User Manual Software for DSL Digital Speed Switch

Manual SmartGraph for Humlog 10

KUKA System Technology. KUKA Roboter GmbH KUKA.CNC 2.0. For KUKA System Software 8.2. Issued: Version: KUKA.CNC 2.

1000 Series Lathe Control OPERATING MANUAL. Specializing in CNC Automation and Motion Control

HDS Series Quick Start Guide.

CNC 8055 M. Error solution. Ref.1705

Drulo Control Operating Instructions. Version and higher

SOFTWARE. CAD/CAM software. Interpreter software. Programming software. Software and control organization isy-cam 2.5 PLUS...

SIMPLY PRECISE USER MANUAL. ADJUSTMENT TOOL For NUMERIK JENA Encoders with Online Compensation

How to program with Matlab (PART 1/3)

67$5783DQG83*5$'(,16758&7,216

Application Case. Application: Delta s AC Servo System on Robot Arms for CNC Machine Tools. Issued by Solution Center Date March 2013 Pages 5

MarShaft. MarShaft SCOPE 250 plus

For DX100 for Industrial Robot MOTOMAN Ladder Editing Software for Personal Computers Ladder Editor 32 for DX100 Operator s Manual

QUIZ How do we implement run-time constants and. compile-time constants inside classes?

Version certificate sampling

SOFT-ASSISTANT COD / 2.1 CONTENTS

TEAM. Test Execution and Test Management for Numerical Control Software. Best Practice Action IST Deliverable D-3.1

OKUMA MACHINING CENTER OPERATORS GUIDE OSP P200M THiNC

CNC PART PROGRAMMING

Alstom Redundant Ethernet Driver Help Kepware Technologies

The DNC-Process 6.5 is an event-controlled, Hardlock-protected 32bit software for the operating systems WINDOWS 9x/NT4.0/2000/XP.

Operating Manual PL_V PA Plasma / Spindle Package

EUROScope lite 16FX Reference Manual

GCC vinyl cutter, cutting plotter for sign making

Introduction to Programming in C Department of Computer Science and Engineering. Lecture No. #29 Arrays in C

Testing and Diagnostics

Configuration Guideline for CANopen Networks

MotionOne CM G&M Code Programming Manual

MELDAS, MELDASMAGIC, and MELSEC are registered trademarks of Mitsubishi Electric Corporation. The other company names and product names are

Part Programming Manual MACHINEMATE

FANUC ihmi Human Machine Interface

Surface Roughness/Contour Analysis Software

ISO INTERNATIONAL STANDARD

Post Configurator Enablement Training

EDIABAS BEST/2 LANGUAGE DESCRIPTION. VERSION 6b. Electronic Diagnostic Basic System EDIABAS - BEST/2 LANGUAGE DESCRIPTION

CNC MILLING MACHINE NER VC180)

DREAM : DEKEMA Remote Access Management Version 2.2

VISU+ BEST PRACTICE. Tips for using the Visu+ software. Application note 8212_en_01. 1 Description

Diagnostics Guide 01/02 Edition

NOTE This function is optional.

DIFFERENCES FROM SERIES 0i-C

LAB WORK NO. 3 TURBO DEBUGGER ENVIRONMENT

Operation Manual. for the. Data Logging Software. Version 7.1. (Isoft.xls)

AKELA Vector Network Analyzer (VNA) Quick Start Guide

GE FANUC 21 CONCEPT 55 TURN TEACHER GUIDE

IGSS 13 Configuration Workshop - Exercises

2-Axis Counter BDD 622

POSITIONING AND TRACK CONTROL SYSTEM APCI-8001 AND APCI-8008 NCC.DLL. Rev. 8/

AN100 v1.4. EtherCAT network synchronization. Distributed clocks

CHEMINSTRUMENTS 180 DEGREE PEEL TESTER MODEL PA OPERATING INSTRUCTIONS

OSAI OPENcontrol CNC Training Courses

Technical Questions. Q 1) What are the key features in C programming language?

Video/SoftPhone. Installer & User Guide

HNC100 Series 3X from Rexroth. The Motion Control System for Electrohydraulic Axes. Scalable closed loop control system for up to four axes

User Manual VM700T Video Measurement Set Option 1G Echo and Rounding Errors Measurements

edocs Aero Users Management

Software Manual. DeviceNet-Module cananalyser3 Module for ODVA DeviceNet Protocol Interpretation

Application report. Gildemeister GMX 400 linear. Turning / milling machine. Data communication:

Batch and Import Guide

GOLD SERIES DVD/CD Duplicator Manual

software isy-cam 2.8 and 3.6 CAD/CAM software Features isy-cam 2.8 Features isy-cam 3.6 D-4 CAD functionality (without volume modeller)

Software Manual for the Coil Winding Arm Controller MKII Software.

Alarm Distribution Shelf (ADS)

Turning ISO Dialect T

ic-mh16 Evaluation Software Software Description

Operating instructions. AUTOSEN:IO Version / / 2017

scancontrol 3D-View 3.1 Instruction Manual

GSK218M Milling Machine CNC System

Tool Setup USING MACH MOTION S CNC CONTROL. Specializing in CNC Automation and Motion Control

Manual. TC3 Scope View. TwinCAT 3. Version: Date: Order No.: TE13xx

Copyright 2019 OPEN MIND Technologies AG

Ch. 11: References & the Copy-Constructor. - continued -

SOFTWARE. CAD / CAM-Software. Interpreter software. Programming software. Software and control organization... D-2. isy-cam D-4. Remote...

SONOFLOW Monitor Short Instructions. For SONOFLOW Sensors of the Series CO.55 V2.0

Plant Control Magic Control CM-30 Sequential control

Transcription:

PA 9000 Software Functions

Power Automation GmbH CNC-Automatisierungstechnik Gottlieb-Daimler-Str. 17/2 74385 Pleidelsheim Germany Telephone: +49-7144-899-0 Fax: +49-7144-899-299 E-mail: info@powerautomation.com Internet: www.powerautomation.com Original document Version 2.0 2018 Power Automation GmbH 2 09.03.2018

Table of contents Table of contents 1 Overview... 5 2 Cross Error Compensation (CEC)... 7 2.1 Function of the Cross Error Compensation... 7 2.2 Principle structure of the Machine... 8 2.3 Measured error pattern... 8 2.4 Derivative error pattern... 9 2.5 Compensating curve... 10 2.6 Error... 11 2.7 Activation... 12 2.8 Installation... 12 2.9 User Interface and application... 16 2.9.1 Reference File... 17 2.9.2 Source Data File... 19 2.9.3 Target Data File... 21 2.9.4 Machine Parameters... 22 2.10 Annex Reference File for the Cross Error Compensation... 23 3 NC Interrupt Program... 35 3.1 Introduction... 35 3.2 Summary... 36 3.3 General interrupt handling... 37 3.4 Interrupt execution... 38 3.5 Programming... 39 3.5.1 Enable/disable interrupt... 40 3.5.2 Enable/disable reading I/O signal... 42 3.5.3 Interrupt execution type... 44 3.5.4 Interrupt finishing type... 45 3.5.5 Activate/deactivate interrupt... 46 3.5.6 End all NC programs... 47 3.6 Programming tips... 47 3.6.1 Store the current axes positions... 47 3.6.2 Store the tool correction values... 49 3.6.3 Store the axes offset values... 50 3.6.4 Move back to the position... 51 3.7 CNC / PLC interface... 51 3.8 System data... 53 09.03.2018 3

Table of contents 3.9 Machine Parameters... 54 3.10 Compile Cycles... 61 3.10.1 NC-interrupt events... 61 3.10.2 NC-interrupt bindings in b_aux... 62 4 Move backward on the contour... 67 5 Pitch Error Compensation... 69 5.1 General information... 69 5.2 Activate the Pitch Error Compensation... 69 5.3 The compensation values... 70 5.4 Two way Pitch Error Compensation... 74 6 Playback mode... 77 6.1 General information... 77 6.2 Activating the Playback Mode... 77 6.3 Creating NC Blocks by "Playback"... 78 6.4 Deactivating the Playback Mode... 80 7 Dynamic Lag Control... 81 7.1 Activation of function... 82 7.2 Automatically Activating of function... 82 7.3 Gantry lag check... 83 7.4 Machine parameters... 83 8 Proof of change... 85 9 Index... 87 09.03.2018 4

Overview 1 Overview Software Function Code PA 8000 Code PA 9000 See Cross Error Compensation (CEC) 400420 / 400465 450465 Ä Chapter 2 Cross Error Compensation (CEC) on page 7 Interrupt program 401406 Standard scope of delivery Move backward on the contour 401405 Standard scope of delivery Pitch Error Compensation 400702 / 400703 Standard scope of delivery Ä Chapter 3 NC Interrupt Program on page 35 Ä Chapter 4 Move backward on the contour on page 67 Ä Chapter 5 Pitch Error Compensation on page 69 Playback mode 401404 Ä Chapter 6 Playback mode on page 77 Dynamic Lag Control Ä Chapter 7 Dynamic Lag Control on page 81 09.03.2018 5

Overview 09.03.2018 6

Cross Error Compensation (CEC) 2 Cross Error Compensation (CEC) For PA 8000 this function has the Option Code: 400420 (valid from CNC version 3.4.11.4 / 12.05.2014) / 400465 (valid from CNC version 3.4.11.19 / 14.12.2015), for PA 9000 this function has the Option Code: 450465. 2.1 Function of the Cross Error Compensation The Cross Error Compensation enables the manipulation of the current required position of one NC-axis (Slave-axis) by a tabular value according to the position of another NC-axis (Master-axis). Thereby mechanical defects of an assembly group which depends on the position of another assembly group can e.g. be corrected. A typical assembly to describe the movement of a tool is the principle of the compound slide rest with NC-axes. Errors of the mechanical guidance of the NC-axis 1 vertical to the axis movement produce position errors of the moving assembly group with the NC-axis 2 which moves vertically to the NC-axis 1. A derivative error pattern can be arbitrary and describes an approach to the measured error pattern. This process is the direct basis for compensating curve. The inversion of the derivative error pattern is responsible directly for the compensating curve. With the help of the permanent connection of the data of the compensating curve to the NC-axis 2 the mechanical error of the guidance will be compensated during movement of the NC-axis 1. 09.03.2018 7

Cross Error Compensation (CEC) 2.2 Principle structure of the Machine Typically the tool will be moved with the compound slide rest. At the compound slide rest there is a coordinate system defined to check the process of the mechanical errors. Fig. 1: Principle structure of the machine 2.3 Measured error pattern The error pattern of the mechanical lead of the NC-axis X in direction to the NC-axis Y will be documented by a measurement. Fig. 2: Measured error pattern 09.03.2018 8

Cross Error Compensation (CEC) 2.4 Derivative error pattern The derivative error pattern shows an approximation to the measured error pattern. Fig. 3: Derivative error pattern Fig. 4: Measured and derivative error pattern 09.03.2018 9

Cross Error Compensation (CEC) 2.5 Compensating curve The compensating curve will operate immediately via the control system to the actual position of the inductor. Fig. 5: Compensating curve 09.03.2018 10

Cross Error Compensation (CEC) 2.6 Error The files and the machine parameters will be tested for incorrect processes respectively data. NOTICE! If an error is identified, the Cross Error Compensation won t be executed. In this case the system will be booted and operated without Cross Error Compensation. The error is displayed in the MessageBox of the CNC. Example for an error display of the Cross Error Compensation (see Fig. 6): Fig. 6: Error display of the Cross Error Compensation The following incorrect processes and data are known (see Ä Table 1 Overview of the error numbers and error descriptions on page 11): Table 1: Overview of the error numbers and error descriptions Error number Error description 1 Error Reference File; e.g. File is not existing Error Reference File; e.g. Key CorrFile1 is wrong 2 Error Data File; e.g. File is not existing 3 Error Reference File; Key NumbEnbTables: is wrong Error Reference File; Input is missing or generally wrong 4 Error Reference File; Key NumbEnbTables: Number of the tables is too large 5 Error Reference File; Key NumbMaxEnbRecords: is wrong Error Reference File; Input is missing or generally wrong 6 Error Reference File; Key NumbMaxEnbRecords: Number of the inputs per table is too large 7 Error Reference File; Key MaxEnbCompValu: is wrong Error Reference File; Input is missing or generally wrong 8 Error Reference File; Key MaxEnbCompValu: Registered value in the Reference File is too large 9 Error Data File; Registered value inside the table is too large 09.03.2018 11

Cross Error Compensation (CEC) 2.7 Activation During the booting phase of the system the Cross Error Compensation function will be activated automatically. The requirements are: Function enabled by appropriate machine parameters Successful interpretation of the tables After successful booting phase with interpretation of the target data file no message is appearing in the MessageBox of the CNC. Fig. 7: No Message about an error in the MessageBox of the CNC Via a machine date the Cross Error Compensation can optionally be blocked or released. The parameter CCDWORD1 (Compile Cycles Double Word 1) is reserved. 2.8 Installation The installation is done in the following steps: Registration of the DLL under Windows Copy of the DLL into the working directory Copy of the Reference File into the working directory Copy of the target data file into the working directory 09.03.2018 12

Cross Error Compensation (CEC) Registration of the DLL under Windows The directory to save the operator files is arbitrary. The best choice is to use the directory C:\Program Files\Power Automation\User Data\CC\, because the files contain data and allocations concerning the machine. Fig. 8: Directory to save the operator files 09.03.2018 13

Cross Error Compensation (CEC) Copy of the DLL into the working directory The DLL to implement the Cross Error Compensation CEC.dll has to be copied into the working directory C:\Program Files\Power Automation\User Data\CC\ Fig. 9: File "CEC.dll" in the required working directory 09.03.2018 14

Cross Error Compensation (CEC) Copy of the Reference File in the working directory The Reference file CEC.ref has to be copied into the working directory C:\Program Files\Power Automation\User Data\CC\ Fig. 10: File "CEC.ref" in the required working directory 09.03.2018 15

Cross Error Compensation (CEC) Copy of the target data file into the working directory The target data file CEC.csv has to be copied into the working directory C:\Program Files\Power Automation\User Data\CC\ Fig. 11: File "CEC.csv" in the required working directory 2.9 User Interface and application To the user interface belongs the Reference File (see Ä Chapter 2.9.1 Reference File on page 17), the Source Data File (see Ä Chapter 2.9.2 Source Data File on page 19), the Target Data File (see Ä Chapter 2.9.3 Target Data File on page 21), the Machine parameters (see Ä Chapter 2.9.4 Machine Parameters on page 22) 09.03.2018 16

Cross Error Compensation (CEC) 2.9.1 Reference File The Reference file has a fix directory and a fix name: C:\Program Files\Power Automation\User Data\CC \CEC.ref The name of the directory and the filename are fixed compiled in the Cross Error Compensation and thereby they establish the whole reference to the data. The Reference File has the type <*.ini>. Fig. 12: Example of a Reference File The Reference File contains two sections: [Files] [Data] Section [Files] In this section the link to the Data File is saved. The Keyword CorrFile1 is defined and compiled into the DLL. Other Keywords will not be evaluated. Section [Data] In this section the configuration parameters are saved. The Keywords MaxEnbCompValu, NumbEnbTables and Numb- MaxEnbRecords are defined and compiled into the DLL. Other Keywords will not be evaluated. 09.03.2018 17

Cross Error Compensation (CEC) The following meanings are valid: MaxEnbCompValu Maximum Enabled Compensation Value Activated (maximum allowed) compensation value System maximum: 1.0mm NumbEnbTables Number Enabled Tables Activated (maximum allowed) number of tables System maximum: 5 tables NumbMaxEnbRecords Number Maximum Enabled Records Activated (maximum allowed) number of line inputs per table System maximum: 100 compensation values per table 09.03.2018 18

Cross Error Compensation (CEC) 2.9.2 Source Data File The source data file contains all specifications concerning the allocation of the axes and data. The type of the source data file can be determined through the user himself. Usefully it should be the type <*.xls>, because the target data file is an exported <*.csv>-file. Several tables can be arranged inside the source data file (see Fig. 13). The tables will be identified by the header of the table The first sign $ with two available numbers of the axes respectively at the second and all following tables after the table-ending sign % the following sign $ with two available numbers of the axes. the ending of the table The sign % in the column of the available table header. The following numbers of the axes are allowed: 1, 2, 3, 4, 5. Any other numbers of axes will not be regarded. In the first available line the first available data column contains the number of the master axis. In the first available line the second available data column contains the number of the slave axis. The further available lines contain inside the available columns in each case the master axis position respectively the value of compensation. All details are carried out in mm. One available line will only be identified if its dimensions are up to the dimensions of the header line see beginning of the table begin in the picture. The following data requirements are valid: The positions of the master axes have to be defined as assurgent. 09.03.2018 19

Cross Error Compensation (CEC) Fig. 13: Example of a Source Data File 09.03.2018 20

Cross Error Compensation (CEC) 2.9.3 Target Data File The source data file contains all specifications concerning the allocation of the axes and data. The file has the type <*.csv> and thereby exportable directly from EXCEL-files. This file will be interpreted from the control system in the booting phase. Fig. 14: Example of a target data file The target data file is the exported file from EXCEL with the file extension <*.csv>. As divider the semicolon <;> is used by default. During the booting phase the file will be interpreted. In the process the data will be transferred in a fast analysable data format. During the real time phase of the NC-core the Cross Error Compensation is enabled permanently. The deposited compensating curves will be executed permanently. 09.03.2018 21

Cross Error Compensation (CEC) The following data requirements are valid: Until the first available pair of values the compensation value amounts 0,000 mm. After the last pair of values the compensation value of the last pair of values is valid. 2.9.4 Machine Parameters Via the machine date the Cross Error Compensation can alternatively be blocked or approved. The parameter CCDWORD1 (Compile Cycles Double Word 1) is reserved. The following states are valid ( Ä Table 2 Machine Parameters on page 22): Table 2: Machine Parameters Value CCDWORD1 Meaning 0 Cross Error Compensation is blocked - inactive 1 Cross Error Compensation is approved active, only if the tables are fixed 09.03.2018 22

Cross Error Compensation (CEC) 2.10 Annex Reference File for the Cross Error Compensation 09.03.2018 23

Cross Error Compensation (CEC) ;Reference File for Cross Error Compensation ; Version: 2.0 ; Registry entry in a channel with CEC ; C:\Program files\power automation\user Data\CC\cec.dll ; *********************************************************************** ; Advices ; *********************************************************************** ; The following limiting conditions are given in the present version ; (1) ; Maximum number of channels with the activation of the CEC = 4 ; The following channel combinations are possible: ; Ch1 ; or Ch1+Ch2 ; or Ch1+Ch2+Ch3 ; or Ch1+Ch2+Ch3+Ch4 ; The configuration occurs via a variable in the present INI-file. ; (2) ; Maximum number of NC-axes per channel = 8 ; The following axes-combinations are possible: ; Ax1 ; or Ax1+Ax2 ; or Ax1+Ax2+Ax3 ; or Ax1+Ax2+Ax3+Ax4 ; or Ax1+Ax2+Ax3+Ax4+Ax5 ; or Ax1+Ax2+Ax3+Ax4+Ax5+Ax6 ; or Ax1+Ax2+Ax3+Ax4+Ax5+Ax6+Ax7 ; or Ax1+Ax2+Ax3+Ax4+Ax5+Ax6+Ax7+Ax8 ; The configuration occurs via a variable in the present INI-file. ; *********************************************************************** ; Section : ; Names of the correction files ; *********************************************************************** [Files] ; The keywords are forceful. ; The section data contain the entries respective the names and the directory of the correction files. ; The channel specification occurs with "Chn". Example for channel 1: "Ch1" ; ----------------------------------------------------------------------- ; Memory directory and names of the correction files 09.03.2018 24

Cross Error Compensation (CEC) CorrFile_Ch1 = C:\Program files\power automation\user Data\CC\cec.csv ;CorrFile_Ch1 = C:\Program files\power automation\user Data\CC\cec_Ch1.csv CorrFile_Ch2 = C:\Program files\power automation\user Data\CC\cec_Ch2.csv CorrFile_Ch3 = C:\Program files\power automation\user Data\CC\cec_Ch3.csv CorrFile_Ch4 = C:\Program files\power automation\user Data\CC\cec_Ch4.csv ; ----------------------------------------------------------------------- ; ----------------------------------------------------------------------- ; Limitation of the data into the correction tables ; *********************************************************************** ; Section ; Different data ; *********************************************************************** [Data] ; The keywords are forceful. ; The Section Data contain the entries respective the contents of the data files. ; Without channel inscription the data for every channel is effective ; The channel specification occurs with "Chn". Example for channel 1: "Ch1" ; ----------------------------------------------------------------------- ; Maximum permitted compensation value MaxEnbCompValue = 2.0 ; Clue: maximum value = 1.0 mm ; xxxxx ; ----------------------------------------------------------------------- ; Maximum number of permitted tables NumbEnbTables = 4 ; Clue: Maximum number = 5 ; ----------------------------------------------------------------------- ; Maximum number of permitted records per table NumbMaxEnbRecords = 87 ; Clue: Maximum number = 200 ; ----------------------------------------------------------------------- ; Correction value modification per interpolation loop DeltaCorrValueIpoLoop = 1.1 ; Dimension: Increments ; ----------------------------------------------------------------------- ; Distance to the SW-Limit for shutdown of the CEC DistanceSWLimitCorrValueTo_0 = 2000 ; Dimension: Increments ; ----------------------------------------------------------------------- 09.03.2018 25

Cross Error Compensation (CEC) ; Maximum number of NC-axes ; The compensation will only be executed for this number. ; The number 1 to... is always effective: NumbMaxAxes_Ch1 = 6 NumbMaxAxes_Ch2 = 4 NumbMaxAxes_Ch3 = 6 NumbMaxAxes_Ch4 = 5 ; *********************************************************************** ; Section ; Output axes-data and parameters in NC-Parameter ; *********************************************************************** [NC_Parameter] ; The channel specification occurs with "Chn". Example for channel 1: "Ch1" ; ----------------------------------------------------------------------- ; Channel 1 - Permanent Transfer of the correction values in NC-parameter CompensationValueToAxis_Ebl_Ch1 = 1 ; 0 = cumulative value will not be written in a parameter ; 1 = cumulative value will be written for the number of axes in a parameter array CompensationValueToAxis_Nmb_Ch1 = 10 ; Parameter for compensation value of axis 1 ; Another 7 parameters are reserved for the axes 2 till 8 ; For uncorrected axes the value 0 will be edited ; ----------------------------------------------------------------------- ; Channel 2 - Permanent Transfer of the correction values in NC-parameter CompensationValueToAxis_Ebl_Ch2 = 1 ; 0 = cumulative value will not be written in a parameter ; 1 = cumulative value will be written for the number of axes in a parameter array CompensationValueToAxis_Nmb_Ch2 = 20 ; Parameter for compensation value of axis 1 ; Another 7 parameters are reserved for the axes 2 till 8 ; For uncorrected axes the value 0 will be edited ; ----------------------------------------------------------------------- ; Channel 3 - Permanent Transfer of the correction values in NC-parameter CompensationValueToAxis_Ebl_Ch3 = 1 ; 0 = cumulative value will not be written in a parameter ; 1 = cumulative value will be written for the number of axes in a parameter array CompensationValueToAxis_Nmb_Ch3 = 30 09.03.2018 26

Cross Error Compensation (CEC) ; Parameter for compensation value of axis 1 ; Another 7 parameters are reserved for the axes 2 till 8 ; For uncorrected axes the value 0 will be edited ; ----------------------------------------------------------------------- ; Channel 4 - Permanent Transfer of the correction values in NC-parameter CompensationValueToAxis_Ebl_Ch4 = 1 ; 0 = cumulative value will not be written in a parameter ; 1 = cumulative value will be written for the number of axes in a parameter array CompensationValueToAxis_Nmb_Ch4 = 40 ; Parameter for compensation value of axis 1 ; Another 7 parameters are reserved for the axes 2 till 8 ; For uncorrected axes the value 0 will be edited ; ----------------------------------------------------------------------- ; All Channels - Permanent Transfer of the axes positions into the parameter ; At required supply of the axis position into NC-Parameter the following positions ; into the parameters will be supplied in Realtime-circle ; Example for axis 1 ; AxesPositionToPar_Nmb_Ch1_Axis1 = SollPos_Intern - Parameter 1 of the array ; AxesPositionToPar_Nmb_Ch1_Axis1+1 = EndPoint_Intern - Parameter 2 of the array ; AxesPositionToPar_Nmb_Ch1_Axis1+2 = IsPos_Intern - Parameter 3 of the array ; AxesPositionToPar_Nmb_Ch1_Axis1+3 = SollPos_Machine - Parameter 4 of the array ; AxesPositionToPar_Nmb_Ch1_Axis1+4 = SollPos_Machine_Corr - Parameter 5 of the array ; AxesPositionToPar_Nmb_Ch1_Axis1+5 = IsPos_Machine - Parameter 6 of the array ; AxesPositionToPar_Nmb_Ch1_Axis1+6 = GetPos_Machine_CC - Parameter 7 of the array ; AxesPositionToPar_Nmb_Ch1_Axis1+7 = SetPos_Machine_CC - Parameter 8 of the array ; These 8 positions will be transferred permanently per axis. The transfer must be activated. ; ----------------------------------------------------------------------- ; Channel 1 - Permanent transfer ot the axes positions into the parameter AxesPositionToPar_Ebl_Ch1_Axis1 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch1_Axis1 = 110 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch1_Axis2 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array 09.03.2018 27

Cross Error Compensation (CEC) AxesPositionToPar_Nmb_Ch1_Axis2 = 120 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch1_Axis3 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch1_Axis3 = 130 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch1_Axis4 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch1_Axis4 = 140 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch1_Axis5 = 1 ; 0 = Axis positions will not be written into a parameter rarray ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch1_Axis5 = 140 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch1_Axis6 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch1_Axis6 = 160 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch1_Axis7 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch1_Axis7 = 170 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch1_Axis8 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch1_Axis8 = 180 09.03.2018 28

Cross Error Compensation (CEC) ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions ; ----------------------------------------------------------------------- ; Channel 2 - Permanent Transfer of the axes positions into the parameter AxesPositionToPar_Ebl_Ch2_Axis1 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch2_Axis1 = 210 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch2_Axis2 = ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch2_Axis2 = 220 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch2_Axis3 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch2_Axis3 = 230 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch2_Axis4 = 0 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch2_Axis4 = 240 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch2_Axis5 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch2_Axis5 = 250 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch2_Axis6 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array 09.03.2018 29

Cross Error Compensation (CEC) AxesPositionToPar_Nmb_Ch2_Axis6 = 260 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch2_Axis7 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch2_Axis7 = 270 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch2_Axis8 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch2_Axis8 = 280 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions ; ----------------------------------------------------------------------- ; Channel 3 - Permanent Transfer of the axes positions into the parameter AxesPositionToPar_Ebl_Ch3_Axis1 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch3_Axis1 = 310 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch3_Axis2 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch3_Axis2 = 320 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch3_Axis3 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch3_Axis3 = 330 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch3_Axis4 = 1 ; 0 = Axis positions will not be written into a parameter array 09.03.2018 30

Cross Error Compensation (CEC) ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch3_Axis4 = 340 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch3_Axis5 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch3_Axis5 = 350 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch3_Axis6 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch3_Axis6 = 360 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch3_Axis7 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch3_Axis7 = 370 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch3_Axis8 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch3_Axis8 = 380 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions ; ----------------------------------------------------------------------- ; Channel 4 - Permanent Transfer of the axes positions into the parameter AxesPositionToPar_Ebl_Ch4_Axis1 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch4_Axis1 = 410 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch4_Axis2 = 0 09.03.2018 31

Cross Error Compensation (CEC) ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch4_Axis2 = 420 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch4_Axis3 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch4_Axis3 = 430 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch4_Axis4 = 0 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch4_Axis4 = 440 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch4_Axis5 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch4_Axis5 = 450 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch4_Axis6 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch4_Axis6 = 460 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch4_Axis7 = 1 ; 0 = Axis positions will not be written into a parameter array ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch4_Axis7 = 470 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions AxesPositionToPar_Ebl_Ch4_Axis8 = 1 ; 0 = Axis positions will not be written into a parameter array 09.03.2018 32

Cross Error Compensation (CEC) ; 1 = Axis positions will be written into a parameter array AxesPositionToPar_Nmb_Ch4_Axis8 = 480 ; Parameter for the first position of the axis ; Another 7 parameters are reserved for the axes positions 09.03.2018 33

Cross Error Compensation (CEC) 09.03.2018 34

NC Interrupt Program 3 NC Interrupt Program For PA 8000 this function has the Option Code: 401406, for PA 9000 this function belongs to the standard scope of delivery. 3.1 Introduction A running NC program can be interrupted by up to 32 hardware signals or by software (NC-program itself or PLC). The interrupt "calls" a NC program which will be executed like a NC-subprogram. There are two interrupt execution types: 1. interrupt at the end of a NC-block 2. interrupt at once With the end of a NC-interrupt-subprogram there are three options: 1. continue with executing the interrupted NC-block again 2. execute the next NC-block 3. close all active NC-programs An active interrupt program can not be interrupted again (nested interrupts are not supported). An active interrupt disables all interrupts until the interrupt program returns to the interrupted program. Interrupts are only handled while a NC program is running and the NC-program and the PLC have enabled the interrupts. In MDI- or MANual modes interrupts are not executed. If the machine operator changes to MDI- or MANual mode while a NC program is running, all interrupts will be disabled. The interrupt's I/O signal will be read as well in MDI- or MANual modes but the interrupts will not become active. All active interrupt signals will be destroyed in MDIand MANual-modes. This means they will not be saved. While returning from MANual mode back to AUTO-mode no interrupt can be active. Only interrupts becoming active in AUTO-mode will be executed. Each interrupt has a priority (1-32). Priority 1 is most prior. It is allowed to set the same priority for more than one interrupt. In this case the lower index of the interrupt is more prior. For each interrupt, a default NC-program can be defined in the machine parameters. The NC-programmer can use these NC-programs but can also define another NC program with enabling an interrupt. 09.03.2018 35

NC Interrupt Program For each interrupt I/O-signal one of four active conditions can be defined in the machine parameters: 1. rising edge 2. falling edge 3. low active 4. high active The I/O port for each interrupt is defined in the machine parameter. The NC-programming characters and codes are also defined in the machine parameters and can be customized. 3.2 Summary Up to 32 interrupt channels available The PLC, the NC-program itself or the specified I/O port can activate an interrupt Free assignment of I/O ports (interrupt I/O ports must not be consecutive) Free assignment of the priority of an interrupt channel 4 active conditions for each I/O port (pos.edge, neg.edge, high or low) 2 interrupt execution types: at once (interrupts the current active NC-block) at the end of the NC-block (the interrupt waits for the end of the block) 2 interrupt finish types: execute the interrupted NC-block again continue with executing the next NC-block PLC can disable interrupts (must enable) and can disable reading the interrupt I/O ports Default NC program for each interrupt channel NC programmer can: enable/disable interrupts enable/disable reading the interrupt I/O ports change the interrupt execution type change the interrupt finish type activate or clear interrupts finish all NC-programs at the end of the NC interrupt program change the interrupt program for the channel (with "enable interrupts") All codes for the NC interrupt commands are free assignable in the machine parameters Typical interrupt latency: 1 interpreter loop (2-8ms) for stop command Typical execution delay: 6 interpreter loops after stop of current movements 09.03.2018 36

NC Interrupt Program 3.3 General interrupt handling After booting the CNC all interrupts are disabled and no interrupt I/O ports will be read. To enable reading the I/O ports, the NC program must call the enable function (or read IO function) and the PLC must set the IN_IR_RDIO_xx bit. Also the priority of the interrupt must not be zero. If one of these 3 conditions is missing, the I/O port will not be read. NOTICE! After Ctrl-Reset or end of the NC-program it must call again the enable function to activate reading the I/O port. Following conditions must be true for reading interrupt I/O ports: The NC-program has enabled reading the I/O-port The PLC has enabled reading the I/O-port The priority of the interrupt is between 1 and 32 Each NC-block will be scanned for the applied NC interrupt programming codes and will be pushed into the block-buffer for executing. If there are BCD-codes used to program the interrupts (e.g. M96 for the enable function) this BCD-code will be strobed to the PLC. Every loop the interpreter looks for an active interrupt and pushes this interrupt into a list. Following conditions must be true for inserting an active interrupt into the list: The operating mode is either AUTO-continued or -single step. The priority of the interrupt in the machine parameters is valid (1-32) The NC-program has enabled the interrupt The PLC has also enabled the interrupt The I/O port's active condition is true or the NC programmer has activated the interrupt or the PLC has activated the interrupt. After this the list of active interrupts is scanned for the most prior interrupt if there is currently no interrupt active. Following conditions must be true to get an active interrupt: The operating mode is either AUTO-continued or -single step. There is currently no active interrupt The interrupt is still enabled (NC-program and PLC) The interrupt is the most prior interrupt in the list Once an active interrupt is detected, it is removed from the list of currently active interrupts and will be executed. 09.03.2018 37

NC Interrupt Program 3.4 Interrupt execution With the interrupt's execution type (at once or at end of block), the movements of the axes will be stopped. After the axes are stopped the interpreter will be synchronized and the NC-interrupt-program is called and executed. NOTICE! Stopping the movement of the axes means the same as pressing the STOP-button (execution type "at once") or switching from AUTOmatic-Sequential to AUTOmatic-Single-block (execution type "after end of block"). These methods do not stop the spindle or the oscillation function. The NC-interrupt-program will be executed like a normal NC subprogram called with the Q letter. This means that all currently active G-codes (e.g. offsets) and corrections (e.g. H-correction) are still active in the NC-interrupt-program. This also means that the NC programmer can do everything in the interrupt program as in a normal NC-program. The NC programmer is responsible for all settings. Normally the interrupt program switches off all axis offsets and corrections and at the end it restores these values. Also the interrupt program maybe has to move back to the interrupted point. How to do all these things will be shown in a later section of this document. With the end of the NC-interrupt-program there are 3 conditions: 1. return to interrupted NC-block and execute it again 2. return and execute the next NC-block 3. end all NC-programs 09.03.2018 38

NC Interrupt Program 3.5 Programming All characters and codes which are used for programming the NC interrupts are set in the machine parameters IrProgramming- Chars and IrProgrammingCodes. This document assumes following settings. Idx Function IrProgrammingChars IrProgrammingCodes 1 Enable/disable interrupt 13 (=M) 96 (96=enable; 97=disable) 2 Enable/disable reading I/O ports 13 (=M) 7 (7=enable; 8=disable) 3 End all NC-programs 13 (=M) 99 4 Interrupt execution type 13 (=M) 12 (12=at once; 13=at end of block) 5 Interrupt finishing type 13 (=M) 16 (16=again; 17=next block) 6 Activate/deactivate interrupt 13 (=M) 26 (26=activate; 27=deactivate) 7 Interrupt level 12 (=L) 8 Interrupt program number 16 (=P) To disable a function set the corresponding entry of the machine parameter IrProgrammingChars to zero. If IrProgrammingChars is a BCD-letter, the code will be strobed to the PLC. 09.03.2018 39

NC Interrupt Program 3.5.1 Enable/disable interrupt Table 3: Syntax for "enable interrupt" M96 [Lx [Py]] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active Table 4: Syntax for "disable interrupt" M97 [Lx [Py]] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active M96 M96 Lx M96 Lx Py M97 M97 Lx programmed without L and P enables all available interrupts. If there was never a NCprogram defined for an interrupt, the NC-program applied in the machine parameters will be used. There is no precheck for existing NC-programs. If the interrupt gets active and a not existing NC-program should be called, the error "program does not exist" will occure. The CNC first searches for the interrupt program in the internal CMOS memory. If the NC-program is not found in the CMOS memory, it looks for it on the directory of the main NC-program. "Enable interrupt" also automatically enables "reading I/O-port" for all available interrupts. enables the specified interrupt. This also enables "reading I/O-port" for this interrupt. enables the specified interrupt. This also enables "reading I/O-port" for this interrupt. The specified NC-program will be called if the interrupt gets active. Up from now Py is the new NC-program which will be used if no NC-program is specified in an interrupt command. programmed without L disables all interrupts. This does NOT disable "reading I/O-port". disables the specified interrupt. This does NOT disable "reading I/O-port" for this interrupt. 09.03.2018 40

NC Interrupt Program M97 Lx Py M96/M97 Py disables the specified interrupt and preselects the NC-program Py for this interrupt. Up from now Py is the new NC-program which will be used if no NC-program is specified in a interrupt command. This does NOT disable "reading I/O-port" for this interrupt. is not allowed. To specify a NC-program for an interrupt, the L-word must always be programmed. Examples N50 M96 N50 M96 L1 N50 M96 L2 P1234 N50 M97 N50 M97 L1 N50 M97 L2 P4444 Enables all interrupts Enables the first interrupt Enables the first interrupt and uses Program 1234 Disables all interrupts Disables the first interrupt Disables the second interrupt and preselects program 4444 With Control-Reset or end of the main NC-program the selected NC-programs will be reseted to the NC-programs specified in the machine parameters. Also all interrupts are getting disabled with Ctrl.- Reset or end of the main NC-program. If the specified character for "enable/disable interrupt" is a BCD-character, the BCD will be strobed to the PLC. Following conditions must be true to get an active interrupt: 1. The operating mode is either AUTO-continued or single step. 2. The priority of the interrupt in the machine parameters is valid (1-32). 3. The NC-program has the interrupt enabled (here M96). 4. The PLC has also enabled the interrupt. 5. The I/O port's active condition is true or the NC programmer has activated the interrupt or the PLC has activated the interrupt. 09.03.2018 41

NC Interrupt Program 3.5.2 Enable/disable reading I/O signal Table 5: Syntax for "enable reading I/O" M7 [Lx [Py]] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active Table 6: Syntax for "disable reading I/O" M8 [Lx [Py]] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active M7 M7 Lx [Py] M8 M8 Lx [Py] programmed without L enables reading the I/O ports for all available interrupts. This does not mean that the interrupt itself is enabled. M7 only allows the CNC to read the I/O port. (see also Ä Chapter 3.5.1 Enable/ disable interrupt on page 40). enables reading the I/O port for the specified interrupt. programmed without L disables reading the I/O ports for all available interrupts. If the interrupt itself is enabled (see Ä Chapter 3.5.1 Enable/disable interrupt on page 40), the PLC or the NC-program can continue fire a soft-interrupt (see Ä Chapter 3.5.5 Activate/deactivate interrupt on page 46). disables reading the I/O port for the specified interrupt. As descriped in Ä Chapter 3.5.1 Enable/disable interrupt on page 40, with these two commands you can also preselect a NC-program for the interrupt. Example N10 M96 L1 P1234 Enables read I/O-port and enables interrupt... I/O-port, PLC, NC-program and a CompileCycle can fire this interrupt N50 M8 L1 Now the I/O-port won t be read any more but PLC, NCprogram and a CompileCycle can continue fire this interrupt 09.03.2018 42

NC Interrupt Program... N100 M97 L1 Disable interrupt = no interrupt possible any more Following conditions must be true for reading interrupt I/O ports: 1. The NC-program has enabled reading the I/O-port (either M96 or M7). 2. The PLC has enabled reading the I/O-port. 3. The priority of the interrupt must be between 1 and 32. To allow soft-interrupts (from PLC, NC-program or CompileCycle) it is not necessary to read the I/O port of the interrupt. If the specified character for "enable/disable reading I/O signal" is a BCD-character, the BCD will be strobed to the PLC. 09.03.2018 43

NC Interrupt Program 3.5.3 Interrupt execution type Table 7: Syntax for "execution type at once" M12 [Lx [Py]] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active Table 8: Syntax for "execution type at end of block" M13 [Lx [Py]] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active M12 M12 Lx [Py] M13 M13 Lx [Py] programmed without L sets the execution type of all interrupts to "at once". sets the execution type of the specified interrupt to "at once". programmed without L sets the execution type of all interrupts to "at end of block". sets the execution type of the specified interrupt to "at end of block". As descriped in Ä Chapter 3.5.1 Enable/disable interrupt on page 40, with these two commands you can also preselect a NC-program for the interrupt. With Control-Reset or end of the main NC-program the execution type of the interrupts will be reseted to the type specified in the machine parameters. If the specified character for this function is a BCDcharacter, the BCD will be strobed to the PLC. 09.03.2018 44

NC Interrupt Program 3.5.4 Interrupt finishing type Table 9: Syntax for finish type "execute interrupted block again" M16 [Lx [Py]] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active Table 10: Syntax for finish type "execute next block" M17 [Lx [Py]] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active M16 M16 Lx [Py] M17 M17 Lx [Py] programmed without L sets the finish type of all interrupts to "execute interrupted block again". sets the finish type of the specified interrupt to "execute interrupted block again". programmed without L sets the finish type of all interrupts to "execute next block". sets the finish type of the specified interrupt to "execute next block". As descriped in Ä Chapter 3.5.1 Enable/disable interrupt on page 40, with these two commands you can also preselect a NC-program for the interrupt. With Control-Reset or end of the main NC-program the finishing type of the interrupts will be reseted to the type specified in the machine parameters. If the specified character for this function is a BCDcharacter, the BCD will be strobed to the PLC. 09.03.2018 45

NC Interrupt Program 3.5.5 Activate/deactivate interrupt Table 11: Syntax for "activate interrupt" M26 Lx [Py] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active Table 12: Syntax for "deactivate interrupt" M27 [Lx [Py]] x = interrupt signal 1-32 y = NC-program number which will be called if the interrupt got active M26 M26 Lx [Py] M27 M27 Lx [Py] programmed without L is not allowed. sets the specified interrupt active. If there is no more prior interrupt active, this interrupt will be executed. programmed without L deactivates all interrupts. deactivates the specified interrupt. As descript in Ä Chapter 3.5.1 Enable/disable interrupt on page 40, with these two commands you can also preselect a NC-program for the interrupt. An active interrupt will not be executed if there is a more prior interrupt also active or currently an interrupt program is executed. See also Ä Chapter 3.3 General interrupt handling on page 37. If the specified character for this functions is a BCD-character, the BCD will be strobed to the PLC. Following conditions must be true to get an active interrupt: 1. The operating mode is either AUTO-continued or single step. 2. There is currently no active interrupt. 3. The interrupt is still enabled in the NC-program AND in the PLC. 4. The interrupt is the most prior interrupt in the list. 09.03.2018 46

NC Interrupt Program 3.5.6 End all NC programs The last NC-block of a NC-program or subprogram is either M02 or M30. M02 or M30 in the main-program is a control-reset. In a subprogram M02 or M30 return to the calling program. M99 in an interrupt program ends all NC-programs. M99 is only allowed if the program is called by an interrupt. If you run a program ending with M99 as a normal program or subprogram you will get the error "unexpected end of program". Examples N100 M99 Ends all NC programs You can apply e.g. M30 as code for "End all NC programs". This allows you to use M02 as normal end of interrupt program and M30 as code to end all NC-programs. Also if the applied code for "End all NC programs" is a BCD-code, this code will NOT be strobed to the PLC. The strobe to the PLC is always M30. 3.6 Programming tips As described before the NC-programmer is responsible for all things which happen in the NC-interrupt program. The CNC does not store or restore any data with interrupting a NC-program or returning back to the interrupted NC-program. The advantage is that the NC-programmer can do anything in the interrupt program and can use the interrupts for anything. And the programmer always knows the states of the machine. Nothing is hidden. It is a good idea to store all tool-correction- and axes offset values in P-parameters so that the NC-interrupt program can restore it if necessary. The frequently question is how to come back to the interrupted point and how can I restore the offset and correction values. Following section gives you an introduction how to do these things. 3.6.1 Store the current axes positions The cycle interpreter offers two commands to get the current axes position. AVa MVa The current set-position of the axis. The actual position of the axis (machine position). a = the character to program the axis, e.g. X 09.03.2018 47