From 93433865776be5271c79372d1cea359ed1dbda9d Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Fri, 19 Jun 2026 00:25:03 +0100 Subject: [PATCH 1/2] Add kenematics --- .../iocBoot/iocGALIL-IOC-01/GALIL_01_kinematics.req | 1 + GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 GALIL/iocBoot/iocGALIL-IOC-01/GALIL_01_kinematics.req diff --git a/GALIL/iocBoot/iocGALIL-IOC-01/GALIL_01_kinematics.req b/GALIL/iocBoot/iocGALIL-IOC-01/GALIL_01_kinematics.req new file mode 100644 index 000000000..baa9cfa49 --- /dev/null +++ b/GALIL/iocBoot/iocGALIL-IOC-01/GALIL_01_kinematics.req @@ -0,0 +1 @@ +file "GALIL_controller_kinematics.req" "P=$(P),CCP=$(CCP)" diff --git a/GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd b/GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd index d1c7b845d..3471b1b66 100644 --- a/GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd +++ b/GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd @@ -31,8 +31,8 @@ $(IFRECSIM) epicsEnvSet("GALILADDR", "127.0.0.1") ### Scan-support software # crate-resident scan. This executes 1D, 2D, 3D, and 4D scans, and caches # 1D data, but it doesn't store anything to disk. (See 'saveData' below for that.) -#dbLoadRecords("$(SSCAN)/sscanApp/Db/standardScans.db","P=$(MYPVPREFIX)$(IOCNAME):,MAXPTS1=8000,MAXPTS2=1000,MAXPTS3=10,MAXPTS4=10,MAXPTSH=8000") -#dbLoadRecords("$(SSCAN)/sscanApp/Db/saveData.db","P=$(MYPVPREFIX)$(IOCNAME):") +$(IFNEWGALIL=#) dbLoadRecords("$(SSCAN)/sscanApp/Db/standardScans.db","P=$(MYPVPREFIX)$(IOCNAME):,MAXPTS1=8000,MAXPTS2=1000,MAXPTS3=10,MAXPTS4=10,MAXPTSH=8000") +$(IFNEWGALIL=#) dbLoadRecords("$(SSCAN)/sscanApp/Db/saveData.db","P=$(MYPVPREFIX)$(IOCNAME):") ### autosave # specify additional directories in which to to search for included request files @@ -43,6 +43,9 @@ set_requestfile_path("${SSCAN}/sscanApp/Db", "") ## as all Galils cd to GALIL-IOC-01 need to add this explicitly so info generated req files are found set_requestfile_path("${TOP}/iocBoot/iocGALIL-IOC-01", "") +# restore kinematic equation character arrays in pass 1 +$(IFNEWGALIL=#) set_pass1_restoreFile("$(IOCNAME)_kinematics.sav") + ## Make sure controller number is 2 digits long calc("MTRCTRL", "$(MTRCTRL)", 2, 2) @@ -129,10 +132,13 @@ $(IFHASMTRCTRL) $(IFNOTDEVSIM) $(IFNOTRECSIM) create_monitor_set("$(IOCNAME)_pos # Save motor settings every 30 seconds $(IFHASMTRCTRL) $(IFNOTDEVSIM) $(IFNOTRECSIM) create_monitor_set("$(IOCNAME)_settings.req", 30, "P=$(MYPVPREFIX)MOT:,CCP=$(MTRCTRL)") +# Save kinematics every 30 seconds +$(IFNEWGALIL=#) $(IFNOTDEVSIM) $(IFNOTRECSIM) create_monitor_set("$(IOCNAME)_kinematics.req", 30,"P=$(MYPVPREFIX)MOT:,CCP=$(MTRCTRL)") + $(IFHASMTRCTRL) $(IFMOTORCONFIG) create_manual_set("$(MOTORCONFIG=)Menu.req","P=$(MYPVPREFIX)MOT:,CMP=$(MYPVPREFIX)$(IOCNAME):CONFIG:,CONFIG=$(MOTORCONFIG=),IOCNAME=$(IOCNAME),MTRCTRL=$(MTRCTRL),CONFIGMENU=1") # Initialize saveData for step scans -#saveData_Init("saveData.req", "P=$(MYPVPREFIX)$(IOCNAME):") +$(IFNEWGALIL=#) saveData_Init("saveData.req", "P=$(MYPVPREFIX)$(IOCNAME):") ## Start any sequence programs #seq sncxxx,"user=icsHost" From db65378cabdb8ab2a54c98e5927dd220c1ee6376 Mon Sep 17 00:00:00 2001 From: Freddie Akeroyd Date: Mon, 29 Jun 2026 17:37:14 +0100 Subject: [PATCH 2/2] update --- GALIL/GALIL-IOC-01App/Db/Makefile | 1 + .../Db/galil_quadAmpStatus.substitutions | 34 +++++++++++++++++++ GALIL/iocBoot/iocGALIL-IOC-01/galildb.cmd | 3 ++ GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd | 18 ++++++---- 4 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 GALIL/GALIL-IOC-01App/Db/galil_quadAmpStatus.substitutions diff --git a/GALIL/GALIL-IOC-01App/Db/Makefile b/GALIL/GALIL-IOC-01App/Db/Makefile index 85dcd535f..a64639938 100644 --- a/GALIL/GALIL-IOC-01App/Db/Makefile +++ b/GALIL/GALIL-IOC-01App/Db/Makefile @@ -19,6 +19,7 @@ DB += galil_motors.db galil_motor_extras.db galil_dmc_ctrl.db galil_userdef_reco DB += galil_profileMoveController.db galil_profileMoveAxis.db galil_analog_ports.db DB += galil_digital_ports.db galil_user_array.db galil_csmotor_kinematics.db DB += galil_coordinate_systems.db galil_csmotor_extras.db galil_homing_routines.db +#DB += galil_quadAmpStatus.db include $(TOP)/configure/RULES #---------------------------------------- diff --git a/GALIL/GALIL-IOC-01App/Db/galil_quadAmpStatus.substitutions b/GALIL/GALIL-IOC-01App/Db/galil_quadAmpStatus.substitutions new file mode 100644 index 000000000..8047da57b --- /dev/null +++ b/GALIL/GALIL-IOC-01App/Db/galil_quadAmpStatus.substitutions @@ -0,0 +1,34 @@ +# Description +# Substitution file for Galil internal quad amplifier status monitoring +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# Licence as published by the Free Software Foundation; either +# version 2.1 of the Licence, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public Licence for more details. +# +# You should have received a copy of the GNU Lesser General Public +# Licence along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Contact details: +# Mark Clift +# email: padmoz@tpg.com.au + +# AMP - "AD" or "EH" +# ADDR - Axis number 0-1 + +file "$(GALIL)/GalilSup/Db/galil_quadAmpStatus.template" +{ +pattern +{ P, PORT, AMP, ADDR } +# Delete rows as necessary for controller + { "\$(P)", "\$(PORT)", "AD", 0 } + { "\$(P)", "\$(PORT)", "EH", 1 } +} + +# end diff --git a/GALIL/iocBoot/iocGALIL-IOC-01/galildb.cmd b/GALIL/iocBoot/iocGALIL-IOC-01/galildb.cmd index 1c633f0df..445bc7445 100644 --- a/GALIL/iocBoot/iocGALIL-IOC-01/galildb.cmd +++ b/GALIL/iocBoot/iocGALIL-IOC-01/galildb.cmd @@ -9,6 +9,9 @@ dbLoadRecords("$(TOP)/db/galil_motors.db", "GPORT=$(GALIL_MTR_PORT),P=$(MYPVPREF #Load extra functionality, untop of motorRecord features for axis/motors (eg. runtime gear ratio changes between master & slaves) dbLoadRecords("$(TOP)/db/galil_dmc_ctrl.db", "P=$(MYPVPREFIX)MOT:,CCP=$(MTRCTRL)") +#Load Amplifier status monitors (eg. Overtemperature, OverVoltage, ELO, etc) +#dbLoadTemplate("$(TOP)/db/galil_quadAmpStatus.db", "P=$(MYPVPREFIX)MOT:,CCP=$(MTRCTRL)") + #Load extra features for real axis/motors (eg. Motor type, encoder type) dbLoadRecords("$(TOP)/db/galil_motor_extras.db", "P=$(MYPVPREFIX)MOT:,CCP=$(MTRCTRL),PVPREFIX=$(MYPVPREFIX),ASG01=$(ASG01=DEFAULT),ASG02=$(ASG02=DEFAULT),ASG03=$(ASG03=DEFAULT),ASG04=$(ASG04=DEFAULT),ASG05=$(ASG05=DEFAULT),ASG06=$(ASG06=DEFAULT),ASG07=$(ASG07=DEFAULT),ASG08=$(ASG08=DEFAULT),ENCAVNSAMP=$(ENCAVNSAMP=10),IOCNAME=$(IOCNAME)") diff --git a/GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd b/GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd index 3471b1b66..8b16dbdc6 100644 --- a/GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd +++ b/GALIL/iocBoot/iocGALIL-IOC-01/st-common.cmd @@ -16,6 +16,9 @@ epicsEnvSet("IFIOC_GALIL_10", "#") epicsEnvSet("IFNEWGALIL", " ") epicsEnvSet("IFNOTNEWGALIL", "#") +## we wish to control some of autosave defined in common autosave.cmd +epicsEnvSet("AUTOSAVEREQ","#") + < $(IOCSTARTUP)/init.cmd ## whether to use autosaved SP for jaws on IOC restart @@ -31,8 +34,8 @@ $(IFRECSIM) epicsEnvSet("GALILADDR", "127.0.0.1") ### Scan-support software # crate-resident scan. This executes 1D, 2D, 3D, and 4D scans, and caches # 1D data, but it doesn't store anything to disk. (See 'saveData' below for that.) -$(IFNEWGALIL=#) dbLoadRecords("$(SSCAN)/sscanApp/Db/standardScans.db","P=$(MYPVPREFIX)$(IOCNAME):,MAXPTS1=8000,MAXPTS2=1000,MAXPTS3=10,MAXPTS4=10,MAXPTSH=8000") -$(IFNEWGALIL=#) dbLoadRecords("$(SSCAN)/sscanApp/Db/saveData.db","P=$(MYPVPREFIX)$(IOCNAME):") +$(IFNEWGALIL=#) dbLoadRecords("$(SSCAN)/sscanApp/Db/standardScans.db","P=$(MYPVPREFIX)MOT:DMC$(MTRCTRL):,MAXPTS1=8000,MAXPTS2=1000,MAXPTS3=10,MAXPTS4=10,MAXPTSH=8000") +$(IFNEWGALIL=#) dbLoadRecords("$(SSCAN)/sscanApp/Db/saveData.db","P=$(MYPVPREFIX)MOT:DMC$(MTRCTRL):") ### autosave # specify additional directories in which to to search for included request files @@ -43,6 +46,11 @@ set_requestfile_path("${SSCAN}/sscanApp/Db", "") ## as all Galils cd to GALIL-IOC-01 need to add this explicitly so info generated req files are found set_requestfile_path("${TOP}/iocBoot/iocGALIL-IOC-01", "") +# restore positions in pass 0 so motors don't move +set_pass0_restoreFile("$(IOCNAME)_positions.sav") +# restore settings in pass 0 so encoder ratio is set correctly for position restore in device support init +set_pass0_restoreFile("$(IOCNAME)_settings.sav") +$(IFOLDGALIL=#) set_pass1_restoreFile("$(IOCNAME)_settings.sav") # restore kinematic equation character arrays in pass 1 $(IFNEWGALIL=#) set_pass1_restoreFile("$(IOCNAME)_kinematics.sav") @@ -138,14 +146,10 @@ $(IFNEWGALIL=#) $(IFNOTDEVSIM) $(IFNOTRECSIM) create_monitor_set("$(IOCNAME)_kin $(IFHASMTRCTRL) $(IFMOTORCONFIG) create_manual_set("$(MOTORCONFIG=)Menu.req","P=$(MYPVPREFIX)MOT:,CMP=$(MYPVPREFIX)$(IOCNAME):CONFIG:,CONFIG=$(MOTORCONFIG=),IOCNAME=$(IOCNAME),MTRCTRL=$(MTRCTRL),CONFIGMENU=1") # Initialize saveData for step scans -$(IFNEWGALIL=#) saveData_Init("saveData.req", "P=$(MYPVPREFIX)$(IOCNAME):") +$(IFNEWGALIL=#) saveData_Init("saveData.req", "P=$(MYPVPREFIX)MOT:DMC$(MTRCTRL):") ## Start any sequence programs #seq sncxxx,"user=icsHost" #asynSetTraceIOMask("GALILSYNC0", -1, 0x2) #asynSetTraceMask("GALILSYNC0", -1, 0x9) - -## if using hardware flow control on GALIL will need this -## do not enable software flow control - see comments in GalilController.cpp -#asynSetOption("GALILSYNC0", 0, "crtscts", "Y");