Skip to main content

SRS RGA(残余气体分析仪)质谱仪的串行接口驱动程序

项目描述

火柴

PyPI 版本

pyrga是一个 Python 3 库,用于与SRS RGA(来自斯坦福研究系统的残余气体分析仪)进行通信。如果您正在阅读本文,您可能知道它是什么。

免责声明

本软件按“原样”提供,不提供任何形式的明示或暗示保证,包括但不限于适销性、特定用途适用性和非侵权保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担任何责任,无论是在合同、侵权或其他方面,由本软件或本软件的使用或其他交易引起或与之相关。软件。

警告

  • 在使用代码之前阅读许可证。
  • 在打开灯丝之前,请务必确保您有良好的真空。
  • 按下按钮前请三思。您的 RGA 是一件昂贵的设备。
  • 遵守必要的安全预防措施。你的生命也很宝贵。
  • 该软件不提供任何形式的保证,并且可能对任何事情都没有用处。需要您自担风险使用它。

什么是 RGA

RGA 或残余气体分析仪是一种光谱仪,可以测量低压环境中存在的气体的化学成分。RGA 将气体混合物的各种成分电离,产生离子,根据离子的质荷比对离子进行加速和质量过滤,并测量这些离子电流,从而有效地确定各种气体的分压。有关更多信息、数据表和用户手册,请参见Standford Research Systems页面。

这个图书馆的目的

该库试图将一组最小的不言自明的函数组合在一起,以允许单质量测量和光谱扫描(不支持直方图)。它是用我能想到的尽可能多的完整性检查构建的。这并不意味着您应该在不阅读手册和了解 RGA 操作原理的情况下使用该库。

大多数功能分布在十几个 getter 和 setter 上,使这个 python 库看起来和感觉像 Java。这部分是由于 RGA 通信协议的细节,部分是由于我的品味不佳。

为什么不直接使用官方应用程序?

虽然 SRS 的官方 RGA 应用程序构建良好且经过时间考验,但我发现这些限制对我的应用程序来说是一个阻碍:

  • 仅限窗户
  • 无API(RS232通讯协议API)
  • 在“压力与时间”模式下运行几周后,GUI 变得缓慢且无响应

我们的一些 RGA 每年 9 个月 24/7 全天候运行,而官方应用程序并不适合此类应用程序。

回旋加速器 RGA

安装

使用包管理器pip安装pyrga.

python3 -m pip install pyrga

用法

单次质量扫描

import pyrga

if __name__ == "__main__":
    # initialize client with non-default noise floor setting
    RGA = pyrga.RGAClient("/dev/ttyUSB0", noise_floor=0)
    # check filament status and turn it on if necessary
    if not RGA.get_filament_status():
        RGA.turn_on_filament()
    # read partial pressures of air constituent
    MASSES = {
        18: "H2O",
        28: "N2",
        32: "O2",
        40: "Ar",
    }
    for m, i in MASSES.items():
        print("partial pressure of element {} is {} Torr".format(i, RGA.read_mass(m)))

输出:

INFO:pyrga.driver:Opening serial interface /dev/ttyUSB0...
INFO:pyrga.driver:Querying device ID...
INFO:pyrga.driver:Connected to RGA model SRSRGA100 on port /dev/ttyUSB0, id SRSRGA100...
INFO:pyrga.driver:Querying CDEM presence...
INFO:pyrga.driver:Querying filament status...
INFO:pyrga.driver:Querying filament current...
INFO:pyrga.driver:Setting CEDM voltage to 0...
INFO:pyrga.driver:Querying CDEM voltage...
INFO:pyrga.driver:Setting electron energy to default...
INFO:pyrga.driver:Querying electron energy...
INFO:pyrga.driver:Setting ion energy to default...
INFO:pyrga.driver:Setting focus plate voltage to default...
INFO:pyrga.driver:Querying focus plate voltage...
INFO:pyrga.driver:Setting emission current to default...
INFO:pyrga.driver:Setting noise floor to 0... (0 - max averaging, 7 - min averaging)
INFO:pyrga.driver:Querying noise floor setting...
INFO:pyrga.driver:Setting partial pressure sensitivity factor to default...
INFO:pyrga.driver:Querying partial pressure sensitivity factor stored in RGA...
INFO:pyrga.driver:Setting total pressure sensitivity factor to default...
INFO:pyrga.driver:Querying total pressure sensitivity factor stored in RGA...
INFO:pyrga.driver:Zeroing ion detector and applying temperature compensation factors...
INFO:pyrga.driver:Querying filament status...
INFO:pyrga.driver:Querying filament current...
INFO:pyrga.driver:Reading a single scan of amu mass number 18
partial pressure of element H2O is 1.0502660300136425e-07 Torr
INFO:pyrga.driver:Reading a single scan of amu mass number 28
partial pressure of element N2 is 8.462960436562073e-08 Torr
INFO:pyrga.driver:Reading a single scan of amu mass number 32
partial pressure of element O2 is 1.6347885402455663e-08 Torr
INFO:pyrga.driver:Reading a single scan of amu mass number 40
partial pressure of element Ar is 1.4222373806275579e-09 Torr

频谱扫描

import logging
import matplotlib.pyplot as plt
import pyrga

# turn off logging
logging.getLogger('pyrga').setLevel(logging.CRITICAL)

if __name__ == "__main__":
    # initialize client with default settings
    RGA = pyrga.RGAClient("/dev/ttyUSB0")
    # check filament status and turn it on if necessary
    if not RGA.get_filament_status():
        RGA.turn_on_filament()
    # read analog scan of 1-50 mass range with max resolution of 25 steps per amu
    masses, pressures, total = RGA.read_spectrum(1, 50, 25)
    plt.plot(masses, pressures)
    plt.yscale('log')
    plt.ylim(1e-9, 1e-6)
    plt.show()

输出:

光谱

API

这几乎不能称为“文档”。使用风险自负。

注意:我随意使用术语“amu”,并且可以与“质荷比”互换。是的,我知道这是不正确的。

公共职能

calibrate_all()
turn_on_filament()
turn_off_filament()
read_spectrum(amu_min, amu_max, amu_res)
read_mass(amu)

公共 getter/setter

get_device_id()
get_cdem_presence()
set_partial_sens(partial_sens_mA_per_Torr)
get_partial_sens()
set_total_sens(total_sens_mA_per_Torr)
get_total_sens()
set_electron_energy(electron_energy_eV)
get_electron_energy()
set_ion_energy(ion_energy_eV)
get_ion_energy()
set_plate_voltage(plate_voltage_V)
get_plate_voltage()
set_spectrogram_params(amu_min, amu_max, amu_res)
get_spectrogram_params()
# this does not turn on/off the filament, use turn_on_filament() and turn_off_filament()
set_emission_current(emission_current_mA)
get_emission_current()
get_filament_status()
set_cdem_voltage(cedm_voltage_V)
get_cdem_voltage()
set_noise_floor(noise_floor)
get_noise_floor()

日志记录

通过以下方式设置日志记录级别setLevel

import logging
import pyrga

logging.getLogger('pyrga').setLevel(logging.DEBUG)

if __name__ == '__main__':
    RGA = pyrga.RGAClient('/dev/ttyUSB0')
    ...

测试?

请参阅贡献

贡献

文档显然缺乏。测试不存在。欢迎请求请求。对于重大更改,请先打开一个问题讨论您想要更改的内容。

也可以看看

Pyrga, Larnaca是塞浦路斯拉纳卡区的一个村庄,位于科尔诺斯以东 4 公里处。

下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pyrga-0.0.3.tar.gz (14.9 kB 查看哈希)

已上传 source

内置分布

pyrga-0.0.3-py3-none-any.whl (12.2 kB 查看哈希)

已上传 py3