Metadata-Version: 2.1
Name: JakaModbusCommunication
Version: 4.0.3
Summary: A Modbus helper library for Jaka communication.
Home-page: https://github.com/yourusername/jaka_modbus_coms
Author: Lucas Pijl
Author-email: lapijl@uwaterloo.ca
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.7
Description-Content-Type: text/markdown
Requires-Dist: pymodbus>=2.5.0

Modbus Helper Library
modbus_helper is a Python library that simplifies Modbus TCP communication for reading and writing discrete inputs, coils, and analog outputs (e.g., UINT16, INT16, and FLOAT32). It is built on top of the pymodbus library and provides easy-to-use methods for interacting with Modbus-enabled devices.

Features
Read Discrete Inputs: General inputs, CAB inputs, Tool inputs.
Write Coils (Outputs): Digital outputs, CAB outputs, Tool outputs.
Read Analog Outputs: Supports UINT16, INT16, and FLOAT32 values.
Write Analog Outputs: Allows writing of FLOAT32 and UINT16 values.
Read Robot Data: Retrieve joint voltages, temperatures, currents, and TCP position/speed.
Installation
To use the Modbus Helper library, install the required dependencies:

bash
Copy code
pip install pymodbus
Usage
1. Initialize Modbus Helper
Import and create an instance of ModbusHelper:

python
Copy code
from modbus_helper import ModbusHelper

# Initialize Modbus TCP connection
helper = ModbusHelper(host="192.168.1.101", port=502)

try:
    # Example: Read digital input 1
    state = helper.read_digital_input(1)
    print(f"Digital Input 1 state: {'ON' if state else 'OFF'}")

    # Example: Write to digital output 2
    helper.write_digital_output(2, True)
    print("Digital Output 2 set to ON.")

    # Example: Read an analog FLOAT32 output (e.g., AO1)
    value = helper.read_analog_output_float32(1)
    print(f"Analog Output AO1 value: {value}")

    # Example: Write an analog FLOAT32 output
    helper.write_analog_output_float32(1, 12.34)
    print("Analog Output AO1 set to 12.34")

finally:
    helper.close()
Methods
Connection Management
Method	Description
connect()	Connects to the Modbus TCP server.
close()	Closes the connection to the Modbus server.
Read Digital Inputs
Method	Description
read_digital_input(input_number)	Reads a general digital input state.
read_cab_input_mini(input_number)	Reads CAB mini input state (1â€“7).
read_cab_input_zu(input_number)	Reads CAB input state for Jaka Zu inputs.
read_tool_input(input_number)	Reads Tool input state (1â€“2).
Write Digital Outputs
Method	Description
write_digital_output(output_number, state)	Writes a state (ON/OFF) to a digital output.
write_cab_output_mini(output_number, state)	Writes to CAB Mini digital outputs (1â€“7).
Read Analog Outputs
Method	Description
read_analog_output_uint16(ao_number)	Reads a UINT16 analog output value.
read_analog_output_int16(ao_number)	Reads an INT16 analog output value.
read_analog_output_float32(ao_number)	Reads a FLOAT32 analog output value.
Write Analog Outputs
Method	Description
write_analog_output_int(ao_number, value)	Writes a UINT16 analog output value.
write_analog_output_float32(ao_number, value)	Writes a FLOAT32 analog output value.
Robot Data Methods
Method	Description
get_servo_version()	Reads the servo version number.
get_robot_serial_no()	Reads the robot serial number.
get_joint_voltage(joint)	Reads the voltage of a specific joint.
get_joint_temperature(joint)	Reads the temperature of a specific joint.
get_joint_servo_error_code(joint)	Reads the servo error code for a joint.
get_joint_position(joint)	Reads the position of a joint.
get_tcp_position(axis)	Reads TCP position (X, Y, Z, RX, etc.).
get_tcp_speed(axis)	Reads TCP speed (X, Y, Z, RX, etc.).
get_collision_protective_stop()	Checks for collision protection stop.
get_emergency_stop()	Reads the emergency stop state.
Modbus Address Mapping
Digital Inputs
Type	Address Range	Notes
General Inputs	8â€“135	Includes DO1 to DO128.
CAB Mini Inputs	136â€“143	CAB DI1 to CAB DI8.
Tool Inputs	152â€“153	TOOL DI1, TOOL DI2.
Digital Outputs
Type	Address Range	Notes
General Outputs	40â€“167	DI1 to DI128.
CAB Outputs	168â€“183	CAB DO1 to CAB DO16.
Tool Outputs	184â€“185	TOOL DO1, TOOL DO2.
Analog Outputs
Type	Address Range	Data Type
Analog UINT16	96â€“115	UINT16
Analog INT16	112â€“120	INT16
Analog FLOAT32	128â€“164	FLOAT32 (big-endian display).
Requirements
Python 3.6+
pymodbus library
Install the required library using:

bash
Copy code
pip install pymodbus
Example: Robot Data Retrieval
python
Copy code
from modbus_helper import ModbusHelper

helper = ModbusHelper(host="192.168.1.101", port=502)

try:
    print("Servo Version:", helper.get_servo_version())
    print("Joint 1 Voltage:", helper.get_joint_voltage(1))
    print("Joint 1 Temperature:", helper.get_joint_temperature(1))
    print("TCP Position X:", helper.get_tcp_position("X"))
finally:
    helper.close()
Contributing
Feel free to open pull requests or issues to improve this library.

License
This project is licensed under the MIT License. See LICENSE for details.

