Контроллер ЧПУ

Контроллеры, драйверы, датчики, управляющие устройства.
Аватара пользователя
malvin
Кандидат
Сообщения: 99
Зарегистрирован: 23 сен 2009, 10:12
Репутация: -26
Контактная информация:

Контроллер ЧПУ

Сообщение malvin »

Вышла в свет первая версия контроллера ЧПУ. Имеет интерфейс через DLL-библиотеку, подгружаемую программой управления на компе. Работает пока как буферизованный мост LPT-COM-порт к программам, использующим библиотеки доступа к LPT-порту. Планируется дополнить функциями, нацеленными на изначально новый уровень управления потоком команд.
Рабочую версию с описанием можно скачать по ссылке
http://www.nt-media.narod.ru/inout/LPTB ... _09.18.exe
Нужен лазер. Форумчане, порекомендуйте пожалуйста твердотельный лазер с маленьким пятном. || Для работы над X-Cam нужны бетта-тестеры.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Контроллер ЧПУ

Сообщение spike »

Процитирую описание:
LPTBRIDGE

Управление станком ЧПУ из под OS Windows по параллельному порту создает опасность потери сигналов и вызывает повышенный шум и неравномерность работы двигателей.

LPTBRIDGE - система передачи информации, гененрируемой програмой управления станком ЧПУ по параллельному порту в последовательный порт отдельного контроллера с функцией буферизации потока данных.

Работа рассмотрена на примере прогрмы KCam, которая загружает файл DLPORTIO.dll, являющийся интерфейсом к низкоуровневому драйверу параллельного порта. Данный файл необходимо заменить (в каталоге установки программы) на тот, что поставляется с системой. Таким образом, программа KCam будет загружать не оригинальный файл, а наш, передавая ему всю информацию.

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

Для повторения LPTBRIDGE самомтоятельно используются файл *.hex для прошивки контроллера и файл подменяемой DLL. Контроллер - ATMega 32-16AI, кварцевый резонатор 11059200 Герц. Для связи с ПК можно использовать FT232RQ (переходник USB-COM) и др. Порт С - 8 сигналов Step/Dir, порт A - концевики (пины 0-3) и реле(4-7). Настройки программа хранит в файле DLPORTIO.cfg, который располагается там же, где и файл программы KCam.
Ну, во-первых, идея на мой взгляд здоровская! )ay(
Есть вопросы:
  • как задается выходная частота? насколько я понимаю контроллер определяет частоту входных сигналов и сглаживает неравномерности? т.е. частота та же что и на входе, но стабильная... так?
  • какой объем буфера?
  • что означают настройки?
А схему выложишь? Можешь рассказать как повторить новичку в электронике? Т.е. вообще как прошивается контроллер?
Аватара пользователя
malvin
Кандидат
Сообщения: 99
Зарегистрирован: 23 сен 2009, 10:12
Репутация: -26
Контактная информация:

Re: Контроллер ЧПУ

Сообщение malvin »

как задается выходная частота? насколько я понимаю контроллер определяет частоту входных сигналов и сглаживает неравномерности? т.е. частота та же что и на входе, но стабильная... так?
Вызываемая программой функция из DLL определяет время в мс между своими вызовами. Потом вычисляет среднее время для числа вызова функций, заданное в параметре "Усреднение" в окне настроек. Помимо этого используется еще глобальный параметр задержки dt для всех команд, прибавляемый контроллером к основному времени команды. Это как бы задвижка. регулирующая время считывания из буфера и, следовательно, его уровень.
какой объем буфера?
На контроллере буфер 1024 байта. Плюс планируется ввести буфер на стороне DLL и тогда можно вообще забыть про неравномерность потока данных.
что означают настройки?
Порт - номер порта COM, Усреднение и dt- см выше, галочки ведения логов - чтобы можно было мониторить что и когда программа вываливает в порт через DLL.
А схему выложишь? Можешь рассказать как повторить новичку в электронике? Т.е. вообще как прошивается контроллер?

Схемы пока не существует. Только смонтированная конструкция на макетной плате. По контроллерам и их прошивке скоро выложу небольшой материалл.
Нужен лазер. Форумчане, порекомендуйте пожалуйста твердотельный лазер с маленьким пятном. || Для работы над X-Cam нужны бетта-тестеры.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Контроллер ЧПУ

Сообщение spike »

malvin писал(а):Вызываемая программой функция из DLL определяет время в мс между своими вызовами.
Миллисекунды - это значит частота шагов ограничена 1000Гц?
malvin писал(а):Вызываемая программой функция из DLL определяет время в мс между своими вызовами. Потом вычисляет среднее время для числа вызова функций, заданное в параметре "Усреднение" в окне настроек. Помимо этого используется еще глобальный параметр задержки dt для всех команд, прибавляемый контроллером к основному времени команды. Это как бы задвижка. регулирующая время считывания из буфера и, следовательно, его уровень.
Тут упомянуто окно настроек, т.е. в Dll-ке еще и интерфейс завернут? )bw3(
Насчет параметра задержки dt не совсем понятно, он нужен для того чтобы зарезервировать время на случай если у компа возникнет какая-то задержка и у железки закончатся данные в буфере?
malvin писал(а): Схемы пока не существует. Только смонтированная конструкция на макетной плате. По контроллерам и их прошивке скоро выложу небольшой материалл.
Я бы повторил такой девайс. Вообще, если он будет простым, то думаю что но станет весьма популярным.
Аватара пользователя
malvin
Кандидат
Сообщения: 99
Зарегистрирован: 23 сен 2009, 10:12
Репутация: -26
Контактная информация:

Re: Контроллер ЧПУ

Сообщение malvin »

spike писал(а):
malvin писал(а):Вызываемая программой функция из DLL определяет время в мс между своими вызовами.
Миллисекунды - это значит частота шагов ограничена 1000Гц?
Нет. Когда программа мерит 0 мс когда - 20 - это и причина неравномерности. А средняя их величина? В 2 раза меньше. Реальная дискретность контроллера 0,25 мс. Это 4000 герц. Для начала! А так, если делать родной интерфейс, а не воровать данные с LPT-порта, то будет практически неограниченная скорость.
spike писал(а):
malvin писал(а):Вызываемая программой функция из DLL определяет время в мс между своими вызовами. Потом вычисляет среднее время для числа вызова функций, заданное в параметре "Усреднение" в окне настроек. Помимо этого используется еще глобальный параметр задержки dt для всех команд, прибавляемый контроллером к основному времени команды. Это как бы задвижка. регулирующая время считывания из буфера и, следовательно, его уровень.
Тут упомянуто окно настроек, т.е. в Dll-ке еще и интерфейс завернут? )bw3(
Насчет параметра задержки dt не совсем понятно, он нужен для того чтобы зарезервировать время на случай если у компа возникнет какая-то задержка и у железки закончатся данные в буфере?
Когда программа загружает библиотеку, появляется модальное окно, которое мониторит весь процесс передачи данных. Dt для этого и нужен - чтобы немножко попридержать контроллер, если вдруг винда надолго твоей программе процессорное время давать не будет - при высоких скоростях достаточно 0,1 секунды или даже меньше чтобы опустошить буфер.

А ты можешь время передавать в DLL вместе с шагами по осям в отдельную функцию? Тогда это бы многое упростило. К тому же когда я сглаживаю задержки, это не всегда хорошо, например, при выжигании.
Нужен лазер. Форумчане, порекомендуйте пожалуйста твердотельный лазер с маленьким пятном. || Для работы над X-Cam нужны бетта-тестеры.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Контроллер ЧПУ

Сообщение spike »

malvin писал(а):Нет. Когда программа мерит 0 мс когда - 20 - это и причина неравномерности. А средняя их величина? В 2 раза меньше. Реальная дискретность контроллера 0,25 мс. Это 4000 герц. Для начала! ...
Не, так мерять не есть гуд, надо мерять время с помощью вот этого таймера, надо сказать меряет весьма точно, а если еще и усреднять - вообще нормально будет. )bs(
malvin писал(а):...появляется модальное окно, которое мониторит весь процесс передачи данных.
Ага, понятно.
malvin писал(а):А ты можешь время передавать в DLL вместе с шагами по осям в отдельную функцию? Тогда это бы многое упростило. К тому же когда я сглаживаю задержки, это не всегда хорошо, например, при выжигании.
Сейчас управление портом осуществляется вызовом

Код: Выделить всё

  procedure Out32(PortAddress: smallint; Value: smallint);stdcall; external 'inpout32.dll';
  function Inp32(PortAddress: smallint): smallint; stdcall; external 'inpout32.dll';
Например такой вызов устроит:

Код: Выделить всё

procedure OutPeriod(Period: integer); stdcall; external 'inpout32.dll';
?
Сегодня вечерком сделаю динамическое подключение библиотек, чтобы не ругался на родную (там где OutPeriod отсутствует).
А ты уже пробовал к GIGAMESHy прицепить мост?
P.S.: Блин, классная штука! надо ее до ума довести... )bt8(
Аватара пользователя
malvin
Кандидат
Сообщения: 99
Зарегистрирован: 23 сен 2009, 10:12
Репутация: -26
Контактная информация:

Re: Контроллер ЧПУ

Сообщение malvin »

Давай лучше одним вызовом - вывод данных в порт и задержка - два параметра!

А таймер.... как тебе сказать.... Он считает, да... Но он считает если приложению не дается достаточно процессорного времени? Хотя это уже не важно. Главное - просто вычислять математически задержку на команды и просто передавать ее в контроллер.
Нужен лазер. Форумчане, порекомендуйте пожалуйста твердотельный лазер с маленьким пятном. || Для работы над X-Cam нужны бетта-тестеры.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Контроллер ЧПУ

Сообщение spike »

malvin писал(а):Давай лучше одним вызовом - вывод данных в порт и задержка - два параметра!
Ну тогда это просто другая процедура будет, типа такого:

Код: Выделить всё

procedure BridgeOut(Value: Integer; Period: integer);stdcall; external 'inpout32.dll';
и адрес порта не нужен, и значения регистров можно передавать как integer (32 bit), т.е. все сразу....
... да и собственно inpout32.dll ни к чему. )bn(
Это конечно можно.... но давай пока совместимость сохраним: если есть вызов процедуры установки времени, значит используешь это время, если нет - меряешь и усредняешь. Хотя сам решай, я могу и так и так сделать, у меня совместимость можно сохранить.

Импульс шага формируется так:

Код: Выделить всё

procedure TPort.PortJerkMask(PulseTime, TimeOut: integer; var Mask: integer);
var
  OldState: integer;
begin
  OldState:=fPortState; //сохраняет состояние порта
  if not(TimeOut=0) then
    fHRT.Wait(TimeOut); //выдерживает время таймаута
  PortWrite(Mask);  //расколбашивает Mask на smallint и выплевывает их в порт

  fHRT.Wait(PulseTime-TimeOut); //выдерживает оставшееся время периода
  PortWrite(OldState); //возвращает старое состояние порта

  PortRead(fPortState); //читает состояние порта
  Mask:=fPortState; 
end;
т.е. реально вызовов записи в порт два.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Контроллер ЧПУ

Сообщение spike »

Сделал динамическую загрузку из библиотеки inpout32.dll следующих функций:

Код: Выделить всё

procedure Out32(PortAddress: smallint; Value: smallint);stdcall; external 'inpout32.dll';
function Inp32(PortAddress: smallint): smallint; stdcall; external 'inpout32.dll';
procedure PulseTimes(PulseTime, TimeOut: integer); stdcall; external 'inpout32.dll';
Наличие PulseTimes в библиотеке inpout32.dll означает присутствие моста, т.е. в нее отправляются период импульса и таймаут. Отправка происходит непосредственно перед дерганьем портом.
Gigamesh2h+lptbridge_.rar
(644.92 КБ) 587 скачиваний
celladon
Новичок
Сообщения: 18
Зарегистрирован: 22 сен 2008, 11:20
Репутация: 0
Контактная информация:

Re: Контроллер ЧПУ

Сообщение celladon »

Интересная идея с мостом. Правда до конца не понял со всеми ли будет работать программами. Наверно в ATTINY2313 запихнуть не удастся. А то было бы интересно попробовать. У меня есть платка ( с одной стороны СОМ разъем, с другой ЛПТ), которую я использую для тестирования ЛПТ контроллеров для шаговых двигателей.
Аватара пользователя
malvin
Кандидат
Сообщения: 99
Зарегистрирован: 23 сен 2009, 10:12
Репутация: -26
Контактная информация:

Re: Контроллер ЧПУ

Сообщение malvin »

Закончил работу над новой версией моста. Движки крутят на скорости до 4000 герц на каждую из трех осей. Без единого пропуска и дерганий. Загрузка проца незначительная - можно даже кино смотреть.) Немного подшаманю и выложу на форум для тестирования.

Информация о интеграции в программу Gigamesh2h.

Код: Выделить всё

int __stdcall CncCmd(UCHAR uType, int Value1, int Value2)
Value1 - время в десятых долях милисекунды (100 - это 10 мс, и т д) между командами.
Value2 - команда типа:

Код: Выделить всё

		//    Y    Z         X
		//   7 6  5 4  3 2  1 0
		//   D S  D S  D S  D S
uType - всегда 1
Возможно два типа команд - установка направления на оси командой D_D_D_D_ или шагов по осям _S_S_S_S. Если нужен шаг на ось, то устанавливается S=1. Если шагов на оь не делать - 0.

Функция возвращает целое число - сколько байт в буфере. Программа управления должна следить чтобы в буфере было не больше 1000 байт информации. Так же чтобы буфер не был пустой - тогда движки будут недополучать информации. Рекомендуется - байт 100, не больше. Вот алгоритм:

Код: Выделить всё

		buff= CncCmd(uType,Value1,Value2);
		if(buff>400)Sleep(200);
		else if(buff>200)Sleep(40); //засыпаем если буфер наполняется
		else if(buff>100)Sleep(10);
celladon!
По поводу вопросов о ATTiny2313. Прошивка весит 3 кила, оперативки нужно как минимум 512 байт. Иначе, когда винда будет тормозить, поток данных будет прерываться и будут слышны подергивания движков как и без моста.

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

Какие будут ваши предолжения?
Нужен лазер. Форумчане, порекомендуйте пожалуйста твердотельный лазер с маленьким пятном. || Для работы над X-Cam нужны бетта-тестеры.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Контроллер ЧПУ

Сообщение spike »

malvin писал(а):Движки крутят на скорости до 4000 герц на каждую из трех осей
А чем обусловлено ограничение (или это не ограничение?) 4кГц? Возможных осей 3?
malvin писал(а):Загрузка проца незначительная
Какая программа управляет?
malvin писал(а):

Код: Выделить всё

int __stdcall CncCmd(UCHAR uType, int Value1, int Value2)
Value1 - время в десятых долях милисекунды (100 - это 10 мс, и т д) между командами.
Value2 - команда типа:

Код: Выделить всё

      //    Y    Z         X
      //   7 6  5 4  3 2  1 0
      //   D S  D S  D S  D S
uType - всегда 1
Возможно два типа команд - установка направления на оси командой D_D_D_D_ или шагов по осям _S_S_S_S. Если нужен шаг на ось, то устанавливается S=1. Если шагов на оь не делать - 0.
malvin! и все читающие:
!!! есстественно функция CncCmd не универсальна, т.е. ни этой функции (ни её аналогов) однозначно нет в стандартных библиотеках LPT-порта - применяя такую функцию проект ограничивается использованием программы GIGAMESH в качестве управляющей программы, что обусловит небольшую воможность вовлечения новых участников проекта. С другой стороны применение специальной функции при наличии реального успеха, привлечет разработчиков программного обеспечения (которых, правда, совсем мало). Мое мнение - ориентироваться нужно на пользователя, т.е. сделать универсальный мост, который будетторый будет работать и с GIGAMESH, и с KCAM, и с VRIcnc и с другими, использующими стандартные библиотеки ввода-вывода LPT. А разработчиков вовлекать дополнительными бонусами типа управления временем (при отсутствии такого управления мост работает в режиме усреднения).
Что думаете товарищи?

Если все-таки есть непреодолимое желание или серьезная аргументация в пользу ухода от совместимости (с большим интересом ознакомился бы с вашими мыслями), по техническим вопросам взаимодействия есть такие мысли:
  1. для переменной Value1 использовать тип longword (unsigned 32-bit integer), при этом полностью покрывается диапазон возможных временных интервалов, с бОльшим разрешением (микросекунды) и c неисчерпаемым резервом для скорости моторов (до 4Ггц )ak( ).
  2. в описание команды приведена распиновка для одного байта информации..., предлагаю применить также 32(или 16)-битную переменную - с ее помощью можно будет закодировать перемещения до 16(8) приводов.
  3. управление электроавтоматикой не описано, предлагаю для описания этого управления использовать также 32(или 16)-битную переменную - управление до 32 (16) устройств
к чему я подвожу?... к этому, см. раздел "Код управления".
подчеркну: речь идет о взаимодействии управляющей программы с модулем движения, т.е. реальная функциональность железки есстественным образом может быть ограничена возможностями чипа или чего-то еще... т.е. декларируем при передаче 32-битную переменную, реально используем - 8 или даже 6 (для XYZ) бит. Но при этом имеем возможность расширения.
подчеркну: в саму железку передается конкретно нужное (работающее) количество бит - это забота программного адаптора устройства. Реализация этого "узкого" протокола - забота только лишь разработчика устройства и адаптора. Таким образом через узкие места системы (интерфейс связи, буффер устройства) не пропускается избыточная информация. Передача информации от управляющей программы программе-адаптору по "широкому" протоколу не представляет трудностей ни по быстродействию ни по доступной памяти, при этом в таком "широком" протоколе заложен отличный резерв.
malvin писал(а):uType - всегда 1
Возможно два типа команд - установка направления на оси командой D_D_D_D_ или шагов по осям _S_S_S_S. Если нужен шаг на ось, то устанавливается S=1. Если шагов на оь не делать - 0.
Насчет uType совсем не понятно, что это? видимо 1 означает "шагать"? какие еще команды предполагаются?
По поводу команд _D_D_D_D и _S_S_S_S поподробнее можно, просто чтобы разночтения не было.

malvin, вот, мысль пришла.... можт ты мне на нее и намекал, а я не понял.... )bk(
Надо мне так сделать:
Схема LPT-bridge.png (7320 просмотров) <a class='original' href='./download/file.php?id=2662&mode=view' target=_blank>Загрузить оригинал (29 КБ)</a>
(верхняя схемка - так есть, нижняя - так надо сделать)
сделать самому подмену вызовов, а из твоей библиотеки вызывать функцию выполнения команды. В связи с вышесказанным предлагаю такой вызов:

Код: Выделить всё

unsigned int __stdcall CncCmd(UCHAR uType, unsigned long int Val1, unsigned long int Val2)
Только надо разобраться с uType... например возможны такие варианты:
1 - управляем приводами: Val1 - время импульса шага (беззнаковое длинное (32 бит) целое), Val2 - коды управления приводами в виде STEP/DIR (беззнаковое длинное (32 бит) целое)
2 - управляем электроавтоматикой: Val1 - время задержки, Val2 - коды управления электроавтоматикой
что такое UCHAR?
malvin писал(а):Программа управления должна следить чтобы в буфере было не больше 1000 байт информации.
Управление передачей в буффер все-таки дело драйвера железки, а другим с ним управляться негоже... )bl( ну, например, потому что тайминги надо подбирать конкретные и размер буффера может быть разным... да и вообще...
malvin писал(а):Вопрос в студию. Кто может сваять в железе мост? Нужна схема и печатка.
Ты схемку-то накропай, хоть от руки... или сфоткай хотяб детально свою макетку...

З.Ы.: три часа ответ писал... )ai(
celladon
Новичок
Сообщения: 18
Зарегистрирован: 22 сен 2008, 11:20
Репутация: 0
Контактная информация:

Re: Контроллер ЧПУ

Сообщение celladon »

malvin
Сейчас делаю контроллер для небольших двигателей с током до 1А. Микроконтроллер Мега16(32). Могу сделать и ваш мост, это не сложно. У меня вопрос. В прошивке можно изменить так, чтобы управлять двигателем можно было бы не двумя сигналами (Step, Dir), а четырьмя (каждой обмоткой в отдельности)? И еще на какие выводы процессора выводятся сигналы Step, Dir? Жесткая привязка или можно поменять?
Аватара пользователя
malvin
Кандидат
Сообщения: 99
Зарегистрирован: 23 сен 2009, 10:12
Репутация: -26
Контактная информация:

Re: Контроллер ЧПУ

Сообщение malvin »

А чем обусловлено ограничение (или это не ограничение?) 4кГц? Возможных осей 3?
Обусловлено тем, что мне больше было как то не нужно. Ты понимаешь что такое 4000 шагов в секунду для шаговика в полношаговом режиме? Это даже не каждый шаговик выдержит. Хотя, если я чего то не знаю, поправь, пожалуйста.
Какая программа управляет?
Сейчас - пока что KCam ну и тестовая программа-заглушка. Пока на счет VRI сказать не могу - ее разработчик пока не дал своего разрешения на интеграцию. На счет GIGAMESH - сегодня вечером попробую подменить стандартную библиотеку и запустить.
Если все-таки есть непреодолимое желание или серьезная аргументация в пользу ухода от совместимости (с большим интересом ознакомился бы с вашими мыслями), по техническим вопросам взаимодействия есть такие мысли:

для переменной Value1 использовать тип longword (unsigned 32-bit integer), при этом полностью покрывается диапазон возможных временных интервалов, с бОльшим разрешением (микросекунды) и c неисчерпаемым резервом для скорости моторов (до 4Ггц ).
в описание команды приведена распиновка для одного байта информации..., предлагаю применить также 32(или 16)-битную переменную - с ее помощью можно будет закодировать перемещения до 16(8) приводов.
управление электроавтоматикой не описано, предлагаю для описания этого управления использовать также 32(или 16)-битную переменную - управление до 32 (16) устройств
Пойдет, я переделаю под вышеизложенные требования.
с ее помощью можно будет закодировать перемещения до 16(8) приводов
Ты хочешь сделать многоосевой станок? А управлять им из своей программы сможешь? Я от 3-мерной картины уже тупею, не говоря о многоосевых штуках...

На счет скорости... Ты примерно представляешь, что чем выше количество шагов в секунду, тем больше нагрузка на процессор компа - он может просто НЕ УСПЕТЬ за контроллером. Ты загрузу ЦП на своей программе смотрел? Она 100 %, да? А что ты еще хочешь, если у тебя уже весь проц забит вычисленгиями?
Насчет uType совсем не понятно, что это? видимо 1 означает "шагать"? какие еще команды предполагаются?
Те, о чем ты и говорил - управления разной периферией.
По поводу команд _D_D_D_D и _S_S_S_S поподробнее можно, просто чтобы разночтения не было.
Что конкретно интересует?
Управление передачей в буффер все-таки дело драйвера железки, а другим с ним управляться негоже... ну, например, потому что тайминги надо подбирать конкретные и размер буффера может быть разным... да и вообще...
Понимаешь, когда моя библиотека будет внутри адресного пространства ТВОЕЙ программы и будет исполнятся потоком твоего интерполятора, я ведь могу и сам отправить в слип твой поток - как бы от этого не нарушилась работа твоей программы - обязательно поплывут таймеры и прочее. Например, KCam просто башню сносит когда я попробовал его в сон отправить. Это вообще однопоточная программа, фу.

Схема вот, пока еще только набросок - жду предложений:
Изображение
Нужен лазер. Форумчане, порекомендуйте пожалуйста твердотельный лазер с маленьким пятном. || Для работы над X-Cam нужны бетта-тестеры.
Аватара пользователя
malvin
Кандидат
Сообщения: 99
Зарегистрирован: 23 сен 2009, 10:12
Репутация: -26
Контактная информация:

Re: Контроллер ЧПУ

Сообщение malvin »

celladon писал(а):malvin
Сейчас делаю контроллер для небольших двигателей с током до 1А.
Что за контроллер? Step/Dir? Микрошаг?[/quote]
celladon писал(а): В прошивке можно изменить так, чтобы управлять двигателем можно было бы не двумя сигналами (Step, Dir), а четырьмя (каждой обмоткой в отдельности)?
В прошивке то можно. Только ног бы хватило) Пусть будет 4 оси, по 4 сигнал - уже 2 порта занято, да? Придется ставить регистры или TM5/7.... А давай так! Я не жадный, скоро выложу сам исходник моста. Не вижу смысла за него цепляться - он помещается на одном листе А4. А ты сделаешь его на 4 обмотки и будет он для тех, у кого нет степ-дир. И тоже открытым. А я помогу, если будут вопросы. Что скажешь?
celladon писал(а): И еще на какие выводы процессора выводятся сигналы Step, Dir? Жесткая привязка или можно поменять?
Пока жестко на порт С. Плохо, но... знаешь, все сделать одному человеку - не под силу... много времени ушло чтобы застваить контроллер нормально и равномерно поток данных направлять на движки.
Нужен лазер. Форумчане, порекомендуйте пожалуйста твердотельный лазер с маленьким пятном. || Для работы над X-Cam нужны бетта-тестеры.
celladon
Новичок
Сообщения: 18
Зарегистрирован: 22 сен 2008, 11:20
Репутация: 0
Контактная информация:

Re: Контроллер ЧПУ

Сообщение celladon »

malvin
Какова функция кнопки SB1, динамика и светодиода?
malvin писал(а):Что за контроллер? Step/Dir? Микрошаг?[/
Простейший(недорогой) контроллер на Меге16 и UCN2804 c переключением под Step/Dir и Vri-Cnc. Плюс возможность смены прошивки через СОМ.

Возник еще один вопрос. Если делать мост с одной стороны СОМ разъем, а с другой LPT, то тогда не к любому контроллеру подойдет. Поэтому лучше наверно иметь для каждого двигателя свой разъем с сигналами Step/Dir. И кварц у вас странный.
spike
Почётный участник
Почётный участник
Сообщения: 358
Зарегистрирован: 08 фев 2010, 01:03
Репутация: 5
Контактная информация:

Re: Контроллер ЧПУ

Сообщение spike »

malvin писал(а):Ты понимаешь что такое 4000 шагов в секунду для шаговика в полношаговом режиме? Это даже не каждый шаговик выдержит. Хотя, если я чего то не знаю, поправь, пожалуйста.
На самом деле 4кГц даже в полном шаге - не много, прикол в том что на таких частотах мост особо и не нужен - спокойно справляется даже такой таймер который реализован в GIGAMESH (в VRI-cnc сделано подобным образом, скорее всего так сделано и в ККАМ). До 10-20 кГц на хорошей машине вполне шпарит (я картинку показывал в своем блоге на rcdesign.ru). Сейчас я еще с приоритетами детально разобрался - можно вообще винду так заткнуть, что только движки шуршать будут, причем весьма и весьма качественно, на скоростях от 1Гц до 10-15кГц. Но реально так можно работать только на двухпроцессорных машинах - на однопроцессорных интерфейс есстественно не арбайтен.
malvin писал(а):Ты хочешь сделать многоосевой станок? А управлять им из своей программы сможешь? Я от 3-мерной картины уже тупею, не говоря о многоосевых штуках...
Ага, именно для многоосевого станка изначально программа и разрабатывается.
malvin писал(а):На счет скорости... Ты примерно представляешь, что чем выше количество шагов в секунду, тем больше нагрузка на процессор компа - он может просто НЕ УСПЕТЬ за контроллером. Ты загрузу ЦП на своей программе смотрел? Она 100 %, да? А что ты еще хочешь, если у тебя уже весь проц забит вычисленгиями?

Понимаешь, когда моя библиотека будет внутри адресного пространства ТВОЕЙ программы и будет исполнятся потоком твоего интерполятора, я ведь могу и сам отправить в слип твой поток - как бы от этого не нарушилась работа твоей программы - обязательно поплывут таймеры и прочее.
Расскажу как устроен GIGAMESH:
есть три потока: 1 - ядро, 2 - интерполятор, 3 - вывод. Всегда работает есстественно №1 - он основной, запускает когда надо №2 и №3. Интерполяция (т.е. основные вычисления) запускаются заранее, ДО вывода - с целью максимально разгрузить процессор при выводе. Интерполированные данные хранятся в памяти. После интерполяции запускается поток №3 - вывод, в нем вычислений практически не производится (в версиях 1Н и 2Н) в этом потоке рассчитываются временные интервалы, но и это будет вынесено из него.
Навскидку, если ты будешь слипить процесс №3, а именно в него будет (должен) внедряться мост, ничего страшного не произойдет. Это, конечно, надо проверить...
Загрузка проца 100% не из-за вычислений, так реализован этот скоростной таймер )bn( - фактически это легкий цикл, в котором ничего нет, кроме определения текущего времени и работы с портом, если нужное время достигнуто. Если в какой-то момент времени ты усыпишь процесс, то когда он проснется он увидит что положенное для шага время вышло - сработает с портом и просто продолжит работу.
malvin писал(а):Пойдет, я переделаю под вышеизложенные требования.
Итак, уточню спецификацию:

Код: Выделить всё

unsigned int __stdcall CncCmd(char *uType, unsigned long int Val1, unsigned long int Val2)
- возвращает процент заполнения буффера, управляющая программа должна поддерживать заполненность в диапазоне (25-75%)
- uType - тип выполняемой команды:
  • 'Step' - выполняет шаг по 32-битной маске Val1 (DSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDS), D - направление, S - шаг (S=1 - выполняется шаг, S=0 - шага нет), индексация приводов: 1-й привод соответствует младшим битам, 16-й привод старшим; Val2 - период выполнения шага в микросекундах
  • 'Control'- выполняет включение/отключение по маске Val1, 1 - включено, 0 - отключено, индексация устройств: 1-е устройство соответствует младшему биту, 32-е - старшему; Val2 - время паузы после выполнения команды включения в микросекундах (?)

Принимается?
Аватара пользователя
malvin
Кандидат
Сообщения: 99
Зарегистрирован: 23 сен 2009, 10:12
Репутация: -26
Контактная информация:

Re: Контроллер ЧПУ

Сообщение malvin »

На самом деле 4кГц даже в полном шаге - не много
Для кого немного? Для шагового движка? У меня, например, движки клинит на 2000 герц. Может быть, на коммерческих станках и 10000 - это я слыхал из проверенных источников. А вот больше - это уже из ряда фантастики.
прикол в том что на таких частотах мост особо и не нужен
Если мосто не нужен, что ж мы тогда обсуждаем? Все по домам.
Сейчас я еще с приоритетами детально разобрался - можно вообще винду так заткнуть, что только движки шуршать будут, причем весьма и весьма качественно, на скоростях от 1Гц до 10-15кГц.
Ну, это конечно возможно, но в домашних условиях это просто экзотика. А на счет приоритетов - даже с приоритетом реального времени всегда найдется тот, кто готов будет потеснить твою программу, например, драйвера, которые ТОЖЕ работают в реальном времени. Так что слабо верится, уж извини.

Теперь конкретно. Листинг ниже - это то, что выдает GIGAMESH в мою программу. Когда я кручу мышкой одной осью - крутятся все три оси, причем, в одном направлении. Конфигурация в листинге.

Код: Выделить всё

26.10.2009-14:43:57 DllMain COMOpen STATE_MK_PORT_OPENED

                                       //   Y   Z        X
                                      //   76  54  32  10
                                      //   DS DS DS DS
26.10.2009-14:43:58 write: 0 0 0 0 0 0 0 0   381ms DeltaTime=0 TimeAvr=0.00/5.00
26.10.2009-14:44:03 write: 0 0 0 0 0 0 0 0   809ms DeltaTime=0 TimeAvr=0.00/5.00
26.10.2009-14:44:05 write: 1 1 0 0 0 0 1 0   632ms DeltaTime=0 TimeAvr=0.00/5.00
26.10.2009-14:44:05 write: 1 1 0 0 0 0 1 0   632ms DeltaTime=0 TimeAvr=0.00/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 1   778ms DeltaTime=0 TimeAvr=0.00/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   778ms DeltaTime=0 TimeAvr=0.00/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 0   778ms DeltaTime=0 TimeAvr=0.00/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   778ms DeltaTime=0 TimeAvr=0.00/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 1   828ms DeltaTime=50 TimeAvr=5.56/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   838ms DeltaTime=10 TimeAvr=6.00/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 0   838ms DeltaTime=0 TimeAvr=5.45/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   838ms DeltaTime=0 TimeAvr=5.00/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 1   848ms DeltaTime=10 TimeAvr=5.38/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   848ms DeltaTime=0 TimeAvr=5.00/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 0   848ms DeltaTime=0 TimeAvr=4.67/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   848ms DeltaTime=0 TimeAvr=4.38/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 1   888ms DeltaTime=40 TimeAvr=6.47/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   888ms DeltaTime=0 TimeAvr=6.11/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 0   898ms DeltaTime=10 TimeAvr=6.32/1.20
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   898ms DeltaTime=0 TimeAvr=6.00/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 1   908ms DeltaTime=10 TimeAvr=6.50/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   908ms DeltaTime=0 TimeAvr=6.50/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 0   908ms DeltaTime=0 TimeAvr=6.50/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   908ms DeltaTime=0 TimeAvr=6.50/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 1   958ms DeltaTime=50 TimeAvr=9.00/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   958ms DeltaTime=0 TimeAvr=9.00/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 0   958ms DeltaTime=0 TimeAvr=9.00/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   968ms DeltaTime=10 TimeAvr=9.50/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 1   978ms DeltaTime=10 TimeAvr=7.50/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   978ms DeltaTime=0 TimeAvr=7.00/5.00
26.10.2009-14:44:09 write: 1 1 0 0 0 0 1 0   988ms DeltaTime=10 TimeAvr=7.50/5.00
26.10.2009-14:44:09 write: 0 0 0 0 1 0 1 0   988ms DeltaTime=0 TimeAvr=7.50/5.00
26.10.2009-14:44:10 write: 1 1 0 0 0 0 1 1   38ms DeltaTime=0 TimeAvr=7.00/5.00
26.10.2009-14:44:10 write: 0 0 0 0 1 0 1 0   38ms DeltaTime=0 TimeAvr=7.00/5.00
26.10.2009-14:44:10 write: 1 1 0 0 0 0 1 0   38ms DeltaTime=0 TimeAvr=7.00/5.00
26.10.2009-14:44:10 write: 0 0 0 0 1 0 1 0   38ms DeltaTime=0 TimeAvr=7.00/5.00
26.10.2009-14:44:10 write: 1 1 0 0 0 0 1 1   48ms DeltaTime=10 TimeAvr=5.50/5.00
26.10.2009-14:44:10 write: 0 0 0 0 1 0 1 0   48ms DeltaTime=0 TimeAvr=5.50/1.20
26.10.2009-14:44:10 write: 1 1 0 0 0 0 1 0   58ms DeltaTime=10 TimeAvr=5.50/1.20
26.10.2009-14:44:10 write: 0 0 0 0 1 0 1 0   58ms DeltaTime=0 TimeAvr=5.50/1.20
26.10.2009-14:44:10 write: 1 1 0 0 0 0 1 1   178ms DeltaTime=0 TimeAvr=5.00/1.20
26.10.2009-14:44:10 write: 0 0 0 0 1 0 1 0   178ms DeltaTime=0 TimeAvr=5.00/1.20
26.10.2009-14:44:10 write: 1 1 0 0 0 0 1 0   188ms DeltaTime=10 TimeAvr=5.50/1.20
26.10.2009-14:44:10 write: 0 0 0 0 1 0 1 0   188ms DeltaTime=0 TimeAvr=5.50/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 1   300ms DeltaTime=0 TimeAvr=3.00/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   300ms DeltaTime=0 TimeAvr=3.00/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 0   310ms DeltaTime=10 TimeAvr=3.50/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   310ms DeltaTime=0 TimeAvr=3.00/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 1   380ms DeltaTime=70 TimeAvr=6.00/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   380ms DeltaTime=0 TimeAvr=6.00/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 0   390ms DeltaTime=10 TimeAvr=6.00/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   390ms DeltaTime=0 TimeAvr=6.00/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 1   400ms DeltaTime=10 TimeAvr=6.50/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   400ms DeltaTime=0 TimeAvr=6.50/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 0   410ms DeltaTime=10 TimeAvr=7.00/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   410ms DeltaTime=0 TimeAvr=7.00/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 1   430ms DeltaTime=20 TimeAvr=7.50/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   430ms DeltaTime=0 TimeAvr=7.50/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 0   440ms DeltaTime=10 TimeAvr=7.50/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   440ms DeltaTime=0 TimeAvr=7.50/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 1   450ms DeltaTime=10 TimeAvr=8.00/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   460ms DeltaTime=10 TimeAvr=8.50/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 0   460ms DeltaTime=0 TimeAvr=8.00/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   460ms DeltaTime=0 TimeAvr=8.00/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 1   510ms DeltaTime=50 TimeAvr=10.50/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   520ms DeltaTime=10 TimeAvr=11.00/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 0   540ms DeltaTime=20 TimeAvr=11.50/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   540ms DeltaTime=0 TimeAvr=11.50/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 1   590ms DeltaTime=50 TimeAvr=10.50/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   600ms DeltaTime=10 TimeAvr=11.00/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 0   600ms DeltaTime=0 TimeAvr=10.50/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   600ms DeltaTime=0 TimeAvr=10.50/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 1   710ms DeltaTime=0 TimeAvr=10.00/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   710ms DeltaTime=0 TimeAvr=10.00/1.20
26.10.2009-14:44:11 write: 1 1 0 0 0 0 0 0   720ms DeltaTime=10 TimeAvr=10.00/1.20
26.10.2009-14:44:11 write: 0 0 0 0 1 0 1 0   720ms DeltaTime=0 TimeAvr=10.00/1.20
26.10.2009-14:44:12 write: 1 1 0 0 0 0 1 1   902ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:12 write: 0 0 0 0 1 0 1 0   902ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:12 write: 1 1 0 0 0 0 1 0   902ms DeltaTime=0 TimeAvr=8.50/1.20
26.10.2009-14:44:12 write: 0 0 0 0 1 0 1 0   902ms DeltaTime=0 TimeAvr=8.50/1.20
26.10.2009-14:44:12 write: 1 1 0 0 0 0 1 1   942ms DeltaTime=40 TimeAvr=10.00/1.20
26.10.2009-14:44:12 write: 0 0 0 0 1 0 1 0   942ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:12 write: 1 1 0 0 0 0 1 0   952ms DeltaTime=10 TimeAvr=10.00/1.20
26.10.2009-14:44:12 write: 0 0 0 0 1 0 1 0   952ms DeltaTime=0 TimeAvr=10.00/1.20
26.10.2009-14:44:12 write: 1 1 0 0 0 0 1 1   962ms DeltaTime=10 TimeAvr=8.00/1.20
26.10.2009-14:44:12 write: 0 0 0 0 1 0 1 0   962ms DeltaTime=0 TimeAvr=7.50/1.20
26.10.2009-14:44:12 write: 1 1 0 0 0 0 1 0   962ms DeltaTime=0 TimeAvr=6.50/1.20
26.10.2009-14:44:12 write: 0 0 0 0 1 0 1 0   962ms DeltaTime=0 TimeAvr=6.50/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 1   42ms DeltaTime=0 TimeAvr=4.00/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   42ms DeltaTime=0 TimeAvr=3.50/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 0   52ms DeltaTime=10 TimeAvr=4.00/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   52ms DeltaTime=0 TimeAvr=4.00/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 1   112ms DeltaTime=60 TimeAvr=7.00/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   112ms DeltaTime=0 TimeAvr=7.00/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 0   112ms DeltaTime=0 TimeAvr=6.50/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   112ms DeltaTime=0 TimeAvr=6.50/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 1   143ms DeltaTime=31 TimeAvr=8.05/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   143ms DeltaTime=0 TimeAvr=8.05/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 0   143ms DeltaTime=0 TimeAvr=8.05/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   143ms DeltaTime=0 TimeAvr=8.05/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 1   153ms DeltaTime=10 TimeAvr=6.55/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   153ms DeltaTime=0 TimeAvr=6.55/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 0   163ms DeltaTime=10 TimeAvr=6.55/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   163ms DeltaTime=0 TimeAvr=6.55/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 1   243ms DeltaTime=80 TimeAvr=10.05/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   243ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:13 write: 1 1 0 0 0 0 1 0   243ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:13 write: 0 0 0 0 1 0 1 0   243ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 1   214ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   214ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 0   214ms DeltaTime=0 TimeAvr=9.55/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   214ms DeltaTime=0 TimeAvr=9.55/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 1   264ms DeltaTime=50 TimeAvr=9.05/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   264ms DeltaTime=0 TimeAvr=9.05/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 0   264ms DeltaTime=0 TimeAvr=9.05/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   264ms DeltaTime=0 TimeAvr=9.05/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 1   284ms DeltaTime=20 TimeAvr=8.50/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   284ms DeltaTime=0 TimeAvr=8.50/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 0   284ms DeltaTime=0 TimeAvr=8.50/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   284ms DeltaTime=0 TimeAvr=8.50/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 1   324ms DeltaTime=40 TimeAvr=10.00/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   324ms DeltaTime=0 TimeAvr=10.00/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 0   344ms DeltaTime=20 TimeAvr=10.50/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   344ms DeltaTime=0 TimeAvr=10.50/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 1   354ms DeltaTime=10 TimeAvr=7.00/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   354ms DeltaTime=0 TimeAvr=7.00/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 0   354ms DeltaTime=0 TimeAvr=7.00/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   364ms DeltaTime=10 TimeAvr=7.50/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 1   404ms DeltaTime=40 TimeAvr=9.50/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   404ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 0   404ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   404ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 1   454ms DeltaTime=50 TimeAvr=9.50/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   454ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:14 write: 1 1 0 0 0 0 0 0   464ms DeltaTime=10 TimeAvr=10.00/1.20
26.10.2009-14:44:14 write: 0 0 0 0 1 0 1 0   464ms DeltaTime=0 TimeAvr=10.00/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 1   366ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   366ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 0   366ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   366ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 1   386ms DeltaTime=20 TimeAvr=8.00/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   386ms DeltaTime=0 TimeAvr=8.00/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 0   386ms DeltaTime=0 TimeAvr=7.00/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   386ms DeltaTime=0 TimeAvr=7.00/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 1   446ms DeltaTime=60 TimeAvr=9.50/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   446ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 0   446ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   456ms DeltaTime=10 TimeAvr=9.50/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 1   486ms DeltaTime=30 TimeAvr=9.00/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   486ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 0   486ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   496ms DeltaTime=10 TimeAvr=9.50/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 1   546ms DeltaTime=50 TimeAvr=9.50/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   546ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 0   556ms DeltaTime=10 TimeAvr=9.50/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   556ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 1   576ms DeltaTime=20 TimeAvr=10.50/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   576ms DeltaTime=0 TimeAvr=10.50/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 0   576ms DeltaTime=0 TimeAvr=10.50/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   576ms DeltaTime=0 TimeAvr=10.50/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 1   656ms DeltaTime=80 TimeAvr=13.50/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   656ms DeltaTime=0 TimeAvr=13.50/1.20
26.10.2009-14:44:15 write: 1 1 0 0 0 0 1 0   666ms DeltaTime=10 TimeAvr=14.00/1.20
26.10.2009-14:44:15 write: 0 0 0 0 1 0 1 0   666ms DeltaTime=0 TimeAvr=14.00/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 1   407ms DeltaTime=0 TimeAvr=11.00/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   407ms DeltaTime=0 TimeAvr=11.00/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 0   407ms DeltaTime=0 TimeAvr=11.00/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   407ms DeltaTime=0 TimeAvr=10.50/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 1   447ms DeltaTime=40 TimeAvr=11.00/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   447ms DeltaTime=0 TimeAvr=11.00/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 0   447ms DeltaTime=0 TimeAvr=11.00/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   457ms DeltaTime=10 TimeAvr=11.00/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 1   467ms DeltaTime=10 TimeAvr=9.00/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   467ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 0   467ms DeltaTime=0 TimeAvr=8.50/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   467ms DeltaTime=0 TimeAvr=8.50/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 1   497ms DeltaTime=30 TimeAvr=9.00/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   497ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 0   507ms DeltaTime=10 TimeAvr=9.50/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   507ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 1   517ms DeltaTime=10 TimeAvr=6.00/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   517ms DeltaTime=0 TimeAvr=6.00/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 0   517ms DeltaTime=0 TimeAvr=5.50/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   517ms DeltaTime=0 TimeAvr=5.50/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 1   608ms DeltaTime=91 TimeAvr=10.05/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   618ms DeltaTime=10 TimeAvr=10.55/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 0   618ms DeltaTime=0 TimeAvr=10.55/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   618ms DeltaTime=0 TimeAvr=10.55/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 1   668ms DeltaTime=50 TimeAvr=11.05/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   668ms DeltaTime=0 TimeAvr=11.05/1.20
26.10.2009-14:44:16 write: 1 1 0 0 0 0 0 0   668ms DeltaTime=0 TimeAvr=11.05/1.20
26.10.2009-14:44:16 write: 0 0 0 0 1 0 1 0   668ms DeltaTime=0 TimeAvr=10.55/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 1   238ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   238ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 0   238ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   238ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 1   268ms DeltaTime=30 TimeAvr=10.05/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   268ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 0   268ms DeltaTime=0 TimeAvr=9.55/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   268ms DeltaTime=0 TimeAvr=9.55/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 1   319ms DeltaTime=51 TimeAvr=11.60/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   349ms DeltaTime=30 TimeAvr=13.10/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 0   349ms DeltaTime=0 TimeAvr=13.10/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   349ms DeltaTime=0 TimeAvr=13.10/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 1   359ms DeltaTime=10 TimeAvr=9.05/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   359ms DeltaTime=0 TimeAvr=8.55/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 0   369ms DeltaTime=10 TimeAvr=9.05/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   369ms DeltaTime=0 TimeAvr=9.05/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 1   389ms DeltaTime=20 TimeAvr=7.55/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   389ms DeltaTime=0 TimeAvr=7.55/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 0   389ms DeltaTime=0 TimeAvr=7.55/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   389ms DeltaTime=0 TimeAvr=7.55/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 1   399ms DeltaTime=10 TimeAvr=8.05/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   399ms DeltaTime=0 TimeAvr=8.05/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 0   409ms DeltaTime=10 TimeAvr=8.55/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   409ms DeltaTime=0 TimeAvr=8.55/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 1   469ms DeltaTime=60 TimeAvr=10.05/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   469ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:17 write: 1 1 0 0 0 0 1 0   469ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:17 write: 0 0 0 0 1 0 1 0   469ms DeltaTime=0 TimeAvr=10.05/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 1   70ms DeltaTime=0 TimeAvr=7.50/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   120ms DeltaTime=50 TimeAvr=8.50/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 0   130ms DeltaTime=10 TimeAvr=9.00/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   150ms DeltaTime=20 TimeAvr=10.00/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 1   150ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   150ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 0   160ms DeltaTime=10 TimeAvr=9.50/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   160ms DeltaTime=0 TimeAvr=9.50/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 1 *  170ms DeltaTime=10 TimeAvr=9.00/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   170ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 0 *  170ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   170ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 1 *  180ms DeltaTime=10 TimeAvr=9.00/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   180ms DeltaTime=0 TimeAvr=9.00/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 0*   180ms DeltaTime=0 TimeAvr=8.50/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   180ms DeltaTime=0 TimeAvr=8.50/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 1*   190ms DeltaTime=10 TimeAvr=6.00/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   190ms DeltaTime=0 TimeAvr=6.00/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 0*   200ms DeltaTime=10 TimeAvr=6.50/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   200ms DeltaTime=0 TimeAvr=6.50/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 1*   220ms DeltaTime=20 TimeAvr=7.50/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   220ms DeltaTime=0 TimeAvr=5.00/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 0*   230ms DeltaTime=10 TimeAvr=5.00/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   230ms DeltaTime=0 TimeAvr=4.00/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 1*   280ms DeltaTime=50 TimeAvr=6.50/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   280ms DeltaTime=0 TimeAvr=6.50/1.20
26.10.2009-14:44:18 write: 1 1 0 0 0 0 0 0*   280ms DeltaTime=0 TimeAvr=6.00/1.20
26.10.2009-14:44:18 write: 0 0 0 0 1 0 1 0   290ms DeltaTime=10 TimeAvr=6.50/1.20
26.10.2009-14:44:23 =====DLL_PROCESS_DETACH=====

Нужен лазер. Форумчане, порекомендуйте пожалуйста твердотельный лазер с маленьким пятном. || Для работы над X-Cam нужны бетта-тестеры.
Аватара пользователя
malvin
Кандидат
Сообщения: 99
Зарегистрирован: 23 сен 2009, 10:12
Репутация: -26
Контактная информация:

Re: Контроллер ЧПУ

Сообщение malvin »

celladon писал(а):malvin
Какова функция кнопки SB1, динамика и светодиода?
Пока не реализованы. Нарисовал чтобы можно было обсудить.

Возник еще один вопрос. Если делать мост с одной стороны СОМ разъем, а с другой LPT, то тогда не к любому контроллеру подойдет. Поэтому лучше наверно иметь для каждого двигателя свой разъем с сигналами Step/Dir. И кварц у вас странный.
Что то не понял. Голова тяжелая.... Если речь на счет моста, то у него только один интерфейс с компом - по COM-порту. А кварц - чтобы ошибок при передаче по последовательному порту было меньше - тогда частота выставляется стандартная - ровно 115200 герц.
Нужен лазер. Форумчане, порекомендуйте пожалуйста твердотельный лазер с маленьким пятном. || Для работы над X-Cam нужны бетта-тестеры.
celladon
Новичок
Сообщения: 18
Зарегистрирован: 22 сен 2008, 11:20
Репутация: 0
Контактная информация:

Re: Контроллер ЧПУ

Сообщение celladon »

malvin писал(а):Что то не понял. Голова тяжелая.... Если речь на счет моста, то у него только один интерфейс с компом - по COM-порту. А кварц - чтобы ошибок при передаче по последовательному порту было меньше - тогда частота выставляется стандартная - ровно 115200 герц.
Фотка моей платки про которую я уже писал ниже. Слева разъем СОМ (вход), справа LPT (выход). Может по такому типу только на Меге32?
Вложения
COV-PAR.jpg (5060 просмотров) <a class='original' href='./download/file.php?id=2663&mode=view' target=_blank>Загрузить оригинал (81.82 КБ)</a>
Ответить

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