Re: Контроллер для LinuxCNC (Ethernet + STM32)
Добавлено: 31 окт 2019, 12:42
Само успевается или специальными драйверами/патчами?MX_Master писал(а):Опыт плат mesa показывает, что усё успевается.
Статьи, обзоры, цены на станки и комплектующие.
https://cnc-club.ru/forum/
Само успевается или специальными драйверами/патчами?MX_Master писал(а):Опыт плат mesa показывает, что усё успевается.
А почему Надо обязательно передавать данные каждый сервоцикл?Нельзя разве организовать буфер?Сергей Саныч писал(а): а не придется ли нам иногда "подождать", пока ядро чего-то там делает, например, картинку там выводит или обменивается с диском. И не превысит ли это время сервопериод?
Лично я тестировал общение STM32 c Orange Pi PC на обычном RT ядре 4.х. Всё успевается. Владельцы плат меса могут поделиться своим опытомСергей Саныч писал(а):Само успевается или специальными драйверами/патчами?MX_Master писал(а):Опыт плат mesa показывает, что усё успевается.
Это будет уже не RTsidor094 писал(а): А почему Надо обязательно передавать данные каждый сервоцикл?Нельзя разве организовать буфер?
Потому, что надо считывать фактически выданное количество STEPов и делать это каждый сервоцикл. LCNC учитывает эти данные при выдаче следующего пакета. Так уж он устроен.sidor094 писал(а):А почему Надо обязательно передавать данные каждый сервоцикл?Нельзя разве организовать буфер?
Так это наоборот плюс .Возможность работать с операционкой которая не поддерживает RT. Как это ухудшит параметры системы?Естественно если не делать буфер на десятки секунд.MX_Master писал(а):Это будет уже не RT
Может я чего-то не понимаю,я не знаю LINUXCNC.А нельзя фактически выданное число сделать равным фактически заданному?И завернуть обратную связь внутри LINUX а не снаружи?Сергей Саныч писал(а):Потому, что надо считывать фактически выданное количество STEPов и делать это каждый сервоцикл. LCNC учитывает эти данные при выдаче следующего пакета.
Сигналы от физических датчиков как правило терпят.Проблемы с синхронизацией можно решить чуть ускорив выдачу шагов на контроллере чтобы оставалась возможность чуть растянуть паузу в конце одной или нескольких посылок.Или передавать истинное значение шагов не каждый сервоцикл,а в течение 5-10 сервоциклов.Я же не предлагаю растягивать обратную связь с компьютером до очень больших значений.Сергей Саныч писал(а):Кроме того, есть сигналы от физических датчиков, которые тоже требуют своевременной обработки.
АнтиСтепмастер?sidor094 писал(а):Проблемы с синхронизацией можно решить чуть ускорив выдачу шагов на контроллере чтобы оставалась возможность чуть растянуть паузу в конце одной или нескольких посылок.
Буфер наоборот позволяет выравнивать переходы между сервоциклами.Так как в буфере хранится информация для нескольких сервоциклах,то поступление очередного информационного цикла позволяет чуть чуть подстроить время выдачи шагов.Как в синтезаторе частоты.Так что среднее время будет плавать вокруг сервоцикла.И ,в итоге за все время работы станка будет отличаться от образцового (задаваемого LINUXOM)всего на 10000 нс.UAVpilot писал(а):АнтиСтепмастер?
Расхождения надо компенсировать как можно быстрее, а любая буферизация будет этому препятствовать по определению.sidor094 писал(а):Буфер наоборот позволяет выравнивать переходы между сервоциклами.
Расхождения можно было бы вообще не компенсировать если бы мы имели буфер на всю программу.Так как это просто разница между временами в плате и в компьютере.Но так как буфер ограничен мы вынуждены их компенсировать то есть то прибавлять ,то снижать такты сервоцикла в плате в зависимости от отставания или опережения времени компьютера и платы с тем чтобы не было переполнения буфера или наоборот ожидания дальнейшего его заполнения.Но эти изменения тактов сервоцикла в плате будут очень незначительны и не повлияют на скорость и практически не повлияют на неравномерность скорости.UAVpilot писал(а):Расхождения надо компенсировать как можно быстрее
Мне кажется ты пытаешься смотреть на сервоциклы, так-же как и на обычные команды которые посылаются например в те-же ардуино подобные контроллеры.sidor094 писал(а):Расхождения можно было бы вообще не компенсировать если бы мы имели буфер на всю программу.Так как это просто разница между временами в плате и в компьютере.Но так как буфер ограничен мы вынуждены их компенсировать то есть то прибавлять ,то снижать такты сервоцикла в плате в зависимости от отставания или опережения времени компьютера и платы с тем чтобы не было переполнения буфера или наоборот ожидания дальнейшего его заполнения.Но эти изменения тактов сервоцикла в плате будут очень незначительны и не повлияют на скорость и практически не повлияют на неравномерность скорости.UAVpilot писал(а):Расхождения надо компенсировать как можно быстрее
Почему?Какая разница между буфером команд и буфером сервоциклов?В чем при этом принципиально отличается работа с буфером?По сути и там и там буфер заданий.Разница только в том ,что в Ардуино ,наверное(с Ардуиной не работал) синхронизируется компьютер по готовности процессора,а здесь надо синхронизировать процессор с компьютером.Если кто делал программу для нарезания резьбы тот поймет ,это как синхронизировать скорость выполнения движения ,например с оборотами шпинделя.Это конечно не относится к самодельным системам типа "электронной гитары" где выполняется просто деление тиков и шагов двигателя(это требует очень блольшого числа точек энкодера для получения деления).А нормальная синхронизация ,которая может работать даже с одним тиком на оборот шпинделя и при этом получать резьбы с достаточно большим шагом.Можно так же привести в пример работу синтезатора частоты или привода ,где в зависимости от ошибки по времени между собственным и внешним сигналом увеличивается или уменьшается частота собственного сигнала.selenur писал(а):Но концепция систем управления тут кардинально отличается, наличие буфера для сервоциклов в принципе невозможно