Hello,
I'm using a one-axis piezo which is controller via the PIE816 Controller. I managed to set up an IOC which is communicating with the PIE816 and i also can drive the piezo axis. My problem is, that the motor is always in the "at HOME" status. The startup
of my IOC is as follows:
~/expIOC/iocBoot/iocexpIOC> ./st.cmd
#!../../bin/linux-x86_64/expIOC
## You may have to change expIOC to something else
## everywhere it appears in this file
##cd /home/ptb/expIOC/iocBoot/iocexpIOC/
< envPaths
epicsEnvSet("IOC","iocexpIOC")
epicsEnvSet("TOP","/home/ptb/expIOC")
epicsEnvSet("MODULES","/soft/epics/modules/")
epicsEnvSet("ASYN","/soft/epics/modules/asyn")
epicsEnvSet("MOTOR","/soft/epics/modules/motor-R6-10-1")
epicsEnvSet("PSEUDOMOTORS","/soft/epics/modules/pseudoMotors-1-1")
epicsEnvSet("CALC","/soft/epics/modules/calc-R3-7")
epicsEnvSet("EPICS_BASE","/usr/local/epics/base")
cd /home/ptb/expIOC
## Register all support components
dbLoadDatabase "dbd/expIOC.dbd"
expIOC_registerRecordDeviceDriver pdbbase
# over TCP/IP
#drvAsynIPPortConfigure("PIE816", "193.149.13.40:10001",0,0,0)
# over Serial
drvAsynSerialPortConfigure("PIE816","/dev/ttyS0",0,0,0)
asynSetOption("PIE816",-1,"baud","115200")
asynSetOption("PIE816",-1,"bits","8")
asynSetOption("PIE816",-1,"parity","none")
asynSetOption("PIE816",-1,"stop","1")
asynSetOption("PIE816",-1,"clocal","Y")
asynSetOption("PIE816",-1,"crtscts","Y")
#asynSetTraceIOMask("PIE816",0,2)
#asynSetTraceMask("PIE816",0,255)
#asynOctetSetInputEos("PIE816", 0, "\r\n")
#asynOctetSetOutputEos("PIE816", 0, "\r")
PIE816Setup(1, 60)
PIE816Config(0, "PIE816", 1)
## Load record instances
dbLoadRecords("db/expIOC.db", "PORT='PIE816'")
#dbLoadRecords("db/beer.db")
cd "/home/ptb/expIOC/iocBoot/iocexpIOC"
iocInit
Starting iocInit
############################################################################
## EPICS R3.15.5
## EPICS Base built Jul 2 2019
############################################################################
iocRun: All initialization complete
epics>
the complete dadabase for my motor-record is:
epics> dbtr PIE665:Piezo1
ACCL: 0.5 ACKS: NO_ALARM ACKT: YES ADEL: 0
ALST: 0 ASG: ATHM: 1 BACC: 0.2
BDST: 0 BKPT: 00 BVEL: 0.1 CARD: 0
CDIR: 0 CNEN: Enable DCOF: 0 DESC: motor 1
DHLM: 1000 DIFF: 0 DINP:CONSTANT DIR: Pos
DISA: 0 DISP: 0 DISS: NO_ALARM DISV: 1
DLLM: 0 DLY: 0 DMOV: 1 DOL:CONSTANT
DRBV: -0.00434 DTYP: PIE816 DVAL: -0.00434 EGU: um
ERES: 1.0e-06 EVNT: FLNK:CONSTANT 0 FOF: 0
FOFF: Variable FRAC: 1 HHSV: NO_ALARM HIGH: 0
HIHI: 0 HLM: 1000 HLS: 0 HLSV: NO_ALARM
HOMF: 0 HOMR: 0 HOPR: 0 HSV: NO_ALARM
HVEL: 0.1 ICOF: 0 IGSET: 0 INIT:
JAR: 4 JOGF: 0 JOGR: 0 JVEL: 2
LCNT: 0 LDVL: -0.00434 LLM: 0 LLS: 0
LLSV: NO_ALARM LOCK: NO LOLO: 0 LOPR: 0
LOW: 0 LRLV: 0 LRVL: -4340 LSPG: Go
LSV: NO_ALARM LVAL: -0.00434 LVIO: 1 MDEL: 0
MIP: 0 MISS: 0 MLST: 0 MMAP: 0
MOVN: 0 MRES: 1.0e-06 MSTA: 2347 NAME: PIE665:Piezo1
NMAP: 0 NSEV: NO_ALARM NSTA: NO_ALARM NTM: NO
NTMF: 2 OFF: 0 OMSL: supervisory OUT:VME_IO #C0 S0 @
PACT: 0 PCOF: 0 PHAS: 0 PINI: NO
POST: PP: 0 PREC: 5 PREM:
PRIO: LOW PROC: 0 PUTF: 0 RBV: -0.00434
RCNT: 0 RDBD: 1.0e-06 RDBL:CONSTANT RDIF: 0
REP: -4340 RHLS: 0 RINP:CONSTANT RLLS: 0
RLNK:CONSTANT RLV: 0 RMOD: Default RMP: -4340
RPRO: 0 RRBV: -4340 RRES: 0 RTRY: 10
RVAL: -4340 RVEL: 0 S: 10000 SBAK: 500
SBAS: 500 SCAN: Passive SDIS:CONSTANT SET: Use
SEVR: NO_ALARM SMAX: 0 SPMG: Go SREV: 200
SSET: 0 STAT: NO_ALARM STOO:CONSTANT STOP: 0
STUP: BUSY SUSE: 0 SYNC: 0 TDIR: 1
TIME: 2019-09-18 11:11:49.238256323 TPRO: 0 TSE: 0
TSEL:CONSTANT TWF: 0 TWR: 0 TWV: 1
UDF: 0 UDFS: INVALID UEIP: No UREV: 2.0e-04
URIP: No VAL: -0.00434 VBAS: 0.1 VELO: 2
VERS: 6.1 VMAX: 0 VOF: 0
epics>
With this settings i can move the motor but for example you see that the ATHM field is 1, so at home. And the MSTA bits tell me that the home-limit-switch is hit and that the motor is not homed. How is a movement in both directions possible if the Status
is "at home"?
Is there a way to home the motor properly via EPICS? I tried to set the HOMF / HOMR fields but nothing happens, they go back to 0 and the motor isn't moving.
My substitution file looks like this:
file "$(MOTOR)/db/basic_motor.db"
{
pattern
{P, N, M, DTYP, C, S, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, RDBD, PREC, DHLM, DLLM, INIT}
{PIE665:, 1, "Piezo$(N)", "PIE816", 0, 0, "motor $(N)", um, 0, 2., 0.1, .5, 0, 0.1, .2, 1e-6, 0.001, 5, 1000, 0, ""}
}
Maybe i took the wrong one, can someone help?
Thanks in advance!
Best Regards
Michael