Страница 3 из 5

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

Добавлено: 09 ноя 2012, 19:37
Nick
Есть такой интерфейс, kyestick называется...
Установка LinuxCNC EMC2 #14

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

Добавлено: 09 ноя 2012, 20:48
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 КБ) 567 скачиваний

TurboCNC

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

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

Добавлено: 09 ноя 2012, 22:21
aftaev
Nick писал(а):Вот несколько фотографий-скриншотов, для тех, кто не видел TurboCNC:
Даж что то цветное есть :) И кое где экран не синий, а серый :)

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

Добавлено: 09 ноя 2012, 22:22
aftaev
Nick, мож мне свой осцил высылать, пришла плата КФЛОП, а тестить нечем :)

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

Добавлено: 09 ноя 2012, 23:42
PKM
высылай Нику КФЛОП :)

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

Добавлено: 09 ноя 2012, 23:47
Serg
Nick писал(а):А можно как-нибудь запустить Linux с LiveCD в консольном режиме?
Если там есть возможность в загрузчике дописать параметры для ядра, то надо просто добавить "runlevel 3".
Ну или на загруженной системе переключится на текстовую консоль (не на дектопе в терминальное окно!) и выполнить команду
init 3
от рута.

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

Добавлено: 09 ноя 2012, 23:54
Serg
Nick писал(а): Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
:hehehe:
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
А после подтверждения: 5, 4, 3, 2, 1, 0 :hehehe:

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

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

- Aftaeva уже на цитаты растаскивают :)

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

Добавлено: 10 ноя 2012, 00:49
Serg
Nick писал(а):И что он кильнет все ненужные процессы?
Да. Ну во всяком случае старый init с inittab так работал, а новый systemd я ещё как следует не изучил, но обещается, что он поддерживает старый формат управления.

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

Добавлено: 10 ноя 2012, 00:52
Nick
надо будет попробовать :)

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

Добавлено: 10 ноя 2012, 04:15
Сергей Саныч
Nick писал(а):Так и вижу картину,
Нажимает оператор Estop,
- Вы действительно хотите сделать Estop?
- Блин, Estop твою мать!
:hehehe:
Хотя, сказать по правде, движение станка вроде как останавливается во время появления окна...
Ты знаешь, все не так плохо. Станок останавливается, шпиндель выключается сразу по ESC. По Continue можно продолжить работу. Правда, если при этом фреза в материале, ни к чему хорошему не приведет - шпиндель не успеет раскрутиться.

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

Добавлено: 10 ноя 2012, 04:47
Сергей Саныч
По поводу задержек - наблюдается такое на более-менее современных компьютерах. Мне забороть не получилось, хотя сильно не пытался - стал смотреть в сторону LinuxCNC (с весны смотрю, а станочек с TCNC тем временем жужжит себе и выдает продукцию :) ).
Связано это с "ошибкой 200" и ее некорректным патчем или с какой-нибудь недоотключенной зеленкой - не знаю.
На Pentium 100 TurboCNC работает без проблем.
По Runtime Error 207 - есть такой глюк. Происходит при некоторых арифметических ошибках типа целочисленного переполнения или, скажем, sqrt(-1). Частично ошибки перехватываются TCNC (например, деление на нуль), частично нет, и тогда срабатывает стандартный паскалевский обработчик. Что и наблюдаем.

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

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

Тут следствие той же проблемы, что и "лаги с догонкой" у TCNC.

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

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

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

Добавлено: 10 ноя 2012, 13:03
495
это похоже на аппаратные прерывания дос или биос . лечится asm{cli} asm{sli}.
сделать хороший генератор шагов с приемом данных по ethernet и выдачей на LPT возможно. но не нужно.

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

Добавлено: 10 ноя 2012, 13:23
Сергей Саныч
495 писал(а):это похоже на аппаратные прерывания дос или биос
скорее биос, я грузился с одной дискеты на разных компьютерах - результаты разные.
495 писал(а):лечится asm{cli} asm{sli}.
Может и поможет, только в реальной программе трудновато будет без прерываний.
А в тестовой имеет смысл попробовать.
Опечатка, кстати, "sti"

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

Добавлено: 10 ноя 2012, 13:43
Nick
495 писал(а):asm{cli} asm{sli}
А что это такое?

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

Добавлено: 10 ноя 2012, 13:47
2cme
Несколько принтскринов (;

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

Добавлено: 10 ноя 2012, 15:25
495
для Nick . CLI запрет прерываний , STI разрешение прерываний .
для шаговиков идеальный генератор шагов мог получится из USB SOUND ,но при переходе от STEP/DIR на аналоговое задание тока в 2 фазах.в китае USB SOUND стоит 100 рублей , в костроме 200, в москве 400.

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

Добавлено: 12 ноя 2012, 11:26
Nick
под него надо драйвер писать, и еще, насколько я понимаю он информацию буферизует и потом выводит. И тут мы опять сталкиваемся с проблемой быстрой обратной связи.