Перейти к содержимому


Фотография

Недокументированные возможности NC Studio 5.60 (по-крайней мере об одной вы не знали)

Возможности NcStudio

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 176

#161 OFFLINE   lkbyysq

lkbyysq

    Гуру CNC

  • Cтарожил
  • PipPipPipPipPipPipPipPipPipPip
  • 9 486 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург
  • Из:Санкт-Петербург

Отправлено 22 Декабрь 2022 - 20:30

Я немного поисследовал NCStudio

 

Фигасе!

Теперь чо, осталось нарисовать интерфейс и все? 

 

Для тех, кто не в теме: Распаковываете архив на компе, где есть плата 5.5.60 с драйвером, запускаете экзешник и двигаете станок кнопками.


  • 1

Станислав Ерофеев
Beaver 9A (2007), Beaver 9AT2 (2011), KingCut X6 (2005), WoodPecker 1224 (2006), Roland EGX-300 (2004), Roland EGX-20 (2003), ZeldeR 0613TP (2014).


#162 OFFLINE   fersat

fersat

    Студент

  • Пользователи+
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Из:-

Отправлено 23 Декабрь 2022 - 09:08

нарисовать интерфейс и все?

Не всё так просто. Я же говорю - контроллер не работает с G-кодом самостоятельно, и драйвер этого тоже не делает. Если писать программу на уровне запросов к драйверу без промежуточных библиотек придётся самостоятельно рассчитывать ускорения. Но в принципе  можно заюзать NCCore.dll + NCInterp.dll и работать с G-кодом.

 

Кстати в исходнике ошибка в 183 строке: вместо NCCMD_OutPort должно быть NCCMD_InPort.


  • 1

#163 OFFLINE   lkbyysq

lkbyysq

    Гуру CNC

  • Cтарожил
  • PipPipPipPipPipPipPipPipPipPip
  • 9 486 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург
  • Из:Санкт-Петербург

Отправлено 23 Декабрь 2022 - 11:07

Основная команда - это генерация заданного количества импульсов на протяжении 0,005 сек.

 
Есть у меня старенькие диаграммы для пурпурного контроллера NcStudio 146кГц** (против обычной платы 5.5.60 - 47кГц) - равномерное движение, торможение и разгон.
Чо-то я не могу объяснить их банальным "заданное количества импульсов за один такт".
Чо-то там сложнее...
 
ДИАГРАММЫ.gif
 
**Судя по косвенным признакам, декларируемая разница в частотах контроллеров может быть и чисто маркетинговым ходом (серваки спокойнее относятся к неравномерным импульсам, чем шаговики, а пурпурная  для серваков). При подключении шаговиков к пурпурной плате 146кГц не получается получить максимальную скорость выше, чем у плат 47кГц  - шаговики начинают пропускать.
 

И ещё из старого, чтоб далеко не лазить

Исполнение следующего кода
 
G65 P1022 L10000
M30
 
O1022 ' one pulse
M901 H0 P1 'set pin12 to 1
G04 P5 
M901 H0 P0  'set pin12 to 0
G04 P5
M17
 
 
Проводит к генерации на 12-м пине меандра с периодом 9,2мс.
Т.е. максимальная частота 108,7Гц.

 

Длительность паузы после изменения состояния порта кратно 5 мс, т.е.
G04 P1 - 5мс
G04 P5 - 5мс
 
G04 P6 - 10мс
G04 P10 - 10мс
 
G04 P11 - 15мс
G04 P15 - 15мс
 
и т.д.
 
**********************************************************************************
Без пауз 

 

G65 P1022 L1000000
M30
 
O1022 ' one pulse
M901 H0 P1 'set pin12 to 1
M901 H0 P0  'set pin12 to 0
M17
 
период импульсов составит 7мкс, т.е. 142 кГц.
 

********************************************************************************
К сожалению при непрерывной выдаче в порт миллиона импульсов (~7 секунд) синхронизация на осциллографе сбивается несколько раз. Подозрение на "грязные", нестабильные импульсы.


Сообщение отредактировал lkbyysq: 23 Декабрь 2022 - 11:23

  • 0

Станислав Ерофеев
Beaver 9A (2007), Beaver 9AT2 (2011), KingCut X6 (2005), WoodPecker 1224 (2006), Roland EGX-300 (2004), Roland EGX-20 (2003), ZeldeR 0613TP (2014).


#164 OFFLINE   lkbyysq

lkbyysq

    Гуру CNC

  • Cтарожил
  • PipPipPipPipPipPipPipPipPipPip
  • 9 486 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург
  • Из:Санкт-Петербург

Отправлено 23 Декабрь 2022 - 11:46

Количество импульсов за один такт это скорость.
Такт 5мс - это очень длинный такт.
Поэтому ещё ускорение в этом временном такте тоже каким-то образом должно прописываться.

Сообщение отредактировал lkbyysq: 23 Декабрь 2022 - 12:20

  • 0

Станислав Ерофеев
Beaver 9A (2007), Beaver 9AT2 (2011), KingCut X6 (2005), WoodPecker 1224 (2006), Roland EGX-300 (2004), Roland EGX-20 (2003), ZeldeR 0613TP (2014).


#165 OFFLINE   fersat

fersat

    Студент

  • Пользователи+
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Из:-

Отправлено 23 Декабрь 2022 - 12:19

Контроллер не знает, что такое ускорение. Он генерирует частоту. Допустим имеем станок, настроенный на 100 импульсов на миллиметр, тогда при скорости 100 мм/сек  получим 10000 импульсов в секунду. NCStudio принимает пакеты длительностью 0,005 сек - следовательно за один такт должно генерироваться 50 импульсов.

 

Теперь нам нужно ускорение (пускай будет 1000 мм/сек). Переводим в импульсы - 1000*100*0,005*0,005=2,5 импульса в такт.  Всё - можно генерировать команды: первый такт - 0 импульсов, второй такт 3 импульса (округляем), третий 5, четвёртый 8 и так далее до достижения 50 импульсов. Для торможения повторяем в обратном порядке.


Включение/выключение отдельного пина производится другой командой. При этом она выполняется в обход очереди остальных команд. В файле NCStudio.inc смотри команды с кодами 8XXX.


  • 0

#166 OFFLINE   lkbyysq

lkbyysq

    Гуру CNC

  • Cтарожил
  • PipPipPipPipPipPipPipPipPipPip
  • 9 486 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург
  • Из:Санкт-Петербург

Отправлено 23 Декабрь 2022 - 12:31

Не сходится с диаграммами. Я не зря разбил на блоки по 2мс.
На протяжении 5мс период импульсов дважды меняется. А это и есть ускорение. Значит оно задаётся наряду со скоростью.


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

Поэтому вполне. Вполне.


Но. Тогда нестабильность импульсов так же пропорционально увеличится, и не смогут шаговики стабильно работать.

Для пущей ясности мне нужны диаграммы исследуемой платы 47кГц.

Сообщение отредактировал lkbyysq: 23 Декабрь 2022 - 12:35

  • 0

Станислав Ерофеев
Beaver 9A (2007), Beaver 9AT2 (2011), KingCut X6 (2005), WoodPecker 1224 (2006), Roland EGX-300 (2004), Roland EGX-20 (2003), ZeldeR 0613TP (2014).


#167 OFFLINE   fersat

fersat

    Студент

  • Пользователи+
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Из:-

Отправлено 23 Декабрь 2022 - 12:33

Диаграммы снимались при выполнении JOG или при выполнении G-кода? Я не до конца разобрался, но по-моему G-код выполняется пакетами по 0,005 сек, а для перемещения с клавиатуры есть отдельный IOCTL-запрос, в котором указывается ускорение.


  • 0

#168 OFFLINE   lkbyysq

lkbyysq

    Гуру CNC

  • Cтарожил
  • PipPipPipPipPipPipPipPipPipPip
  • 9 486 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург
  • Из:Санкт-Петербург

Отправлено 23 Декабрь 2022 - 12:44

Вспомнить бы...
Скорее всего JOG.
Ведь для записи диаграммы надо сначала стартануть сканер, а потом есть ограниченное время для считывания им импульсов.
Скорее всего JOG. Метался туда-сюда, помню.


Я немного поисследовал NCStudio 5.5.60.0.

Если пользовались "трассировщиком DLL", то каким?

Сообщение отредактировал lkbyysq: 23 Декабрь 2022 - 12:45

  • 0

Станислав Ерофеев
Beaver 9A (2007), Beaver 9AT2 (2011), KingCut X6 (2005), WoodPecker 1224 (2006), Roland EGX-300 (2004), Roland EGX-20 (2003), ZeldeR 0613TP (2014).


#169 OFFLINE   fersat

fersat

    Студент

  • Пользователи+
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Из:-

Отправлено 23 Декабрь 2022 - 12:45

В структуре инициализации станка ускорения присутствуют, но как я понял не учитываются контроллером. Я смотрел в отладчике - при непрерывном перемещении (jog) отправляется IOCTL 22E03h (у меня он назван NC_SetJogContext), а при перемещении шагами NCStudio закидывает пакеты в очередь. Я экспериментировал с этим запросом, но как-то не получилось заставить станок двигаться.


  • 0

#170 OFFLINE   fersat

fersat

    Студент

  • Пользователи+
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Из:-

Отправлено 23 Декабрь 2022 - 13:44

В общем в структуре, которая передаётся в NC_SetJogContext мне не понятны 2 байта по смещению 41 (29h)

1.png .

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


  • 0

#171 OFFLINE   lkbyysq

lkbyysq

    Гуру CNC

  • Cтарожил
  • PipPipPipPipPipPipPipPipPipPip
  • 9 486 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург
  • Из:Санкт-Петербург

Отправлено 23 Декабрь 2022 - 14:25

Такие окошки мне в новость. Я до ассемблера не копал.
Максимум - отслеживал последовательность вызовов функций. Не помню, что за приложение, вроде тёткой русской какой-то написанное году так в 2000-м.

Сообщение отредактировал lkbyysq: 23 Декабрь 2022 - 14:27

  • 0

Станислав Ерофеев
Beaver 9A (2007), Beaver 9AT2 (2011), KingCut X6 (2005), WoodPecker 1224 (2006), Roland EGX-300 (2004), Roland EGX-20 (2003), ZeldeR 0613TP (2014).


#172 OFFLINE   fersat

fersat

    Студент

  • Пользователи+
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Из:-

Отправлено 24 Декабрь 2022 - 12:20

Вроде бы получилось использовать JOG. Эти два байта, о которых я писал ранее не имеют значения. Просто при инициализации контроллера нужно послать 3 IOCTL запроса с кодом 22E030h и "магическими" цифрами 102h, 101h, 301h. Пока смотрю в симуляции (запускаю через DrvSimu.dll) и вижу что при отправке NC_SetJogContext эмулятор драйвера просто помещает в очередь те же самые пакеты. Возможно на реальном оборудовании будет по-другому. Наверное в понедельник проверю на железе и попробую снять осциллограммы. Ещё заметил что первый пакет вначале разгона или торможения имеет код 1000h, а последующие 1100h, но в той проге, что я выкладывал я отсылал пакеты только с кодом 1100h и не заметил разницы.


  • 0

#173 OFFLINE   fersat

fersat

    Студент

  • Пользователи+
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Из:-

Отправлено 24 Декабрь 2022 - 13:29

Ну в общем написал вторую программу и сравниваю с первой так:

1) Зажимаю кнопку перемещения на 10 секунд

2) Смотрю как изменились машинные координаты

 

В первой версии (пакеты формируются вручную, длительность принята за 0,005 сек) при скорости 100 мм/сек получаю 1300 мм (есть инерция при торможении так, что будем считать, что это 1000 мм), во второй версии (пакеты формируются эмулятором драйвера, длительность принята за 0,005 сек) - 400 мм. Обнаруживается закономерность 1000*0,002/0,005=400 (вспоминаем осциллограммы из поста №163). Похоже, что действительно в JOG-mode можно получить более плавное передвижение. Такая разница может быть объяснена тем, что пакеты при выполнении G-кода формируются из режима пользователя, а в JOG-mode из режима ядра (подробнее здесь).  В режиме пользователя программный код может быть прерван другими процессами (вытесняющая многозадачность), из-за этого трудно работать с маленькими временными периодами, а вот драйвер теоретически может запретить прерывания на время формирования пакетов.


  • 0

#174 OFFLINE   lkbyysq

lkbyysq

    Гуру CNC

  • Cтарожил
  • PipPipPipPipPipPipPipPipPipPip
  • 9 486 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург
  • Из:Санкт-Петербург

Отправлено 24 Декабрь 2022 - 19:07

К сожалению, поводом для снятия диаграмм стали пропуски шагов именно в режиме исполнения программы.
Увидев диаграммы, я перестал требовать многого от этого ЧПУ, и стало многое понятно в поведении шаговых двигателей, в том числе причины появления резонанса.
  • 0

Станислав Ерофеев
Beaver 9A (2007), Beaver 9AT2 (2011), KingCut X6 (2005), WoodPecker 1224 (2006), Roland EGX-300 (2004), Roland EGX-20 (2003), ZeldeR 0613TP (2014).


#175 OFFLINE   fersat

fersat

    Студент

  • Пользователи+
  • PipPip
  • 12 сообщений
  • Пол:Мужчина
  • Из:-

Отправлено 26 Декабрь 2022 - 09:56

Снял осциллограмму разгона в режиме JOG. На реальном контроллере пакеты 5 ms (на скрине смотреть значение дельта X). Напомню, что в режиме симуляции, похоже 2 ms.

JOG.png

Вот точная модель платы (скрин из NCStudio):

Adapter.PNG


  • 0

#176 OFFLINE   lkbyysq

lkbyysq

    Гуру CNC

  • Cтарожил
  • PipPipPipPipPipPipPipPipPipPip
  • 9 486 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург
  • Из:Санкт-Петербург

Отправлено 26 Декабрь 2022 - 13:57

Может быть так, что широкий импульс - это не первый в пачке 5мс, а последний? Ну типа отсчитали сколько надо с вычисленной длительностью, ну и осталось малёхо?

Сообщение отредактировал lkbyysq: 26 Декабрь 2022 - 13:59

  • 0

Станислав Ерофеев
Beaver 9A (2007), Beaver 9AT2 (2011), KingCut X6 (2005), WoodPecker 1224 (2006), Roland EGX-300 (2004), Roland EGX-20 (2003), ZeldeR 0613TP (2014).


#177 OFFLINE   FreeSky

FreeSky

    Студент

  • Пользователи+
  • PipPip
  • 41 сообщений
  • Из:Боровуха

Отправлено 28 Декабрь 2022 - 21:47

Я немного поисследовал NCStudio 5.5.60.0 и оказалось, что контроллер по сути умеет только генерировать импульсы заданной частоты и изменять уровни сигналов на выходах. Драйвер тоже не выполняет никаких расчётов.

Вау!!! Респект!!! Вот я вовремя сюда заглянул!!!


  • 0





Темы с аналогичным тегами Возможности NcStudio

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных