7 шаговиков и Мега
- Войдите на сайт для отправки комментариев
Здравствуйте, ищу исполнителя на программу
Функциональные требования к ПО
Необходима программа для управления этикировщиком – это механизм, состоящий из 7 двигателей, которые обеспечивают вращательное и поступательное движение исполнительных узлов. Два двигателя должны иметь возможность быстро перемещаться до 1000имп/сек, остальные 200 -500имп/сек. На двигателях имеются энкодеры при пропускании шага включается защита.
1. Код должен способен управлять 7-ю биполярными шаговыми двигателями с различной скоростью, возможна одновременная работа до 4-х двигателей. Код программы должен обеспечивать плавный пуск/стоп двигателей т.е. регулировать протяженность фазы разгона до максимальной скорости и торможения при подходе к координате назначения. (желательно иметь возможность регулировать это значение при настройке механизмов). Если плавный пуск сильно грузит плату, то достаточно обеспечить плавный пуск стоп только для 3-4 двигателей.
2. У программы должно быть 2 режима работы: ручной и автоматический. Режимы переключаются тумблером или кнопкой. В ручном режиме выполняется настройка этикировщика, поэтому управление двигателями ведется с помощью кнопок вперед/назад (по 2 на каждый двигатель). В автоматическом режиме программа выставляет все двигатели в нулевое положение в соответствии с флажками либо концевиками (в любом случае какой-то дискретный сигнал). А затем в соответствии с загруженной программой двигается поочерёдно в заданные точки.
3. Направление возврата в нулевое положение для каждого двигателя может быть разным и устанавливается вручную оператором при настройке. Поэтому код должен позволять менять направление возврата в нулевое положение путем ввода однозначного символа или коэффициента. В качестве концевиков нулевого (домашнего) положения можно будет оптический концевик, который мы будем опрашивать только в момент пуска цикла движений.
4. Код в теле основного цикла должен содержать набор команд для последовательного перемещения двигателей на не фиксированные точки (количество точек программно не ограничено). Количество шагов вводится заказчиком вручную при настройке механизмов (точность выполнения шагов 2 шага). В рамках одной точки двигатели работают параллельно. Скорость перемещения у каждого двигателя должна регулироваться в каждой точке движения специальным коэффициентом, который устанавливает оператор при формировании управляющей программы.
например:
- проверяем находимся ли в нулевом положении, поочередно доводим двигатели до нужного положения;
-проверяем какой режим включен если «авто» то поехали:
-точка 1: шаговый 1 на 10 шагов вперед, со скоростью 1/8 , шаговый 2 на 50 шагов назад со скоростью 1/2 и т.д. Все двигатели двигаются параллельно пока каждый не выполнит свою задачу;
- точка 2: шаговый 1 стоит шаговый 2 на 100 шагов вперед со скорость 1/3, шаговый 3 на 25 шагов вперед со скоростью 1;
.......
и весь алгоритм зациклен.
5. При работе в ручном режиме оператор визуально настраивает каждую точку движения, для этого при управлении кнопками программа должна отслеживать количество шагов каждого двигателя и по нажатию кнопки сохранить координаты должна выкидывать в сералпорт координаты точки. // Т.е. оператор выставил нужное положение всех двигателей нажал кнопку в мониторе порта получил 6 координат в одной строке. После настройки всех точек оператор копирует эту таблицу и забивает её в программу для работы в автоматическом режиме. Было бы идеально если программа формировала текстовый файл, к которому бы обращалась программа в авто режиме, а в файле была таблица с координатами и коэффициентами скоростей для того или иного положения. При перемещении в ручном режиме скорость выполняемого движения должна регулироваться переменным резистором. То есть если у нас перемещение на несколько шагов, то просто едем на медленной скорости, которая у нас по умолчанию, если же нам надо переместить толкатель с помощью винтовой пары на 20000 шагов, то крутим потенциометр для увеличения скорости.
6. Одн из перемещений вспомогательное, выполняется редко но все же необходимо. При выполнении этого движения все 6 двигателей стоят в ожидании. Если для Меги 7 движений это много то можно просто организовать выдачу дискретного сигнала другой мини плате, которая будет управлять только этим перемещением, и будет выдавать ответный сигнал при выполнении своего перемещения.
7. Код программы должен содержать достаточные комментарии что бы можно было понять где что менять что бы изменить скорость, количество шагов и т.д .
Итого:
- 2 режима : ручной/автоматический;
- 12/14 кнопок управления двигателями вперед/назад;
- потенциометр для управления общей скоростью движения. Т. Е. у нас есть коэффициент скорости, заданный в программе, и этот коэффициент должен умногаться на значение потенциометра и получается итоговая скорость. Что бы уже при загруженной программе можно было регулировать такт линии. Ну и соответственно этим же потенциометром регулировать скорость перемещения при ручной настройке;
- тумблер для выбора режима работы;
- аварийный дискретный сигнал на светодиод или звуковой сигнал;
- кнопка разблокировки для ручного вывода механизмов из аварийного положения. Т.е. если у нас в результате какого-либо сбоя сработал один из концевиков - движения блокируется и выдается сигнал аварии, из этого положения мы можем вывести при переключении в ручной режим и нажав кнопку разблокировки. После устранения неисправности включаем авто режим, проверяем нулевое положение и с самого начала по алгоритму.
- если невозможно организовать 7-й двигатель в программе то 1 выходной дискретный сигнал для начала движения двигателя, и 1 входнойдискретный сигнал по завершению.
За программу могу заплатить 10 т.р maksi1985m@mail.ru
Расмотрю вариант с использованием 6-ти осевого ЧПУ контроллера (есть в наличии) и инструкцией как это организовать (если конечно это проще и дешевле).
ТЗ составлено неплохо, подробно и без закидонов. Не совсем понятно, как вводить вручную данные для автомата - тут может потребоваться существенная дополнительная работа.
Но бюджет катастрофически мал., думаю это стоит никак не меньше 30 -50 тыр
Но бюджет катастрофически мал., думаю это стоит никак не меньше 30 -50 тыр
Ты оптимистичен, раза минимум так в полтора, от верхней границы, оптимистичен ;)
Ну к сожалению таких денег я меня сейчас нет, немного конечно могу подвинутся, но не в 3-5 раз. Про данные вручную поидее нужен счетчик которой в ручном режиме викидывает в сериал количество шагов которые прошел двигатель с момента предыдущей посылки. А программу для автомата это да, долго и муторно но это уже проблемы настройщика то есть мои) а для автомата должен быть шаблон куда можно добавлять необходимое количество строк с нужными координатами.
Есть вариант организовать на мач3, там программа готовая и все это реализовано, если есть знающие люди, думаю инструкцию в какое окошко что вбивать можно за недорого написать.
Есть вариант организовать на мач3
Пмсм, один из самых грамотных вариантов.
Про данные вручную поидее нужен счетчик которой в ручном режиме викидывает в сериал количество шагов которые прошел двигатель с момента предыдущей посылки.
Для семи моторов и кучи точек вы умучаетесь переводить данные, "выкинутые в сериал" в команды программы. Хорошо, если это надо сделать один раз и потом годами пользоваться. Но если это придется раз в 2 дня перестраивать - это абсолютно непригодно для использования. Тогда надо продумывать систему, которая запоминаа данные ручного управления в виде готовых инструкций для автомата - что-то наподобие записи макросов в винде. Но это еще один проект, по сложности скорее даже превышающий первый...
Ну в день по несколько раз конечно настраивать не надо но несколько алгоритмов придется, если мы в сериал выдаем строку в которой идет: 200 15 48 56 87 396 0 и так 20 строк/точек, потом руками заносим в шаблон для программы автомата ну за пуру часов вместе подбором режима надеюсь получится уложится и меня это устроит, вообще на данном этапе (макетирования) меня любое время устроит, главное что бы перемещалось как надо.
Р е а л и з у е м о - maslachenko767@mail.ru , консультации, подбор компонентов бесплатно, гарантии
В закрытие темы, сообщу программа на 6 двигателей на Меге2650 была написана Сергеем Богдановым, все работает как надо, за что ему спасибо! в изначально планируемый бюджет конечно не уложились, но тем не менее гораздо оптимистичней чем здесь писали.
Работа была разбита на 2 этапа на каждый исполнитель потратил около недели. В промежутках выполнялась реализация в железе.
Ну и как Вы представляете заказчик не будучи програмамистом должен оценить объем работ? Поверить наслово первому написавшему?
я полагаю так : выкидывает свое предложение и дальше здоровая конкуренция сделает свое дело. Накидываться на людей которые слишком мало предложили, думаю, как то, тоже не правильно.
У всех разное количество наработок и в зависимости от этого каждый программист потратит разное время на выполнение задачи, естественно если сравнивать специалистов равного уровня.
Вы сами того не понимая, сдали этого дядю с потрохами. Теперь тут все будут оценивать первый этап, а потом гнуть клиента в коленно локтевую :)
Да на тех кто обманул накидываться не нужно, нужно на тех кто давал реальную цену :)
Злобные лузеры подтянулись...
Цена сразу за весь объем работы была объявлена сразу. И разбивка на этапы была согласована до пожимания рук. И объем, и стоимость.
Так что оставьте свои влажные фантазии про "коленно локтевую :)" при себе.
Злобные лузеры подтянулись...
Цена сразу за весь объем работы была объявлена сразу. И разбивка на этапы была согласована до пожимания рук. И объем, и стоимость.
Так что оставьте свои влажные фантазии про "коленно локтевую :)" при себе.
Слышь, вот у тебя мозг воспаленный ! Маразм крепчал, пей таблетки :) Для забывших очки, я тут даже не заявлялся в исполнители. :) И что ты там кому жал мне по барабану :)
Не хватит тебе, ТС, Меги для семи шаговиков с 1000 имп/сек + обратная связь по энкодеру.
Подобные "штуки" видел на Spartan-не... который даже Stm заставит курить в сторонке.
Вы сами того не понимая, сдали этого дядю с потрохами. Теперь тут все будут оценивать первый этап, а потом гнуть клиента в коленно локтевую :)
Onkel сделал все правильно оговорил объем работ за предложенную сумму, и стоимость окончательного завершения проекта. Так что никаких коленно логтевых.
7-й двигатель я пока не подключал, но вообще не планируется работа более 4-х двигателей одновременно, энкодеры заведены на драйвера и Мегу никак не грузят, кроме дискретного сигнала аварии. Пока Меги вполне достаточно.
Я честно говоря и не думал что 7 энкодеров можно завести на Мегу, мне в другом проекте надо 6 энкодеров обрабатывать, это соответственно 12 прерываний, на меге их 6 на сколько я понимаю. Прерывания потому что нужно считать и LOW или HIGH. Если есть возможность как то завести шесть энкодеров на Мегу буду благодарен за наводку.
В этом конкретном случае есть тонкость - у ТС энкодер интегрирован в драйвер, на выходе драйвера только сигнал "потеря шагов". Так что хватит - он может просто завести эти 7 выходов на пины меги.
7-й двигатель я пока не подключал, но вообще не планируется работа более 4-х двигателей одновременно, энкодеры заведены на драйвера и Мегу никак не грузят, кроме дискретного сигнала аварии. Пока Меги вполне достаточно.
Я честно говоря и не думал что 7 энкодеров можно завести на Мегу, мне в другом проекте надо 6 энкодеров обрабатывать, это соответственно 12 прерываний, на меге их 6 на сколько я понимаю. Прерывания потому что нужно считать и LOW или HIGH. Если есть возможность как то завести шесть энкодеров на Мегу буду благодарен за наводку.
Хоть 10. Это в arduino IDE для меги 6 прерываний, а в самом чипе еще есть 24 внешних прерывания, доступных при прямой работе с регистрами - хватит? На "карте" меги они обозначены PCINT0- PCINT23. Но засада может быть уже в скорости. Если писать на честном С, то время обработки прерывания от энкодера с инкрементом /декрементом будет 1-2 мкс, так что при 1000 имп /с каждый энкодер займет уже по крайней мере 0,2% времени процессора. Тут дело даже не во времени, а в том что во время обработки прерывания будут не срабатывать другие прерывания. Но можно попробовать. На небыстрых системах у меня 12 энкодеров на меге работают и не жужжат.
Onkel -ю и другим участникам темы ... Не успеет мега ОБРАБОТАТЬ все прерывания, если они будут сыпаться "пачками" , возможно будут глюки. Это моё ИМХО.
Это она без честного Cи и у другого исполнителя не успеет. Ведь только Онкеля микрочип наделил тайным знанием, которым не то, что на этом форуме, но и во всей Черноголовке никто более не обладает. Да что там Черноголовка - со всей Руси, Белыя и Малыя с поклонами ползут к нему ардуинщики, таща вериги вайринга и бремя глупости несусветой. Лишь бы лучом своей образованности огрел их немытые головы и сообщил заветные буквы - PCINT. Молиться всю жись и свечи на все деньги ставить обещают... Из фонтанов чудодейственных воду набирают и пьют ея, пьют до потери сознания: верят, что все, к чему мастер касался - только пользу им принесёт. И перестанут наконец их ардуины сгорать в дыму , да байты золотые и самоцветные из них посыплются.
Пойду за пузырем.
Отнюдь. И есть четкий критерий- если минимальное время между изменениями состояния энкодера (инкрементный же имеем в виду, так?) меньше времени обработки прерываний, то мы обработаем ВСЕ, абсолютно ВСЕ прерывания от 8 контактов (4 энкодера), и если это минимальное время между изменениями в два (или больше) раза больше времени обработки прерыания- то и 16 контактов (8 энкодеров). Если мы, конечно, правильно их подключим. Дело в том что внешние прерывания по пинам PCINTx вызываются по одному на регистр. Допустим, сработало хоть сразу 4 прерывания на 4 энкодерах, контакты которых подключены к PCIN16- PCINT23, мы в теле прерывания считываем PINx (это два такта в С) , сравниваем с PINx до прерывания и соответсвенно инкрементируем /декрементируем значиния счетчиков. В одной обработке прерывания хоть все 4 изменения, пачку, мы правильно обработаем. Ну и т.д. Так что если скорости механические, до тысячи в секунду- то без проблем. Ну конечно надо еще озаботиться чтобы время прерывания по приходу байта (если используется) не было больше нашего времени между сработками, и о других прерываниях подумать. Если думать - можно. У меня работает.
Неужели настолько ? Или график?
Ты сам себе противоречишь
Конструкции типа "должно" и типа "работают" здесь типа "некатят" ... здесь реально не катят!!!