Подключаем наши девайсы к компьютеру. Обсуждаются: порты, протоколы, драйвера, языки программирования и т.д.
Вс мар 13, 2011 20:02:45
Подскажите пожалуйста max значение частоты, с котрой можно выдавать управляющие импульсы, а так же считывать (если их скорость не одинакова).
Вс мар 13, 2011 21:36:07
Ну как бы многозадачность ОС не позволит точно формировать и считывать данные.
Лучше связка МК - PC.
Вс мар 13, 2011 23:06:18
Ввиду многообразия чипсетов и их настроек, точное значение максимальной скорости обмена по Centronics не скажет никто.
Во времена MS-DOS, я написал простейший скоростемер 8, 16 и 32-х битных операций ввода-вывода с произвольным портом. По моему опыту однобайтные пересылки (in al,dx и out dx,al) в порт данных LPT в режиме SPP дают скорость от 200 до 800 тыс. байт/с в зависимости от конфигурации "железа". Такой разброс наблюдался повсеместно, начиная от ISA мультикарт в PC AT до современных SuperIO чипов. Если для первых скорость определялась частотой шины и числом дополнительных тактов ожидания, то для последних - целой кучей совершенно других факторов, включая такую экзотику, как обработка SMI для поддержки USB-Legacy устройств до загрузки операционной системы.
ИМХО, ориентироваться можно на предел в 1 мкс на байтовый ввод-вывод или 1 Мбайт/с.
Пн мар 14, 2011 00:36:04
Максимальная скорость обмена через порт LPT достигается в режиме ECP и достигает 2.5 МБ/с. Этот предел устанавливается возможностями 8-битного контроллера прямого доступа к памяти IBM PC (именно он используется в этом режиме). Больше не получится - расплата за совместимость с ранними моделями семейства.
Пн мар 14, 2011 08:37:07
только говорить о "частоте" не стоит, т.к. передача всегда ведется пакетами, т.е. будут неизбежно паузы от 10 мкс до 50 мс и более.
Пн мар 14, 2011 09:10:06
Согласен. ECP вряд ли применим в случае, когда требуется лишь управлять с определённой ритмичностью отдельными сигналами порта или наоборот, определять их состояние. ECP - протокол блочного обмена, к тому же с аппаратным квитированием, буферированием и, при необходимости, однобайтной RLE компрессией.
Пн мар 14, 2011 15:38:17
только говорить о "частоте" не стоит, т.к. передача всегда ведется пакетами, т.е. будут неизбежно паузы от 10 мкс до 50 мс и более.
Получается, что если я буду опрашивать какое-либо устройство с периодом например 10мкс, то если будут задержки, и считав на 3-м шаге значение 125, из-за задережек (например 100мкс), я буду получать
это же значение до 13 шага ?
Пн мар 14, 2011 18:38:28
[km]REX писал(а):только говорить о "частоте" не стоит, т.к. передача всегда ведется пакетами, т.е. будут неизбежно паузы от 10 мкс до 50 мс и более.
Получается, что если я буду опрашивать какое-либо устройство с периодом например 10мкс, то если будут задержки, и считав на 3-м шаге значение 125, из-за задережек (например 100мкс), я буду получать
это же значение до 13 шага ?
нет, не так. ваша программа будет уверена, что она получает данные каждые 10 мкс, а на самом деле некоторые данные будут задержаны на неопределенный интервал. т.е. вы не можете быть уверены, что между данными у вас одно и то же время.
Пн мар 14, 2011 18:39:09
[km]REX писал(а):буду опрашивать какое-либо устройство с периодом например 10мкс
Для многозадачных ОС это фантастика!
Вам нужно что-то типа MS-DOS для этого.
Вт мар 15, 2011 01:56:42
Мурик писал(а):[km]REX писал(а):буду опрашивать какое-либо устройство с периодом например 10мкс
Для многозадачных ОС это фантастика!
Вам нужно что-то типа MS-DOS для этого.
QNX?
Ср мар 23, 2011 08:52:58
Полностью согласен со сказанным по поводу нестабильности.
Небольше добаления:
Да, раньше цикл обращения к LPT занимал, как правило, от 1.2 до 2.5 мкс в зависимости от чипсета и настроек материнской платы (настроек ISA). Процессор от 286 до пентиумов на это мало влиял. А вот настройки ISA в биосе влияли, на некоторых платах уавалось добиться 0.8мкс для LPT (и 8-битных обращений на ISA, а для 16-битных -- до 0.5мкс).
Даже в тех мамках, где ISA уже не была выведена для плат расширения, она была на самой плате для MIO-чипа. Но там настроить уже ничего было нельзя. Позже кое-где MIO-чипы и LPT с ними сели на LPC (LowPinCount) - это такой себе 33-мегагерцовый, но 4-битный урезанный аналог PCI. Пока оно передаст в несколько тактов сначала адрес, потом данные, как раз на обычную скорость ISA и выходит, только менее, чем по десятку проводов. Итого -- привычные 1.1-1.3мкс на обращение LPT, зависящие уже от того, где сидит чип (сколько PCI-мостов в системе?)
PCI-LPT платы изначально имеют бо́льшую скорость обмена. Тут тоже есть зависимость от того, насколько навороченная мамка и за сколькими мостами оказались на ней слоты PCI. Имеем 0.3-0.7 мкс на обращение (именно поэтому avreal через PCI-LPT шьёт AVR-ки быстрее, чем все soft-USB программаторы и часть имеющих аппаратный USB-COM конвертор).
Пн фев 06, 2017 23:34:28
Вопрос к опытным котам:
Нужно сделать вывод сигнала через PCI шину с привязкой к тактовой частоте шины. Там она 33 или 66 МГц. Система предназначена для управления станком с шаговыми двигателями с обратной связью, т.е. по сути нужно сделать сервопривод на базе шагового двигателя и датчика типа TTL; размножить его на сколько это получится и засунуть на одну плату.
Предполагается использовать процессор AMD 4 ядра по 4 ГГц и соответственно мать для него. В процессорах Интел есть функция Intel Virtualization Technology. Даёт возможность виртуальным машинам получать доступ к аппаратным ресурсам. Если это будет необходимо, выбор платформы будет пересмотрен в пользу Intel.
Станок будет использоваться для товарной обработки и нарезания резьбы. Нужны такие функции как круговая, линейная интерполяция, старт прохода с нулевой меткой шпинделя (для многопроходного нарезания резьбы).
Алгоритм работы примерно такой: моделируется процесс работы станка, в соответствии с введенной программой (в G-кодах). С частотой 33 МГц/16 высчитывается положение для каждой из задействованных осей. Положение сравнивается с реальным, которое было вычислено по датчиками и хранится в оперативной памяти. В соответствии с отставанием вычисленного положения от реального на ось выдаётся определённая широта импульса. Для двухполюсных шаговых двигателей в каждом из возможных 1000 положений (по датчику) соответствует один их 4-х вариантов подачи напряжения: обмотка А +; обмотка Б+; обмотка А-; обмотка Б-.
Это ещё не все. Для подключения внешних сервоприводов с платы выведена шина, 2 провода. Совместимость с rs485 приветствуется, хотя и не обязательна. Частота шины - 1 МГц. Формат передачи данных: первый байт стартовый 11111111. Далее следует 2 байта адреса, затем 2 байта данных, затем 4 бит пауза. Она же используется ведомым устройством для запроса прерывания, если это необходимо. Далее следует 2 байта обратной связи, далее 4 бит пауза. После этого цикл повторяется сначала. Таким образом мы имеем: полный кадр, со всеми паузами и т.д., занимает 64 бит. При частоте 1МГц -1000000:64 = 15 655 кадров в секунду. Этого хватит для того, чтобы, допустим, управлять одновременно 15-ю сервоприводами с частотой 100 Гц.
Для чего это нужно:
Все приводы, подключенные напрямую и через последовательную шину, синхронизированы в одном устройстве, в одном процессе компьютера.
Суть вопроса: реализовать в железе.
Вт фев 07, 2017 10:02:30
Ну и какова цена вопроса ?
Вт фев 07, 2017 19:26:36
Цена вопроса полсотни.
Ср фев 08, 2017 09:30:59
Надеюсь, не $ - рублей ? А то не так смешно было бы .
Чт фев 09, 2017 16:11:42
Анекдот:
Одинокий мужчина ...
Убрал, не по теме. Предупреждение. FAKIR.
Чт фев 09, 2017 17:46:52
Corvet C6 писал(а):... Система предназначена для управления станком с шаговыми двигателями с обратной связью, т.е. по сути нужно сделать ...
"По сути" - ничего не нужно делать. Всю необходимую электронику для станков с ЧПУ давно можно купить у китайцев. Выйдет на два порядка дешевле, чем разработка вашего "велосипеда".
Сб фев 25, 2017 20:24:03
Corvet C6 писал(а):... Система предназначена для управления станком с шаговыми двигателями с обратной связью, т.е. по сути нужно сделать сервопривод на базе шагового двигателя и датчика типа TTL; размножить его на сколько это получится и засунуть на одну плату...
Описанная вами система с преобразованием G кодов в перемещение по координатам с помощью компьютера существует.
например широко распространена MACH3.
LPT плата от $5
https://www.aliexpress.com/w/wholesale- ... eedQuery=nUSB от $30..40
https://www.aliexpress.com/item/mach3-4 ... 038f19d4bcЕсть вариант, когда компьютер только передает(проигрывает) файлы с G кодами в станок а станок сам пересчитывает шаги и координаты.
Например GRBL.
За $60 можно купить плату + 3 драйвера+ 3 мотора
https://www.aliexpress.com/item/Diy-3-a ... 0a48a8ae5aGRBL - открытый проект, можно подправить под свои задачи.
В обоих случаях(а может и во всех случаях) отслеживание истинного положения с заданным должно решаться приводом.
Например превышением имеющегося момента привода над максимально требуемым моментом раза в 3.
Или созданием следящего привода.
Грубо говоря, между устройством передающим шаговый импульс и приводом отрабатывающим импульс(драйвером двигателя)
врезается устройство которое считает импульсы от задатчика и сравнивает их с импульсами от энкодера положения.
В случае рассогласования дополнительно формирует импульсы управления.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.