Перейти к публикации

Smith2007

ПРОФИ
  • Публикации

    185
  • Зарегистрирован

  • Посещение

  • Дней в лидерах

    13

Сообщения, опубликованные пользователем Smith2007


  1. Какой-то глюк на форуме. Вдруг фото продублировалось 3 раза. Поправьте если возможно. Мне уже не дает редактировать.

    Линзы на станке меняются часто. В зависимости от задачи. С фокусом от 73мм до 420мм. 

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


  2. На очереди автофокус.

    Застопорился на выборе датчика. Точнее на диапазоне измеряемых расстояний.

    Из того, что доступно на алике это:

    65-135 мм (погрешность 0,1мм)

    200-600 мм (погрешность 0,8 мм)

    Пока склоняюсь к первому. Хотя не очень удобно при работе с линзой F315 мм

     

    Что думаете?

    image.png

     

     


  3. Проект получил неожиданное продолжение.

    В процессе работы, бывают довольно длинные задания. Иной раз доходят до 40 минут. Безусловно сидеть на против станка и пялится на блуждающий огонек нет ни какого смысла. Можно заняться более продуктивным времяпровождением.

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

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

    В общем давно уже меня это не устраивало и все дума как бы сей процесс автоматизировать.

    Началось изучение возможностей контроллера управления маркером

    2022-05-23_14-10-15.thumb.jpg.e1e96cf9407548a73048364a3822af8e.jpg

    На разъеме DB15 нашел программируемые входы и выходы

    2022-05-23_14-10-55.jpg.8f34fadad203b165c3e188caf397ab72.jpg

    В настройках EzCad2  можно их сконфигурировать на вывод сигналов.

    2022-05-23_13-41-56.thumb.png.e0db419be43de2470409f1cfb9a38267.png

     

    Ну а далее завел эти сигналы на ПЛК, дописал 4 строки кода и задача решена!

    Для управления нагрузкой 220В - использовал твердотельное реле .

    Вот что получилось

     

     

    Меня не покидает желание запустить 3Д гравировку.

    Среди плагинов нашел "Гравировка по событию". В первом приближении это может помочь. Но я не смог с ним до конца разобраться.

    Так же в EzCad2 пристутствует пункт "Нарезка stl модели на слои". Но я так же не смог с ней разобраться как она работает либо у меня просто не подходящая версия EzCad 2.7.6.

    Предположим, что мы нарежем STL на слои с шагом 1 мм. Полученные вектора выгрузим в dxf и на их основе сформируем задания для маркера. По каждому слою задание сохраняем в отдельные файлы.

    Затем запускаем обработку первого файла и ждем окончания цикла. По окончании опускам Z на 1мм ниже (или на ту величину с которой нарезали stl) и запускаем следующий файл. И так далее.

    В идеале конечно это написать свой плагин для этого, но по предварительной информацией для этого потребуется не 1 тыс зеленых денег, что меня несколько огорчило.

    Может есть у кого идеи на этот счет?

    • Upvote 1

  4. 4 часа назад, ЛазерДизайн сказал:

    для резки один раз в месяц десятка безделушек из 0,5 мм нержи...

    На такой объем нет смысла в станке. Согласен. Гораздо проще раз в месяц отправить на резку в компанию, что имеет соответствующее оборудование. Это будет наиболее эффективно.

    зы. это мое личное мнение. 


  5. 1 час назад, ЛазерДизайн сказал:

    кислородом 130 труба режет 1,5 мм на скорости 10

    Вы серьезно?

    Но даже если это правда - 10 мм/сек - это слезы. 

    И нержавка - это не чернуха и режется гораздо труднее.

    Если есть задача резать металл - нужно станок для резки металла. Я придерживаюсь такого мнения. В конечном счете цель - заработать. Но как можно зарабатывать когда у Вас себестоимость работы запредельная?

     


  6. Вам нужно 2 разных станка. Для резки неметаллов СО2 лазер.

    Для резки нержавки - волоконный лазер (1064 нм)

    И не верьте тем, кто говорит, что на СО2 можно резать металл. Себестоимость такого реза будет запредельной и не конкурентной даже близко к волоконным лазерам.

    Что бы резать с приемлемой скоростью 1 мм нержавки - достаточно 1 кВт лазера.

     

    зы. Сталь3 до 5мм можно порезать на 1 кВт в кислородной среде.

    Нержавку резать лучше в азотной среде.


  7. Дополню по опыту эксплуатации:

    Распределители бронзовые текут. При чем перепробовал разные. Все текут.

    Поставил краник как Павел приводил ссылку. Держит 3ий месяц. За время эксплуатации с апреля масло еще не доливал в бак. Примерно раз в 2 недели протираю направляющие от излишков масла.

    Вывод: Все получилось. Со смазкой теперь полный порядок.


  8. Фрезер дергался сильно. Не понимал причину. Просто обнулил стартовую скорость. Стал плавно работать. Не думаю, что это сильно на производительность повлияет. Ускорения достаточно высокие.

    Так же и в этом случае, возможно поможет. Хотя у меня гибриды.


  9. 1 час назад, Dan сказал:

    Нормальное значение при 10000 пульсах на оборот

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


  10. 2021-11-11_22-24-41.jpg.d6817e2705737eb59cc928552cc2d7fd.jpg

     

    Меня одного смущает это значение?

    Как его определили?

    Если автор уверяет, что геометрия станка норм, то эти значения нужно вычислить.

    Кроме того заявление о том, что в разных местах поля по разному ошибка проявляется - говорит все же о кривом портале.

    В 2Д можно проверить самим станком. Но нужны инструменты, что бы проверить параллельность направляющих.

    Я бы по сделал импульсы на фанере в точках прямоугольника с максимально возможными размерами (по размеру поля) и замерил диагонали.

    Сравнил их с вычисленными математически.

    Что касается значения "длина шага": Вычислить. ШД скорее всего 200 импульсов на оборот. Далее смотрим редуктор. Передаточное отношение можно посчитать по количеству зубьев. Умножить это все на дробление шага и рассчитать.


  11. Думаю не проще. Как минимум нужно было писать какой-то графический интерфейс, разбираться с форматом команд на модбас или uart. Я посчитал это лишней тратой времени. Тут все готовое. Только алгоритм дописать.

    Хотя возможно есть полноценные эмуляторы этих панелей. Я просто не интересовался.


  12. Постепенно подхожу к финалу...

     

    2021-10-14 20-41-05.JPG

     

    2021-10-15 13-24-12.JPG

    Как всегда - аппетит растет во время еды :)

    Жду MPG пульт. Когда тонко настраиваешь высоту не очень удобно использовать кнопки панели. Решил добавить управление с выносного пульта.

    А в будущем и координатный стол допилить X, Y и так же вывести на пульт. А там и до управления G кодами не далеко :)

    • Upvote 1

  13. Всем привет!
    Есть идея добавить функцию автофокуса на автоматизированную колонну.
    Для точного определения расстояния, датчик (вероятно тоже лазерный) должен быть расположен строго перпендикулярно поверхности детали. Но перпендикулярно установить на линии центра сканатора не получится. 
    Вопрос: Что если расположить датчик с некоторым смещением (X, Y относительно оси сканаторной головы)? Например на боковой стенка сканатора. Но в этом случае для определения высоты нужно будет сначала заготовку под этот датчик завести. Что думает сообщество?

    • Upvote 1

  14. Эта проблема возникает на первом цикле выполнения программы

    2021-10-03_02-00-29.jpg.05a73eafbecd50e5c2da091a3f456f2a.jpg

    Маркер M0 - при старте всегда False. Он не имеет памяти.

    Регистр D0 так же не имеет памяти. При страте = 0.

    Т.е если правильно читать код до D0 должен быть равен 0. 

    Однако из-за ошибки первого цикла D0 = 1. 

    И на последующих циклах D0 = 1

     

    INC(EN, Var);  - инкрементный счетчик. EN - сигнал разрешения инкремента

    Пример2

    2021-10-03_02-09-00.jpg.c4833673ef482edc14fda62042fe1966.jpg

    Синий INC(M8000, D3)  M8000 - сигнал что ПЛК в режиме RUN

    Видно, что условие IF исполнилось на 1ом цикле.

    При этом D1 осталось равно 0, хотя тоже проверяет условия M0

    D2 = 1 так ка на первом цикле маркер M8002 = true

    И последняя строка идет непрерывный инкремент

     


  15. Операторы IF, CASE  при старте программы исполняются не верно. 

    Следующий код, где условие равно FALSE - операция выполняется при старте программы

    IF (Условие) THEN

     Операция;

    END_IF;

     

    Но не все так плохо. Наличие различных функций содержащих встроенное условие позволяют практически отказаться от конструкций IF.

    Что собственно я и сделал. И пересобрал прошивку

    (*******************************************************************************************
    Входы/Выходы
    X0 - Сигнал датчику нуля оси Z
    Y0 - STEP. Выход на драйвер ШД
    Y4 - DIR. Выход на драйвер ШД

    Регистры
    M0            Bit Fix            Запускает/останавливает движение по заданным координатам 
    M1            Bit Act        Ручное движение вверх
    M2            Bit Act        Ручное движение вниз
    M3            Bit Fix            Режим скорости ручного перемещения (0 - медленно S1, 1 - быстро S)
    M4            Bit Act        Корректировка высоты заготовки
    M5            Bit Fix            Поимк нулевой точки
    M8            Bit Fix            Отключение лимитов при ручном движении

    D9            DWORD        Уставка Z в импульсах
    D128        INT                Высота стола (0.1 мм)
    D132        INT                Высота заготовки (0.1 мм)
    D136        INT                Количество импульсов на 1 мм перемещения по оси Z
    D140        INT                Скорость движения по оси Z (мм/сек). Автоматический режим
    D142        INT                Скорость движения по оси Z (мм/сек). Ручное управление
    D144        INT                Текущая координата Axis Z (0.1 мм)
    D148        INT                Текущая высота от заготовки до линзы Work Z (0.1 мм)
    D152        INT                Текущий номер линзы Lens (1..4)
    D156        INT                Фокусное расстояние линзы F1 (0.1 мм)
    D160        INT                Фокусное расстояние линзы F2 (0.1 мм)
    D164        INT                Фокусное расстояние линзы F3 (0.1 мм)
    D168        INT                Фокусное расстояние линзы F4 (0.1 мм)
    D172        INT                MaxZ. Максимальное значение Z
    D176        INT                Фокусное расстояние выбранной линзы

    D8140    DWORD        Текущее значение координаты Z в импульсах

    M8029    Bit                Сигнал завершения позиционирования (в одном цикле)
    M8147    Bit                1 - происходит перемещение (Занято), 0 - ожидание команды
    ********************************************************************************************)

    (* Выполняется однократно при старте программы *)
    RST(M8002, M0);
    RST(M8002, M1);
    RST(M8002, M2);
    RST(M8002, M4);
    RST(M8002, M5);

    (* Вычисляем чатсоту импульсов *)
    dK := INT_TO_DINT(D136);     (* K *)
    HiSpeed :=  INT_TO_DINT(D140);     (* Hi Speed *)
    HiFreq := (dK * HiSpeed) / 10;
    LoSpeed :=  INT_TO_DINT(D142);     (* Lo Speed *)
    LoFreq := (dK * LoSpeed) / 10;

    CASE D152 OF
        1: (* Линза 1 *)
            D176 := D156;
            FLeanse := INT_TO_DINT(D156);
        2: (* Линза 2 *)
            D176 := D160;
            FLeanse := INT_TO_DINT(D160);
        3: (* Линза 3 *)
            D176 := D164;
            FLeanse := INT_TO_DINT(D164);
        4: (* Линза 4 *)
            D176 := D168;
            FLeanse := INT_TO_DINT(D168);
        ELSE
            D176 := 0;
            FLeanse := 0;
    END_CASE;

    (* Вычисляем заданную координату Z в импульсах *)
    TableH := INT_TO_DINT(D128); (* Высота стола *)
    Mesure := INT_TO_DINT(D132); (* Высота заготовки *)
    MaxZ := INT_TO_DINT(D172 ); (* MaxZ смещение*)
    DestZ :=  MaxZ -  (TableH + Mesure + FLeanse) ; (* Значение Z в 0,1 мм с учетом смещения MaxZ*) 
    DestPulsZ := DestZ * (dK/10);  (* Вычисляем количество импульсов для смещения *)
    DMOV( M8000, DestPulsZ , D9);

    (* Вычисляем текущую координату Z в 0,1 мм*)
    DMOV( M8000, D8140 , HardZ);
    AxisZ :=  MaxZ - (HardZ * 10) / dK;
    D144 := DINT_TO_INT(AxisZ);

    (* Вычисляем текущее расстояние от заготовки до линзы Z1 в 0,1 мм*)
    WorkZ := AxisZ - (TableH + Mesure);
    D148 := DINT_TO_INT(WorkZ);

    (* Soft Limit max *)
    RST((AxisZ > MaxZ), M0);

    (* Soft Limit min *)
    RST((AxisZ <= (TableH + Mesure)), M0);
    RST(((AxisZ <= (TableH + Mesure)) AND NOT M8), M2);

    (* По сигналам ручного управления отключить автоматическое M0 *)
    RST((M1 OR M2), M0);
    RST((M1 OR M2), M5);
    DDRVA( M0 ,  DestPulsZ, HiFreq, Y0 , Y4);

    (* Переключение скорости перемещения в ручном режиме *)
    IF M3 THEN
        HandSpeed := HiFreq;
    ELSE
        HandSpeed := LoFreq;
    END_IF;

    DDRVI( (M1 AND NOT X0) , -80000 , HandSpeed , Y0 , Y4 ); (* Если достигли датчика - прекратить движение вверх *)
    DDRVI( M2 , 80000 , HandSpeed , Y0 , Y4 );

    Y7 := M8147;

    (* Поиск референтной точки/ мащинный 0 по датчику *)
    DZRN( M5 , HiFreq, MaxZ * dK,  X0 , Y0 );
    DMOV(X0, 0, D8140);
    RST(X0, M5);


    (* Корректировка высоты заготовки *)
    MOVP(M4, (D144 - D128 - D176), D132);

    (* Сброс M0 по оканчании позиционирования *)
    RST(M8029, M0);
    RST(M8029, M5);
    ============= END ===============

     

     

     

     

    Axis Z on fiber v8.gxw Axis Z on fiber7.dp2

    Прикладываю файлы проекта в формате GXWorks2 для контроллера FX1N и OP320 Edit Tools для панели оператора OP320

    • Upvote 1

  16. Изготовил панель приборов. Закрепил ее на дверце тумбы. Самое удобное для обслуживания место. Ни чему не мешает и доступ легкий.

    Закрепил элементы и подключил. Все завелось сразу.

    843974541_2021-09-2918-40-13.thumb.JPG.e653560e3c6bacd32c8504a7e163b58c.JPG1042494869_2021-09-2921-40-40.thumb.JPG.1d168c3175e00a1532ac0e39efe8950d.JPG737197876_2021-09-2923-33-29.thumb.JPG.1aa767d1ea47ba6a2600b2297e01abed.JPG699534610_2021-09-2921-47-10.thumb.JPG.aaf2272c19f091abc71ef7307b070d1f.JPG

    Теперь вопрос за монтажем панели оператора. А для этого придется переделать существующую на станке панель кнопок.

     

    • Upvote 1

  17. 5 часов назад, СаняSanya сказал:

    Осталось только в корпус это все оформить и будет отлично

    Именно этим сейчас занимаюсь.

    Для электроники панель уже вырезал и покрасил. Сегодня монтировать буду. А вот для панели оператора буду вторую версию делать. Вырезал из 1 мм. Согнул и ..... не понравилось. Не эргономично и не красиво. Поэтому новую модель, новую развертку...

    Как завершу - сделаю фотки.

    Вам спасибо за консультацию в подборе комплектующих и за быструю доставку.

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