Перейти к публикации
  • Привет. Кажется, ты используешь AdBlock. Наш форум развивается и существует за счет доходов от рекламы. Добавь нас в исключения =) КАК ДОБАВИТЬ?

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

Добрый день.

Есть задача автоматизировать подъемную колонну волоконного маркера.

С кинематикой все понятно. Есть ШД, есть переходная пластина и есть крепление на вал ШВП.

Снимаю штурвал (ручной) и на его место прикручиваю ШД.

 

Что бы сильно не заморачиваться с электроникой решил воспользоваться готовыми ПЛК и простенькой панелью оператора. 

В качестве ПЛК взял на пробу китайский клон FX1N и панель оператора OP320A.

Судя по описанию FX1N поддерживает импульсный вывод с частотой до 100 кГц на выходах Y000, Y001.

 

Два дня пытаюсь понять как запустить этот самый генератор импульсов но пока безрезультатно.

Язык релейной логики мне как-то совсем не понятен, а в инете только о нем и упоминается в связке с термином DRVA. 

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

Кто либо пробовал сделать нечто подобное?

И как воспользоваться этой DRVA из ST?

 

зы. С контроллерами СТМ32 знаком. Но на ПЛК есть уже своя среда.

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


Ссылка на сообщение
Поделиться на других сайтах

Здравствуйте.

Попробуйте через GEN.

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

Ну и докучи: SoftPWM

P.S. Рано или поздно придёте к релейной логике =)  Перейти на неё с плюсов достаточно трудно, т.к. разрывает сложившиеся принципы.

 

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


Ссылка на сообщение
Поделиться на других сайтах
Награды пользователя

9 часов назад, PavelK сказал:

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

Нет. Софтовым методом не получится.

Я сделал только одну задачу с 1 строкой

 

Y0 := NOT Y0;

Частота что-то около 2,5 кГц и частота не стабильная.

9 часов назад, PavelK сказал:

Рано или поздно придёте к релейной логике =)  Перейти на неё с плюсов достаточно трудно, т.к. разрывает сложившиеся принципы.

Внутри меня все сопротивляется такому подходу :)

Это не просто разрывает принципы - это разрывает мозг! :)

Надо разобрать как эти инструкции из ST вызывать.

Должен же быть способ. 

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


Ссылка на сообщение
Поделиться на других сайтах

6 часов назад, Smith2007 сказал:

Должен же быть способ. 

Ну, как вариант вместо обычных драйверов использовать те, что управляются по modbus/rs232 (у Лишайна есть) - хотя их поддержка то же приключение, как и цена. Про EtherCAT не говорю - в контролере поддержки нет его.

Увы, больше я не знаю чем помочь.

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


Ссылка на сообщение
Поделиться на других сайтах
Награды пользователя

И так ... продолжение.

Проснулся как-то я утров в выходной день и подумал, что где-то валяется ПЛК с панелью оператора и не законченной работой.

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

Первое с чем столкнулся это опять с разрывом мозга. Ну не могу понять я эту релейную логику. Ладно. Набрался терпения и шаг за шагом начал постигать и вдруг...

читаю в описании...

2021-09-22_22-42-03.thumb.jpg.49c463a05e98f4310621abc1bd9da98a.jpg

судя по описанию это именно то, что мне необходимо. А что если поиском по хелпу?

Опаньки! Нашел! Это оказывается не функциональный блок, а функция DRVA/DRVI

Дай-ка я ее вызову как привык, из ST

Бинго! Я получил стабильную частоту!

2021-09-11_22-20-42.jpg.21c4355d07f9bb0ac10e0dbecd82ea4a.jpg2021-09-11_22-22-52.jpg.b72460b32625ede98fafd242626d3f52.jpg

Действительно 100 кГц! Пришлось правда подтяжку к +24В сделать в виде резистора 1 кОм иначе форма сигнала совсем не походила ни на что вразумительное.

При этом сама функция получает 4 параметра:

Выход импульсов (Это Y0)

Выход направления Y4

Частоту следования импульсов

Количество импульсов.

И так же нужно отметить, что функция не сразу выдает 100 кГц. Сначала плавно нарастает, затем плавно снижает перед торможением.

2021-09-22_22-49-49.thumb.jpg.59e9021b993e03bb37031f42715ffaad.jpg

Воодушевившись я бросился писать прошивку.

Из неудобств с которыми я столкнулся: Программирование ПЛК и подключение панели оператора через один и тот-же интерфейс, что делает отладку несколько сложнее. 

Ниже привожу листинг прошивки.

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

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

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 - ожидание команды
********************************************************************************************)

IF M8002 = 1 THEN  (* Выполняется однократно при старте программы *)
    M0 := FALSE;
    M1 := FALSE;
    M2 := FALSE;
    M4 := FALSE;
END_IF;

(* Вычисляем чатсоту импульсов *)
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( TRUE, DestPulsZ , D9);

(* Вычисляем текущую координату Z в 0,1 мм*)
DMOV( TRUE, 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 *)
IF AxisZ > MaxZ THEN
    M0 :=FALSE;
    M1 := FALSE;
END_IF;
(* Soft Limit min *)
IF (AxisZ <= (TableH + Mesure)) THEN
    M0 := FALSE;
    M2 := FALSE;
END_IF;

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

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

DDRVI( M1 , -80000 , HandSpeed , Y0 , Y4 );
DDRVI( M2 , 80000 , HandSpeed , Y0 , Y4 );

Y7 := M8147;

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

(* Сброс M0 по оканчании позиционирования *)
IF M8029 THEN
    M0 := FALSE;
    M5 := FALSE;
END_IF;

 

 

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

IF M4 THEN

 D0 := код;

END_IF;

И на этих 3-х строках я потерял 10 часов. 

При старте ПЛК, последний упорно выполнял вычисления D0 := ....

даже если непосредственно перед условием поставить M4 := FALSE;

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

Добавил еще одну задачу на ПЛК, но уже описанной в виде функциональной логики (оно несколько ближе чем релейная). И о чудо! Условие стало выполнятся как положено!

2021-09-22_23-01-32.thumb.jpg.620a5d313e6339569704a60d400686e3.jpg

Собственно на этом разработка прошивки завершилась.

Осталось дождаться прихода комплектующих и смонтировать все на станок.

 

 

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

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


Ссылка на сообщение
Поделиться на других сайтах

 

Пришли комплектующие. Спасибо Александру, очень помог в подборе комплектующих.

За кронштейн - отдельная благодарность.

 

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


Ссылка на сообщение
Поделиться на других сайтах

Поздравляю. Рад что все получилось. Осталось только в корпус это все оформить и будет отлично.

 

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах

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

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

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

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

 

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


Ссылка на сообщение
Поделиться на других сайтах

Операторы 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

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


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, Smith2007 сказал:

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

:wacko::wacko:

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


Ссылка на сообщение
Поделиться на других сайтах
Награды пользователя

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

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

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

 

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

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


Ссылка на сообщение
Поделиться на других сайтах

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

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


Ссылка на сообщение
Поделиться на других сайтах

18 часов назад, Smith2007 сказал:

должен быть расположен строго перпендикулярно поверхности детали

Вообще такие датчики достаточно чувствительны к углу наклона. ±3 градуса (естественно, зависит от датчика, а точнее его линзы), а дальше начинаются в большинстве своём казусы - в зависимости от материала заготовки. С прозрачным акрилом совсем печально.

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

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

Либо просто на колонну цифровую линейку с откидывающейся планкой. Когда нужно - поставили планку, измерили, показания ушли в контроллер, сняли планку.

 

 

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


Ссылка на сообщение
Поделиться на других сайтах
Награды пользователя

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

 

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

 

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

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

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

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

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

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


Ссылка на сообщение
Поделиться на других сайтах

1 час назад, Smith2007 сказал:

А там и до управления G кодами не далеко

Отличная работа!

Там уже недалеко, что бы маркер на шасси X/Y поставить и получить поле пару квадратных метров :D

 

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


Ссылка на сообщение
Поделиться на других сайтах
Награды пользователя

Шикарно!  А не проще было управление с компа сделать? В чём преимущества отдельной панели?

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


Ссылка на сообщение
Поделиться на других сайтах
Награды пользователя

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

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

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


Ссылка на сообщение
Поделиться на других сайтах

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

В процессе работы, бывают довольно длинные задания. Иной раз доходят до 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 тыс зеленых денег, что меня несколько огорчило.

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

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


Ссылка на сообщение
Поделиться на других сайтах

Спасибо за информацию.

Увы, EzCad не пользуюсь.  Посмотрите в сторону iceSL Slicer для нарезки и перевода в svg. 
На Руиде делал плагином для Люстры по отправке каждого файла и опусканием стола, получалось интересно но не жизнеспособно, ибо время =( может на маркере будет лучше.

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


Ссылка на сообщение
Поделиться на других сайтах
Награды пользователя

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

  • Похожие публикации

    • Автор: Сергей 75
      Доброго времени суток! Подскажите пожалуйста, можно ли поставить на станок лазерную головку с обдувом для более качественного реза. Прошу совета какую лучше поставить. Станок JL-K3020.Плата М2, труба 50. Сейчас стоит без обдува.



    • Автор: Аристарх
      Здравствуйте, граждане, товарищи. Хотел бы получить знаний от более сведущих и опытных. Вопрос мой глупым может показаться. Есть ли способ редактирования фотографий, при котором будет получаться хорошая монохромная картинка, позволяющая гравировать на лазерном МиниМаркере 2 художественные работы? За пример возьмем фотографию человека. Материал стекло или металл. Заранее благодарю.
    • Автор: PavelK
      Приветствую.
      Для тех, кому лень, в самом конце картинка что куда тыкать.
      Задача: Есть плата M2 Nano, нужно подключить внешний драйвер шагового двигателя,
      т.к. как встроенные в неё драйвера тянут ну максимум 1 Ампер (без радиадота, с ним край 2) по току,
      так что более сильные двигатели не поставить.
      Увы, но на этой плате не предусмотрены выходы управляющих сигналов step и dir для шаговых драйверов, поэтому наша задача их найти. Сделать это достаточно просто.
      Кстати, сигнал PUL это то же самое, что и STEP, т.е. "ШАГ" двигателя. DIR - направление. Enable нам не нужен ("прекращает удержание двигателя в одном положении").
      Взглянем на плату M2 Nano:

       
      Легко можем найти две микросхемы встроенных драйверов с наименованием A4988 - она весьма говённая популярна и управляется как раз нужными нам сигналами step и dir, осталось только их найти.
      Для этого открываем даташит (распиновку какой контакт за что отвечает): A4988.pdf  и в районе 18 страницы видим назначение каждого контакта чипа:

      ВАЖНО:  пин с номером 1 находится физически на самом чипе там, где в углу есть выгравированный/нарисованный круг/скос.
      Если смотреть на нашу плату как на первой картинке, то получается чип располагается так:

      На нужно припаять проводки к 16 (STEP) и 19 (DIR) пину. Аккуратнее - расстояние между ножками чипа пол миллиметра. Напряжение там всего 5 Вольт, а ток совсем мизерный, поэтому подойдут тонкие провода.  Можно их выдрать из USB кабеля зарядки телефона, если нет под рукой ничего кроме.
      Теперь нам нужно выяснить общий провод управления (общий анод/общий катод), это может быть либо GND (ноль/минус питания) либо VCC (5 Вольт), лезем в даташит и выясняем, что это GND, то есть нам нужно припаяться ещё и к GND пину, т.е. управление у нас с общим катодом.

      Не обязательно к ножке микроконтроллера, так как это GND, т.е. общий ноль, то он присутствует много где на плате - можно отследить по дорожкам (обязательно замерьте сопротивление между пином у самого чипа и того места, куда планируете - должно быть 0 Ом).
      Теперь главное, что бы внешний драйвер так же поддерживал управление по общему катоду.
      Выяснить это просто - достаточно взглянуть на колодку подключения.

      Например на драйвере Leadshine DM442 (кстати, именно его я рекомендую. Ссылка на алишку: тынц. Не стоит брать дешманские драйверы - будет только разочарование в итоге)

      Как видим, есть сигналы PUL+, PUL- и DIR+,DIR-  это значит, что драйвер поддерживает управление как по общему аноду, так и по общему катоду.
      Поэтому  провод от STEP подключаем к PUL+, провод от DIR подключаем к DIR+, а провод от GND подключаем и к PUL- и к DIR- т.к. у нас управление по общему катоду.
      Примерно так:

      Ну и общая наглядная схема на примере замены для оси X (для Y аналогично):

      ПРЕДУПРЕЖДЕНИЕ: Так как я сталкивался уже как минимум с 3 различными вариациями (похоже подделка на подделку) этого недоконтроллера, то рекомендую не бессмысленно повторять, а убедиться в правильности распиновок, т.к. могут быть "повёрнуты" чипы штатных драйверов либо отличаться их модель, отчего распиновка может не соответствовать. Так же убедитесь, что не закоротили при пайке соседние пины на чипе, как минимум необходимо глянуть хотя бы залупой.
      ВАЖНО: 
      Так как M2 Nano нельзя настроить на произвольный размер шага, то на драйвере нужно правильно выставить дробление шага,
      иначе размер не будет соответствовать! Штатный драйвер настроен на дробление 8. Т.е. один шаг состоит из 8 микрошагов.
      Для правильной настройки нужно знать количество шагов на оборот Вашего шагового двигателя. У биполярных обычно это 200.
      Дальше по таблице на драйвере выставляете в соответствующее положение микропереключатели. 
      На примере по таблице драйвера выше это получается 1600 шагов на оборот.
      Либо методом подбора -  там всего 16 вариантов.

      Если меняете на внешние драйвера по обеим осям, то уже можете выставить наиболее приемлемое по качеству/скорости, главное что бы у обоих оно совпадало (и у движков кол-во шагов на оборот разумеется то же)!

      Если на одну из осей ставите так же редуктор, то нужно выставить ещё и в соответствии с коэффициентом редукции. Если на цело не поделится, тогда придётся либо подбирать редуктор с чётным коэффициентом, либо на вторую ось ставить аналогичный, либо страдать и растягивать/сжимать макет.
      Исправления/дополнения и т.д. приветствуются, т.к. мог недоглядеть чего.
    • Автор: Koss
      Помогите пожалуйста подключить драйвер к плате м2. Не пойму где взять контакты 
      ena-
      ena+
      dir-
      dir+
    • Автор: начинающий
      Доброго времени суток , на работе купили фрезер Краснодарской сборки , когда нажимаю кнопку домашние координаты ось z поднимается до упора вверх и моторчик пытается его дальше поднять и трещит , до других осей дело не доходит так как отключаем , концевик вроде работает , поле в программе Mach3 прописано , и ещё не горит зеленым кнопка ограничения поля . Что может быть ?
×
×
  • Создать...