For any kind of performance-, OEE- or cycle-related analysis of machine data information about the number of produced workpieces is required. For machines equipped with Heidenhain TNC and iTNC controllers CNCnetPDM enables to automatically acquire part counter data without any user action required.
Heidenhain controllers have the ability to display and store workpiece counters. Storage is performed by the machine’s Programmable Logic Controller (PLC). For TNC 426, 430 and iTNC 530 devices PLC Word Address 20 is used. Newer NCK based controls like TNC 320, 620 and 640 use PLC Word Address 10.
FIG 2: Heidenhain PLC workpiece counter (TNC 640)
ACQUIRE PART COUNTS
To acquire part counter data you have to utilize an unused Q-Parameter that is not reset automatically, preferably between Q20 and Q99. The following example uses Q48. Write a small utility program, here COUNTPART, that maintains parameter Q48 and updates the respective PLC Address value.
Note: Please select only one version of line 2 according to your controller type.
0 BEGIN PGM COUNTPART MM
1 FN 1: Q48 =+Q48 + +1 ;Increase Q48 by 1
2 FN 17: SYSWRITE ID 2000 NR70 IDX20 =+Q48 ;Write Q48 to PLC Workpiece Counter W20 iTNC 530
2 FN 17: SYSWRITE ID 2000 NR70 IDX10 =+Q48 ;Write Q48 to PLC Workpiece Counter W10 TNC 640
3 END PGM COUNTPART MM
FIG 3: Heidenhain part counter NC Program
To count parts you simply have to add one line to every NC Program before its end that calls the above program e.g.
10 CALL PGM COUNTPART
11 END PGM FELGE_MILL MM
FIG 4: Call Heidenhain part counter NC Program
READ COUNTER DATA
Reading of part counts with CNCnetPDM can be controlled by using the INI file which is automatically created for every connected machine e.g. heidenhain_1000.ini for machine number 1000.
For counting workpieces section  of this file is used. To activate counting edit the file with a text editor, set Active = 1 and adjust Input parameter 1 according to your controller type, 20 for TNC 426, 430 and iTNC 530, 10 for TNC 320, 620 and 640. Also make sure that CollectCounters = 1 in CNCnetPDM.ini.