Skip to content

Commit

Permalink
acq: add BPM position calculation.
Browse files Browse the repository at this point in the history
Using a CP link with the last input to be updated is a valid strategy,
because once it generates a callback we know for sure that the new
values have already been copied to the other records, even if they
haven't finished processing [1].

[1] https://epics.anl.gov/tech-talk/2024/msg00837.php
  • Loading branch information
ericonr committed Jul 12, 2024
1 parent cada450 commit 148be64
Show file tree
Hide file tree
Showing 3 changed files with 74 additions and 1 deletion.
2 changes: 1 addition & 1 deletion utcaApp/Db/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ DB += scan_task.template
DB += acq.template raw_data.template acq.substitutions
DB += ad9510.template
DB += afc_timing.template afc_timing_clock.template afc_timing_trigger.template afc_timing.substitutions
DB += bpm_data.template bpm_data.substitutions
DB += bpm_data.template bpm_pos_data.template bpm_data.substitutions
DB += bpm_swap.template bpm_swap.substitutions
DB += fmc_active_clk.template fmc_active_clk.substitutions
DB += fmc_adc_common.template fmc_adc_common.substitutions
Expand Down
4 changes: 4 additions & 0 deletions utcaApp/Db/bpm_data.substitutions
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ file db/bpm_data.template {
{"C", 2}
{"D", 3}
}

file db/bpm_pos_data.template {
{}
}
69 changes: 69 additions & 0 deletions utcaApp/Db/bpm_pos_data.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
record(aai,"$(P)$(R)$(ACQ_NAME)PosXData") {
field(EGU, "nm")
field(NELM, "$(NELM)")
field(FTVL, "DOUBLE")
alias("$(P)$(R)$(ACQ_NAME)_XArrayData")
}

record(aai,"$(P)$(R)$(ACQ_NAME)PosYData") {
field(EGU, "nm")
field(NELM, "$(NELM)")
field(FTVL, "DOUBLE")
alias("$(P)$(R)$(ACQ_NAME)_YArrayData")
}

record(aai,"$(P)$(R)$(ACQ_NAME)SumData") {
field(EGU, "au")
field(NELM, "$(NELM)")
field(FTVL, "DOUBLE")
alias("$(P)$(R)$(ACQ_NAME)_SUMArrayData")
}

record(aai,"$(P)$(R)$(ACQ_NAME)PosQData") {
field(EGU, "nm")
field(NELM, "$(NELM)")
field(FTVL, "DOUBLE")
alias("$(P)$(R)$(ACQ_NAME)_QArrayData")
}

record(aSub, "$(P)$(R)$(ACQ_NAME)Calc"){
field(SNAM, "asub_pos_calc")
field(INPA, "$(P)$(R)$(ACQ_NAME)AmplAData")
field(FTA, "LONG")
field(NOA, "$(NELM)")
field(INPB, "$(P)$(R)$(ACQ_NAME)AmplBData")
field(FTB, "LONG")
field(NOB, "$(NELM)")
field(INPC, "$(P)$(R)$(ACQ_NAME)AmplCData")
field(FTC, "LONG")
field(NOC, "$(NELM)")
field(INPD, "$(P)$(R)$(ACQ_NAME)AmplDData CP")
field(FTD, "LONG")
field(NOD, "$(NELM)")
field(INPE, "$(P)$(R)PosXOffset-RB")
field(FTE, "LONG")
field(INPF, "$(P)$(R)PosKx-RB")
field(FTF, "DOUBLE")
field(INPG, "$(P)$(R)PosYOffset-RB")
field(FTG, "LONG")
field(INPH, "$(P)$(R)PosKy-RB")
field(FTH, "DOUBLE")
field(INPI, "$(P)$(R)PosKsum-RB")
field(FTI, "DOUBLE")
field(INPJ, "$(P)$(R)PosQOffset-RB")
field(FTJ, "DOUBLE")
field(INPK, "$(P)$(R)PosKq-RB")
field(FTK, "DOUBLE")
field(OUTA, "$(P)$(R)$(ACQ_NAME)PosXData PP")
field(FTVA, "DOUBLE")
field(NOVA, "$(NELM)")
field(OUTB, "$(P)$(R)$(ACQ_NAME)PosYData PP")
field(FTVB, "DOUBLE")
field(NOVB, "$(NELM)")
field(OUTC, "$(P)$(R)$(ACQ_NAME)SumData PP")
field(FTVC, "DOUBLE")
field(NOVC, "$(NELM)")
field(OUTD, "$(P)$(R)$(ACQ_NAME)PosQData PP")
field(FTVD, "DOUBLE")
field(NOVD, "$(NELM)")
}

0 comments on commit 148be64

Please sign in to comment.