powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Найти числовую разницу в массиве в С.
15 сообщений из 40, страница 2 из 2
Найти числовую разницу в массиве в С.
    #39597413
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TРаньше у тебя вообще как-то коряво написано
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    pwm1 = motor1_data_double->speed;   
    pwm2 = motor2_data_double->speed;
    
    //no position difference - maximum speed   
    if (posdif < glob_mot_data.max_pos_diff)
    { 
       MOT_SendData(motor1_data_double, CAN_COM_SSET, glob_mot_data.pwm_max);
       MOT_SendData(motor2_data_double, CAN_COM_SSET, glob_mot_data.pwm_max);
    }
    else if (gt == 0)  //position1 > position2
    {...}
    else if (gt == 1)  //position2 > position1
    {...}

    //update speed
     MOT_SendData(motor1_data_double, CAN_COM_SSET, pwm1);
     MOT_SendData(motor2_data_double, CAN_COM_SSET, pwm2);


Т.е. ты включаешь на максимум, а потом возвращаешь как было. Что на самом деле происходит?

Борьба с законами физики :)

Что бы не включать на максимум по факту падения скорости,
нужно управлять раньше,
в зависимости от изменения тока и напряжения до
критического падения скорости.

Поэтому и массив должен быть многомерный, с как минимум скоростью и током
из значений которых, нужно дуржать косинус угла = 0 если
меняется нагрузка , но скорости меняться не должны.

Косинус угла - аналог ускорения,
то есть скорость изменения скорости в точке измерения,
которым можно програмно управлять при необходимости,
что бы не бороться с законами физики и удешивить
элементную базу управления потребляемым током.
Разница может быть на порядки, то есть при той же схеме управления
она сможет управлять в несколько раз более мощьными двигателями.
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597428
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы отправил автора в форум по электронике.
Решение задачи транзисторах выйдет дешевле .

А вот когда он научится держать стабильные скорости
транзисторами, но ему потребуется управлять точностью
ИЗМЕНЕНИЯ скорости, тогда пусть возвращается
и продолжим разговор о коррекции управляющих сигналов
с использованием эвристических статистических алгоритмов
на многомерных массивах just fun ибо на алиэкспресе уже готовое решение
стоит 3 рубля за ведро.
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597438
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
exp98Господа товарищи, сформулируйте сначала алгоритм схематично: что я хочу.
Затем: что из этого у меня не получается.
Потом примерную формализацию на псевдокоде.
сначала надо страниц 10 потренироваться в экстрасенсорике, а то засмеют )
очень редко можно встретить прямой и чёткий вопрос: "вот есть это, надо вот это"

зы: почему не прописать жёстко min/max для каждого мотора и от них плясать? + k (коэф) какой-нибудь заодно.
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597448
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tip78exp98Господа товарищи, сформулируйте сначала алгоритм схематично: что я хочу.
Затем: что из этого у меня не получается.
Потом примерную формализацию на псевдокоде.
сначала надо страниц 10 потренироваться в экстрасенсорике, а то засмеют )
очень редко можно встретить прямой и чёткий вопрос: "вот есть это, надо вот это"

зы: почему не прописать жёстко min/max для каждого мотора и от них плясать? + k (коэф) какой-нибудь заодно.

Уже выяснили, что автор забивает саморезы микроскопом.
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597449
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У него не получается, и он просит совета ,
насколько более навороченным должен стать микроскоп
что бы у него получилось.
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597457
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю ка ещё немнго сложности:
"сложный (да!, но всё же) РЕГУЛЯТОР".
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597459
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exp98Добавлю ка ещё немнго сложности:
"сложный (да!, но всё же) РЕГУЛЯТОР".

just fun тема интересная.
Если для практического применения в ширпотребе, проще сходить на алиэкспрес.

А если для военки, то сначала лучше в школу ,
как бы уже не случайность, почему Фрегаты пролетают на юух
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597624
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что скажут алгоритмисты на такое решение? (болтунов просим в раздел <Просто треп>)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
uint32_t MOT_GetMedianPosition(void)
{
     int i;
     uint32_t position=0;
     
     for (i = 0; i < g_linked_motors; i++)
     {
         position += linked_motor_data[i]->position;
     }
     position /= g_linked_motors;
     
     return position;
}

uint32_t ProcessMedianPosition(void)
{
    int i;
    uint32_t pos_diff=0;
    
    uint32_t median_position = MOT_GetMedianPosition();
    
    for (i = 0; i < g_linked_motors; i++)
    {
        if ( abs(linked_motor_data[i]->position - median_position) > glob_mot_data.max_pos_diff)
        {
            pos_diff = 1;
            
            if (linked_motor_data[i]->position > median_position)  //motor runs faster
            {
                //adjust speed -> speed down
                linked_motor_data[i]->pwm -= glob_mot_data.pwm_delta;
                //check limit
                if (linked_motor_data[i]->pwm < glob_mot_data.pwm_min)
                    linked_motor_data[i]->pwm = glob_mot_data.pwm_min;
            }
            else   //motor runs slower
            {
                //adjust speed -> speed up
                linked_motor_data[i]->pwm += glob_mot_data.pwm_delta;
                //check limit
                if (linked_motor_data[i]->pwm > glob_mot_data.pwm_max)
                    linked_motor_data[i]->pwm = glob_mot_data.pwm_max;
            }
        }
    }
    return pos_diff;
}

void MOT_PositionLoopMulti(void)
{
    int i;
    if (ProcessMedianPosition())
    {
        //retry
        glob_mot_data.pos_diff_count++;
        //maximum retries - unable to adjust speed
        if (glob_mot_data.pos_diff_count > glob_mot_data.max_pos_diff_count)
        {
            glob_mot_data.pos_diff_count = 0;
             //send stop command
            for (i = 0; i < g_linked_motors; i++)
                MOT_SendData(linked_motor_data[i], CAN_COM_STOP, 0);
        }
        else
        {
            //update speed
            for (i = 0; i < g_linked_motors; i++)
                MOT_SendData(linked_motor_data[i], CAN_COM_SSET, linked_motor_data[i]->pwm);
        }
    }
    else
    {
       glob_mot_data.pos_diff_count = 0;
       //set maximum speed
       for (i = 0; i < g_linked_motors; i++)
           MOT_SendData(linked_motor_data[i], CAN_COM_SSET, glob_mot_data.pwm_max);
    }   
}


...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597637
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7А что скажут алгоритмисты на такое решение? (болтунов просим в раздел
Задачка на реверс инжиниринг?
Жалко поэта.
Он купит газету,
Прочтёт и вздохнёт.

Выпьет водицы
и трудиЦа
вновь начнёт ...
Ушёл в глубокий ПТ ...
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597638
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7,
забыл спросить: Вы точно уверены, что не попадёте в автоколебания?
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597643
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
exp98jenya7,
забыл спросить: Вы точно уверены, что не попадёте в автоколебания?
я ни в чем не уверен. поэтому спрашиваю у более знающих товарищей.
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597656
Фотография OoCc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7exp98jenya7,
забыл спросить: Вы точно уверены, что не попадёте в автоколебания?
я ни в чем не уверен. поэтому спрашиваю у более знающих товарищей.
Сказали же что всё зависит от задачи. Хочешь поговорить - озвучь всю задачу схемотично.
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597698
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7А что скажут алгоритмисты на такое решение?
Вроде нормально выглядит. Слово Median замени на AVG, т.к. среднее арифметическое считаешь.
А в целом хрен его знает чего ты понаписал. По этому куску кода сложно сделать однозначное заключение. Как уже выше сказали: подробнее надо описывать свой код.

И ты забыл про пограничные состояния 21169011 , т.е. когда надо больше максимума или меньше минимума.
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597705
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
jenya7exp98jenya7,
забыл спросить: Вы точно уверены, что не попадёте в автоколебания?
я ни в чем не уверен. поэтому спрашиваю у более знающих товарищей.

Знающие товарищи вам отвечают:
1. Скорость у вас плавает изза изменяемой нагрузки на двигатели.

2. Ваша алгоритмика управления
будет регулярно простериливать ноги, полупроводниковые переходы,
управляющие током двигателей.
...
Рейтинг: 0 / 0
Найти числовую разницу в массиве в С.
    #39597739
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
д0kХjenya7пропущено...

я ни в чем не уверен. поэтому спрашиваю у более знающих товарищей.

Знающие товарищи вам отвечают:
1. Скорость у вас плавает изза изменяемой нагрузки на двигатели.

2. Ваша алгоритмика управления
будет регулярно простериливать ноги, полупроводниковые переходы,
управляющие током двигателей.


ликбез
Катушка зажигания автомобиля действует по похожему принципу,
из 12 вольт достаточно просто делая десятки тысяч вольт для возникновения
искры на свечах зажигания.
Не делайте программно из вашего двигателя катушку зажигания,
а из управляющей цепи двигателя автомобильную свечу.
Управляюшая цепь одноразовая свеча :)
...
Рейтинг: 0 / 0
15 сообщений из 40, страница 2 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Найти числовую разницу в массиве в С.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]