1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 <2024> 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 2022 2023 <2024> 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: mbbo fields don't match db definitions ??? |
From: | John Dobbins via Tech-talk <tech-talk at aps.anl.gov> |
To: | Mark Rivers <rivers at cars.uchicago.edu>, "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Thu, 27 Jun 2024 14:57:36 +0000 |
Mark,
One final question. SP1:cam1:NumImages can't be set to 1. The lowest value I can set it to appears to be 2. Do you know what thi sis about?
John
From: John Dobbins <john.dobbins at cornell.edu>
Sent: Thursday, June 27, 2024 10:28 AM To: Mark Rivers <rivers at cars.uchicago.edu>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: Re: mbbo fields don't match db definitions ???
Mark,
Thanks for your patience. By using the Phoebus displays, where I see the changes in enums immediately, it is clearer what is happening.
Switching between software and external trigger modes works fine until one changes ExposureMode to TriggerWidth
Then TriggerMode -> N.A. and the TriggerSource choices 'Software' and 'Line1' disappear,
However, changing ExposureMode back to Timed, the TriggerMode and TriggerSources reappear.
Working with the MEDM screens obscured this.
Additional quirks:
TriggerSource = Software and TriggerMode = On produces no triggers.
With extermal trigger selected (i.e. TriggerSource = Line0) the AcquireTime and AcquirePeriod should be set to numbers smaller than those corresponding to the external trigger parameters. Otherwise the AcquireTime or AcquirePeriod settings will override the
external trigger characteristics.
John
From: Mark Rivers <rivers at cars.uchicago.edu>
Sent: Wednesday, June 26, 2024 3:09 PM To: John Dobbins <john.dobbins at cornell.edu>; tech-talk at aps.anl.gov <tech-talk at aps.anl.gov> Subject: RE: mbbo fields don't match db definitions ??? John,
Your output on the right lists TriggerMode as “Not available”. I believe that is because the camera is currently acquiring, and you cannot change that feature while it is acquiring. If you stop acquisition does TriggerMode become “Available”? If so, once it is Available can you change it to “Off” and see if the enums for TriggerSource change?
Mark
From: John Dobbins <john.dobbins at cornell.edu>
Mark,
Below are the enum values for TriggerSource and TriggerMode as read by asynReport. The left column shows the enums after a Factory reset. I then select TriggerSource = Line0 and TriggerMode = On [both are required to make externa l trigger work] after which the enums take on the values on the right. There doesn't seem to be a way to undo the external trigger choice.
I tried an older FLIR GigE camera (13S2M) and it does not have this behavior.
John
From: Mark Rivers <rivers at cars.uchicago.edu>
Hi John,
Another way to see the enum choices is with this iocsh command:
asynReport 2 SP1
where SP1 is the name of the camera port driver. That will produce a complete list of all the camera features with full details in alphabetical order. For enum records it prints the currently valid choices. You will need to scroll back in the output to find the feature you are interested in. Here is an example of TriggerSource for a FLIR BlackFlyS camera:
Node name: TriggerSource value: Software asynIndex: 97 asynName: GC_TRIGGER_SOURCE asynType: 1 isImplemented: true isAvailable: true isReadable: true isWritable: true enums: 31: Software 0: Line0 2: Line2 3: Line3 4: UserOutput0 5: UserOutput1 6: UserOutput2 7: UserOutput3 12: Counter0Start 13: Counter1Start 16: Counter0End 17: Counter1End 20: LogicBlock0 21: LogicBlock1 27: Action0
I should add an iocsh command to print the information for a single feature, avoiding the need for lots of scrolling, e.g.
genicamShowFeature TriggerSource
Does setting TriggerMode=Off do it?
The way I do it for both Phoebus and medm is to run a script that copies all the files from the support/ tree into a single directory. Then I can just open the top-level screen in that directory and it finds all of the other screens.
This is the script for Phoebus. It copies the files to both /home/epics/bob on the Linux machine and also to a Windows server, cars5:/Users/epics/bob.
[epics@viper bin]$ more sync_bobs cars5dir=/home/epics/cars5/Users/epics cars5bobdir=$cars5dir/bob/ bobdir=/home/epics/bob/
bobpath='/home/epics/support'
find $bobpath -name '*.bob' -exec cp -f -p {} $bobdir \;
# copy to cars5 if [ -e $cars5bobdir ] && [ -d $cars5bobdir ] ; then echo 'copying bob files to ' $cars5bobdir cp -pr $bobdir $cars5bobdir/. else echo 'cannot find cars5 directory' fi
Mark
From: John Dobbins <john.dobbins at cornell.edu>
Mark,
More clarity - once I put the camera in external trigger mode, the menu choices change. As I am using MEDM, I have to restart MEDM to see that this is happened. Once I restart MEDM, I don't see a way to get back to software trigger.
Can you point me to a script to start phoebus with the needed substitutions and paths to the other areaDetector opi screens?
John From: Tech-talk <tech-talk-bounces at aps.anl.gov>
on behalf of John Dobbins via Tech-talk <tech-talk at aps.anl.gov>
Mark,
I have found that I can reproducibly get things into a strange state by exiting the IOC while the camera is using an external trigger. I will continue to investigate.
John From: John Dobbins <john.dobbins at cornell.edu>
Mark,
I did a Factory Reset on the camera and deleted settings in autosave. This got the camera back to the state I expected. I will proceed carefully.
Thanks,
John From: John Dobbins <john.dobbins at cornell.edu>
Thanks Mark. I shall investigate. John From: Mark Rivers <rivers at cars.uchicago.edu>
Yes, I think some other parameter in the camera has changed so that software is no longer a valid choice.
Note that at run-time you actually have 2 fewer choices than in the template file. The template file has 15 choices, i.e. TTxx (13) and FTxx (14) are valid. But at run-time TTxx and FTxx are not valid.
It appears that the missing (invalid) entries are Software and Line1.
Mark
From: John Dobbins <john.dobbins at cornell.edu>
Mark,
Previously, 'Software' was a trigger choice. So something in the camera changed so that this is not now a choice?
John
From: Mark Rivers <rivers at cars.uchicago.edu>
John,
What you are seeing is completely normal.
The template file is created by the Python script using the camera’s XML file. That XML file contains all possible choices for each enum. However, not all of those choices are necessarily available at run time, depending on the camera state. The enum choices in the record at run-time are dynamic, based on which choices are actually available for the current camera configuration.
Note that with older OPIs like medm you will need to close and re-open the window to see the new enum choices. On newer OPIs like Phoebus the enum choices update in the display when they are changed without needing to close and re-open the window.
Mark
From: Tech-talk <tech-talk-bounces at aps.anl.gov>
On Behalf Of John Dobbins via Tech-talk
All,
I am using a FLIR camera with base-7.0.6, areaDetector-R3-13, ADGeniCam-R1-9, ADSpinnake-R3-5 on Alma 9.
This IOC has been running normally but after a restart of the IOC I am seeing a strange problem I have not encountered before. On start-up the IOC loads an mmbo record from FLIR_BFS_U3_161S7M.template but the fields in the instantiated record don't match the database file. [ this doesn't appear to be the only affected record ]
The instantiated record has 13 states where I expect 14. The first state has been lost and all the others are shifted down one with respect to the definition in the template file.
I could imagine the record being over-written later by another db file. I don't see how that would come about when it was ok previously. Is there a way to tell if this is happening?
Any thoughts,
John Dobbins
Research Support Specialist Cornell High Energy Synchrotron Source Cornell University
dbLoadRecords("/nfs/chess/epics/det/support_flir/areaDetector-R3-13/ADGenICam/db/FLIR_BFS_U3_161S7M.template", "P=BFS1:,R=cam1:,PORT=SP1")
epics> dbpr BFS1:cam1:GC_TriggerSource 4 [0/376] ACKS: NO_ALARM ACKT: YES AMSG: ASG : ASP : PTR (nil) BKLNK: ELL 0 [(nil) .. (nil)] BKPT: 00 COSV: NO_ALARM DESC: DISA: 0 DISP: 0 DISS: NO_ALARM DISV: 1 DOL : CONSTANT 31 DPVT: PTR 0x53c4dc0 DSET: PTR 0x7f9ca58af220 DTYP: asynInt32 EIST: Counter1Start EISV: NO_ALARM EIVL: 0xd ELST: LogicBlock0 ELSV: NO_ALARM ELVL: 0x14 EVNT: FFST: FFSV: NO_ALARM FFVL: 0x0 FLNK: CONSTANT FRST: UserOutput1 FRSV: NO_ALARM FRVL: 0x5 FTST: FTSV: NO_ALARM FTVL: 0x0 FVST: UserOutput2 FVSV: NO_ALARM FVVL: 0x6 IVOA: Continue normally IVOV: 0 LALM: 0 LCNT: 0 LSET: PTR 0x45da5d0 MASK: 4294967295 MLIS: ELL 0 [(nil) .. (nil)] MLOK: a0 51 71 04 00 00 00 00 MLST: 0 NAME: BFS1:cam1:GC_TriggerSource NAMSG: NIST: Counter0End NISV: NO_ALARM NIVL: 0x10 NOBT: 0 NSEV: NO_ALARM NSTA: NO_ALARM OLDSIMM: NO OMSL: supervisory ONST: Line2 ONSV: NO_ALARM ONVL: 0x2 ORAW: 0 ORBV: 0 OUT : INST_IO @asyn(SP1,0,1)GC_E_TriggerSource PACT: 0 PHAS: 0 PINI: NO PPN : PTR (nil) PPNR: PTR (nil) PRIO: LOW PROC: 0 PUTF: 0 RBV : 0 RDES: PTR 0x22fcdb0 RPRO: 0 RSET: PTR 0x7f9ca571d260 RVAL: 0 SCAN: Passive SDEF: 1 SDIS: CONSTANT SDLY: -1 SEVR: NO_ALARM SHFT: 0 SIML: CONSTANT SIMM: NO SIMPVT: PTR (nil) SIMS: NO_ALARM SIOL: CONSTANT SPVT: PTR (nil) SSCN: <nil> STAT: NO_ALARM SVST: Counter0Start SVSV: NO_ALARM SVVL: 0xc SXST: UserOutput3 SXSV: NO_ALARM SXVL: 0x7 TEST: Counter1End TESV: NO_ALARM TEVL: 0x11 THST: UserOutput0 THSV: NO_ALARM THVL: 0x4 TIME: 2024-06-21 15:16:03.150013012 TPRO: 0 TSE : 0 TSEL: CONSTANT TTST: TTSV: NO_ALARM TTVL: 0x0 TVST: LogicBlock1 TVSV: NO_ALARM TVVL: 0x15 TWST: Line3 TWSV: NO_ALARM TWVL: 0x3 UDF : 0 UDFS: INVALID UNSV: NO_ALARM UTAG: 0 VAL : 0 ZRST: Line0 ZRSV: NO_ALARM ZRVL: 0x0
record(mbbo, "$(P)$(R)GC_TriggerSource") { field(DTYP, "asynInt32") field(OUT, "@asyn($(PORT),$(ADDR=0),$(TIMEOUT=1))GC_E_TriggerSource") field(DOL, "31") field(ZRST, "Software") field(ZRVL, "31") field(ONST, "Line0") field(ONVL, "0") field(TWST, "Line1") field(TWVL, "1") field(THST, "Line2") field(THVL, "2") field(FRST, "Line3") field(FRVL, "3") field(FVST, "UserOutput0") field(FVVL, "4") field(SXST, "UserOutput1") field(SXVL, "5") field(SVST, "UserOutput2") field(SVVL, "6") field(EIST, "UserOutput3") field(EIVL, "7") field(NIST, "Counter0Start") field(NIVL, "12") field(TEST, "Counter1Start") field(TEVL, "13") field(ELST, "Counter0End") field(ELVL, "16") field(TVST, "Counter1End") field(TVVL, "17") field(TTST, "LogicBlock0") field(TTVL, "20") field(FTST, "LogicBlock1") field(FTVL, "21") field(DISA, "0") }
|