基于WAMP的HiPerCAM设备通信
hcam_devices的Python项目详细描述
hcam U设备
HiPERCAM的硬件通信
HiPERCAM项目需要在分布在多个硬件组件之间进行通信 一个网络。hcam_devices提供了一组工具,允许网络上的设备运行并与它们进行通信 其他。在
该体系结构使用一个中央WAMP服务器(例如crossbar)来处理通信 在网络插座上。网络上的设备定期向WAMP服务器和任何相关方发布遥测数据 可以订阅遥测主题以接收更新。在
设备可以公开远程过程调用(rpc),以便可以通过网络控制它们,还可以订阅 主题,以便可设置属性(例如CCD的温度设定值)可以通过发布到这些主题来控制 话题。在
安装
按常规安装:
pip install .
或者如果您没有根访问权限:
^{pr2}$用法
首先,您需要一个运行的WAMP服务器。我推荐crossbar。横杆的配置文件 实例包含在这个包的data目录中。一旦你的WAMP服务器启动并运行,有几个 可以运行的脚本。在
hwserver
该程序运行HiPERCAM外围硬件(如CCD珀耳贴控制器、焦平面幻灯片、流量传感器等)。 运行此脚本将这些设备连接到WAMP服务器并允许监视和控制
hwlogger
为了使设备(尤其是CCD头)可以在非现场进行监视,此脚本订阅CCD遥测并保存 持久性非站点Influx数据库的硬件状态。这个数据库可以和第三方一起使用 像grafana这样的参与方工具可以为设备监视启用整洁的仪表板。在
hs服务器
NGC-CCD控制器负责驱动CCD,节省曝光量等。为了获得最大的可靠性和速度,该设备
该脚本通过
gtc服务器
最后,外部GTC环境(电子机架、旋转器、望远镜偏移等)都连接到WAMP服务器 使用这个脚本。在
python中的控件
一旦这些脚本运行,就可以用Python控制设备。这可以使用WAMP库来完成,比如autobahn。 另外,所包含的WAMP server config提供了一个简单的HTTP接口,可按如下方式使用:
fromhcam_devices.wamp.utilsimportcall,publish# call RPCsngc_status=call('hipercam.NGC.rpc.summary')call('hipercam.GTC.rpc.do_offset',raoff=0.05,decoff=0.001)# publish to a topicpublish('hipercam.FocalPlaneSlide.target_position',-50)
现在必须使用WAMP库来订阅设备遥测。在
可选包依赖项
hcam_devices支持其他几种工具,例如查找图表工具hfinder和 仪器控制图形用户界面hdriver。大多数用户不需要安装额外的模块。然而, 如果您希望能够运行hdriver、和,您需要与望远镜进行完全通信 在GTC上运行时,您需要安装CORBA实现omniORBpy。在
完整的安装说明可以在omniORB项目homepage找到。 确保同时安装omniORB和omniorbby。另外,omniorbby模块和lib64变量必须 两者都在PYTHONPATH中。最后,与GTC通信需要安装 接口定义语言(IDL)文件,以及从这些文件编译的python模块。联系S.Littlefair 对于这些文件,它还必须在PYTHONPATH中。在
- 免费软件:麻省理工学院许可证
历史
- PyPI的第一个版本。在
- 项目
标签: