diff --git a/Makefile.RHEL7 b/Makefile.RHEL7 index bd7c4ab..0398669 100644 --- a/Makefile.RHEL7 +++ b/Makefile.RHEL7 @@ -2,7 +2,7 @@ include /ioc/tools/driver.makefile MODULE=sinq -LIBVERSION=koennecke +LIBVERSION=koennecke_speed BUILDCLASSES=Linux EPICS_VERSIONS=3.14.12 7.0.4.1 diff --git a/sinqEPICSApp/Db/basic_asyn_motor.db b/sinqEPICSApp/Db/basic_asyn_motor.db index fc19187..cddd75c 100644 --- a/sinqEPICSApp/Db/basic_asyn_motor.db +++ b/sinqEPICSApp/Db/basic_asyn_motor.db @@ -4,6 +4,7 @@ record(motor,"$(P)$(M)") field(DTYP,"$(DTYP)") field(DIR,"$(DIR)") field(VELO,"$(VELO)") + field(VMAX,"$(VMAX=0)") field(VBAS,"$(VBAS)") field(ACCL,"$(ACCL)") field(BDST,"$(BDST)") diff --git a/sinqEPICSApp/src/EL734Driver.cpp b/sinqEPICSApp/src/EL734Driver.cpp index aa9eb3e..293fb3b 100644 --- a/sinqEPICSApp/src/EL734Driver.cpp +++ b/sinqEPICSApp/src/EL734Driver.cpp @@ -270,6 +270,12 @@ asynStatus EL734Axis::move(double position, int relative, double minVelocity, do errlogPrintf("minVelocity = %f, maxVelocity = %f\n", minVelocity, maxVelocity); + /* + * set speed + */ + sprintf(command, "J %d %d", axisNo_, (int)maxVelocity); + status = pC_->transactController(axisNo_, command, reply); + if (relative) { position += this->position; } diff --git a/testel734/db/basic_asyn_motor.db b/testel734/db/basic_asyn_motor.db new file mode 100644 index 0000000..fc19187 --- /dev/null +++ b/testel734/db/basic_asyn_motor.db @@ -0,0 +1,23 @@ +record(motor,"$(P)$(M)") +{ + field(DESC,"$(DESC)") + field(DTYP,"$(DTYP)") + field(DIR,"$(DIR)") + field(VELO,"$(VELO)") + field(VBAS,"$(VBAS)") + field(ACCL,"$(ACCL)") + field(BDST,"$(BDST)") + field(BVEL,"$(BVEL)") + field(BACC,"$(BACC)") + field(OUT,"@asyn($(PORT),$(ADDR))") + field(MRES,"$(MRES)") + field(PREC,"$(PREC)") + field(EGU,"$(EGU)") + field(DHLM,"$(DHLM)") + field(DLLM,"$(DLLM)") + field(INIT,"$(INIT)") + field(TWV,"1") + field(RDBD,"$(RDBD)") + field(RTRY,"0") +} + diff --git a/testel734/db/basic_motor.db b/testel734/db/basic_motor.db new file mode 100644 index 0000000..98e55ec --- /dev/null +++ b/testel734/db/basic_motor.db @@ -0,0 +1,21 @@ +grecord(motor,"$(P)$(M)") +{ + field(DESC,"$(DESC)") + field(DTYP,"$(DTYP)") + field(DIR,"$(DIR)") + field(VELO,"$(VELO)") + field(VBAS,"$(VBAS)") + field(ACCL,"$(ACCL)") + field(BDST,"$(BDST)") + field(BVEL,"$(BVEL)") + field(BACC,"$(BACC)") + field(OUT,"#C$(C) S$(S) @") + field(MRES,"$(MRES)") + field(PREC,"$(PREC)") + field(EGU,"$(EGU)") + field(DHLM,"$(DHLM)") + field(DLLM,"$(DLLM)") + field(INIT,"$(INIT)") + field(TWV,"1") +} + diff --git a/testel734/db/motorMessage.db b/testel734/db/motorMessage.db new file mode 100644 index 0000000..6168c2b --- /dev/null +++ b/testel734/db/motorMessage.db @@ -0,0 +1,18 @@ + +# The message text +record(waveform, "$(P)$(M)-MsgTxt") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn($(PORT),$(N),1) MOTOR_MESSAGE_TEXT") + field(FTVL, "CHAR") + field(NELM, "80") + field(SCAN, "I/O Intr") +} + +record(ao,"$(P)m$(N)-Resolution"){ + field(DESC,"m$(N) Resolution") + field(DOL,"$(P)m$(N).MRES CP MS") + field(OMSL,"closed_loop") + field(DTYP,"asynFloat64") + field(OUT,"@asyn($(PORT),$(N))MOTOR_RESOLUTION") + field(PREC,"3") +} diff --git a/testel734/db/sinq_asyn_motor.db b/testel734/db/sinq_asyn_motor.db new file mode 100644 index 0000000..36bdbb6 --- /dev/null +++ b/testel734/db/sinq_asyn_motor.db @@ -0,0 +1,48 @@ +record(motor,"$(P)$(M)") +{ + field(DESC,"$(DESC)") + field(DTYP,"$(DTYP)") + field(DIR,"$(DIR)") + field(VELO,"$(VELO)") + field(VMAX,"$(VMAX=$(VELO))") + field(VBAS,"$(VBAS)") + field(ACCL,"$(ACCL)") + field(BDST,"$(BDST)") + field(BVEL,"$(BVEL)") + field(BACC,"$(BACC)") + field(OUT,"@asyn($(PORT),$(ADDR))") + field(MRES,"$(MRES)") + field(PREC,"$(PREC)") + field(EGU,"$(EGU)") + field(DHLM,"$(DHLM)") + field(DLLM,"$(DLLM)") + field(INIT,"$(INIT)") + field(TWV,"1") + field(RDBD,"$(RDBD)") +} + + +# The message text +record(waveform, "$(P)$(M)-MsgTxt") { + field(DTYP, "asynOctetRead") + field(INP, "@asyn($(PORT),$(N),1) MOTOR_MESSAGE_TEXT") + field(FTVL, "CHAR") + field(NELM, "80") + field(SCAN, "I/O Intr") +} + +# enable axis +record(longout, "$(P)$(M):Enable") { + field(DTYP, "asynInt32") + field(OUT, "@asyn($(PORT),$(N),1) ENABLE_AXIS") + field(PINI, "YES") +} + +# enable axis +record(longin, "$(P)$(M):Enable_RBV") { + field(DTYP, "asynInt32") + field(INP, "@asyn($(PORT),$(N),1) AXIS_ENABLED") + field(PINI, "YES") + field(SCAN, "1 second") +} + diff --git a/testel734/mota.sub b/testel734/mota.sub new file mode 100644 index 0000000..7a5e23b --- /dev/null +++ b/testel734/mota.sub @@ -0,0 +1,13 @@ +file "$(TOP)/db/basic_asyn_motor.db" +{ +pattern +{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DLLM, DHLM, INIT} +{KM36:mota:, 2, "m$(N)", "asynMotor", mota, 2, "sgl", degree, Pos, 2.0, 0.1, .2, 0, 1, .2, 1., 3, -20.0, 20.0, ""} +} + +file "$(TOP)/db/motorMessage.db" +{ +pattern +{P,N, M,PORT} +{KM36:mota:, 2, "m$(N)",mota} +} diff --git a/testel734/motaspeed.sub b/testel734/motaspeed.sub new file mode 100644 index 0000000..dacfebb --- /dev/null +++ b/testel734/motaspeed.sub @@ -0,0 +1,12 @@ +file "$(TOP)/db/sinq_asyn_motor.db" +{ +pattern +{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DLLM, DHLM, INIT, RDBD} +{KM36:mota:,2,"m$(N)","asynMotor", mota, 2, "sgl", degree, Pos, 100, 0.1, .2, 0, 1, .2, 1., 3,-180.0,360.0,"", 0.2}} + +file "$(TOP)/db/motorMessage.db" +{ +pattern +{P,N, M,PORT} +{KM36:mota:, 2, "m$(N)",mota} +} diff --git a/testel734/testel734.cmd b/testel734/testel734.cmd new file mode 100755 index 0000000..0d1071f --- /dev/null +++ b/testel734/testel734.cmd @@ -0,0 +1,12 @@ +#!/usr/local/bin/iocsh + +require sinq,koennecke_speed + +epicsEnvSet("TOP","/afs/psi.ch/project/sinqdev/sinqepicsapp/testel734") + +drvAsynIPPortConfigure("serial1", "localhost:61000",0,0,0) +EL734CreateController("mota","serial1",3) + +#dbLoadTemplate "mota.sub" +dbLoadTemplate "motaspeed.sub" +