Added IOC files for running with 8 MD90 controllers.

This commit is contained in:
2024-06-25 12:26:24 -05:00
parent 45c8ff064e
commit d0532c2552
2 changed files with 211 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
file "$(MOTOR)/db/basic_asyn_motor.db"
{
pattern
{P, N, M, DTYP, PORT, ADDR, DESC, EGU, DIR, VELO, VBAS, VMAX, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT}
{DSM:, 0, "m$(N)", "asynMotor", MD900, 0, "MD-90", mm, Pos, 0.5, 0.025, 0.625, 0, 0, 0.03, 0, .00001, 2, 20, -20, ""}
{DSM:, 1, "m$(N)", "asynMotor", MD901, 0, "MD-90", mm, Pos, 0.5, 0.025, 0.625, 0, 0, 0.03, 0, .00001, 2, 20, -20, ""}
{DSM:, 2, "m$(N)", "asynMotor", MD902, 0, "MD-90", mm, Pos, 0.5, 0.025, 0.625, 0, 0, 0.03, 0, .00001, 2, 20, -20, ""}
{DSM:, 3, "m$(N)", "asynMotor", MD903, 0, "MD-90", mm, Pos, 0.5, 0.025, 0.625, 0, 0, 0.03, 0, .00001, 2, 20, -20, ""}
{DSM:, 4, "m$(N)", "asynMotor", MD904, 0, "MD-90", mm, Pos, 0.5, 0.025, 0.625, 0, 0, 0.03, 0, .00001, 2, 20, -20, ""}
{DSM:, 5, "m$(N)", "asynMotor", MD905, 0, "MD-90", mm, Pos, 0.5, 0.025, 0.625, 0, 0, 0.03, 0, .00001, 2, 20, -20, ""}
{DSM:, 6, "m$(N)", "asynMotor", MD906, 0, "MD-90", mm, Pos, 0.5, 0.025, 0.625, 0, 0, 0.03, 0, .00001, 2, 20, -20, ""}
{DSM:, 7, "m$(N)", "asynMotor", MD907, 0, "MD-90", mm, Pos, 0.5, 0.025, 0.625, 0, 0, 0.03, 0, .00001, 2, 20, -20, ""}
}
# P IOC prefix
# N Port number
# M Record name pattern
# DTYP Datatype
# PORT Port
# ADDR Address
# DESC Description
# EGU Engineering units
# DIR Direction
# VELO Velocity (EGU / s) (note: jog velocity set separately by JVEL)
# VBAS Minimum velocity (EGU / s)
# VMAX Maximum velocity (EGU / s) (note: not getting set here with basic_asyn_motor.db)
# ACCL Acceleration (time in seconds until VELO)
# BDST Backlash distance
# MRES Motor step size (EGU)
# PREC Display precision number of decimal places
# DHLM Dial high travel limit (EGU)
# DLLM Dial low travel limit (EGU)
# INIT Initialization string (seems to be unused/broken)

View File

@@ -0,0 +1,178 @@
#errlogInit(5000)
< envPaths
# Tell EPICS all about the record types, device-support modules, drivers, etc.
dbLoadDatabase("../../dbd/dsm.dbd")
dsm_registerRecordDeviceDriver(pdbbase)
# Unfortunately, iocsh doesn't support looping...
# Local serial port
drvAsynSerialPortConfigure("serial0", "/dev/ttyUSB0", 0, 0, 0)
drvAsynSerialPortConfigure("serial1", "/dev/ttyUSB1", 0, 0, 0)
drvAsynSerialPortConfigure("serial2", "/dev/ttyUSB2", 0, 0, 0)
drvAsynSerialPortConfigure("serial3", "/dev/ttyUSB3", 0, 0, 0)
drvAsynSerialPortConfigure("serial4", "/dev/ttyUSB4", 0, 0, 0)
drvAsynSerialPortConfigure("serial5", "/dev/ttyUSB5", 0, 0, 0)
drvAsynSerialPortConfigure("serial6", "/dev/ttyUSB6", 0, 0, 0)
drvAsynSerialPortConfigure("serial7", "/dev/ttyUSB7", 0, 0, 0)
asynSetOption("serial0", 0, "baud", "115200")
asynSetOption("serial1", 0, "baud", "115200")
asynSetOption("serial2", 0, "baud", "115200")
asynSetOption("serial3", 0, "baud", "115200")
asynSetOption("serial4", 0, "baud", "115200")
asynSetOption("serial5", 0, "baud", "115200")
asynSetOption("serial6", 0, "baud", "115200")
asynSetOption("serial7", 0, "baud", "115200")
asynSetOption("serial0", 0, "bits", "8")
asynSetOption("serial1", 0, "bits", "8")
asynSetOption("serial2", 0, "bits", "8")
asynSetOption("serial3", 0, "bits", "8")
asynSetOption("serial4", 0, "bits", "8")
asynSetOption("serial5", 0, "bits", "8")
asynSetOption("serial6", 0, "bits", "8")
asynSetOption("serial7", 0, "bits", "8")
asynSetOption("serial0", 0, "parity", "none")
asynSetOption("serial1", 0, "parity", "none")
asynSetOption("serial2", 0, "parity", "none")
asynSetOption("serial3", 0, "parity", "none")
asynSetOption("serial4", 0, "parity", "none")
asynSetOption("serial5", 0, "parity", "none")
asynSetOption("serial6", 0, "parity", "none")
asynSetOption("serial7", 0, "parity", "none")
asynSetOption("serial0", 0, "stop", "1")
asynSetOption("serial1", 0, "stop", "1")
asynSetOption("serial2", 0, "stop", "1")
asynSetOption("serial3", 0, "stop", "1")
asynSetOption("serial4", 0, "stop", "1")
asynSetOption("serial5", 0, "stop", "1")
asynSetOption("serial6", 0, "stop", "1")
asynSetOption("serial7", 0, "stop", "1")
asynOctetSetInputEos("serial0", 0, "\r")
asynOctetSetInputEos("serial1", 0, "\r")
asynOctetSetInputEos("serial2", 0, "\r")
asynOctetSetInputEos("serial3", 0, "\r")
asynOctetSetInputEos("serial4", 0, "\r")
asynOctetSetInputEos("serial5", 0, "\r")
asynOctetSetInputEos("serial6", 0, "\r")
asynOctetSetInputEos("serial7", 0, "\r")
asynOctetSetOutputEos("serial0", 0, "\r")
asynOctetSetOutputEos("serial1", 0, "\r")
asynOctetSetOutputEos("serial2", 0, "\r")
asynOctetSetOutputEos("serial3", 0, "\r")
asynOctetSetOutputEos("serial4", 0, "\r")
asynOctetSetOutputEos("serial5", 0, "\r")
asynOctetSetOutputEos("serial6", 0, "\r")
asynOctetSetOutputEos("serial7", 0, "\r")
asynSetTraceIOMask("serial0", 0, 2)
asynSetTraceIOMask("serial1", 0, 2)
asynSetTraceIOMask("serial2", 0, 2)
asynSetTraceIOMask("serial3", 0, 2)
asynSetTraceIOMask("serial4", 0, 2)
asynSetTraceIOMask("serial5", 0, 2)
asynSetTraceIOMask("serial6", 0, 2)
asynSetTraceIOMask("serial7", 0, 2)
# Turn on the power supply and set the deadband
asynOctetConnect("initConnection", "serial0", 0)
asynOctetWrite("initConnection", "EPS")
asynOctetWrite("initConnection", "SDB 10")
asynOctetDisconnect('initConnection')
# Turn on the power supply and set the deadband
asynOctetConnect("initConnection", "serial1", 0)
asynOctetWrite("initConnection", "EPS")
asynOctetWrite("initConnection", "SDB 10")
asynOctetDisconnect('initConnection')
# Turn on the power supply and set the deadband
asynOctetConnect("initConnection", "serial2", 0)
asynOctetWrite("initConnection", "EPS")
asynOctetWrite("initConnection", "SDB 10")
asynOctetDisconnect('initConnection')
# Turn on the power supply and set the deadband
asynOctetConnect("initConnection", "serial3", 0)
asynOctetWrite("initConnection", "EPS")
asynOctetWrite("initConnection", "SDB 10")
asynOctetDisconnect('initConnection')
# Turn on the power supply and set the deadband
asynOctetConnect("initConnection", "serial4", 0)
asynOctetWrite("initConnection", "EPS")
asynOctetWrite("initConnection", "SDB 10")
asynOctetDisconnect('initConnection')
# Turn on the power supply and set the deadband
asynOctetConnect("initConnection", "serial5", 0)
asynOctetWrite("initConnection", "EPS")
asynOctetWrite("initConnection", "SDB 10")
asynOctetDisconnect('initConnection')
# Turn on the power supply and set the deadband
asynOctetConnect("initConnection", "serial6", 0)
asynOctetWrite("initConnection", "EPS")
asynOctetWrite("initConnection", "SDB 10")
asynOctetDisconnect('initConnection')
# Turn on the power supply and set the deadband
asynOctetConnect("initConnection", "serial7", 0)
asynOctetWrite("initConnection", "EPS")
asynOctetWrite("initConnection", "SDB 10")
asynOctetDisconnect('initConnection')
MD90CreateController("MD900", "serial0", 1, 100, 5000)
MD90CreateController("MD901", "serial1", 1, 100, 5000)
MD90CreateController("MD902", "serial2", 1, 100, 5000)
MD90CreateController("MD903", "serial3", 1, 100, 5000)
MD90CreateController("MD904", "serial4", 1, 100, 5000)
MD90CreateController("MD905", "serial5", 1, 100, 5000)
MD90CreateController("MD906", "serial6", 1, 100, 5000)
MD90CreateController("MD907", "serial7", 1, 100, 5000)
### Motors
dbLoadTemplate "motor.substitutions.md90.multi"
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=DSM:,R=serial0,PORT=serial0,ADDR=0,OMAX=80,IMAX=80")
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=DSM:,R=serial1,PORT=serial1,ADDR=0,OMAX=80,IMAX=80")
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=DSM:,R=serial2,PORT=serial2,ADDR=0,OMAX=80,IMAX=80")
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=DSM:,R=serial3,PORT=serial3,ADDR=0,OMAX=80,IMAX=80")
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=DSM:,R=serial4,PORT=serial4,ADDR=0,OMAX=80,IMAX=80")
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=DSM:,R=serial5,PORT=serial5,ADDR=0,OMAX=80,IMAX=80")
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=DSM:,R=serial6,PORT=serial6,ADDR=0,OMAX=80,IMAX=80")
dbLoadRecords("$(ASYN)/db/asynRecord.db", "P=DSM:,R=serial7,PORT=serial7,ADDR=0,OMAX=80,IMAX=80")
iocInit
# This IOC does not use save/restore, so set values of some PVs
dbpf("DSM:m0.RTRY", "0")
dbpf("DSM:m0.TWV", "0.1")
dbpf("DSM:m0.VMAX", "0.625")
dbpf("DSM:m1.RTRY", "0")
dbpf("DSM:m1.TWV", "0.1")
dbpf("DSM:m1.VMAX", "0.625")
dbpf("DSM:m2.RTRY", "0")
dbpf("DSM:m2.TWV", "0.1")
dbpf("DSM:m2.VMAX", "0.625")
dbpf("DSM:m3.RTRY", "0")
dbpf("DSM:m3.TWV", "0.1")
dbpf("DSM:m3.VMAX", "0.625")
dbpf("DSM:m4.RTRY", "0")
dbpf("DSM:m4.TWV", "0.1")
dbpf("DSM:m4.VMAX", "0.625")
dbpf("DSM:m5.RTRY", "0")
dbpf("DSM:m5.TWV", "0.1")
dbpf("DSM:m5.VMAX", "0.625")
dbpf("DSM:m6.RTRY", "0")
dbpf("DSM:m6.TWV", "0.1")
dbpf("DSM:m6.VMAX", "0.625")
dbpf("DSM:m7.RTRY", "0")
dbpf("DSM:m7.TWV", "0.1")
dbpf("DSM:m7.VMAX", "0.625")