diff --git a/iocBoot/iocLinux/asynRecord.substitutions b/iocBoot/iocLinux/asynRecord.substitutions new file mode 100644 index 0000000000000000000000000000000000000000..26fb52c4e6c0f5dc6d475b4264d71368d3175588 --- /dev/null +++ b/iocBoot/iocLinux/asynRecord.substitutions @@ -0,0 +1,9 @@ +file "$(ASYN)/db/asynRecord.db" +{ +pattern +{P R PORT ADDR OMAX IMAX} +{xxx: asyn_1 serial1 0 256 256} +{xxx: asyn_2 serial2 0 256 256} +{xxx: asyn_3 serial3 0 256 256} +{xxx: asyn_4 serial4 0 256 256} +} diff --git a/iocBoot/iocLinux/canberra_1.cmd b/iocBoot/iocLinux/canberra_1.cmd new file mode 100644 index 0000000000000000000000000000000000000000..131cd6e8ad91a05bfd269b855822a2284d0d4495 --- /dev/null +++ b/iocBoot/iocLinux/canberra_1.cmd @@ -0,0 +1,50 @@ + +# BEGIN canberra_1.cmd -------------------------------------------------------- + +# Commands to load a single Canberra detector with ICB electronics +#mcaRecordDebug=1 +#aimDebug=1 +#icbDebug=1 + +# AIMConfig(portName, ethernet_address, portNumber, maxChans, +# maxSignals, maxSequences, ethernetDevice) +# portName, # asyn port name to be created +# ethernet_address, # Low order 16 bits of Ethernet hardware address +# portNumber, # ADC port on AIM (1 or 2) +# maxChans, # Maximum channels for this input +# maxSignals, # Maximum signals for this input (>1 for MCS or multiplexor) +# maxSequences, # Maximum sequences for time resolved applications +# ethernetDevice) # Ethernet device name on IOC +# # Typically ei0 for Motorola 68K, dc0 for ppc, eth0 for Linux +AIMConfig("AIM1/1", 0x59e, 1, 2048, 1, 1, "eth0") +AIMConfig("AIM1/2", 0x59e, 2, 2048, 8, 1, "eth0") +AIMConfig("DSA2000", 0x8058, 1, 2048, 1, 1, "eth0") +dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=aim_adc1,DTYP=asynMCA,INP=@asyn(AIM1/1 0),NCHAN=2048") +dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=aim_adc2,DTYP=asynMCA,INP=@asyn(AIM1/2 0),NCHAN=2048") +dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=aim_adc3,DTYP=asynMCA,INP=@asyn(AIM1/2 2),NCHAN=2048") +dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=aim_adc4,DTYP=asynMCA,INP=@asyn(AIM1/2 4),NCHAN=2048") +dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=aim_adc5,DTYP=asynMCA,INP=@asyn(AIM1/2 6),NCHAN=2048") +dbLoadRecords("$(MCA)/mcaApp/Db/mca.db", "P=xxx:,M=aim_adc6,DTYP=asynMCA,INP=@asyn(DSA2000 0),NCHAN=2048") + +# icbConfig(portName, ethernetAddress, icbAddress, moduleType) +# portName to give to this asyn port +# ethernetAddress - Ethernet address of module, low order 16 bits +# icbAddress - rotary switch setting inside ICB module +# moduleType +# 0 = ADC +# 1 = Amplifier +# 2 = HVPS +# 3 = TCA +# 4 = DSP +icbConfig("icbAdc1", 0x59e, 5, 0) +dbLoadRecords("$(MCA)/mcaApp/Db/icb_adc.db", "P=xxx:,ADC=adc1,PORT=icbAdc1") +icbConfig("icbAmp1", 0x59e, 3, 1) +dbLoadRecords("$(MCA)/mcaApp/Db/icb_amp.db", "P=xxx:,AMP=amp1,PORT=icbAmp1") +icbConfig("icbHvps1", 0x59e, 2, 2) +dbLoadRecords("$(MCA)/mcaApp/Db/icb_hvps.db", "P=xxx:,HVPS=hvps1,PORT=icbHvps1,LIMIT=1000") +icbConfig("icbTca1", 0x59e, 8, 3) +dbLoadRecords("$(MCA)/mcaApp/Db/icb_tca.db", "P=xxx:,TCA=tca1,MCA=aim_adc2,PORT=icbTca1") +#icbConfig("icbDsp1", 0x8058, 0, 4) +#dbLoadRecords("$(MCA)/mcaApp/Db/icbDsp.db", "P=xxx:,DSP=dsp1,PORT=icbDsp1") + +# END canberra_1.cmd ---------------------------------------------------------- diff --git a/iocBoot/iocLinux/motor.substitutions b/iocBoot/iocLinux/motor.substitutions new file mode 100644 index 0000000000000000000000000000000000000000..c8d5a44bfab5f25c657f08887d1daae4ad77571a --- /dev/null +++ b/iocBoot/iocLinux/motor.substitutions @@ -0,0 +1,12 @@ +file "$(MOTOR)/db/motor.db" +{ +pattern +{P, N, M, DTYP, C, S, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, PREC, DHLM, DLLM, INIT} +{xxx:, 1, m$(N), "MM4000", 0, 0, "motor $(N)", degrees, Pos, 10, 0., 1., 0, 1, .2, 1e-3, 3, 100, -100, ""} +{xxx:, 2, m$(N), "MM4000", 0, 1, "motor $(N)", degrees, Pos, 60, 0., 1.5, 0, 1, .2, 1e-3, 3, 100, -100, ""} +{xxx:, 3, m$(N), "MM4000", 0, 2, "motor $(N)", degrees, Pos, 60, 0., 1., 0, 1, .2, 1e-3, 3, 100, -100, ""} +{xxx:, 4, m$(N), "ACS MCB-4B", 0, 0, "motor $(N)", steps, Pos, 1000., 1, .2, 0, 1, .2, 1, 1, 1e6, -1e6, ""} +{xxx:, 5, m$(N), "ACS MCB-4B", 0, 1, "motor $(N)", degrees, Pos, 1000., 1, .2, 0, 1, .2, 1, 1, 100, -100, ""} +{xxx:, 6, m$(N), "ACS MCB-4B", 0, 2, "motor $(N)", degrees, Pos, 1000., 1, .2, 0, 1, .2, 1, 1, 100, -100, ""} +{xxx:, 7, m$(N), "ACS MCB-4B", 0, 3, "motor $(N)", degrees, Pos, 1000., 1, .2, 0, 1, .2, 1, 1, 100, -100, ""} +} diff --git a/iocBoot/iocLinux/pid_slow.substitutions b/iocBoot/iocLinux/pid_slow.substitutions new file mode 100755 index 0000000000000000000000000000000000000000..08b309fe1a980c996e034da917d463f970245f8c --- /dev/null +++ b/iocBoot/iocLinux/pid_slow.substitutions @@ -0,0 +1,9 @@ +# This file demonstrates slow feedback. The initial INP and OUT assume the first channel +# of an IP330 ADC connected to the first channel of a DAC128V DAC. +file "$(STD)/stdApp/Db/pid_control.db" +{ +pattern +{P, PID, INP, OUT, LOPR, HOPR, DRVL, DRVH, PREC, KP, KI, KD, SCAN} +{xxx:, pid_slow, xxx:IP330_1, xxx:DAC3_1, 0, 100, 0, 5, 3, 0.2, 3., 0., ".1 second"} +} + diff --git a/iocBoot/iocLinux/pseudoMotor.substitutions b/iocBoot/iocLinux/pseudoMotor.substitutions new file mode 100644 index 0000000000000000000000000000000000000000..b44c36c17140152dd1058bacdf6c8075fceaf652 --- /dev/null +++ b/iocBoot/iocLinux/pseudoMotor.substitutions @@ -0,0 +1,25 @@ +# Pseudo-motors +# Note: This databases will be in the next release of motor, not in xxxApp + +# This is a simple example using the sumDiff2D database. This takes 2 real motors and makes 2 soft motors, +# SUM which moves both motors together, and DIFF which moves them in opposite directions. +# It can be used for slits, for K/B mirror benders, etc. + +file "$(TOP)/xxxApp/Db/pseudoMotor.db" +{ +pattern +{P, M, DINP, OUT, RDBL, STOO, DESC, EGU, DIR, VELO, VBAS, ACCL, BDST, BVEL, BACC, MRES, RRES, PREC, DHLM, DLLM} +{xxx:, pm1, "xxx:KBV:Done NPP NMS", "xxx:pm1DVAL.VAL PP MS", "xxx:KBV:Readback.G NPP NMS", "xxx:KBV:Stop PP MS", "Vert. curvature", mm, Pos, 1, .1, .1, 0, 1, .1, .1, 1.0, 3, 10000, -10000} +{xxx:, pm2, "xxx:KBV:Done NPP NMS", "xxx:pm2DVAL.VAL PP MS", "xxx:KBV:Readback.H NPP NMS", "xxx:KBV:Stop PP MS", "Vert. Ellipticity", mm, Pos, 1, .1, .1, 0, 1, .1, .1, 1.0, 3, 10000, -10000} +{xxx:, pm3, "xxx:KBH:Done NPP NMS", "xxx:pm3DVAL.VAL PP MS", "xxx:KBH:Readback.G NPP NMS", "xxx:KBH:Stop PP MS", "Hor. curvature", mm, Pos, 1, .1, .1, 0, 1, .1, .1, 1.0, 3, 10000, -10000} +{xxx:, pm4, "xxx:KBH:Done NPP NMS", "xxx:pm4DVAL.VAL PP MS", "xxx:KBH:Readback.H NPP NMS", "xxx:KBH:Stop PP MS", "Hor. ellipticity", mm, Pos, 1, .1, .1, 0, 1, .1, .1, 1.0, 3, 10000, -10000} +} + +file "$(TOP)/xxxApp/Db/sumDiff2D.db" +{ +pattern +{P, T, SUM, DIFF, M1DRV, M1RBV, M2DRV, M2RBV, M1STOP, M1DONE, M2STOP, M2DONE, PREC} +{xxx:, KBV:, pm1, pm2, m1.VAL, m1.RBV, m2.VAL, m2.RBV, m1.STOP, m1.DMOV, m2.STOP, m2.DMOV, 1} +{xxx:, KBH:, pm3, pm4, m3.VAL, m3.RBV, m4.VAL, m4.RBV, m3.STOP, m3.DMOV, m4.STOP, m4.DMOV, 1} +} + diff --git a/iocBoot/iocLinux/serial.cmd b/iocBoot/iocLinux/serial.cmd new file mode 100644 index 0000000000000000000000000000000000000000..0166de5fae2a2e646d3a74f33d8cae80142e33a3 --- /dev/null +++ b/iocBoot/iocLinux/serial.cmd @@ -0,0 +1,147 @@ + +# BEGIN serial.cmd ------------------------------------------------------------ + +# Set up 2 local serial ports + +# serial 1 connected to Keithley2K DMM at 19200 baud +#drvAsynSerialPortConfigure("portName","ttyName",priority,noAutoConnect, +# noProcessEos) +drvAsynSerialPortConfigure("serial1", "/dev/ttyS0", 0, 0, 0) +asynSetOption(serial1,0,baud,19200) +#asynOctetSetInputEos(const char *portName, int addr, +# const char *eosin,const char *drvInfo) +asynOctetSetInputEos("serial1",0,"\r\n") +# asynOctetSetOutputEos(const char *portName, int addr, +# const char *eosin,const char *drvInfo) +asynOctetSetOutputEos("serial1",0,"\r") +# Make port available from the iocsh command line +#asynOctetConnect(const char *entry, const char *port, int addr, +# int timeout, int buffer_len, const char *drvInfo) +asynOctetConnect("serial1", "serial1") + +# serial 2 connected to Newport MM4000 at 38400 baud +drvAsynSerialPortConfigure("serial2", "/dev/ttyS1", 0, 0, 0) +asynSetOption(serial2,0,baud,38400) +asynOctetConnect("serial2", "serial2") +asynOctetSetInputEos("serial2",0,"\r") +asynOctetSetOutputEos("serial2",0,"\r") + +# Set up ports 1 and 2 on Moxa box + +# serial 3 is connected to the ACS MCB-4B at 9600 baud +#drvAsynIPPortConfigure("portName","hostInfo",priority,noAutoConnect, +# noProcessEos) +drvAsynIPPortConfigure("serial3", "164.54.160.50:4001", 0, 0, 0) +asynOctetConnect("serial3", "serial3") +asynOctetSetInputEos("serial3",0,"\r") +asynOctetSetOutputEos("serial3",0,"\r") + +# serial 4 not connected for now +drvAsynIPPortConfigure("serial4", "164.54.160.50:4002", 0, 0, 0) +asynOctetConnect("serial4", "serial4") +asynOctetSetInputEos("serial4",0,"\r") +asynOctetSetOutputEos("serial4",0,"\r") + +# Newport MM4000 driver setup parameters: +# (1) maximum # of controllers, +# (2) motor task polling rate (min=1Hz, max=60Hz) +MM4000Setup(1, 10) + +# Newport MM4000 driver configuration parameters: +# (1) controller +# (2) asyn port name (e.g. serial1 or gpib1) +# (3) GPIB address (0 for serial) +MM4000Config(0, "serial2", 0) + +# Newport PM500 driver setup parameters: +# (1) maximum number of controllers in system +# (2) motor task polling rate (min=1Hz,max=60Hz) +#PM500Setup(1, 10) + +# Newport PM500 configuration parameters: +# (1) controller +# (2) asyn port name (e.g. serial1 or gpib1) +#PM500Config(0, "serial3") + +# McClennan PM304 driver setup parameters: +# (1) maximum number of controllers in system +# (2) motor task polling rate (min=1Hz, max=60Hz) +#PM304Setup(1, 10) + +# McClennan PM304 driver configuration parameters: +# (1) controller being configured +# (2) MPF serial server name (string) +# (3) Number of axes on this controller +#PM304Config(0, "serial4", 1) + +# ACS MCB-4B driver setup parameters: +# (1) maximum number of controllers in system +# (2) motor task polling rate (min=1Hz, max=60Hz) +MCB4BSetup(1, 10) + +# ACS MCB-4B driver configuration parameters: +# (1) controller being configured +# (2) asyn port name (string) +MCB4BConfig(0, "serial3") + +##### Pico Motors (Ernest Williams MHATT-CAT) +##### Motors (see picMot.substitutions in same directory as this file) #### +#dbLoadTemplate("picMot.substitutions") + +# Load asynRecord records on all ports +dbLoadTemplate("asynRecord.substitutions") + +# send impromptu message to serial device, parse reply +# (was serial_OI_block) +dbLoadRecords("$(IP)/ipApp/Db/deviceCmdReply.db","P=xxx:,N=1,PORT=serial1,ADDR=0,OMAX=100,IMAX=100") +dbLoadRecords("$(IP)/ipApp/Db/deviceCmdReply.db","P=xxx:,N=2,PORT=serial2,ADDR=0,OMAX=100,IMAX=100") +dbLoadRecords("$(IP)/ipApp/Db/deviceCmdReply.db","P=xxx:,N=3,PORT=serial3,ADDR=0,OMAX=100,IMAX=100") + +# Stanford Research Systems SR570 Current Preamplifier +#dbLoadRecords("$(IP)/ipApp/Db/SR570.db", "P=xxx:,A=A1,PORT=serial1") + +# Lakeshore DRC-93CA Temperature Controller +#dbLoadRecords("$(IP)/ipApp/Db/LakeShoreDRC-93CA.db", "P=xxx:,Q=TC1,PORT=serial4") + +# Huber DMC9200 DC Motor Controller +#dbLoadRecords("$(IP)/ipApp/Db/HuberDMC9200.db", "P=xxx:,Q=DMC1:,PORT=serial5") + +# Oriel 18011 Encoder Mike +#dbLoadRecords("$(IP)/ipApp/Db/eMike.db", "P=xxx:,M=em1,PORT=serial3") + +# Keithley 2000 DMM +dbLoadRecords("$(IP)/ipApp/Db/Keithley2kDMM_mf.db","P=xxx:,Dmm=D1,PORT=serial1") + +# Oxford Cyberstar X1000 Scintillation detector and pulse processing unit +#dbLoadRecords("$(IP)/ipApp/Db/Oxford_X1k.db","P=xxx:,S=s1,PORT=serial4") + +# Oxford ILM202 Cryogen Level Meter (Serial) +#dbLoadRecords("$(IP)/ipApp/Db/Oxford_ILM202.db","P=xxx:,S=s1,PORT=serial5") + +# Elcomat autocollimator +#dbLoadRecords("$(IP)/ipApp/Db/Elcomat.db", "P=xxx:,PORT=serial8") + +# Eurotherm temp controller +#dbLoadRecords("$(IP)/ipApp/Db/Eurotherm.db","P=xxx:,PORT=serial7") + +# MKS vacuum gauges +#dbLoadRecords("$(IP)/ipApp/Db/MKS.db","P=xxx:,PORT=serial2,CC1=cc1,CC2=cc3,PR1=pr1,PR2=pr3") + +# PI Digitel 500/1500 pump +#dbLoadRecords("$(IP)/ipApp/Db/Digitel.db","xxx:,PUMP=ip1,PORT=serial3") + +# PI MPC ion pump +#dbLoadRecords("$(IP)/ipApp/Db/MPC.db","P=xxx:,PUMP=ip2,PORT=serial4,PA=0,PN=1") + +# PI MPC TSP (titanium sublimation pump) +#dbLoadRecords("$(IP)/ipApp/Db/TSP.db","P=xxx:,TSP=tsp1,PORT=serial4,PA=0") + +# Heidenhain ND261 encoder (for PSL monochromator) +#dbLoadRecords("$(IP)/ipApp/Db/heidND261.db", "P=xxx:,PORT=serial1") + +# Love Controllers +#devLoveDebug=1 +#loveServerDebug=1 +#dbLoadRecords("$(IP)/ipApp/Db/love.db", "P=xxx:,Q=Love_0,C=0,PORT=PORT2,ADDR=1") + +# END serial.cmd -------------------------------------------------------------- diff --git a/iocBoot/iocLinux/softMotor.substitutions b/iocBoot/iocLinux/softMotor.substitutions new file mode 100644 index 0000000000000000000000000000000000000000..988001da4f3a26428b16081b6c1bca356a034f0a --- /dev/null +++ b/iocBoot/iocLinux/softMotor.substitutions @@ -0,0 +1,15 @@ +file "$(STD)/stdApp/Db/softMotor.db" +{ +pattern +{P, SM} +{xxx:, SM1} +{xxx:, SM2} +{xxx:, SM3} +{xxx:, SM4} +{xxx:, SM5} +{xxx:, SM6} +{xxx:, SM7} +{xxx:, SM8} +{xxx:, SM9} +{xxx:, SM10} +}