Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум

Отвлекитесь, эмбеддеры! Отвлеченные темы - обсудить проблемы тепловой смерти вселенной, или просто пиво. Этот раздел - для отдыха.

 
Опции темы

Мои ответы на вопросы AR_Favorit

Непрочитано 20.11.2017, 21:00  
ALEGYR
Вид на жительство
 
Регистрация: 10.06.2005
Сообщений: 324
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
ALEGYR на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от stalkernet Посмотреть сообщение
Как раз по мне тут опсуждаются методы преобразования сигналов из аналоговых в цифровые и на оборот, на основании четко описанных законов и методик.
Ну это тебе только кажется!
Вообще-то тут обсуждается код программы, который реализует ПИД регулятор для нагрева бачка с маслом, до заданной температуры!
А методы преобразования сигналов из аналоговых в цифровые и на оборот, на основании четко описанных законов и методик, наверное обсуждаются в разделе Микроконтроллеры, АЦП, память и т.д или Цифровые сигнальные процессоры.
ALEGYR вне форума  
Непрочитано 20.11.2017, 21:05  
Yuri222
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 8,924
Сказал спасибо: 3,111
Сказали Спасибо 3,030 раз(а) в 2,258 сообщении(ях)
Yuri222 на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от ALEGYR Посмотреть сообщение
Так алгоритм-то выбирает человек, и выбирая его, он на что-то опирается, чтобы выбрать наиболее оптимальный, а не абы какой!
Так то оно в принципе и верно.
Надо бы создать математическую модель той системы бачок-нагреватель-датчик, измерить все постоянные времени (с учетом возможного напряжения питания нагревателя и зависимости потерь тепла от температуры), посчитать коэффициенты ПИД регулятора, чтобы получить нужное качество регулирования...
Но, если это не для космического двигателя - можно взять контроллер, что есть под рукой, и пусть себе отрабатывает алгоритм на той частоте, на которую его быстродействия хватает. А коэфф-ты подобрать опытным путем.
Как-то так.
Yuri222 вне форума  
Непрочитано 20.11.2017, 21:06  
ALEGYR
Вид на жительство
 
Регистрация: 10.06.2005
Сообщений: 324
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
ALEGYR на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от AR_Favorit Посмотреть сообщение
А где ты увидел измерение температуры раз в миллисекунду?
А я его там и не увидел!
Я увидел, что по первой строке твоего кода

if (pid_counter‹(EE_PID_TIME*1000)) pid_counter++;

измерение температуры производится 1 раз в 100 секунд!!!
ALEGYR вне форума  
Непрочитано 20.11.2017, 21:12  
ALEGYR
Вид на жительство
 
Регистрация: 10.06.2005
Сообщений: 324
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
ALEGYR на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от Yuri222 Посмотреть сообщение
Надо бы создать математическую модель той системы бачок-нагреватель-датчик, измерить все постоянные времени (с учетом возможного напряжения питания нагревателя и зависимости потерь тепла от температуры), посчитать коэффициенты ПИД регулятора, чтобы получить нужное качество регулирования...
Я надеюсь, что AR_Favorit, именно так и поступил, прежде чем стал писать свой код. Но скорее всего, все это ему указали в ТЗ.
ALEGYR вне форума  
Непрочитано 20.11.2017, 21:15  
AR_Favorit
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от stalkernet Посмотреть сообщение
а если правильно подобрать и период регулирования то можно вобще перейти к целочисленной четной математике. где все делается сдвигами вправо и влево. например умножить на 10 это сдвинуть влево 5 раз. разделить - вправо.
.....
ИМХО такое впечетление что код писал человек умеющий писать только для компа.
Код в данном случае писал человек, который читал даташит на тот процессор, который применяет
Вот если для восьмибитников эта "четная математика" ещё может пригодиться, то в данном случае она не имеет абсолютно никакого преимущества, так как ядро примененного процессора перемножает два 32битных числа с 32-битным результатом за один такт. Точно так же, как выполняет сдвиг.

Именно поэтому там по тексту стоят постоянно выполняющиеся умножения: при профилировании простейшими подручными средствами (в прерывании от SYSTICK выставляем свободную ножку в 1, в основном цикле по завершении работы всех КА и сброса выставленного в SYSTICK флага, сбрасываем ее в 0) прекрасно видно, что процессор на выполнение "полезного" программного кода тратит намного меньше, чем на тупое ожидание очередного прерывания. Что делает неактуальной экономию десятков наносекунд в ущерб читаемости исходного кода.

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

Последний раз редактировалось AR_Favorit; 20.11.2017 в 21:29.
AR_Favorit вне форума  
Непрочитано 20.11.2017, 21:21  
Yuri222
Почётный гражданин KAZUS.RUN
 
Регистрация: 08.02.2005
Адрес: Минск, Беларусь
Сообщений: 8,924
Сказал спасибо: 3,111
Сказали Спасибо 3,030 раз(а) в 2,258 сообщении(ях)
Yuri222 на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от ALEGYR Посмотреть сообщение
Но скорее всего, все это ему указали в ТЗ.
Так и правильно это.
Те, кто составлял ТЗ - "механики".
Измерение параметров системы - в принципе их дело.
Более того, и саму основу ("каркас") алгоритма регулирования было бы логично получить от них - спецов в своей области.
Но не удивлюсь, если было и наоборот - пришли, сказали, что нужно, а дальше - вплоть до выбора датчиков и мощности нагревателя - пришлось выбирать исполнителю этого задания.
Yuri222 вне форума  
Непрочитано 20.11.2017, 21:22  
AR_Favorit
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от ALEGYR Посмотреть сообщение
А я его там и не увидел!
Я увидел, что по первой строке твоего кода

if (pid_counter‹(EE_PID_TIME*1000)) pid_counter++;

измерение температуры производится 1 раз в 100 секунд!!!
В этой строке нет измерения температуры. Как и в последующих.

А еще эта строка в цикле прерывания с периодом в 1 мс будет отсчитывать "1 раз 100 секунд" только если оператор выставит уставку периода регулирования EE_PID_TIME в значение "100". Но на случай такого глупого оператора программа не даст ему это сделать, ибо период регулирования, исходя из характеристик оборудования (конкретно - определяемой объемом бака и мощностью нагреватля скорости нагрева) можно задать от 1 до 10 сек. Соответственно и значение дданной переменной EE_PID_TIME лежит в этом диапазоне.
AR_Favorit вне форума  
Непрочитано 20.11.2017, 21:28  
AR_Favorit
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от Yuri222 Посмотреть сообщение
Но не удивлюсь, если было и наоборот - пришли, сказали, что нужно, а дальше - вплоть до выбора датчиков и мощности нагревателя - пришлось выбирать исполнителю этого задания.
Там было всё гораздо забавнее. Но к обсуждаемому вопросу отношения не имеет. Скажу только, что изначально вообще не шло речи о ПИДе и вообще управлении нагревателем.)))
AR_Favorit вне форума  
Непрочитано 20.11.2017, 21:34  
ALEGYR
Вид на жительство
 
Регистрация: 10.06.2005
Сообщений: 324
Сказал спасибо: 43
Сказали Спасибо 360 раз(а) в 194 сообщении(ях)
ALEGYR на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от AR_Favorit Посмотреть сообщение
Цитата:
Сообщение от ALEGYR
Цитата:
А я его там и не увидел!
Я увидел, что по первой строке твоего кода
if (pid_counter‹(EE_PID_TIME*1000)) pid_counter++;
измерение температуры производится 1 раз в 100 секунд!!!
В этой строке нет измерения температуры. Как и в последующих.
Правильно! Там идет подсчет времени по счетчику pid_counter, и пока его значение на превысит значение выражения EE_PID_TIME*1000 равное 100 секундам, измерения температуры не принимаются во внимание, а расчет управляющего сигнала control не производится!
ALEGYR вне форума  
Непрочитано 20.11.2017, 21:40  
AR_Favorit
Почётный гражданин KAZUS.RUN
 
Регистрация: 13.03.2010
Сообщений: 2,896
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
AR_Favorit на пути к лучшему
По умолчанию Re: Мои ответы на вопросы [b]AR_Favorit[/b]

Сообщение от ALEGYR Посмотреть сообщение
Правильно! Там идет подсчет времени по счетчику pid_counter, и пока его значение на превысит значение выражения EE_PID_TIME*1000 равное 100 секундам, измерения температуры не принимаются во внимание, а расчет управляющего сигнала control не производится!
Перестань рассматривать собственные заблуждения вместо моего кода.
EE_PID_TIME*1000 не может быть равным 100 секундам.
EE_PID_TIME*1000 это период регулирования в миллисекундах. Период регулирования в 100 000 миллисекунд для управления нагревателем, поднимающим температуру объекта от начальной до рабочей температуры за 300-600 секунд, использовать не выйдет.

А теперь поясни, почему ты путаешь измерение температуры с применением измеренного (полученного совсем другим участком кода) значения в алгоритме?

Измерение - это процесс, выполняемый АЦП. Там еще есть усреднение и пересчет в кратные степеням десятки единицы. В рассматриваемом участке кода никакого измерения нет. Есть только готовое для использования свеженькое значение, выражаясь в терминах ПИД, сигнала обратной связи.

Последний раз редактировалось AR_Favorit; 20.11.2017 в 21:46.
AR_Favorit вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Wiznet W7100. Общие вопросы R_N Микроконтроллеры, АЦП, память и т.д 7 06.06.2012 00:33
PCAD - вопросы и ответы avr123-nm-ru Proteus, KiCAD и другие ECAD 7 27.01.2011 21:15
Система измерения температуры (на AD8495), вопросы по схеме и реализации spartakchamp Измерительное оборудование 2 15.11.2010 22:04


Часовой пояс GMT +4, время: 18:23.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.