"ПРОЕКТ 611"
Токарный станок ИЖ 1И611П - вторая жизнь....

МОТОЛаборатория
Проект, Дизайн, Изготовление
Спасибо ЗАО "Завод мехатронных изделий"

СПШ – «ЗМИ».

заготовки

Токарный станок на приводах СПШ

1.1.        Задача

Изготовление 2000 заготовок простой формы на токарном станке. Кроме этого желательно снизить участие оператора до минимума, с целью уменьшения себестоимости заготовки.

 

1.2.        Решение

Приемлемым решением будет автоматизированный станок, для работы которого оператор будет менять заготовку с использованием пневмо зажимом.

Так как ЧПУ под рукой не оказалось (или в качестве эксперимента, или по какой-либо еще причине) взяли за основу приводы СПШ и попытались реализовать данную задачу исключительно на их основе, т.е. без использования внешнего контроллера.

Действительно ведь приводы СПШ имеют встроенный многофункциональный программируемый логический контроллер (ПЛК), внутреннюю энергонезависимую память общего назначения и возможность синхронизации между собой по цифровой шине, а также наличие портов ввода вывода.

1.2.1.      Концепция

Концептуально опишем алгоритм работы системы. Алгоритм состоит из двух частей: выход в 0 и рабочий цикл. Опишем каждый из них подробнее:

1.      После подачи питания на приводы каждый из них должен автоматически выполнить поиск нуля по упору.

2.      После этого обязательно выполняется поиск Z метки. Данная функция позволяет повысить точность определения 0 до одной дискреты. В отличие от выполнения поиска нуля по упору или концевику, обеспечивающие точность не более 1 мм.

3.      Далее выполняется перемещение в нулевое положение детали.

4.      Станок готов к работе.

 

Рабочий цикл:

1.      Начало цикла задается путем нажатия кнопки оператором. Кнопка пуска при этом заводим на порт ввода одного из приводов.

2.      Перед началом обработки запускаем шпиндель. Аналоговый вход управления у нас также подключен к порту вывода одного из приводов, который может генерировать ШИМ сигнал.

3.      Далее приводы пошагово считывают из энергонезависимой памяти программ (каждый из своей) циклограмму движения и отрабатывают ее. По окончанию отработки каждого шага приводы синхронизируются между собой.

4.      По завершению обработки осуществляется отвод инструмента, выключается шпиндель и система вновь переходит в режим ожидания нажатия кнопки старта.

1.2.2.      Реализация

По шаблону, предоставленному тех поддержкой компании Сервотехника: были составлены программы выхода в 0 и программы, отрабатывающей рабочий цикл.

Табл. 1. Программа выхода в 0 для оси X.

Код

Комментарии

W=20

На небольшой скорости перемещаемся в сторону концевика

WAIT(I>150)

В качестве концевика у нас используется упор. Поэтому выполняем движение пока значение усредненного тока, вырабатываемого приводом не превысит 150 дискрет (это примерно в 3 раза больше, чем средний ток при движении на хх с данной скоростью)

#rst_pos_i(0)

Поиск Z метки с аргумент 0 - против часовой (в направлении обратном движению в сторону концевика

D=2000

Просто задержка для оценки

P=-58645,W=800

Смещение в 0 детали

WAIT(P=-58645)

Ожидаем завершения смещения

PCUR=0

Обнуляем координату. Здесь у нас 0 детали.

P=16000

Отвод от инструмента

WAIT(P=16000)

Ожидаем завершения смещения

PROGRAM 1

Переходим к рабочей программе

 

Табл. 2. Аналогично для оси Z. Отличие только в направлениях движения, развиваемых токах и смещениях детали.

Код

Комментарии

W=-20

 

WAIT(ABS(I)>400)

 

#rst_pos_i(1)

 

D=3000

 

P=48425,W=300

 

WAIT(P=48425)

 

PCUR=0

 

P=-4000

 

WAIT(P=-4000)

 

PROGRAM 1

 

 

Табл. 3. Рабочая программа оси X.

Код

Комментарии

IF(X=0)

Переменная X равна 0 только в начале цикла, тогда

  WAIT(P_IN.0=0)

Ожидание нажатие кнопки начала цикла (При этом порт привода 0 принимает значение 0)

  $eeprom_mas_i=0

Индекс массива энергонезависчимой памяти переводим в начало массива

ENDIF

 

SEND(3,21,X)

Синхронизация осей (передаем команду 21 по шине CAN узлу с адресом 3)

Y=$eeprom_mas

Считываем позицию из энергонезависимой памяти в переменную Y

Z=$eeprom_mas

Считываем скорость из энергонезависимой памяти в переменную Z

P=Y,W=Z

Устанавливаем задание привода по позиции и ограничиваем скорость

WAIT(P=Y)

Ожидание завершения отработки задания по позиции

X=X 1

Индекс итерации

IF(X>27)

На 27 итерации завершаем работу и переходим в начало цикла

  X=0

 

ENDIF

 

GET(3,20,Y)

Ждем пока узел с адресом 3 (В нашем случае это ось Z) также завершит отработку текущей итерации

REPEAT

Повторим программу

 

Табл. 4. Рабочая программа оси X.

Код

Комментарии

IF(X=0)

Переменная X равна 0 только в начале цикла, тогда

  io7=100

 * Параметр привода io7 определяет скваженность сигнала ШИМ, который выводится на порт вывода 1. Другими словами выделенный участок кода - это плавное уменьшение ШИМ сигнала (плавный останов шпинделя, чтобы не перегрузить тормозной резистор небольшой мощности)

  D=1000

*

  io7=50

*

  D=1000

*

  io7=0

*

  D=1000

*

ENDIF

 

GET(1,21,Y)

Ждем когда ось X пришлет команды начала текущей итерации

IF(X=0)

Переменная X равна 0 только в начале цикла, тогда

  $eeprom_mas_i=0

Индекс массива энергонезависчимой памяти переводим в начало массива

  io7=160

Включаем шпиндель на полную мощность

  D=3000

Ждем 3 секунды завершения выхода шпинделя на номинал

ENDIF

 

Y=$eeprom_mas

Считываем позицию из энергонезависимой памяти в переменную Y

Z=$eeprom_mas

Считываем скорость из энергонезависимой памяти в переменную Z

P=Y,W=Z

Устанавливаем задание привода по позиции и ограничиваем скорость

WAIT(P=Y)

Ожидание завершения отработки задания по позиции

X=X 1

Индекс итерации

IF(X>27)

На 27 итерации завершаем работу и переходим в начало цикла

  X=0

 

ENDIF

 

SEND(1,20,X)

Отправляем команду завершения итерации

REPEAT

Повторим программу

 

Очень удобно, что разработанный программы универсальны и не требуют изменений для обработки множества деталей. Достаточно лишь обновить таблицы в осях.

 

Как  уже понятно из программ таблица энергонезависимой памяти представляет собой попеременное чередование позиции и скорости.

Ниже представлена таблица для двух осей.

Табл. 5. Таблица перемещений для двух осей.

X

Z

Комментарии

0

0

Поз

800

300

Скорость

0

140

Поз

800

300

Скорость

-16600

140

Поз

40

300

Скорость

-16600

-100

Поз

40

300

Скорость

0

-100

Поз

800

300

Скорость

0

240

Поз

800

300

Скорость

-16600

240

Поз

40

300

Скорость

-16600

-100

Поз

40

300

Скорость

0

-100

Поз

800

300

Скорость

-1000

-100

Поз

800

300

Скорость

-1000

3400

Поз

800

10

Скорость

0

3400

Поз

800

10

Скорость

0

200

Поз

800

300

Скорость

-1800

200

Поз

50

300

Скорость

-1800

3400

Поз

800

10

Скорость

0

3400

Поз

800

10

Скорость

0

200

Поз

800

300

Скорость

-2600

200

Поз

50

300

Скорость

-2600

3400

Поз

800

10

Скорость

0

3400

Поз

800

10

Скорость

0

200

Поз

800

300

Скорость

-3400

200

Поз

50

300

Скорость

-3400

3400

Поз

800

2

Скорость

0

3400

Поз

800

50

Скорость

0

0

Поз

800

300

Скорость

-5460

-220

Поз

300

150

Скорость

-360

680

Поз

20

5

Скорость

16000

-4000

Поз

800

300

Скорость

 

Признаюсь честно таблицы составлял в excel-е  в полуручном режиме, поэтому отладка прогарммы заняла довольно продолжительное время. Однако процесс можно автоматизировать написав не сложный конвертор G кодов, который бы генерил из кодов G0 G1 таблицы требуемого формата. Альтернативный вариант – это написать графический интерфейс для разработки программ движения в графике. (Но это, я думаю, разработает какой-нибудь другой энтузиаст и поделится с нами своим опытом, а лучше исходниками J ).

Прилагаю также файлы настроек экспортированные из осей X, Z.




фрезерная обработка

 

Назад Вперед