eaps2000


Nameeaps2000 JSON
Version 1.1.1 PyPI version JSON
download
home_pageNone
SummaryElektro-Automatik Series PS 2000 Python Controller
upload_time2025-02-21 09:32:34
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseNone
keywords ds-power-supply ea-ps-2042-06b ea-ps-2042-10b ea-ps-2042-20b ea-ps-2084-03b ea-ps-2084-05b ea-ps-2342-06b ea-ps-2342-10b ea-ps-2384-05b psu psu-controller pypi-package python-psu-controller series-ps-2000-b
VCS
bugtrack_url
requirements pyserial
Travis-CI No Travis.
coveralls test coverage No coveralls.
            - [eaps2000 - PS 2000B Series PSU Python Control Unit](#eaps2000---ps-2000b-series-psu-python-control-unit)
  - [Installing the package](#installing-the-package)
  - [Getting Started](#getting-started)
  - [Building the Project](#building-the-project)
  - [Documentation form the Manufacturer](#documentation-form-the-manufacturer)
    - [Object List](#object-list)


# eaps2000 - PS 2000B Series PSU Python Control Unit

The `eaps2000` is a python module for [Elektro-Automatik PS 2000B Series][_ps_2kb_url_] PSU control.

This software implements following functionality:

- Reading out device information (serial number, model etc.)
- Setting ovewr-voltage and over-current protection
- Setting voltage and current for an output
- Controlling the output stage on/off
- Acknowledging alarms

## Installing the package

Install the project from PyPi or [build](#building-the-project) it first.

```bash
pip install eaps2000
```

## Getting Started

Using CLI interface:

```bash

# Showing help
eaps2000 --help

# Show device info and current state
eaps2000 -p COM123 --info

# Set output voltage to 3.3V, current to 1.3A, output off:
eaps2000 -p COM123 -V 3.5 -I 1.3 --off

# Set output voltage to 3.3V, current to 1.3A, output on:
# CAUTION: This command will apply power to the output!
eaps2000 -p COM123 -V 3.5 -I 1.3 --on
```

**NOTE:** Instead `COM123` port a port `/tty/usbACM0` shall be used on Linux.

Using Python interface:

```python
from eaps2000 import eaps2k

port = 'COM123'  # use /tty/ACM0 for linux based system
with eaps2k(port) as ps:
    # Prepare config:
    cfg = eaps2k.get_config_template()
    cfg['ACK'] = True  # acknowledge alarms if any
    cfg['OVP'] = 5.0   # over-voltage-protection value
    cfg['OCP'] = 0.5   # over-current-protection value
    cfg['Iset'] = 0.1  # current to be set
    cfg['Vset'] = 3.3  # voltage to be set

    # Turn off the output stage:
    ps.set_output_state(False)

    # Apply configuration:
    ps.configure(cfg)

    # Turn on the output stage:
    # ATTENTION: The power will be applied to your probe here!
    # ps.set_output_state(True)

    # Show information:
    ps.print_info()
```

## Building the Project

The project is built with [`hatchling`][_hatchling_home_]

```bash
pip install hatchling && flake8 . -v && hatchling build && pytest --flake8
```

Installing freshly built project may be done by invoking:

```bash
pip install ./dist/eaps2000-*.whl --upgrade --force-reinstall
```

## Documentation form the Manufacturer

The manufacturer `EA ELEKTRO-AUTOMATIK GMBH & CO. KG` has an overview over all
available models of `PS 2000 B Series` in the shop [Serie PS 2000 B 100 bis 332 W][_ps_2kb_url_]
on German web-page.

The [Programming_Guide_PS2000B_TFT][_ps2kb_programming_guide_] gives an overview of
the protovol implemented. It also describes voltage/current conversions necessary for the
communication.

### Object List

Additional document `object_list_ps2000b_de_en.pdf` mentioned in
[Programming_Guide_PS2000B_TFT][_ps2kb_programming_guide_] gives an overview over control commands.
Each object in the list is basically a get/set command to control the PSU.

The table below lists objects in one place:

| Object | Description                | Access | Data type | Data length in Bytes | Mask for type 'char' | Data | Example or further description |
|--------|----------------------------|--------|-----------|----------------------|----------------------|------|--------------------------------|
| 0  | Device type                   | ro | string | 16 | | | PS2042-06B + EOL (EOL= End of Line 0x00) |
| 1  | Device serial no.             | ro | string | 16 | | | 1034440002 + EOL |
| 2  | Nominal voltage               | ro | float  | 4  | | | Unom = 42.0 (Floating point number IEEE754 Standard) |
| 3  | Nominal current               | ro | float  | 4  | | | Inom = 6.0 (Floating point number IEEE754 Standard)|
| 4  | Nominal power                 | ro | float  | 4  | | | Pnom = 100.0 (Floating point number IEEE754 Standard) |
| 6  | Device article no.            | ro | string | 16 | | | 39200112 + EOL |
| 8  | Manufacturer                  | ro | string | 16 | | | Manufacturer's name + EOL |
| 9  | Software version              | ro | string | 16 | | | V2.01 09.08.06 + EOL |
| 19 | Device class                  | ro | int    | 2  | | | 0x0010 = PS 2000 B Single, 0x0018 = PS 2000 B Triple |
| 38 | OVP threshold                 | rw | int    | 2  | | | Overvoltage set value 0-110% of Unom * 256 |
| 39 | OCP threshold                 | rw | int    | 2  | | | Overcurrent set value 0-110% of Inom * 256 |
| 50 | Set value U                   | rw | int    | 2  | | | Set value of voltage 0-100% of Unom * 256 |
| 51 | Set value I                   | rw | int    | 2  | | | Set value of current 0-100% of Inom * 256 |
| 54 | Power supply control          | rw | char   | 2  | 0x01<br>0x01<br>0x0A<br>0x10<br>0x10<br>0xF0<br>0xF0 | 0x01<br>0x00<br>0x0A<br>0x10<br>0x00<br>0xF0<br>0xE0 | <li>Switch power output on<br><li>Switch power output off<br><li>Acknowledge alarms<br><li>Switch to remote control<br><li>Switch to manual control<br><li>Tracking on<br><li>Tracking off |
| 71 | Status + Actual values        | ro | int    | 6  | | <li>Byte 0:<br>Bits 1+0:<br>Byte 1:<br>Bit 0:<br><li>Bits 2+1:<br>Bit 3:<br>Bit 4:<br>Bit 5:<br>Bit 6:<br>Bit 7:<br><li>Word 1:<br><li>Word 2: | <li>Query device state<br>00=free access; 01=Remote<br><br>1=Output on<br><li>Controller state: 00=CV, 10=CC<br>1=Tracking active**<br>1=OVP active<br>1=OCP active<br>1=OPP active<br>1=OTP active<br><li>Actual voltage (% of Unom * 256)<br><li>Actual current (% of Inom * 256) |
| 72 | Status + Momentary set values | ro | int    | 6  | | <li>Byte 0:<br>Bits 1+0:<br>Byte 1:<br>Bit 0:<br><li>Bits 2+1:<br>Bit 3:<br>Bit 4:<br>Bit 5:<br>Bit 6:<br>Bit 7:<br><li>Word 1:<br><li>Word 2: | <li>Query device state<br>00=free access; 01=Remote<br><br>1=Output on<br><li>Controller state: 00=CV; 10=CC<br>1=Tracking active**<br>1=OVP active<br>1=OCP active<br>1=OPP active<br>1=OTP active<br><li>Set value of voltage (% of Unom * 256)<br><li>Set value of current (% of Inom * 256) |

** PS 2000 B Triple only

[_ps_2kb_url_]: https://elektroautomatik.com/shop/de/produkte/programmierbare-dc-laborstromversorgungen/dc-laborstromversorgungen/serie-ps-2000-b-br-100-bis-332-w/
[_ps2kb_programming_guide_]: https://elektroautomatik.com/shop/media/archive/f1/49/71/Programming_Guide_PS2000B_TFT.zip
[_hatchling_home_]: https://hatch.pypa.io/1.9/

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "eaps2000",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "ds-power-supply, ea-ps-2042-06b, ea-ps-2042-10b, ea-ps-2042-20b, ea-ps-2084-03b, ea-ps-2084-05b, ea-ps-2342-06b, ea-ps-2342-10b, ea-ps-2384-05b, psu, psu-controller, pypi-package, python-psu-controller, series-ps-2000-b",
    "author": null,
    "author_email": "Alexander Kozhinov <ak.alexander.kozhinov@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/33/cd/b1b9a61c9c941465a8c70f4dfc02b3890a1e7e840db77d22c7d07d1d3d4a/eaps2000-1.1.1.tar.gz",
    "platform": null,
    "description": "- [eaps2000 - PS 2000B Series PSU Python Control Unit](#eaps2000---ps-2000b-series-psu-python-control-unit)\n  - [Installing the package](#installing-the-package)\n  - [Getting Started](#getting-started)\n  - [Building the Project](#building-the-project)\n  - [Documentation form the Manufacturer](#documentation-form-the-manufacturer)\n    - [Object List](#object-list)\n\n\n# eaps2000 - PS 2000B Series PSU Python Control Unit\n\nThe `eaps2000` is a python module for [Elektro-Automatik PS 2000B Series][_ps_2kb_url_] PSU control.\n\nThis software implements following functionality:\n\n- Reading out device information (serial number, model etc.)\n- Setting ovewr-voltage and over-current protection\n- Setting voltage and current for an output\n- Controlling the output stage on/off\n- Acknowledging alarms\n\n## Installing the package\n\nInstall the project from PyPi or [build](#building-the-project) it first.\n\n```bash\npip install eaps2000\n```\n\n## Getting Started\n\nUsing CLI interface:\n\n```bash\n\n# Showing help\neaps2000 --help\n\n# Show device info and current state\neaps2000 -p COM123 --info\n\n# Set output voltage to 3.3V, current to 1.3A, output off:\neaps2000 -p COM123 -V 3.5 -I 1.3 --off\n\n# Set output voltage to 3.3V, current to 1.3A, output on:\n# CAUTION: This command will apply power to the output!\neaps2000 -p COM123 -V 3.5 -I 1.3 --on\n```\n\n**NOTE:** Instead `COM123` port a port `/tty/usbACM0` shall be used on Linux.\n\nUsing Python interface:\n\n```python\nfrom eaps2000 import eaps2k\n\nport = 'COM123'  # use /tty/ACM0 for linux based system\nwith eaps2k(port) as ps:\n    # Prepare config:\n    cfg = eaps2k.get_config_template()\n    cfg['ACK'] = True  # acknowledge alarms if any\n    cfg['OVP'] = 5.0   # over-voltage-protection value\n    cfg['OCP'] = 0.5   # over-current-protection value\n    cfg['Iset'] = 0.1  # current to be set\n    cfg['Vset'] = 3.3  # voltage to be set\n\n    # Turn off the output stage:\n    ps.set_output_state(False)\n\n    # Apply configuration:\n    ps.configure(cfg)\n\n    # Turn on the output stage:\n    # ATTENTION: The power will be applied to your probe here!\n    # ps.set_output_state(True)\n\n    # Show information:\n    ps.print_info()\n```\n\n## Building the Project\n\nThe project is built with [`hatchling`][_hatchling_home_]\n\n```bash\npip install hatchling && flake8 . -v && hatchling build && pytest --flake8\n```\n\nInstalling freshly built project may be done by invoking:\n\n```bash\npip install ./dist/eaps2000-*.whl --upgrade --force-reinstall\n```\n\n## Documentation form the Manufacturer\n\nThe manufacturer `EA ELEKTRO-AUTOMATIK GMBH & CO. KG` has an overview over all\navailable models of `PS 2000 B Series` in the shop [Serie PS 2000 B 100 bis 332 W][_ps_2kb_url_]\non German web-page.\n\nThe [Programming_Guide_PS2000B_TFT][_ps2kb_programming_guide_] gives an overview of\nthe protovol implemented. It also describes voltage/current conversions necessary for the\ncommunication.\n\n### Object List\n\nAdditional document `object_list_ps2000b_de_en.pdf` mentioned in\n[Programming_Guide_PS2000B_TFT][_ps2kb_programming_guide_] gives an overview over control commands.\nEach object in the list is basically a get/set command to control the PSU.\n\nThe table below lists objects in one place:\n\n| Object | Description                | Access | Data type | Data length in Bytes | Mask for type 'char' | Data | Example or further description |\n|--------|----------------------------|--------|-----------|----------------------|----------------------|------|--------------------------------|\n| 0  | Device type                   | ro | string | 16 | | | PS2042-06B + EOL (EOL= End of Line 0x00) |\n| 1  | Device serial no.             | ro | string | 16 | | | 1034440002 + EOL |\n| 2  | Nominal voltage               | ro | float  | 4  | | | Unom = 42.0 (Floating point number IEEE754 Standard) |\n| 3  | Nominal current               | ro | float  | 4  | | | Inom = 6.0 (Floating point number IEEE754 Standard)|\n| 4  | Nominal power                 | ro | float  | 4  | | | Pnom = 100.0 (Floating point number IEEE754 Standard) |\n| 6  | Device article no.            | ro | string | 16 | | | 39200112 + EOL |\n| 8  | Manufacturer                  | ro | string | 16 | | | Manufacturer's name + EOL |\n| 9  | Software version              | ro | string | 16 | | | V2.01 09.08.06 + EOL |\n| 19 | Device class                  | ro | int    | 2  | | | 0x0010 = PS 2000 B Single, 0x0018 = PS 2000 B Triple |\n| 38 | OVP threshold                 | rw | int    | 2  | | | Overvoltage set value 0-110% of Unom * 256 |\n| 39 | OCP threshold                 | rw | int    | 2  | | | Overcurrent set value 0-110% of Inom * 256 |\n| 50 | Set value U                   | rw | int    | 2  | | | Set value of voltage 0-100% of Unom * 256 |\n| 51 | Set value I                   | rw | int    | 2  | | | Set value of current 0-100% of Inom * 256 |\n| 54 | Power supply control          | rw | char   | 2  | 0x01<br>0x01<br>0x0A<br>0x10<br>0x10<br>0xF0<br>0xF0 | 0x01<br>0x00<br>0x0A<br>0x10<br>0x00<br>0xF0<br>0xE0 | <li>Switch power output on<br><li>Switch power output off<br><li>Acknowledge alarms<br><li>Switch to remote control<br><li>Switch to manual control<br><li>Tracking on<br><li>Tracking off |\n| 71 | Status + Actual values        | ro | int    | 6  | | <li>Byte 0:<br>Bits 1+0:<br>Byte 1:<br>Bit 0:<br><li>Bits 2+1:<br>Bit 3:<br>Bit 4:<br>Bit 5:<br>Bit 6:<br>Bit 7:<br><li>Word 1:<br><li>Word 2: | <li>Query device state<br>00=free access; 01=Remote<br><br>1=Output on<br><li>Controller state: 00=CV, 10=CC<br>1=Tracking active**<br>1=OVP active<br>1=OCP active<br>1=OPP active<br>1=OTP active<br><li>Actual voltage (% of Unom * 256)<br><li>Actual current (% of Inom * 256) |\n| 72 | Status + Momentary set values | ro | int    | 6  | | <li>Byte 0:<br>Bits 1+0:<br>Byte 1:<br>Bit 0:<br><li>Bits 2+1:<br>Bit 3:<br>Bit 4:<br>Bit 5:<br>Bit 6:<br>Bit 7:<br><li>Word 1:<br><li>Word 2: | <li>Query device state<br>00=free access; 01=Remote<br><br>1=Output on<br><li>Controller state: 00=CV; 10=CC<br>1=Tracking active**<br>1=OVP active<br>1=OCP active<br>1=OPP active<br>1=OTP active<br><li>Set value of voltage (% of Unom * 256)<br><li>Set value of current (% of Inom * 256) |\n\n** PS 2000 B Triple only\n\n[_ps_2kb_url_]: https://elektroautomatik.com/shop/de/produkte/programmierbare-dc-laborstromversorgungen/dc-laborstromversorgungen/serie-ps-2000-b-br-100-bis-332-w/\n[_ps2kb_programming_guide_]: https://elektroautomatik.com/shop/media/archive/f1/49/71/Programming_Guide_PS2000B_TFT.zip\n[_hatchling_home_]: https://hatch.pypa.io/1.9/\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Elektro-Automatik Series PS 2000 Python Controller",
    "version": "1.1.1",
    "project_urls": {
        "Documentation": "https://github.com/KozhinovAlexander/eaps2000/blob/main/README.md",
        "Homepage": "https://github.com/KozhinovAlexander/eaps2000"
    },
    "split_keywords": [
        "ds-power-supply",
        " ea-ps-2042-06b",
        " ea-ps-2042-10b",
        " ea-ps-2042-20b",
        " ea-ps-2084-03b",
        " ea-ps-2084-05b",
        " ea-ps-2342-06b",
        " ea-ps-2342-10b",
        " ea-ps-2384-05b",
        " psu",
        " psu-controller",
        " pypi-package",
        " python-psu-controller",
        " series-ps-2000-b"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "39effca66678f6179b0a3e1b48c27ac83cac2445cac4b207441324bcea180eb7",
                "md5": "4b7770003262ec26659888173b4f838c",
                "sha256": "930ab55ab6f87f483c2cc218702f4e4bf8123dd16dfffa6b1ab77c52497cf668"
            },
            "downloads": -1,
            "filename": "eaps2000-1.1.1-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4b7770003262ec26659888173b4f838c",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 9354,
            "upload_time": "2025-02-21T09:32:33",
            "upload_time_iso_8601": "2025-02-21T09:32:33.556874Z",
            "url": "https://files.pythonhosted.org/packages/39/ef/fca66678f6179b0a3e1b48c27ac83cac2445cac4b207441324bcea180eb7/eaps2000-1.1.1-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "33cdb1b9a61c9c941465a8c70f4dfc02b3890a1e7e840db77d22c7d07d1d3d4a",
                "md5": "b62ce9b2d0170c6808ef0ecce96b9fc3",
                "sha256": "8075ce625cb617d7f97f3f987ab33113fca1028ba95ca9806a4c754723f9f213"
            },
            "downloads": -1,
            "filename": "eaps2000-1.1.1.tar.gz",
            "has_sig": false,
            "md5_digest": "b62ce9b2d0170c6808ef0ecce96b9fc3",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 3875,
            "upload_time": "2025-02-21T09:32:34",
            "upload_time_iso_8601": "2025-02-21T09:32:34.802612Z",
            "url": "https://files.pythonhosted.org/packages/33/cd/b1b9a61c9c941465a8c70f4dfc02b3890a1e7e840db77d22c7d07d1d3d4a/eaps2000-1.1.1.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-02-21 09:32:34",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "KozhinovAlexander",
    "github_project": "eaps2000",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "pyserial",
            "specs": [
                [
                    "~=",
                    "3.5"
                ]
            ]
        }
    ],
    "lcname": "eaps2000"
}
        
Elapsed time: 0.41967s