Skip to main content

Python client library for TOYOPUC computer-link communication over TCP and UDP

Project description

CI Documentation PyPI Python 3.10+ License: MIT Static Analysis: Ruff

Computer Link Protocol for Python

Illustration

A user-focused Python library for JTEKT TOYOPUC Computer Link communication. The recommended entry points are the high-level ToyopucDeviceClient class and the async helper functions in toyopuc.

For asyncio code, prefer:

  • ToyopucConnectionOptions
  • open_and_connect
  • normalize_address
  • parse_device_address
  • try_parse_device_address
  • format_device_address
  • read_typed
  • write_typed
  • write_bit_in_word
  • read_named
  • poll
  • read_words_single_request
  • read_dwords_single_request
  • read_words_chunked
  • read_dwords_chunked

Quick Start

Installation

pip install toyopuc-computerlink

Latest release metadata and downloads are available at https://pypi.org/project/toyopuc-computerlink/.

Synchronous Example

from toyopuc import ToyopucDeviceClient

with ToyopucDeviceClient("192.168.250.100", 1025) as client:
    value = client.read("P1-D0000")
    print(f"P1-D0000 = {value}")

    client.write("P1-D0001", 1234)
    client.write("P1-M0000", 1)

    snapshot = client.read_many(["P1-D0000", "P1-D0001", "P1-M0000"])
    print(snapshot)

Asynchronous Example

import asyncio
from toyopuc import ToyopucConnectionOptions, open_and_connect, read_named, read_typed, write_typed

async def main() -> None:
    options = ToyopucConnectionOptions(host="192.168.250.100", port=1025, timeout=3.0, retries=0)
    async with await open_and_connect(options) as plc:
        speed = await read_typed(plc, "P1-D0100", "F")
        print(f"speed = {speed}")

        await write_typed(plc, "P1-D0200", "L", -500)

        values = await read_named(plc, ["P1-D0000", "P1-D0100:F", "P1-D0000.0"])
        print(values)

asyncio.run(main())

Basic area families P/K/V/T/C/L/X/Y/M/S/N/R/D require a P1-, P2-, or P3- prefix.

Supported PLC Registers

Start with these public high-level families first:

  • prefixed word/register areas: P1-D0000, P1-S0000, P1-N0100, P1-R0000
  • prefixed bit/control areas: P1-M0000, P1-X0000, P1-Y0000
  • extension areas: ES0000, EN0000
  • FR storage: FR000000
  • typed and bit views: P1-D0100:S, P1-D0200:D, P1-D0300:F, P1-D0000.3

See the full public table in Supported PLC Registers.

Public Docs

Start with these sample programs:

  • samples/high_level_minimal.py
  • samples/high_level_basic.py
  • samples/high_level_all_sync.py
  • samples/high_level_all_async.py
  • samples/high_level_udp.py

Maintainer-only notes and retained evidence live under internal_docs/.

Common User Tasks

  • normalize one address string: normalize_address("p1-d0000", profile="TOYOPUC-Plus:Plus Standard mode")
  • parse one typed address string: parse_device_address("p1-d0100:f", profile="Generic")
  • format stored address metadata: format_device_address(parsed_address)
  • review model/profile ranges: ToyopucDeviceCatalog.get_device_matrix("PC10G:PC10 mode")
  • read or write one device: client.read("P1-D0000"), client.write("P1-M0000", 1)
  • read a mixed snapshot: client.read_many([...]) or await read_named(plc, [...])
  • read 32-bit or float values: client.read_dword(...), client.read_float32(...), await read_typed(..., "D" / "L" / "F")
  • change one flag bit inside a word: await write_bit_in_word(plc, "P1-D0100", bit_index=3, value=True)
  • read contiguous areas with explicit intent: await read_words_single_request(...), await read_words_chunked(...)
  • read or write FR storage: client.read_fr(...), client.write_fr(..., commit=True)

Development & CI

run_ci.bat
release_check.bat

License

Distributed under the MIT License.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

toyopuc_computerlink-0.1.8.tar.gz (55.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

toyopuc_computerlink-0.1.8-py3-none-any.whl (48.4 kB view details)

Uploaded Python 3

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page