Metadata-Version: 2.4
Name: AIM-tcp
Version: 0.0.6
Summary: Modbus TCP client for robot control
Project-URL: Homepage, https://gitlab.com/lofolo56/ami-tcp
Author-email: Ivan Voronin <lofolo56@gmail.com>
License-File: LICENSE
Keywords: automation,industrial,modbus,robot,tcp
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# AIM-tcp

Modbus TCP клиент для управления роботами CHAIFU и АИМ. Библиотека предоставляет простой интерфейс для чтения и записи регистров по протоколу Modbus TCP.

## Установка

Установка через пакетный менеджер [pip](https://pip.pypa.io/en/stable/).

```bash
pip install aim-tcp
```
## Подключение
```python
import aim-tcp
# Создаем объект робота
robot = ModbusRobot()
```
# Основные методы
## Запись в один регистр (16 бит) (FC06)
Стандартный регистр Modbus вмещает только 16 бит (максимум 65 535)
```python
robot.send_modbus_tcp(register=0x08, value=1) #записываем 1 в 8й регистр 
```
## Запись 32-битного значения (FC10)
Запись значения в два регистра
```python
robot.send_modbus_tcp_32bit(start_register=0x02, value=150000)
# Для числа 150000 (в шестнадцатеричном виде это 0x000249F0):
# High Word (Старшее слово): (150000 >> 16) = 2 (0x0002)
# Low Word (Младшее слово): 150000 & 0xFFFF = 18928 (0x49F0)
```
## Чтение регистров (FC04)
```python
robot.read_modbus_tcp_registers(register=0x01, count=12)
```
## Функция run_circle_motion 
Математика использует векторы для перемещения по окружности в 3D пространстве. Векторы vector_u и vector_v должны быть ортогональны (их скалярное произведение равно нулю)  
Плоскость XY (горизонтальная вдоль оси Z):
```vector_u = (1, 0, 0), vector_v = (0, 1, 0)```  
Плоскость XZ (вертикальная вдоль оси X):
```vector_u = (1, 0, 0), vector_v = (0, 0, 1)```  
Плоскость YZ (вертикальная вдоль оси Y):
```vector_u = (0, 1, 0), vector_v = (0, 0, 1)```  
Наклонная плоскость: задайте два вектора, которые лежат в нужной плоскости и перпендикулярны друг другу.
```python
robot.run_circle_motion(X0=300, Y0=500, Z0=1200, R=100, delay_ms=2, vector_u=(1, 0, 0), vector_v=(0, 0, 1), repeat_count=2)
```

## Примечание: 
Библиотека разработана для работы с промышленными роботами, поддерживающими протокол Modbus TCP. Протестирована на оборудовании АМИ М25-Д1830.

## Лицензия

[MIT](https://choosealicense.com/licenses/mit/)