- [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"
}