# AMI-tcp

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

## Установка

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

```bash
pip install aim-tcp
```
## Подключение
```python
# Создаем объект робота с нужным IP и портом
robot = ModbusRobot(ip="192.168.1.50", port=502)
```
## Основные методы
Запись в один регистр (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=5)
```
Рисование круга в плоскости XY
```python
robot.run_circle_XY_motion(X0=300, Y0=500, Z0=1200, R=100, delay_ms=2, repeat_count=5)
# Выполнит круг 5 раз с задержкой 2мс
```
Функция 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/)