NSLS-II / nslsii

NSLS-II related devices
BSD 3-Clause "New" or "Revised" License
10 stars 22 forks source link

ENH: Baton IOC #72

Open tacaswell opened 4 years ago

tacaswell commented 4 years ago

This is the companion PR to https://github.com/bluesky/bluesky/pull/1246

Adds:


from nslsii import configure_base
from nslsii.baton import Baton
from ophyd.sim import *

b = Baton('XF31ID:', name='b')

names = configure_base(get_ipython().user_ns, 'temp', baton=b)
import os
os.environ['PYDM_EPICS_LIB'] = 'caproto'
from nslsii.baton import BatonDisplay

from qtpy.QtWidgets import QApplication
import typhon
app = QApplication.instance() or QApplication(['bluesky'])

bd = BatonDisplay('XF31ID:', name='b')
suite = typhon.TyphonSuite.from_device(bd)
suite.show()

app.exec_()
prjemian commented 4 years ago

Somewhere, can you define in very plain terms, what is a baton?

On Wed, Aug 21, 2019, 6:48 PM Thomas A Caswell notifications@github.com wrote:

This is the companion PR to bluesky/bluesky#1246 https://github.com/bluesky/bluesky/pull/1246

Adds:

  • updates configure_base for bluesky changes
  • a Baton caproto IOC and matching ohpyd object with the hooks to interact with bluesky
  • a read only version of the ophyd object to back a typhon window

from nslsii import configure_basefrom nslsii.baton import Batonfrom ophyd.sim import *

b = Baton('XF31ID:', name='b')

names = configure_base(get_ipython().user_ns, 'temp', baton=b)

import os os.environ['PYDM_EPICS_LIB'] = 'caproto'from nslsii.baton import BatonDisplay from qtpy.QtWidgets import QApplicationimport typhon app = QApplication.instance() or QApplication(['bluesky'])

bd = BatonDisplay('XF31ID:', name='b') suite = typhon.TyphonSuite.from_device(bd) suite.show()

app.exec_()


You can view, comment on, or merge this pull request online at:

https://github.com/NSLS-II/nslsii/pull/72 Commit Summary

  • ENH: add IOC and ohpyd Device to act as a 'baton'
  • MNT: adjust configure_base to not use history dict
  • MNT: don't try to install the kicker for bs >= 1.6
  • ENH: tweak the Baton IOC a bit
  • ENH: add a ReadOnly Device to back a typhon object

File Changes

Patch Links:

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/NSLS-II/nslsii/pull/72?email_source=notifications&email_token=AARMUMG5RKACACUH4JJSOFLQFXH53A5CNFSM4IOPK722YY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HGUWMXA, or mute the thread https://github.com/notifications/unsubscribe-auth/AARMUMCC6MBZLM6HRNBTBYLQFXH53ANCNFSM4IOPK72Q .

tacaswell commented 4 years ago

I am a former track runner and orchestra player so I am either thinking the relay baton or a conductors baton.

It's the thing that means you are in charge :wink:

prjemian commented 4 years ago

Got it. So in the context of how Bluesky is used, the process in posession of the figurative baton is the only one authorized to control the hardware on the instrument (beam line, whatever). Any other bluesky process must be passive and not command the hardware to change. Right?

prjemian commented 4 years ago

Such as this example: https://github.com/APS-2BM-MIC/ipython-user2bmb/blob/master/profile_2bmb/startup/20-signals.py#L24-L37

prjemian commented 4 years ago

Later in that file is the use of the baton: https://github.com/APS-2BM-MIC/ipython-user2bmb/blob/master/profile_2bmb/startup/20-signals.py#L52-L95

Basically, if has baton, attach to hardware, else attach to simulators.

tacaswell commented 4 years ago

@prjemian Yes, same idea. That looks like that is an end-station / instrument deconfliction tool, this is to prevent a second RE on the same instrument from starting up and if it get stolen (which being EPICS is something we can not actually protect against), prevents an existing RE from running.

Could you push https://github.com/APS-2BM-MIC/ipython-user2bmb/blob/9b7f7b134d0173cfd3a3398b79146cf7478071d2/profile_2bmb/startup/18-suspenders.py#L8-L58 upstream to bluesky? That looks generically useful.

prjemian commented 4 years ago

Sure

On 2019-08-22 7:41 AM, Thomas A Caswell wrote:

@prjemian https://github.com/prjemian Yes, same idea. That looks like that is an end-station / instrument deconfliction tool, this is to prevent a second RE on the same instrument from starting up and if it get stolen (which being EPICS is something we can not actually protect against), prevents an existing RE from running.

Could you push https://github.com/APS-2BM-MIC/ipython-user2bmb/blob/9b7f7b134d0173cfd3a3398b79146cf7478071d2/profile_2bmb/startup/18-suspenders.py#L8-L58 upstream to bluesky? That looks generically useful.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/NSLS-II/nslsii/pull/72?email_source=notifications&email_token=AARMUMGPSW4LSWY6TMHQSCLQF2CQDA5CNFSM4IOPK722YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD446PNY#issuecomment-523888567, or mute the thread https://github.com/notifications/unsubscribe-auth/AARMUMHIPCOS2AF6IPLJGZDQF2CQDANCNFSM4IOPK72Q.