MMC:CFG_1.0::
# MMC : RAPID PROGRAMMING RULES (HIRULE) FOR CLASS RLMOVE
# $Revision: 1.6 $

MMC_REAL_ROUTINE:
# -name	        Name of RAPID/ReaL routine eg. movel    (MAN)			
# -default_     Default parameter struct(15)		(OPT)
#  struct       Array position -> PGM's fix (max) parameter no
#               0   -> Optional parameter not present
#               1   -> Required/Optional parameter present
#               1-4 -> Optional alternative parameter present
#               eg. 0,1,1,0,1,0,1,0 for movel
# -last_struct  Last used parameter struct(15)		(OPT)
#               (cfg-file -> Not used
#                HIRULE   -> Update)
# ************* Translation to local language ************************
#     		-> None

-name moveabsj -default_struct 0,1,1,1,0,1,0,0,1,0
-name movec    -default_struct 0,1,1,1,0,1,0,0,1,0,0
-name movej    -default_struct 0,1,1,0,1,0,0,1,0
-name movel    -default_struct 0,1,1,0,1,0,0,1,0,0

MMC_INST_NOT_REUSING_PREV_OPT_ARG:
#               Instructions with optional parameters/
#               Skip previous used optional parameter
#               in actual instruction.
# -name	        Name of RAPID/ReaL routine		(MAN)
#               eg. movel
# -param_nr	Parameter struct no			(MAN)
#               (PGM's fix (max) parameter no)

-name moveabsj	-param_nr 1,5,7,8
-name movec 	-param_nr 1,5,7,8
-name movej	-param_nr 1,4,6,7
-name movel	-param_nr 1,4,6,7

MMC_REAL_PARAM:
# -name	        Name of RAPID/ReaL routine_parameter	(MAN)
#               eg. movel_topoint
# -name_rule    Parameter name rule			(MAN)
#       NONE -> No rule means unexpanded placeholders
#       SEQ  -> Use sequence name rule as defined by       *)
#               -method hirule_robtarget
#               -method hirule_jointtarget
#       CUR  -> Use current name as defined by      
#               -method hirule_tooldata
#               -method hirule_wobjdata
#       LAST -> Use last programmed name or value          *)
#               Attribute -def_name -> Default name or value
#       DEF  -> Use default name or value as defined by
#               attribute -def_name
# -method       Reference to predefined method		(OPT)
#               -method hirule_robtarget
#               -method hirule_jointtarget
#               -method hirule_tooldata
#               -method hirule_wobjdata
# -def_name     The name or value for the rule LAST/DEF	(OPT)
#               *) HIRULE update
# ************* Below attributes not supported yet *******************
# -max_value    Max. value for data type num		(OPT)
#               (or alias of num)
# -min_value    Min. value for data type num		(OPT)
# -measure      Measurement unit for non-composite	(OPT)
#               data type eg. mm, s
# ************* Translation to local language ************************
#     		-> -def_name xxxx (if applicable)

-name moveabsj_tojointpos  -name_rule SEQ -method hirule_jointtarget
-name moveabsj_v       -name_rule LAST -def_name 1000
-name moveabsj_t       -name_rule DEF  -def_name 5
-name moveabsj_z       -name_rule LAST -def_name 50
-name moveabsj_tool    -name_rule CUR  -method hirule_tooldata
-name moveabsj_wobj    -name_rule CUR  -method hirule_wobjdata

-name movec_v       -name_rule LAST -def_name 1000
-name movec_t       -name_rule DEF  -def_name 5
-name movec_z       -name_rule LAST -def_name 10
-name movec_tool    -name_rule CUR  -method hirule_tooldata
-name movec_wobj    -name_rule CUR  -method hirule_wobjdata

-name movej_v       -name_rule LAST -def_name 1000
-name movej_t       -name_rule DEF  -def_name 5
-name movej_z       -name_rule LAST -def_name 50
-name movej_tool    -name_rule CUR  -method hirule_tooldata
-name movej_wobj    -name_rule CUR  -method hirule_wobjdata

-name movel_v       -name_rule LAST -def_name 1000
-name movel_t       -name_rule DEF  -def_name 5
-name movel_z       -name_rule LAST -def_name 50
-name movel_tool    -name_rule CUR  -method hirule_tooldata
-name movel_wobj    -name_rule CUR  -method hirule_wobjdata

# Definition of common naming rules for all ToPoint
# and CirPoint of data type robtarget 
# in all type of Move-instructions

-name common_point  -name_rule SEQ  -method hirule_robtarget

# Definition of common naming rules for all Speed and Zone 
# in all type of Move-instructions

-name common_speed      -name_rule LAST  -def_name v1000
-name common_zone       -name_rule LAST  -def_name z50
-name common_cir_zone   -name_rule LAST  -def_name z10

MMC_COMMON_PARAM:
#               Common naming rules for all Move-instructions.
# -name	        Name of RAPID/ReaL routine_parameter	(MAN)
#               eg. movel_topoint
# -common_space_name					(MAN)
#               common_point      -> For ToPoint and CirPoint
#               common_speed      -> For Speed
#               common_zone       -> For Zone
#               common_cir_zone   -> For Zone in circle


-name movec_cirpoint 	-common_space_name common_point
-name movec_topoint 	-common_space_name common_point
-name movej_topoint 	-common_space_name common_point
-name movel_topoint 	-common_space_name common_point

-name moveabsj_speed    -common_space_name common_speed
-name movec_speed  	-common_space_name common_speed
-name movej_speed       -common_space_name common_speed
-name movel_speed       -common_space_name common_speed

-name moveabsj_zone     -common_space_name common_zone
-name movec_zone        -common_space_name common_cir_zone
-name movej_zone        -common_space_name common_zone
-name movel_zone        -common_space_name common_zone


MMC_INSTR_WITH_WOBJ:
#               Instructions with parameter WObj
# -name	        Name of RAPID/ReaL routine		(MAN)
#               eg. movel
# -param_nr	Parameter struct no			(MAN)
#               (PGM's fix (max) parameter no)

-name moveabsj	-param_nr 10
-name movec	-param_nr 10
-name movej	-param_nr 9
-name movel	-param_nr 9


MMC_SELECT_PARAM:
#               Ready instructions direct from IPL but
#               need of some modifications. MMC pointing out specified argument
#               with cursor for modifications.
#               E.g. MODPOS of ToPoint in MoveC
# -name	        Name of RAPID/ReaL routine		(MAN)
#               eg. movec
# -param_nr	Parameter struct no			(MAN)
#               (PGM's fix (max) parameter no)

-name movec	-param_nr 3


MMC_NO_PC_MOVEMENT:
#               Instructions with between points (such as CirPoint in MoveC)
#               which should not result in PC step out for MODPOS
# -name	        Name of RAPID/ReaL routine_parameter	(MAN)
#               eg. movec_cirpoint

-name movec_cirpoint

MMC_NO_NOREGAIN:
#               Instructions with not allowed NOREGAIN
#               (REDO of a circular movement)
# -name	        Name of RAPID/ReaL routine		(MAN)
#               eg. movec

-name movec

MMC_REAL_DATATYPE:
# -name	        Name of RAPID/ReaL data type		(MAN)
#               eg. robtarget
# -def_name     Default base data name eg. tool		(MAN)
# -value_rule   Value rule for new data			(MAN)
#   NONE     -> "Clear" value (0, "", FALSE)
#               No initialize value for non-value data type
#   CUR      -> Use current value as defined by
#               -method hirule_robtarget
#               -method hirule_jointtarget
#   DEF      -> Use default value defined by attribute
#               -use_value
# -method       Reference to predefined method          (OPT)
#               -method hirule_robtarget
#               -method hirule_jointtarget
# -use_value    The default value for the rule DEF	(OPT)
# -object_type  Default data object type		(MAN)
#   CONST    -> Constant
#   VAR      -> Variable
#   PERS     -> Persistent variable
#   REC_COMP -> Record component (not supported yet)
# ************* Below attributes not supported yet ******************
# -max_value    Max. value for data type num		(OPT)
#               (or alias of num)
# -min_value    Min. value for data type num		(OPT)
# -measure      Measurement unit for non-composite	(OPT)
#               data type eg. mm, s
# ************* Translation to local language ************************
#     		-> -def_name xxxx (if applicable)

-name robtarget   -def_name p           -value_rule CUR \
   -method hirule_robtarget \
   -object_type CONST \
   -validate_hook hirule_validate_robtarget

-name o_robtarget -def_name orgp_       -value_rule DEF \
   -use_value [[0,0,0],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]] \
   -object_type CONST
      
-name jointtarget   -def_name jpos      -value_rule CUR \
   -method hirule_jointtarget \
   -object_type CONST

-name o_jointtarget -def_name orgjpos_    -value_rule DEF \
   -use_value [[0,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]] \
   -object_type CONST
   
-name confdata    -def_name robconf     -value_rule DEF \
   -use_value [0,0,0,0] \
   -object_type VAR

-name extjoint    -def_name extjoint     -value_rule DEF \
   -use_value [9E9,9E9,9E9,9E9,9E9,9E9] \
   -object_type VAR
   
-name robjoint    -def_name robjoint     -value_rule DEF \
   -use_value [0,0,0,0,0,0] \
   -object_type VAR   

-name speeddata   -def_name speed        -value_rule DEF \
   -use_value [1000,500,5000,1000] \
   -object_type CONST

-name zonedata    -def_name zone         -value_rule DEF \
   -use_value [FALSE,50,75,75,7.5,75,7.5] \
   -object_type CONST

-name stoppoint -def_name stoptype  -value_rule DEF \
   -use_value 1 \
   -object_type CONST

-name stoppointdata -def_name stoppoint  -value_rule DEF \
   -use_value [1,TRUE,[100,100,0,20],0,0,"",0,0] \
   -object_type CONST
   
# use string if minus in the cfg value
# use_value is input to the method hirule_tooldata
# do not change -1
-name tooldata    -def_name tool         -value_rule DEF \
   -use_value "[TRUE,[[0,0,0],[1,0,0,0]],[-1,[0,0,0],[1,0,0,0],0,0,0]]" \
   -object_type PERS  -method hirule_tooldata \
   -validate_hook hirule_validate_tooldata   

-name wobjdata    -def_name wobj         -value_rule DEF \
   -use_value [FALSE,TRUE,"",[[0,0,0],[1,0,0,0]],[[0,0,0],[1,0,0,0]]] \
   -object_type PERS \
   -validate_hook hirule_validate_wobjdata

