hexagon logo

Flow chart for a CMM program

Hi, I am new to CMM programming and want to learn. I have been programming many traditional computer languages for over 10 years. My question is - is there a way to represent a CMM program (especially a complex one) in a more user-friendly format that uses blocks of English sentences to represent the program's flow, similar to a program flowchart. My thoughts are - this helps to standardize and makes programs consistent within the company (especially if there are multiple programmers), helps as a training document to a newbie like me and also helps to understand a complex program quickly instead of getting into the PCDMIS code details. Thoughts?
Parents
  • I use the PC-DMIS templates to keep the measurement routine more consistent.
    Here is a sample template layout:
    PART NAME  : Routine Inch - 20231209 - Build 02
    REV NUMBER :
    SER NUMBER :
    STATS COUNT : 1
     
    STARTUP    =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
                ALIGNMENT/END
                RECALL/ALIGNMENT,INTERNAL,STARTUP
                MODE/MANUAL
                FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, ,
                LOADPROBE/HOME
                TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
                WORKPLANE/ZPLUS
    START_MENU =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=START_MENU
    PREFEATURE_CHECK=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=PREFEATURE_CHECK
    PART_MACHINE_ENTRY=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=PART_MACHINE_ENTRY
    MOVE_SETTINGS=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=MOVE_SETTINGS
    START_POSITION=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=START_POSITION
    ROUTINE_MODE_MEAS1=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=ROUTINE_MODE_MEAS1
    MANUAL_MODE_MEAS2=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=MANUAL_MODE_MEAS2
    MANUAL_START_MEAS=LABEL/
    MAN_ALIGN  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=MAN_ALIGN
    DCC_MODE_MEAS3=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=DCC_MODE_MEAS3
    DCC_START_MEAS=LABEL/
    DCC_ALIGN  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=DCC_ALIGN
    DAT_FEAT_START=LABEL/
    DAT_FEAT   =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=DAT_FEAT
    MEAS_FEAT_START=LABEL/
    ZPLUS_GRP  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=ZPLUS_GRP
    XPLUS_GRP  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=XPLUS_GRP
    YPLUS_GRP  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=YPLUS_GRP
    XMINUS_GRP =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=XMINUS_GRP
    YMINUS_GRP =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=YMINUS_GRP
    ZMINUS_GRP =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=ZMINUS_GRP
    END_POSITION=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=END_POSITION
    DIMENSION_MEAS4=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=DIMENSION_MEAS4
    REPORT_FOOTER=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=REPORT_FOOTER
    EMAIL_ROUTINE=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=EMAIL_ROUTINE
    EXCEL_FORM_REPORT_ADD_ONS=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=EXCEL_FORM_REPORT_ADD_ONS
    SUBROUTINE_ADD_ONS=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=SUBROUTINE_ADD_ONS
    PROGRAM_CONTROLS_ADD_ONS=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=PROGRAM_CONTROLS_ADD_ONS​
    


    The way this template is built is to be scalable. I can add or remove certain groups that are not needed and if a required group is removed the Start menu group will not continue without warning that a required group is missing. The warning message will list the missing groups to the programmer or user. There is a main Template that will have all of the custom groups that can be copied and past to any of these templates. This will keep all of the measurement routines more consistent and scalable.
Reply
  • I use the PC-DMIS templates to keep the measurement routine more consistent.
    Here is a sample template layout:
    PART NAME  : Routine Inch - 20231209 - Build 02
    REV NUMBER :
    SER NUMBER :
    STATS COUNT : 1
     
    STARTUP    =ALIGNMENT/START,RECALL:USE_PART_SETUP,LIST=YES
                ALIGNMENT/END
                RECALL/ALIGNMENT,INTERNAL,STARTUP
                MODE/MANUAL
                FORMAT/TEXT,OPTIONS, ,HEADINGS,SYMBOLS, ;NOM,TOL,MEAS,DEV,OUTTOL, ,
                LOADPROBE/HOME
                TIP/T1A0B0, SHANKIJK=0, 0, 1, ANGLE=0
                WORKPLANE/ZPLUS
    START_MENU =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=START_MENU
    PREFEATURE_CHECK=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=PREFEATURE_CHECK
    PART_MACHINE_ENTRY=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=PART_MACHINE_ENTRY
    MOVE_SETTINGS=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=MOVE_SETTINGS
    START_POSITION=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=START_POSITION
    ROUTINE_MODE_MEAS1=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=ROUTINE_MODE_MEAS1
    MANUAL_MODE_MEAS2=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=MANUAL_MODE_MEAS2
    MANUAL_START_MEAS=LABEL/
    MAN_ALIGN  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=MAN_ALIGN
    DCC_MODE_MEAS3=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=DCC_MODE_MEAS3
    DCC_START_MEAS=LABEL/
    DCC_ALIGN  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=DCC_ALIGN
    DAT_FEAT_START=LABEL/
    DAT_FEAT   =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=DAT_FEAT
    MEAS_FEAT_START=LABEL/
    ZPLUS_GRP  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=ZPLUS_GRP
    XPLUS_GRP  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=XPLUS_GRP
    YPLUS_GRP  =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=YPLUS_GRP
    XMINUS_GRP =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=XMINUS_GRP
    YMINUS_GRP =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=YMINUS_GRP
    ZMINUS_GRP =GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=ZMINUS_GRP
    END_POSITION=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=END_POSITION
    DIMENSION_MEAS4=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=DIMENSION_MEAS4
    REPORT_FOOTER=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=REPORT_FOOTER
    EMAIL_ROUTINE=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=EMAIL_ROUTINE
    EXCEL_FORM_REPORT_ADD_ONS=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=EXCEL_FORM_REPORT_ADD_ONS
    SUBROUTINE_ADD_ONS=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=SUBROUTINE_ADD_ONS
    PROGRAM_CONTROLS_ADD_ONS=GROUP/SHOWALLPARAMS=NO
                ENDGROUP/ID=PROGRAM_CONTROLS_ADD_ONS​
    


    The way this template is built is to be scalable. I can add or remove certain groups that are not needed and if a required group is removed the Start menu group will not continue without warning that a required group is missing. The warning message will list the missing groups to the programmer or user. There is a main Template that will have all of the custom groups that can be copied and past to any of these templates. This will keep all of the measurement routines more consistent and scalable.
Children
  • dang dave that's wild. I suppose you only need to create this once and save it as a master program and then go from there.
    what do you do if you need to add another probe during the run? do you create a separate GROUP for that probe alone?

    the ONLY thing I don't like about GROUPS is that if you need to go back and edit anything you need to add a few more clicks to open up the GROUP. its a small gripe but it's my gripe and I'm sticking to it.
  • BIGWIG7, Correct, I have one main template named Routine Builder and another that has all of my main and custom groups named Routine Container. The Routine Container is used to store mainly custom groups that I can copy and paste into any measurement routine. Example say if a measurement routine didn't have the SAVE_ROUTINE_LOCALLY Group, I can open the Routine Container routine and copy and paste that group into my measurement routine. For adding another Probe will be outside of the groups and all probe tips inside of the groups. For example, XPLUS_GRP is using the LOADPROBE/HOME and I need to add another LOADPROBE for other features. I will then create a new group name it XPLUS_GRP1 because I am still on the X Plus side of the part and add another LOADPROBE/HOME2 in between XPLUS_GRP and XPLUS_GRP1. This way I can see all of the LOADPROBE commands that are in the measurement routine. I use the Groups to organize the measurement routines to make it easier to find what needs to be edited. This process works well for Clearance Cube and Clearance Planes and Move Points. The MOVE_SETTINGS group will contain the variables for the Clearance Planes and Move Points to simulate a Clearance Cube using the Show Clearance Planes.