Ощим дальше больше. Написал ТЗ, выкладываю на обозрение
может кто что подскажет
Распиновка.
В mesa0 configure-board
GPIO-48 Физические концы осей Все пределы
GPIO-49 Пуансон разжат
GPIO-50 Датчик Y
GPIO-51 Матрица фиксирована
GPIO-52 Датчик Х
GPIO-53 Матрица разжата
GPIO-54 Пуансон фиксирован
GPIO-55 Датчик Z
GPIO-56 бойница левая на изготове
GPIO-57 Кнопка зажим (разжим)
GPIO-58 бойница правая на изготове
GPIO-59 пневмозажим дальний
GPIO-60 шток нуля листа
GPIO-61 пневмозажим ближний
GPIO-62 кнопка СТОП
GPIO-63 датчик колена
OUT-64 главный двигатель
OUT-65 левая бойница пуск
OUT-66 правая бойница пуск
OUT-67 захват листа
OUT-68 зажим разжим матрицы
OUT-69 перехват зажим
Алгоритм работы пресса.
У пресса есть 2 точки удара, правая и левая. На чертеже ползун 1 и ползун 2
Вопрос стоит в том, что стоит ли под каждую делать свою систему координат? Например в g54 работает ползун 1 а в g55 ползун 2. На мой взгляд удобно, хотя к нашему делу задания особого не имеет.
Мне нужно сконфигурировать правильно сигналы вот в этой таблице:
Если с пределами все понятно, то как быть с техническими сигналами типа: матрица зажата или разжата, чем их указывать?
Еще надо присвоить всем OUT некие M коды что бы можно было ими управлять. Я присвою гипотетически
OUT-64 главный двигатель M3-M5 вкл выкл
OUT-65 левая бойница пуск M6-M7 вкл выкл
OUT-66 правая бойница пуск M8-M9 вкл выкл
OUT-67 захват листа M10-M11 вкл выкл
OUT-68 зажим разжим матрицы M12-M13 вкл Вкл
OUT-69 перехват зажим M14-M15 Вкл выкл
Работа
Если нажимается кнопка выполнения работы, то:
1) Проверяем фиксирована ли матрица GPIO-51
2) Фиксирован пуансон GPIO-54
3) Ползун1 на изготове GPIO-56
4) Ползун2 на изготове GPIO-58
5) Пневмозажимы перехвата GPIO-59 и GPIO-61 не подают сигнала
6) Кнопка стоп GPIO-62 отпущена
7) Шток нуля листа опущен GPIO-60
8) Матрица и пуансон зажаты OUT-68 вкл
9) Лист захвачен OUT-67 вкл.
После проверки запускаем главный двигатель и ждем 5 секунд на раскрутку за тем приступаем к выполнению кода.
Вида:
M3s700 //включить главный двигатель и ожидать 5 секунд
T1 // установить инструмент №1
G54G0x100y100 //идем по координатам ползуна1
m6 //удар ползуном1
G54G0x200y200 //идем по координатам ползуна1
m6 //удар ползуна1
G55G0x100y100 //идем по координатам ползуна2
M8 //удар ползуна2
G55G0x200y200 //идем по координатам ползуна2
M8 //удар ползуна2
T2 //смена инструмента №2
G54G0x150y150 //идем по координатам ползуна1
m6//удар ползуна1
G54G0x250y250//идем по координатам ползуна1
m6//удар ползуна1
G55G0x150y150//идем по координатам ползуна2
M8//удар ползуна2
G55G0x250y250//идем по координатам ползуна2
M8 //удар ползуна2
M14 //включаем зажим листа для перехвата
M11 //отпускаем захват листа
G54x400 //отбегаем для перехвата
G92g54x0 //обнуляем координаты
M10 // захватываем лист
M15 //отпускаем зажим перехвата
Продолжаем программу
Смена Инструмента
Я ни разу не реализовывал смену инструмента, потому постараюсь объяснить как я вижу. У каждого инструмента есть своя позиция, она в ротации 360”. Не уверен, как это реализовывается точно, но по всей видимости заданием координат по Z и после приращением на заданную величину. Пример полный оборот барабана имеет условно 360000 точек на энкодере, предположим, что каждый инструмент равно удален друг от друга и их 36 штук. Значит на смену инструмента в 1 сторону требуется 10000 точек, соответственно первый инструмент имеет координату 0, второй 10000 третий 20000 и тд. После оборота первый инструмент будет иметь координату 370000 (так ли это реализовывается?) Или требуется возврат в 0.
Алгоритм смены инструмента: T коды
При получении команды на смену инструмента Посылается сигнал на OUT-68 разжим матрицы и пуансона. Если GPIO-49 и GPIO-53 подают сигнал вкл о разжатии матрицы значит поворачиваем Z до нужного значения и выключаем OUT-68. После этого проверяем, что датчики GPIO-51 и GPIO-54 подали сигнал вкл о фиксации можем продолжать программу.
Алгоритм OUT-69 перехват зажим M14-M15
Если подан сигнал M14 то включаем выход OUT-69 и контролируем что бы GPIO-61 и GPIO-59 выдали сигнал вкл, после этого можем продолжать. При М15 ситуация точно противоположенная GPIO-61 и GPIO-59 не выдают сигнала.
Алгоритм Удара любой из бойниц.
Если поступил сигнал M6 считываем датчик GPIO-58 и если он вкл то дожидаемся сигнала от датчика GPIO-63 по его верхнему фронту запускаем таймер (Т1) и ждем 0,1 секунды, после этого выдаем сигнал на OUT-65 и ставим его на самопитание. По верхнему фронту OUT-65 запускается таймер (Т2) на 0.2 секунды и снимаем OUT-65 с самопитания, после этого ждем сигнал от GPIO-58 и по его верхнему фронту понимаем что цикл закончен.
Такой же алгоритм для левой бойницы только датчик один другой и таймера другие.
Если поступил сигнал M8 считываем датчик GPIO-56 и если он вкл то дожидаемся сигнала от датчика GPIO-63 по его верхнему фронту запускаем таймер (Т3) и ждем 0,15 секунды, после этого выдаем сигнал на OUT-66 и ставим его на самопитание. По верхнему фронту OUT-65 запускается таймер (Т4) на 0.25 секунды и снимаем OUT-65 с самопитания, после этого ждем сигнал от GPIO-56 и по его верхнему фронту понимаем что цикл закончен.
Запрещено перемещать оси X и Y если:
1) GPIO-49 вкл
2) GPIO-53 вкл
3) GPIO-56 выкл
4) GPIO-58 выкл
5) GPIO-60 вкл
6) GPIO-62 вкл
Запрещено перемещять ось Z если:
1) GPIO-54 вкл
2) GPIO-51 вкл
Алгоритм Зажатия листа:
При нажатии кнопки GPIO-57 подается питание на OUT-67 и он встает на самопитание до повторного нажатия GPIO-57
Вроде все. ))))