Исследование генераторов шагов LinuxCNC, Mach и прочих

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Nick »

Есть такой интерфейс, kyestick называется...
Установка LinuxCNC EMC2 #14
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Nick »

Сегодня провел два теста, один на ТurboCNC, второй на предоставленном пользователем 495 тестовом файле Test.c.
Результаты смотрите в первом сообщении темы.

Оба теста проводились с 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

}
Скомпилированный exe:
test.zip
(11.6 КБ) 544 скачивания

TurboCNC

Вообще TurboCNC мне очень понравился, прямо класс! Если бы не одно но, странные задержки при генерации сигнала step, причем такой сигнал явно приведет к пропуску шагов. :think:
Вот несколько фотографий-скриншотов, для тех, кто не видел TurboCNC:
DSC_0026.JPG (4421 просмотр) <a class='original' href='./download/file.php?id=9175&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (567.81 КБ)</a>
DSC_0027.JPG (4421 просмотр) <a class='original' href='./download/file.php?id=9176&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (541.89 КБ)</a>
DSC_0028.JPG (4421 просмотр) <a class='original' href='./download/file.php?id=9177&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (555.28 КБ)</a>
DSC_0029.JPG (4421 просмотр) <a class='original' href='./download/file.php?id=9178&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (613.27 КБ)</a>
DSC_0030.JPG (4421 просмотр) <a class='original' href='./download/file.php?id=9179&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (611.86 КБ)</a>
DSC_0031.JPG (4421 просмотр) <a class='original' href='./download/file.php?id=9180&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (665.17 КБ)</a>
Забавно при попытки выполнения MDI команды G0 X1000000 (не помню сколько точно нулей, но примерно столько) TurboCNC вылел с такой ошибкой:
DSC_0032.JPG (4421 просмотр) <a class='original' href='./download/file.php?id=9181&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (620.78 КБ)</a>
И еще один завабный скриншот, нажимаю Esc во время MDI команды и вылазит окно:
DSC_0033.JPG (4421 просмотр) <a class='original' href='./download/file.php?id=9183&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (562.53 КБ)</a>
Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
:hehehe:
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение aftaev »

Nick писал(а):Вот несколько фотографий-скриншотов, для тех, кто не видел TurboCNC:
Даж что то цветное есть :) И кое где экран не синий, а серый :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение aftaev »

Nick, мож мне свой осцил высылать, пришла плата КФЛОП, а тестить нечем :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение PKM »

высылай Нику КФЛОП :)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Serg »

Nick писал(а):А можно как-нибудь запустить Linux с LiveCD в консольном режиме?
Если там есть возможность в загрузчике дописать параметры для ядра, то надо просто добавить "runlevel 3".
Ну или на загруженной системе переключится на текстовую консоль (не на дектопе в терминальное окно!) и выполнить команду
init 3
от рута.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Serg »

Nick писал(а): Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
:hehehe:
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
А после подтверждения: 5, 4, 3, 2, 1, 0 :hehehe:
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Nick »

UAVpilot писал(а):Ну или на загруженной системе переключится на текстовую консоль (не на дектопе в терминальное окно!) и выполнить командуinit 3
И что он кильнет все ненужные процессы?
UAVpilot писал(а):А после подтверждения: 5, 4, 3, 2, 1, 0
:hehehe:

- Aftaeva уже на цитаты растаскивают :)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Serg »

Nick писал(а):И что он кильнет все ненужные процессы?
Да. Ну во всяком случае старый init с inittab так работал, а новый systemd я ещё как следует не изучил, но обещается, что он поддерживает старый формат управления.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Nick »

надо будет попробовать :)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Сергей Саныч »

Nick писал(а):Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
:hehehe:
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
Ты знаешь, все не так плохо. Станок останавливается, шпиндель выключается сразу по ESC. По Continue можно продолжить работу. Правда, если при этом фреза в материале, ни к чему хорошему не приведет - шпиндель не успеет раскрутиться.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Сергей Саныч »

По поводу задержек - наблюдается такое на более-менее современных компьютерах. Мне забороть не получилось, хотя сильно не пытался - стал смотреть в сторону LinuxCNC (с весны смотрю, а станочек с TCNC тем временем жужжит себе и выдает продукцию :) ).
Связано это с "ошибкой 200" и ее некорректным патчем или с какой-нибудь недоотключенной зеленкой - не знаю.
На Pentium 100 TurboCNC работает без проблем.
По Runtime Error 207 - есть такой глюк. Происходит при некоторых арифметических ошибках типа целочисленного переполнения или, скажем, sqrt(-1). Частично ошибки перехватываются TCNC (например, деление на нуль), частично нет, и тогда срабатывает стандартный паскалевский обработчик. Что и наблюдаем.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Сергей Саныч »

Nick писал(а):Test.c показал очень ровную частоту. Пропуск одного импульса в Общей картине - скорее всего погрешность осциллографа, длинна импульса в этой программе очень короткая.
Да нет, Nick, осциллограф, похоже, не виноват. Импульс вполне достаточный - на него приходится около десятка отсчетов осциллографа.
Увеличенный масштаб по X (4389 просмотров) <a class='original' href='./download/file.php?id=9202&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (21.41 КБ)</a>
Увеличенный масштаб по X

Тут следствие той же проблемы, что и "лаги с догонкой" у TCNC.
Чудес не бывает. Бывают фокусы.
Woodmaster
Опытный
Сообщения: 112
Зарегистрирован: 10 сен 2011, 18:18
Репутация: 11
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение Woodmaster »

Nick писал(а):ЗЫ сделал тест на TurboCNC, иногда вылазят странные артефакты, типо вот такого, сейчас еще раз буду пробовать... :thinking:
Отчет будет позже.
У меня такая фигня тоже как-то раз была, когда с TurboCNC работал.
Поставил TCNC на Celeron 333, и начали сбиваться шаговики. Посмотрел осцилом на STEP, а там периодически пропадают импульсы.
Идет частота ровно, потом бац - пауза в 5-10 импульсов. Поставил на другой комп - все впорядке. Дальше разбираться не стал, надо было запускать станок не до этого было.
И больше с таким не сталкивался. Особенно на стареньких компах.
Но по-моему, в данном случае там проблема была из-за DOS'а.
Всегда просто форматировал винт на компе - format C:, ставил Norton Commander и саму TurboCNC. Проблем не было все работало четко.
495
Новичок
Сообщения: 29
Зарегистрирован: 04 окт 2011, 22:44
Репутация: 0
Откуда: г... москва
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение 495 »

это похоже на аппаратные прерывания дос или биос . лечится asm{cli} asm{sli}.
сделать хороший генератор шагов с приемом данных по 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 и прочих

Сообщение Nick »

495 писал(а):asm{cli} asm{sli}
А что это такое?
2cme
Почётный участник
Почётный участник
Сообщения: 1043
Зарегистрирован: 24 янв 2012, 13:18
Репутация: -209

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение 2cme »

Несколько принтскринов (;
Вложения
01.PNG (4379 просмотров) <a class='original' href='./download/file.php?id=9203&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (17.81 КБ)</a>
02.PNG (4379 просмотров) <a class='original' href='./download/file.php?id=9204&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (14.12 КБ)</a>
03.PNG (4379 просмотров) <a class='original' href='./download/file.php?id=9205&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (16.59 КБ)</a>
04.PNG (4379 просмотров) <a class='original' href='./download/file.php?id=9206&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (21.25 КБ)</a>
05.PNG (4379 просмотров) <a class='original' href='./download/file.php?id=9207&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (22.08 КБ)</a>
06.PNG (4379 просмотров) <a class='original' href='./download/file.php?id=9208&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (15.6 КБ)</a>
07.PNG (4379 просмотров) <a class='original' href='./download/file.php?id=9209&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (21.51 КБ)</a>
08.PNG (4379 просмотров) <a class='original' href='./download/file.php?id=9210&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (21.38 КБ)</a>
09.PNG (4379 просмотров) <a class='original' href='./download/file.php?id=9211&sid=9ceab0f9df65034c0f6ffff09efe8d76&mode=view' target=_blank>Загрузить оригинал (18.56 КБ)</a>
495
Новичок
Сообщения: 29
Зарегистрирован: 04 окт 2011, 22:44
Репутация: 0
Откуда: г... москва
Контактная информация:

Re: Исследование генераторов шагов LinuxCNC, Mach и прочих

Сообщение 495 »

для Nick . CLI запрет прерываний , STI разрешение прерываний .
для шаговиков идеальный генератор шагов мог получится из 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 и прочих

Сообщение Nick »

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

Вернуться в «Электроника»