00001 ############################################################ 00002 # 00003 # Template to distiguish real motor record initiated moves 00004 # from externally generated moves (eg. from a coordinate system motor). 00005 # 00006 ############################################################### 00007 00008 #Calculate if a move was internal or not 00009 record(calcout, "$(P)$(M):MR_MIP_INTERNAL") { 00010 field(DESC, "MR internal") 00011 field(DTYP, "Soft Channel") 00012 field(CALC, "(A#0)&&(A#B)") 00013 field(INPA, "$(P)$(M).MIP CP") 00014 field(INPB, "32768") 00015 field(OUT, "$(P)$(M):MR_MIP_INTERNAL_FLAG PP") 00016 field(DOPT, "Use CALC") 00017 field(OOPT, "Transition To Non-zero") 00018 } 00019 00020 #Cache the internal move flag 00021 record(bo, "$(P)$(M):MR_MIP_INTERNAL_FLAG") { 00022 field(DTYP, "Soft Channel") 00023 field(ZNAM, "External") 00024 field(ONAM, "Internal") 00025 field(VAL, "0") 00026 field(OMSL, "supervisory") 00027 } 00028 00029 #When DMOV = 1 and mip internal flag is set 00030 record(calcout, "$(P)$(M):MR_DMOV") { 00031 field(DESC, "MR Done") 00032 field(DTYP, "Soft Channel") 00033 field(CALC, "(A=1)&&(B=1)") 00034 field(INPA, "$(P)$(M).DMOV CP") 00035 field(INPB, "$(P)$(M):MR_MIP_INTERNAL_FLAG") 00036 field(OUT, "$(P)$(M):MR_MOVE_WRITE.PROC PP") 00037 field(DOPT, "Use CALC") 00038 field(OOPT, "Transition To Non-zero") 00039 } 00040 00041 #Write 1 to p47xx 00042 record(longout, "$(P)$(M):MR_MOVE_WRITE") { 00043 field(DESC, "Motor record move") 00044 field(DTYP, "stream") 00045 field(VAL, "1") 00046 field(OUT, "@pmacCoord.proto moveWrite($(P)$(M)) $(SPORT)") 00047 field(FLNK, "$(P)$(M):MR_RESET_FLAGS") 00048 } 00049 00050 #Reset the internal move flag 00051 record(seq, $(P)$(M):MR_RESET_FLAGS) { 00052 field(DESC, "Reset MIP flags") 00053 field(DO1, "0") 00054 field(LNK1, "$(P)$(M):MR_MIP_INTERNAL_FLAG PP") 00055 } 00056 00057 #calc mres to be written 00058 record(calcout, "$(P)$(M):MRES_CALC") { 00059 field(CALC, "B?-A*C:A*C") 00060 field(INPA, "$(P)$(M).MRES CP") 00061 field(INPB, "$(P)$(M).DIR CP") 00062 field(INPC, "$(P)$(M):SCALE") 00063 field(OUT, "$(P)$(M):MRES_SET PP") 00064 field(OOPT, "When Non-zero") 00065 } 00066 00067 record(ao, "$(P)$(M):MRES_SET") { 00068 field(DTYP, "stream") 00069 field(OUT, "@pmacCoord.proto mresWrite($(P)$(M)) $(SPORT)") 00070 field(FLNK, "$(P)$(M):MR_MOVE_WRITE") 00071 } 00072 00073 #calc off to be written 00074 record(calcout, "$(P)$(M):OFF_SET") { 00075 field(DTYP, "stream") 00076 field(CALC, "A") 00077 field(INPA, "$(P)$(M).OFF CP") 00078 field(OUT, "@pmacCoord.proto offWrite($(P)$(M)) $(SPORT)") 00079 field(FLNK, "$(P)$(M):MR_MOVE_WRITE") 00080 }