-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Description
I have a 4 element detector XMAP system running on Windows 10, with the following software
- EPICS base 7.0.4.1
- seq 2.3.6
- asyn 4.39
- mca 7.8
- dxp 6.0
The PresetMode = "No preset" and the following Python script starts and stops the acquisition. It happens reproducibly mca1.ACQG stays "Acquiring" after running the script for ~50 minutes. All mca2...4 are "Done".
And command asynReport 2 DXP1 shows that parameter NDDxpAcquiring and MCA_ACQURING are 0 for all addresses.
Parameter 75 type=asynInt32, name=NDDxpAcquiring, value=0, status=0
Parameter 338 type=asynInt32, name=MCA_ACQUIRING, value=0, status=0
To me it seems that mca1 failed to read the final status and stuck. It can be recovered by processing $(P)StatusAllOnce manually.
The testing script is as following.
import logging
import time
from epicsPV import epicsPV
prefix = 'X07MB-XMAP:'
eraseStart = epicsPV(prefix + 'EraseStart')
stopAll = epicsPV(prefix + 'StopAll')
mcaTime = epicsPV(prefix + 'mca2.STIM')
mcaTime.setMonitor()
mca1Acquire = epicsPV(prefix + 'mca1.ACQG')
mca1Acquire.setMonitor()
mca2Acquire = epicsPV(prefix + 'mca2.ACQG')
mca2Acquire.setMonitor()
mca3Acquire = epicsPV(prefix + 'mca3.ACQG')
mca3Acquire.setMonitor()
mca4Acquire = epicsPV(prefix + 'mca4.ACQG')
mca4Acquire.setMonitor()
logging.basicConfig(format='%(asctime)s %(message)s', level=logging.INFO)
while True:
eraseStart.putw(1)
time.sleep(2)
logging.info('StopAll')
stopAll.putWait(1)
while mca1Acquire.getValue() or mca2Acquire.getValue() or mca3Acquire.getValue() or mca4Acquire.getValue():
time.sleep(0.075)
timestamp = mcaTime.getValue()
logging.info(timestamp)
Metadata
Metadata
Assignees
Labels
No labels