SFELPHOTON-1044: softioc migration RH7->RH8 and update to EPICS 7.0.7

This commit is contained in:
2024-04-02 09:05:36 +02:00
parent b5805f7387
commit 992826346a
3 changed files with 69 additions and 27 deletions

View File

@@ -26,7 +26,7 @@ class Generate:
'SAR-CPPM-EXPMX2' : ('SAR-CPPM-EXPMX2' , 50001 , '7.0.7' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , ) , 'SAR-CPPM-EXPMX2' : ('SAR-CPPM-EXPMX2' , 50001 , '7.0.7' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , ) ,
'SAR-CPPM-EXPMX3' : ('SAR-CPPM-EXPMX3' , 50001 , '7.0.7' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , ) , 'SAR-CPPM-EXPMX3' : ('SAR-CPPM-EXPMX3' , 50001 , '7.0.7' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , ) ,
'SAR-CPPM-EXPMX4' : ('SAR-CPPM-EXPMX4' , 50001 , '7.0.7' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , ) , 'SAR-CPPM-EXPMX4' : ('SAR-CPPM-EXPMX4' , 50001 , '7.0.7' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , 'eldk42-ppc4xxFP' , ) ,
'SARES30-CPCL-MCSSMX' : ('saresc-softioc-11' , 50001 , '7.0.7' , 'x86_64' , 'RHEL7' , 'rhel' , ) , 'SARES30-CPCL-MCSSMX' : ('saresc-vserv-01' , 50001 , '7.0.7' , 'x86_64' , 'RHEL8' , 'rhel' , ) ,
} }
iocSmarAct={ iocSmarAct={
@@ -157,7 +157,7 @@ os_id: {osys_id}
# This is the IOC {ioc} on {ioc_host}:{ioc_port} # This is the IOC {ioc} on {ioc_host}:{ioc_port}
################################################################## ##################################################################
epicsEnvSet("ENGINEER", "T. Zamofing (zamofing_t)") epicsEnvSet("ENGINEER", "zamofing_t")
epicsEnvSet("LOCATION", "{loc}") epicsEnvSet("LOCATION", "{loc}")
###### require modules ############ ###### require modules ############

View File

@@ -80,6 +80,35 @@
<enum>caInclude::NoFrame</enum> <enum>caInclude::NoFrame</enum>
</property> </property>
</widget> </widget>
<widget class="caShellCommand" name="cashellcommand">
<property name="geometry">
<rect>
<x>480</x>
<y>10</y>
<width>109</width>
<height>24</height>
</rect>
</property>
<property name="label">
<string notr="true">-Homing</string>
</property>
<property name="background">
<color>
<red>128</red>
<green>136</green>
<blue>255</blue>
</color>
</property>
<property name="labels">
<string>Homing</string>
</property>
<property name="files">
<string>python /ioc/modules/qt/ESB_MX_SmarAct_home.py</string>
</property>
<property name="args">
<string>$(P):$(M)</string>
</property>
</widget>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget> <customwidget>
@@ -92,6 +121,11 @@
<extends>QWidget</extends> <extends>QWidget</extends>
<header>caInclude</header> <header>caInclude</header>
</customwidget> </customwidget>
<customwidget>
<class>caShellCommand</class>
<extends>QWidget</extends>
<header>caShellCommand</header>
</customwidget>
</customwidgets> </customwidgets>
<resources/> <resources/>
<connections/> <connections/>

View File

@@ -26,7 +26,7 @@ Long Doc'''
import logging, sys, os, json import logging, sys, os, json
import CaChannel,time import CaChannel,time
class EsbMxSmaract: class SwissMxSmarAct:
def __init__(self, args): def __init__(self, args):
self.args=args self.args=args
@@ -37,10 +37,9 @@ class EsbMxSmaract:
for i in range(1,16): for i in range(1,16):
#SARES30-ESBMX1:FRM_FORW.PROC #SARES30-ESBMX1:FRM_FORW.PROC
#SARES30-ESBMX1:DRIVE #SARES30-ESBMX1:DRIVE
s1=prefix+'%i'%i s1=prefix+'%i'%i
for j in ('DRIVE','MOTRBV','FRM_FORW.PROC','FRM_BACK.PROC','GET_HOMED','STATUS'): for j in ('.VAL','.RBV','.HOMF','.HOMR','.MSTA','_AUTOZERO'):
s2=s1+':'+j s2=s1+j
print(s2) print(s2)
pv = CaChannel.CaChannel(s2) pv = CaChannel.CaChannel(s2)
pv.setTimeout(10.0) pv.setTimeout(10.0)
@@ -53,27 +52,35 @@ class EsbMxSmaract:
def home(self,idx,fwd): def home(self,idx,fwd):
print('home motor %i fwd:%d...'%(idx,fwd)) print('home motor %i fwd:%d...'%(idx,fwd))
pv=self.pv[self.prefix+'%i'%idx+'_AUTOZERO']
pv.putw(1) #set autozero on
if fwd: if fwd:
pv=self.pv[self.prefix+'%i'%idx+':'+'FRM_FORW.PROC'] pv=self.pv[self.prefix+'%i'%idx+'.HOMF']
else: else:
pv=self.pv[self.prefix+'%i'%idx+':'+'FRM_BACK.PROC'] pv=self.pv[self.prefix+'%i'%idx+'.HOMR']
#print('aaa')
pv.putw(1) #set position and move pv.putw(1) #set position and move
#print('bbb')
CaChannel.ca.pend_event(0.1) CaChannel.ca.pend_event(0.1)
#print('ccc')
def waitHomed(self,idx): def waitHomed(self,idx):
pv=self.pv[self.prefix+'%i'%idx+':'+'GET_HOMED'] #print('ddd')
pv=self.pv[self.prefix+'%i'%idx+'.MSTA']
#print('eee',pv,self.prefix+'%i'%idx+'.MSTA')
while pv.getw()==0: while pv.getw()==0:
print('wait motor %i homing done ...'%idx) print('wait motor %i homing done ...'%idx)
CaChannel.ca.pend_event(0.2) CaChannel.ca.pend_event(0.2)
#print('fff')
def moveAbs(self,idx,val): def moveAbs(self,idx,val):
pv=self.pv[self.prefix+'%i'%idx+':'+'DRIVE'] pv=self.pv[self.prefix+'%i'%idx+'.VAL']
pv.putw(val) #set position and move pv.putw(val) #set position and move
def check_pos(self, idx, val, tolerance=0.1): def check_pos(self, idx, val, tolerance=0.1):
pvrbv = self.pv[self.prefix+'%i'%idx+':'+'MOTRBV'] pvrbv = self.pv[self.prefix+'%i'%idx+'.RBV']
pvst = self.pv[self.prefix+'%i'%idx+':'+'STATUS'] pvst = self.pv[self.prefix+'%i'%idx+'.MSTA']
CaChannel.ca.pend_event(0.2) CaChannel.ca.pend_event(0.2)
while pvst.getw(): while pvst.getw():
@@ -89,23 +96,24 @@ class EsbMxSmaract:
# raise Exception("Cryojet is too close, move it to 5.0 mm") # raise Exception("Cryojet is too close, move it to 5.0 mm")
# home Colli Y first and move it to the TOP # home Colli Y first and move it to the TOP
self.home(2, True) ###self.home(2, True)
CaChannel.ca.pend_event(0.5) ###CaChannel.ca.pend_event(0.5)
self.waitHomed(2) ###self.waitHomed(2)
CaChannel.ca.pend_event(0.5) ###CaChannel.ca.pend_event(0.5)
self.moveAbs(2, 10.0) ###self.moveAbs(2, 10.0)
self.check_pos(2, 10.0) ###self.check_pos(2, 10.0)
for idx,fwd in ((1,True),(4,True),(5,True),(6,True),(7,True),(8,True),(10,True),(11,True),(12,True),(13,True),(14,True),(15,True),): ###for idx,fwd in ((1,True),(4,True),(5,True),(6,True),(7,True),(8,True),(10,True),(11,True),(12,True),(13,True),(14,True),(15,True),):
for idx,fwd in ((1,True),(2,True),(3,True),(4,True),(5,True),(6,True),(7,True),(8,True),(9,True),(10,True),(11,True),(12,True),(13,True),(14,True),(15,True),):
self.home(idx,fwd) self.home(idx,fwd)
CaChannel.ca.pend_event(0.5) CaChannel.ca.pend_event(0.5)
#wait homing done ####wait homing done
for idx in (1,4,5,6,7,8,10,11,12,13,14,15,): ###for idx in (1,4,5,6,7,8,10,11,12,13,14,15,):
self.waitHomed(idx) ### self.waitHomed(idx)
#move to desired position ####move to desired position
for idx,val in ((1,-10),(4,.4),(5,.5),(6,.6),(7,.7),(8,.8),(10,1.0),(11,1.1),(12,1.2),(13,1.3),(14,1.4),(15,1.5),): ###for idx,val in ((1,-10),(4,.4),(5,.5),(6,.6),(7,.7),(8,.8),(10,1.0),(11,1.1),(12,1.2),(13,1.3),(14,1.4),(15,1.5),):
self.moveAbs(idx,val) ### self.moveAbs(idx,val)
print('Homing done') print('Homing done')
if __name__=='__main__': if __name__=='__main__':
@@ -138,8 +146,8 @@ Examples:'''+''.join(map(lambda s:cmd+s, exampleCmd))+'\n '
(args, other)=parser.parse_args() (args, other)=parser.parse_args()
print(args,other) print(args,other)
args.var=other args.var=other
esbMxSmaract=EsbMxSmaract(args) smrct=SwissMxSmarAct(args)
esbMxSmaract.homing() smrct.homing()
#os.environ['EPICS_CA_ADDR_LIST']='localhost' #os.environ['EPICS_CA_ADDR_LIST']='localhost'
parse_args() parse_args()