Перейти к содержанию
Drake

Mach3 Авто смена инструмента

Рекомендуемые сообщения

Здравствуйте, моча особо не использовал. Но пришлось установить так как восстанавливал старый токарный ЧПУ, а у матча есть для токарки.

Заминка вот в чем:

Нужно подключить шпиндель и револьверную головку к матчу. По шпинделю информация еще есть, а по авто смене особо никто ничего не делает :sorry:

Кто столкнулся или знает как настроить авто смену?

А именно:

Как настроить порт?

Какой сигнал подается из порта?

 

На сколько я понимаю, подается сигнал шага, но вот какой и сколько так не знаю!

 

Для управления револьверной головкой использую контроллер на pic микросхеме.

Там датчиков позиции нет, просто выставляют все резцы по очереди подали сигнал - оно прокрутило на 1 позиции, еще 1 сигнал через 30 секунд (30 секунд пауза нужна для того чтобы револьверная головка покрутилась на 1 позицию, если подать до отключения вращения - механизм не отреагирует)

 

Код получится

М6 Т1

код паузы на 30 секунд (кстати кто знает подскажите и его, чтоб не искал :lol: )

а дальше контроллер включит револьверную головку и оно провернет на 1 позицию

 

Кто может, помогите ПОЖАЛУЙСТА :help:

Поделиться сообщением


Ссылка на сообщение

Пауза задается кодом "G4 P(время в сек)"

Пример:

g4 p30

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

В Mach3 по команде смены инструмента исполняется скрипт, точнее 2 скрипта, в которые и нужно прописывать команды, или небольшую прогу на VB, обслуживающие устройство смены инструмента. Файлы лежат в папке \Mach3\macros\Mach3Turn\ M6Start.m1s и M6End.m1s. как точно это работает, пока не вникал, не дошло до этого дело.

Если кто знает поподробней, делитесь пожалуйста.

Может примеры какие есть.

Изменено пользователем gktuning

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Спасибо но я уже довольно давно разобрался с этим!

Использую макрос:

ActivateSignal( OUTPUT2 ) - включил сигнал

Sleep 1500 - 1,5 секунд сигнал включен

DeActivateSignal( OUTPUT2 ) - выключил

Code "G04 P2" - пауза на 2 секунд (нужна для установки инструмента)

 

 

Так ка в РВГ нет датчиков позиции, большего там ничего не нужно!

Для себя сделал смену инструмента с позициями!

Пик запрограммирован на длину сигнала

1 мсек - инструмент №1

2 мсек - инструмент №2

и так далие

Используется только 2 пина в порте

один выход и один вход для обратной связи

Номер инструмента считывает индуктивный датчик! поставил 3 штуки

Инструмент выбирается сочетанием, если 1 и 2 задействован - инструмент №8 и тому подобное!

Доведу до ума все сфотографирую и выложу кому будет интересно

Изменено пользователем Drake

Поделиться сообщением


Ссылка на сообщение

Спасибо, будет очень интересно посмотреть результат!

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

дабы не плодить отдельные темы, пример автосмены инструмента на токарных станках 1700вф 30, 1700Ф30У, МС1200 и тому подобных.

 

на револьверной головке станка расположены 4 микропереключатели

 

3 из них указывают позицию (двоичная система) (Mach3 INPUT1,2,3 ) , Правый крайний для синхронизации (Mach3 input 4), (когда он активен считываем код позиции)

на левой стороне револьверки, микропереключатель зажима инструмента (Mach3 OEMTrig1) , срабатывает когда инструмент зажат (после реверса двигателя)

включение двигателя по схеме (mach 3 Output1)

реверс (mach 3 Output14)

9069978866_05ea7ab665_z.jpg

 

по команде изменить инструмент:

включаем двигатель револьверки. (Mach3 Output1 ->ON)

и проверяем положение переключателей позиции и синхронизации.

данные берем только тогда когда активен input 4 (синхронизация)

если нашли наш номер,

устанавливаем двигатель (Output 1 -> OFF)

вкл. Реверс и ждем пока не сработает переключатель зажима инструмента (Mach3 OEMTrig1)

 

для этого изменяем M6Start.m1s в директории mach3\macros\Mach3Turn\

 

лист программы ниже

'_____________________________________________________

'M6Start.M1s

' Remember Lathe tools are called from the code/mdi T0606 M6 (for tool 6, offset 6) then M6.

' output 5 -pirmyn

' output 14 atgal

Sub Main()

NewTool = GetSelectedTool()

OldTool = GetCurrentTool()

MaxToolNum = 6 'Max number of tools for the changer

While NewTool > MaxToolNum

NewTool = Question ("Enter New Tool Number up to " & MaxToolNum)

Wend

If NewTool = OldTool Or NewTool = 0 Then

Exit Sub

End If

If OldTool <> NewTool Then

While Slot <> NewTool

ActivateSignal(OUTPUT5) 'start rotating forward

If IsActive(INPUT1) And Not IsActive(INPUT2) And Not IsActive(INPUT3) And IsActive (INPUT4) Then

Slot = 1

End If

If Not IsActive(INPUT1) And IsActive(INPUT2) And Not IsActive(INPUT3) And IsActive (INPUT4) Then

Slot = 2

End If

If IsActive(INPUT1) And IsActive(INPUT2) And Not IsActive(INPUT3) And IsActive (INPUT4) Then

Slot = 3

End If

If Not IsActive(INPUT1) And Not IsActive(INPUT2) And IsActive(INPUT3) And IsActive (INPUT4) Then

Slot = 4

End If

If IsActive(INPUT1) And Not IsActive(INPUT2) And IsActive(INPUT3) And IsActive (INPUT4) Then

Slot = 5

End If

If Not IsActive(INPUT1) And IsActive(INPUT2) And IsActive(INPUT3) And IsActive (INPUT4) Then

Slot = 6

End If

Wend

Sleep(100)

DeActivateSignal(OUTPUT5) 'stop rotating forward, rotate backward now

End If

Sleep(500)

ActivateSignal(OUTPUT14) ' rotating backward

Sleep(500)

While IsActive(OEMTrig1) ' kol index aktyvus

ActivateSignal(OUTPUT5)

Wend

DeActivateSignal(OUTPUT5)

Sleep(500)

DeActivateSignal(OUTPUT14)

 

SetOEMDRO(824,NewTool)

Code "G4 P2" 'A pause time of 2 seconds to give your reverse turret time to seat

While IsMoving

Wend

 

End Sub

Main

'________________________________________________

Изменено пользователем Ricard

Поделиться сообщением


Ссылка на сообщение

:good: Вот это по взрослому! :hi:

Поделиться сообщением


Ссылка на сообщение

А кто-нибудь обладает информацией, подскажите, может ли Мач в реальном времени управлять скоростью вращения шпинделя (вариант для токарного станка), для того, чтобы поддерживать одинаковую окружную (линейную) скорость при обработке детали с изменяющимся радиусом? Кто-нибудь это реализовывал на практике?

Поделиться сообщением


Ссылка на сообщение

Писал макрос для другого поиска инструмента, по большому счету двоичный код по OUTPUT1-3, сигнал для начало поиска по OUTPUT4 и ожидания ответа по INPUT1

Если по отдельности то все работает, но вот автоматом код по Т не пашет. Подскажите как осуществить, кто может.

NewTool = GetSelectedTool()

OldTool = GetCurrentTool()

MaxToolNum = 6

Select Case ToolNumber

Case Is = 1

ActivateSignal(OUTPUT3)

Sleep 1000

DeActivateSignal(OUTPUT3)

Sleep 1000

ActivateSignal(OUTPUT4)

Sleep 1000

DeActivateSignal(OUTPUT4)

Case Is = 2

ActivateSignal(OUTPUT2)

Sleep 1000

DeActivateSignal(OUTPUT2)

Sleep 1000

ActivateSignal(OUTPUT4)

Sleep 1000

DeActivateSignal(OUTPUT4)

Case Is = 3

ActivateSignal(OUTPUT2)

ActivateSignal(OUTPUT3)

Sleep 1000

DeActivateSignal(OUTPUT2)

DeActivateSignal(OUTPUT3)

Sleep 1000

ActivateSignal(OUTPUT4)

Sleep 1000

DeActivateSignal(OUTPUT4)

Case Is = 4

ActivateSignal(OUTPUT1)

Sleep 1000

DeActivateSignal(OUTPUT1)

Sleep 1000

ActivateSignal(OUTPUT4)

Sleep 1000

DeActivateSignal(OUTPUT4)

Case Is = 5

ActivateSignal(OUTPUT1)

ActivateSignal(OUTPUT3)

Sleep 1000

DeActivateSignal(OUTPUT1)

DeActivateSignal(OUTPUT3)

Sleep 1000

ActivateSignal(OUTPUT4)

Sleep 1000

DeActivateSignal(OUTPUT4)

Case Is = 6

ActivateSignal(OUTPUT1)

ActivateSignal(OUTPUT2)

Sleep 1000

DeActivateSignal(OUTPUT1)

DeActivateSignal(OUTPUT2)

Sleep 1000

ActivateSignal(OUTPUT4)

Sleep 1000

DeActivateSignal(OUTPUT4)

End Select

While Not isActive(INPUT1)

sleep 100

Wend

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Мы тоже прикрутили к Mach3Turn револьверную голову (турель). Не без сложностей, но прикрутили.

 

Отмечу главное, на что нам пришлось выяснять путем проб и ошибок и потом бороться с этим:

 

1) команда Sub останавливает исполнение программы, почему так и неясно.

2) Exit Sub без вводной команды Sub РАБОТАЕТ

3) Естесственно, необходимо соблюдать синтаксис (типа, правописание), это для нас, не программистов,

было главной сложностью, так как синтаксис нечетко описан в мануалах. Мы использовали два мануала -

один по программированию для Mach3, другой по Cypress Enable, версии VВ, используемой в Mach3.

Оба - на англ., нужны кому? Выложу, если да.

4) Выявилось несоответствие номеров физических номеров выходов на плате MODBUS (пр-ва Purelogic)

описанию в документации, поэтому пришлось переустанавливать настройки входящих сигналов в Mach3

5) Хотя блок штатный датчиков положения турели имеет осевую регулировку, точно его выставить не удалось

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

Но(О, чудо!) мы смогли выставить компенсирующие паузы срабатывания останова вращения турели

программным способом (команда sleep() ).

6) логика опроса датчиков положения немного другая, нежели у коллеги Drake в вышеприведенном макросе,

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

7) наконец, главное, с чем не сразу разобрались - команда смена инструмента (m6 или m06) должна далее содержать

декларацию инструмента (через T), так вот, сразу после T идет ряд цифр, в простом варианте - 0, затем однозн номер

инструмента, затем опять 0, и числовое значение оффсета инструмента (например: T0402 - инструмент 4, оффсет 2).

Выяснилось, что неважно сколько цифр стоит после T, последние 2 цифры - всегда значение оффсета, а оставшиеся -

номер инстумента. Примеры: Т4509 - означает инструмент 45, оффсет 09. Т00890 - инструмент 8, оффсет 90.

Т15008 - инструмент 150, оффсет 8. Обратный пример: если номер инструмента 5, то команда будет выглядеть так:

- M6 T500 или M6 T0500 (последние два ноля - оффсет, следовательно мак3 правильно понимает, что требуемый

инструмент - 5 (05, что одно и тоже)...

Почему это все обьясняю? Да потому, что пока не дашь корректно команду M6T****, выполняться она не будет, макрос

m6start.m1s при вводе команды в формате "M6T4" не запускался у нас.....

 

В конце, после опр паузы, примерно 0,5 сек, мы включили в программу проверку состояния входов, для определения,

в правильном, нужном ли положении стоит турель и при несоответствии текущего программного (getcurrenttool()

инструмента и реального датчика турели, включается E-stop и выдается сообщение. Если соответсвие имеет

место быть - выход из макроса с извещением о корректности и номером положения турели.

 

Как-то так. Чуть позже выложу макрос и видео работы турели.

Изменено пользователем PeterPan

Поделиться сообщением


Ссылка на сообщение

Забыл написать, что логика реверса турели и его (реверса) отключения нами реализована помимо Mach3/

Мы использовали 2 магнитных пускателя, с набором как NO так и NC пар контактов. При выключении вращения

(это делает Mach3), один пускатель выключается, включая собой другой, через который фазы идут на тот же мотор

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

по факту зажима турели. Все, система приходит в исходное состояние, Mach3 видит два входящих сигнала -

1) датчик положения турели 2) концевик зажима.

 

Концевик зажима применен с двумя независимыми парами контактов - одна NO (это датчик для Mach3),

другая NC (это выключатель реверса/зажима).

 

--------------------------------

*) NO - нормально разомкнуто, NC - нормально замкнуто

Поделиться сообщением


Ссылка на сообщение

Добрый день!!! Перечитал форум по данной теме, на счет макроса вроде как понятно более или менее, но на счет "железа" немного непонятно. Какой тип контроллера нужно установить, чтобы управлять 2 шаговыми двигателями (на осях) и при этом автоматизировать смену инструмента (револьверная головка)?

Поделиться сообщением


Ссылка на сообщение

PeterPan, Добрый день.

Можно пообщаться с Вами в личке?

Поделиться сообщением


Ссылка на сообщение

вот и я у себя замутил револьверную головку

для мелочевки в серии оказалась очень полезная вещь!

управление под mach3 ,использован скрипт выложенный выше форумчанином с ником Ricard,за что ему СПАСИБО!

правда пришлось скрипт чуть подправить(слава Богу сын в этом шарит!) ,у меня концевики положения резцов все заведены в дополнительный лпт порт

повторяемость деталек получилась по X +- пол сотки ,что меня очень порадовало

post-41013-092180500_1501492075_thumb.jpg

post-41013-096744100_1501492130_thumb.jpg

post-41013-075860200_1501492209_thumb.jpg

post-41013-053890100_1501492484_thumb.jpg

post-41013-028600700_1501492649_thumb.jpg

post-41013-053325500_1501492785_thumb.jpg

post-41013-047886900_1501492964_thumb.jpg

Поделиться сообщением


Ссылка на сообщение
Дата: (изменено)

Здравствуйте, подскажите, пожалуйста, а как прописать в макросе вращение револьверной головы не от АИРа или РД-шника, а от ШД. Поясню задачу. у меня точно такая же револьверная головка и блок управления 4-мя осями. Вместо РД-09 я установил ШД и подключил его к выходу оси "А", но теперь нарвался на проблему, что если я прописываю

If OldTool <> NewTool Then

While Slot <> NewTool

Code "G1 F80 A-2.5" 'start rotating forward

If IsActive(INPUT1) And Not IsActive(INPUT2) And Not IsActive(INPUT3) And IsActive (INPUT4) Then

он пока не прокрутит ось "А" на заданную величину (-2,5), дальше программу и условия "If" вообще не рассматривает. А как запустить вращение двигателя и, что бы, при этом выполнялись остальные условия программы (проверка слота) - не знаю.

Изменено пользователем Shurup89

Поделиться сообщением


Ссылка на сообщение

Что, не хотите отвечать???

Ну и не надо, тогда сам расскажу, как решил данную задачу, может кому пригодится

Использовал я пневматическую голову, установив на неё датчики следующим образом

IMG_E2874.JPG 

IMG_E2876.JPG 

IMG_E2877.JPG 

IMG_E2878.JPG 

IMG_E2879.JPG 

Поделиться сообщением


Ссылка на сообщение

Макрос получился следующий:

Sub Main()                                                                                                                                                

NewTool = GetSelectedTool()                                                                                      

OldTool = GetCurrentTool()                                                                                       

MaxToolNum = 6 'Max number of tools for the changer                                              

If NewTool > MaxToolNum Then                                                                                

Code "(Всего 6 инструментов, дебил)"                                                                   
Exit Sub                                                                                                                      

End If                                                                                                                           

If NewTool = OldTool Or NewTool = 0 Then                                                               

Exit Sub                                                                                                                     

End If                                                                                                                          

If OldTool <> NewTool Then                                                                                      


If IsActive(INPUT1) And IsActive(INPUT2) And IsActive(INPUT3) And IsActive (INPUT4) Then        

Slot = 1                                                                                                                                      

End If                                                                                                                                         

If Not IsActive(INPUT1) And IsActive(INPUT2) And IsActive(INPUT3) And IsActive (INPUT4) Then        

Slot = 2                                                                                                                                      

End If                                                                                                                                          

If Not IsActive(INPUT1) And Not IsActive(INPUT2) And IsActive(INPUT3) And IsActive (INPUT4) Then   

Slot = 3                                                                                                                                      

End If                                                                                                                                         

If IsActive(INPUT1) And Not IsActive(INPUT2) And Not IsActive(INPUT3) And IsActive (INPUT4) Then   

Slot = 4                                                                                                                                    

End If                                                                                                                                          

If IsActive(INPUT1) And IsActive(INPUT2) And Not IsActive(INPUT3) And Not IsActive (INPUT4) Then   

Slot = 5                                                                                                                                       

End If                                                                                                                                        

If IsActive(INPUT1) And IsActive(INPUT2) And IsActive(INPUT3) And Not IsActive (INPUT4) Then       

Slot = 6                                                                                                                                      

End If                                                                                                                                          

End If                                                                                                                                          

If Slot < NewTool Then                                                     

A1 = NewTool * 0.5 - Slot * 0.5                                        

Code "(1111)"                                                                    
End If                                                                                

If Slot > NewTool Then                                                      

A1 = MaxToolNum * 0.5 + NewTool * 0.5 - Slot * 0.5         

Code "(2222)"                                                                     

End If                                                                                  

ActivateSignal(Output4)                                                      
  Sleep (1000)                                                                    

If GetOemLed (825) <> 0 Then                                       
  Code "(Не сработал датчик язычка)"                          
  Code "M30"                                                                     
Else                                                                                   

Code "G1 G91 F80 A" & -1*A1'start rotating forward        

While IsMoving()                                                                

Wend                                                                                  

Code "G91 G1 F80 A0.2" ' rotating backward                    

While IsMoving()                                                                 

Wend                                                                                 

End If                                                                                   
DeActivateSignal(Output4)                                                 
  Sleep (2000)                                                                      

SetOEMDRO(824,NewTool)

End Sub                                                 

Поделиться сообщением


Ссылка на сообщение

текстовик с пояснениями прикрепить не получается, если кому-то нужен - пишите в личку, вышлю или смотрите поподробней на моей страничке https://vk.com/shurup_89ru

 

Поделиться сообщением


Ссылка на сообщение

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу


×
×
  • Создать...

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.