Исследование генераторов шагов LinuxCNC, Mach и прочих
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
Есть такой интерфейс, kyestick называется...
Установка LinuxCNC EMC2 #14
Установка LinuxCNC EMC2 #14
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
Сегодня провел два теста, один на ТurboCNC, второй на предоставленном пользователем 495 тестовом файле Test.c.
Результаты смотрите в первом сообщении темы.
Оба теста проводились с FreeDOS 1.1 LiveUSB, img взят отсюда: http://derek.chezmarcotte.ca/?p=340 и записан при помощи unetbootin на флешку. Потом туда же дописались все исполняемые файлы turbocnc и test.c.
Грузится все за 1 сек.
Исходник файла:
Скомпилированный exe:
Вот несколько фотографий-скриншотов, для тех, кто не видел TurboCNC: Забавно при попытки выполнения MDI команды G0 X1000000 (не помню сколько точно нулей, но примерно столько) TurboCNC вылел с такой ошибкой: И еще один завабный скриншот, нажимаю Esc во время MDI команды и вылазит окно: Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
Результаты смотрите в первом сообщении темы.
Оба теста проводились с FreeDOS 1.1 LiveUSB, img взят отсюда: http://derek.chezmarcotte.ca/?p=340 и записан при помощи unetbootin на флешку. Потом туда же дописались все исполняемые файлы turbocnc и test.c.
Грузится все за 1 сек.
Test.c
495 прислал мне простенькую программку на си, которая генерирует сигнал на порт LPT с частотой 10кГц. Отработала она на ура, к сожалению не запомнил границы отклонения частоты, по триггеру осциллографа, но были они очень маленькими.Исходник файла:
Код: Выделить всё
#include<conio.h>
#include<stdio.h>
/* lpt base 0x378
DR[7..0] = 9..2
*/
//-------------------------------------------------
int wait_3(unsigned int time_slep)
{ //wait end of counting and write next time
asm{ //
in al,61h
test al,00100000b
jz loop // loop, if OUT2=0
mov ax, time_slep //
out 42h, al // LSB time ---> counter timer-2
mov al, ah //
out 42h, al // MSB time ---> counter timer-2
};return(1); //bad
loop:asm{
in al,61h
test al,00100000b
jz loop // loop, if OUT2=0
mov ax, time_slep //
out 42h, al // LSB time ---> counter timer-2
mov al, ah //
out 42h, al // MSB time ---> counter timer-2
}return(0); //good
}
//--------------------------------------------------
char install_timer(void)
{char status_ppi;
//not save status 8254 count2. set regime timer and start counter.
asm{
mov al, 10110000b
out 43h,al // set timer-2 in mode 0
in al, 61h // read status PPI
mov status_ppi,al // keep status PPI
or al, 00000011b // set bit-1 ppi --> 1, sound yes
out 61h, al // set bit-0 PPI --> 1, gate open
mov al, 64 // start delay
out 42h, al // LSB time ---> counter timer-2
out 42h, al // MSB time ---> counter timer-2
}return(status_ppi);
}
//-----------------------------------------------------
void uninstall_timer(char status_ppi)
{
// not restore status 8254 count2.
asm{
mov al, status_ppi //
out 61h, al // restore PPI status
};
};
//----------------------------------------------------
int out_array (long int number)
//code return
{
unsigned long int l=0;
char j;
j=install_timer();
while (l<number)
{
wait_3(119); // 10 kiloHERZ ???
outportb(0x378,0xff); outportb(0x378,0xff); outportb(0x378,0x00); // step
l=l+1;
}
uninstall_timer(j);
return(0);
}
//----------------------------------
void main(void)
{
double dt= 0.838 ; // mkc tic 8254
printf(" Press any key to exit \n");
//cliar kb buffer
while(kbhit()) getche();
while(!kbhit()) out_array (100000); // 10 second
}
TurboCNC
Вообще TurboCNC мне очень понравился, прямо класс! Если бы не одно но, странные задержки при генерации сигнала step, причем такой сигнал явно приведет к пропуску шагов.Вот несколько фотографий-скриншотов, для тех, кто не видел TurboCNC: Забавно при попытки выполнения MDI команды G0 X1000000 (не помню сколько точно нулей, но примерно столько) TurboCNC вылел с такой ошибкой: И еще один завабный скриншот, нажимаю Esc во время MDI команды и вылазит окно: Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
Даж что то цветное есть И кое где экран не синий, а серыйNick писал(а):Вот несколько фотографий-скриншотов, для тех, кто не видел TurboCNC:
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
-
- Зачётный участник
- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6192
- Откуда: Казахстан.
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
Nick, мож мне свой осцил высылать, пришла плата КФЛОП, а тестить нечем
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
высылай Нику КФЛОП
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
Если там есть возможность в загрузчике дописать параметры для ядра, то надо просто добавить "runlevel 3".Nick писал(а):А можно как-нибудь запустить Linux с LiveCD в консольном режиме?
Ну или на загруженной системе переключится на текстовую консоль (не на дектопе в терминальное окно!) и выполнить команду
init 3
от рута.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
А после подтверждения: 5, 4, 3, 2, 1, 0Nick писал(а): Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
И что он кильнет все ненужные процессы?UAVpilot писал(а):Ну или на загруженной системе переключится на текстовую консоль (не на дектопе в терминальное окно!) и выполнить командуinit 3
UAVpilot писал(а):А после подтверждения: 5, 4, 3, 2, 1, 0
- Aftaeva уже на цитаты растаскивают
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
Да. Ну во всяком случае старый init с inittab так работал, а новый systemd я ещё как следует не изучил, но обещается, что он поддерживает старый формат управления.Nick писал(а):И что он кильнет все ненужные процессы?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
надо будет попробовать
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
Ты знаешь, все не так плохо. Станок останавливается, шпиндель выключается сразу по ESC. По Continue можно продолжить работу. Правда, если при этом фреза в материале, ни к чему хорошему не приведет - шпиндель не успеет раскрутиться.Nick писал(а):Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
Чудес не бывает. Бывают фокусы.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
По поводу задержек - наблюдается такое на более-менее современных компьютерах. Мне забороть не получилось, хотя сильно не пытался - стал смотреть в сторону LinuxCNC (с весны смотрю, а станочек с TCNC тем временем жужжит себе и выдает продукцию ).
Связано это с "ошибкой 200" и ее некорректным патчем или с какой-нибудь недоотключенной зеленкой - не знаю.
На Pentium 100 TurboCNC работает без проблем.
По Runtime Error 207 - есть такой глюк. Происходит при некоторых арифметических ошибках типа целочисленного переполнения или, скажем, sqrt(-1). Частично ошибки перехватываются TCNC (например, деление на нуль), частично нет, и тогда срабатывает стандартный паскалевский обработчик. Что и наблюдаем.
Связано это с "ошибкой 200" и ее некорректным патчем или с какой-нибудь недоотключенной зеленкой - не знаю.
На Pentium 100 TurboCNC работает без проблем.
По Runtime Error 207 - есть такой глюк. Происходит при некоторых арифметических ошибках типа целочисленного переполнения или, скажем, sqrt(-1). Частично ошибки перехватываются TCNC (например, деление на нуль), частично нет, и тогда срабатывает стандартный паскалевский обработчик. Что и наблюдаем.
Чудес не бывает. Бывают фокусы.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
Да нет, Nick, осциллограф, похоже, не виноват. Импульс вполне достаточный - на него приходится около десятка отсчетов осциллографа.Nick писал(а):Test.c показал очень ровную частоту. Пропуск одного импульса в Общей картине - скорее всего погрешность осциллографа, длинна импульса в этой программе очень короткая.
Тут следствие той же проблемы, что и "лаги с догонкой" у TCNC.
Чудес не бывает. Бывают фокусы.
-
- Опытный
- Сообщения: 112
- Зарегистрирован: 10 сен 2011, 18:18
- Репутация: 11
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
У меня такая фигня тоже как-то раз была, когда с TurboCNC работал.Nick писал(а):ЗЫ сделал тест на TurboCNC, иногда вылазят странные артефакты, типо вот такого, сейчас еще раз буду пробовать...
Отчет будет позже.
Поставил TCNC на Celeron 333, и начали сбиваться шаговики. Посмотрел осцилом на STEP, а там периодически пропадают импульсы.
Идет частота ровно, потом бац - пауза в 5-10 импульсов. Поставил на другой комп - все впорядке. Дальше разбираться не стал, надо было запускать станок не до этого было.
И больше с таким не сталкивался. Особенно на стареньких компах.
Но по-моему, в данном случае там проблема была из-за DOS'а.
Всегда просто форматировал винт на компе - format C:, ставил Norton Commander и саму TurboCNC. Проблем не было все работало четко.
-
- Новичок
- Сообщения: 29
- Зарегистрирован: 04 окт 2011, 22:44
- Репутация: 0
- Откуда: г... москва
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
это похоже на аппаратные прерывания дос или биос . лечится asm{cli} asm{sli}.
сделать хороший генератор шагов с приемом данных по ethernet и выдачей на LPT возможно. но не нужно.
сделать хороший генератор шагов с приемом данных по ethernet и выдачей на LPT возможно. но не нужно.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
скорее биос, я грузился с одной дискеты на разных компьютерах - результаты разные.495 писал(а):это похоже на аппаратные прерывания дос или биос
Может и поможет, только в реальной программе трудновато будет без прерываний.495 писал(а):лечится asm{cli} asm{sli}.
А в тестовой имеет смысл попробовать.
Опечатка, кстати, "sti"
Чудес не бывает. Бывают фокусы.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
А что это такое?495 писал(а):asm{cli} asm{sli}
-
- Новичок
- Сообщения: 29
- Зарегистрирован: 04 окт 2011, 22:44
- Репутация: 0
- Откуда: г... москва
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
для Nick . CLI запрет прерываний , STI разрешение прерываний .
для шаговиков идеальный генератор шагов мог получится из USB SOUND ,но при переходе от STEP/DIR на аналоговое задание тока в 2 фазах.в китае USB SOUND стоит 100 рублей , в костроме 200, в москве 400.
для шаговиков идеальный генератор шагов мог получится из USB SOUND ,но при переходе от STEP/DIR на аналоговое задание тока в 2 фазах.в китае USB SOUND стоит 100 рублей , в костроме 200, в москве 400.
- Вложения
-
- pcm2912.pdf
- простой
- (826.88 КБ) 2441 скачивание
-
- PCM2704 - PCM2707.pdf
- SPI I2C
- (968.54 КБ) 924 скачивания
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Исследование генераторов шагов LinuxCNC, Mach и прочих
под него надо драйвер писать, и еще, насколько я понимаю он информацию буферизует и потом выводит. И тут мы опять сталкиваемся с проблемой быстрой обратной связи.