Pavel155 - отпишись, а то пропал в приватах, IMHO..
Мне писать то и нечего, все написал Ale.
Почти каждый день редактируется прошивка, я ее зашиваю и начинаем тестить. Отработанные варианты выкладываются тут.
Вот только тестеров очень мало (.
Модераторы: Death_Morozz, null, Ale
Pavel155 - отпишись, а то пропал в приватах, IMHO..
CraCk писал(а):Еще немного придется целую книгу выдавать по настройке контролера.
* AMC FirmWare (c) AleSOFT+ e-mail: prilad@mail.ru *
* Описание возможностей и настроек альтернативного программного обеспечения *
* контроллера AMC v.1.5 (разработка контроллера - Thanos ) *
* Текущая версия прошивки - 1.4 (от 05.05.2012). *
*******************************************************************************************************
1. Основной задачей при написании данного программного обеспечения (ПО) было устранение недостатков,
свойственных ПО от Thanos, первым из которых являлось сотутсвие исходников и, как следсвие, возможности
модификации "для себя".
2. Текущая версия прошивки полностью работоспособна на стандартной версии контроллера AMC 1.5.
Реализовано: два канала ШИМ (10 бит) с П-регулированием, обратная связь с резисторов или энкодеров, терминальное управление.
3. Основное отличие от прошивки Таноса заключается в ДИНАМИЧЕСКОМ управлении коэффициентом П-регулятора Kp. При получении
контроллером очередной управляющей команды от компьютера с новым положением осей X(n) и Y(n) вычисляется абсолютное отклонение
от предыдущего задания:
dX = X(n) - X(n-1) и dY = Y(n) - Y(n-1)
Если отклонение dX превышает значение порога KpTh, то в дальнейшем регулирование двигателя производится с коэффициентом KpHI.
В противном случае регулирование двигателя производится с коэффициентом KpLO.
По умолчанию в программе стоят KpHi = 10 (для больших перемещений) и KpLo = 20 (для малых).
Алгоритм настройки может быть следующим - если хотим иметь один Kp (как у Таноса) - выставляем одинаковый KpLo и KpHi.
А вот если хотим нового чего - тогда подбираем порог переключения KpTh и выставляем разные Kp для больших и малых перемещений.
Это (теоретически) должно избавить от "перелетов" при резких перемещениях, но в то же время не терять мелкие вибрации.
4. Для предотвращения раскачивания двигателя вокруг заданной точки введена "мертвая" зона. Если отклонение положения оси
(по информации от датчиков обратной связи) от заданного не правышает значения +/- MinD, то регулирование не производится и
ШИМ выключается.
5. Для предотвращения "сворачивания" оси резистора, а так же для удобства использования датчиков Хола, реализовано регулирование
рабочего диапазона датчиков обратной связи. Введены два программных "концевика" - SensLo (нижний) и SensHi (верхний).
Если код АЦП датчика (при движении оси вниз) достигает значения SensLo, двигатель останавливается. И может сдвинуться только вверх.
Так же работает и верхний "концевик", но только при движении оси вверх. Весь оставшийся диапазон входного напряжения пересчитывается в шкалу 0..255.
По умолчанию SensLo и SensHi выставлены так, что бы (для резистора 270 градусов) ограничить зону регулирования в 180 градусов.
Рабочая зона - в центре резистора. При этом на AVREF нужно подавать тот же потенциал, что и на резисторы ОС.
6. Появилась поддержка энкодеров в качестве датчиков обратной связи. Энкодеры присоединяются к ножкам порта B контроллера:
0,1 для первого канала и 2,3 для второго. Кроме энкодеров необходимо подсоединить концевые выключатели ( 0В - если сработал концевик)
к ножкам порта A: 4(низ), 5(верх) для первого канала и 6(низ), 7(верх) для второго.
7. В связи с появлением энкодеров в прошивку включена процедура начальной калибровки, которая запускается по подаче лог.0 (кнопкой)
на ножку 2 порта А. При этом оси опускаются вниз до упора в концевики и программа фиксирует нулевую позицию осей.
Процедура калибровки может вызываться и из софта сима передачей на контроллер сообщения 0x41, 0x42, 0x7F, 0xXX, 0xXX .
8. Настройка всех параметров доступна с компьютера через терминал. Для перевода контроллера в режим "терминала" используется дип-переключатель №1
9. Дип-переключатель №2 задает режим автоматического перемещения осей в центральное положение при включении контроллера.
FELiS писал(а):Нашим зарубежным друзьям еще не давали прошивку на тест?
* AMC FirmWare (c) AleSOFT + e-mail: prilad@mail.ru *
* Description of features and options for alternative software *
* Controller AMC v.1.5 (development of the controller - Thanos) *
* The current version of firmware - 1.4 (from 05/05/2012). *
1. The current firmware version is fully functional in the standard version of the AMC controller 1.5.
Implemented: two channels of PWM (10 bits) with P-regulation, feedback resistors or encoders, configuring from terminal.
2. The main difference from the Thanos firmware is DYNAMIC Kp adaptation. For every new positions of the
axes X (n) and Y (n) from PC the absolute deviation from previous are calculated:
dX = X (n) - X (n-1)
dY = Y (n) - Y (n-1)
If the deviation exceeds the threshold value KpTh, then Kp = KpHI. Otherwise Kp = KpLO.
By default KpTh = 5, KpHi = 10 (for large displacements) and KpLo = 20 (for small one).
If you want to have ONE Kp (like in Thanos firmware) - set KpLo = KpHi.
But if you want a something new - you may set up different Kp for both large and small displacements.
3. To prevent swinging motion around a seting position, "dead" zone was created. If the deviation of the axis position
from the specified value is less then + / - MinD, PWM is turn off.
4. Two software "limiter" for every axis was created: SensLo (bottom) and SensHi (top).
If the sensor's ADC code (when axis motion direction is down (up)) reaches SensLo (SensHi), the motor stops.
By default, SensLo and SensHi was configured for limiting working area of potentiometer in 180 degrees (if AREF = 5V).
Working area is in the center of the potentiometer.
5. Added support for encoders as feedback sensors. Encoders attached to the PORTB of the controller:
pins B0,B1 for the first channel and B2, B3 for the second. In addition you may to connect limit switches (0 - is active value)
to the PORTA: pins A4 (bottom), A5 (top) for the first channel and A6 (bottom), A7 (top) for the second.
6. Added the encoder initial procedure, which is run by connecting pin A2 to GND level.
7. Dip-switch #1 configure AMC to work in TTY mode.
8. Dip-switch #2 configure AMC to automatically axes moving to the center position when power is turned on.
В прошивке 1.5 реализованы/исправлены/дополнены следующие функции:
1 - Переделан вывод на LCD дисплей. Теперь основная строка по каналу управления содержит след. информацию - "задание" , "текущая позиция" , "уровень ШИМ" , "текущий Kp".
2 - С помощью дип-переключателя №3 (порт B6) можно переключить LCD в режим вывода информации только для одного канала (номер канала выбирается дип-переключателем №4 (порт B7)). При этом дополнительно на дисплей выводится номер канала и значения параметров KpLo, KpHi, KpTh, minPWM.
3 - Введен новый параметр управления ШИМ - MinPWM (один на оба канала). Теперь величина ШИМ вычисляется по следующей формуле:
PWM = minPWM + Kp* (текущая_позиция - заданная_позиция)
По умолчанию MinPWM = 0. При настройке предлагается определить величину ШИМ, при которой мотор начинает двигаться, и установить MinPWМ (для начала) в половину меньше этой величины. При этом можно существенно уменьшить Kp.
4 - при редактировании в терминале теперь не обязательно вводить параметры, которые не должны изменяться. Достаточно на запрос просто нажать клавишу Enter
Ale писал(а):содержит след. информацию - "задание" , "текущая позиция" , "уровень ШИМ" , "текущий Kp".
Ale писал(а):С помощью дип-переключателя №3 (порт B6) можно переключить LCD в режим вывода информации только для одного канала (номер канала выбирается дип-переключателем №4 (порт B7)). При этом дополнительно на дисплей выводится номер канала и значения параметров KpLo, KpHi, KpTh, minPWM.
CraCk писал(а):Ale писал(а):С помощью дип-переключателя №3 (порт B6) можно переключить LCD в режим вывода информации только для одного канала (номер канала выбирается дип-переключателем №4 (порт B7)). При этом дополнительно на дисплей выводится номер канала и значения параметров KpLo, KpHi, KpTh, minPWM.
Ale Извини но это мне кажется обще не нужным. То что я буду видеть параметры каналов на дисплее контроллера нечего не дает. Мне все равно придется подключать к компу для их редактирования, а после изменения я их просто могу выписать на карточку или сделать принтскрин для дальнейшего анализа.
CraCk писал(а):Ale писал(а):содержит след. информацию - "задание" , "текущая позиция" , "уровень ШИМ" , "текущий Kp".
"текущий Kp" - это лишнее. Лучше оставить как было направление двигателя. По направлению можно с первого раза выставить правильное направление двигателя и ОС а также видно мертвую зону командой OFF.
CraCk писал(а):Лутше на эти два порта включит функцию инверсии ШИМ
CraCk писал(а):P.S.
Все выше это мое мнение. Может я в чем та не прав, и не понял смисыл этой затеи не счет дополнительных данных на дисплее. Мы все таки движемся до вывода данных на экран ПК и полной отвязки от дисплея контроллера.
CraCk писал(а):
А как на счет проверки в лабе нет проблем с портами???? А то снова будет пух
Ale писал(а):Готов в любой момент откатить назад.
Ale писал(а):Вот это нововведение мне как раз казалось полезным. Во первых, индикация текущей величины Kp может помочь найти оптимальный уровень порога KpTh, т.к. только так ты можешь увидеть моменты переключения с KpLo на KpHi и обратно непосредственно в игре.
Ale писал(а):Твое мнение пока единственное, если не считать моего
CraCk писал(а):Ale писал(а):Вот это нововведение мне как раз казалось полезным. Во первых, индикация текущей величины Kp может помочь найти оптимальный уровень порога KpTh, т.к. только так ты можешь увидеть моменты переключения с KpLo на KpHi и обратно непосредственно в игре.
Тут я не в курил. Как мне индикация поможет найти оптимальный вариант, если это значение дублируется из параметров терминала величина KpLo?
Ale писал(а):Слухай сюды... Значение на LCD НЕ дублирует параметр KpLo. А показывает ТЕКУЩЕЕ значение Kp, которое в зависимости от игровой ситуации может принимать значение либо KpLo, либо KpHi
CraCk писал(а):Ale писал(а):Слухай сюды... Значение на LCD НЕ дублирует параметр KpLo. А показывает ТЕКУЩЕЕ значение Kp, которое в зависимости от игровой ситуации может принимать значение либо KpLo, либо KpHi
Но Kp не меняется при задание положения из ПК через тест плагин. Как раз на дисплее отображается значение из терминала.Если нужно будет то выложу видео.
Кd=(текущая_позиция - заданная_позиция)/Kp
PWM = minPWM + Kd* (текущая_позиция - заданная_позиция)
PWM = minPWM + Kp* (текущая_позиция - заданная_позиция)
Segriv писал(а):
Кd=(текущая_позиция - заданная_позиция)/Kp
PWM = minPWM + Kd* (текущая_позиция - заданная_позиция)
TAG[n] - текущая заданная позиция
TAG[n-1] - предыдущая заданная позиция
в момент прихода по интерфейсу значения TAG[n] производится анализ
If (abs(TAG[n]-TAG[n-1]) > KpTh)
{
Kp = KpHi;
}
else
{
Kp = KpLo;
}
и дальше, до прихода следующего задания от компьютера регулирование по формуле
PWM = minPWM + Kp* (текущая_позиция - заданная_позиция)
Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 39